Commit Graph
1597 Commits
Author SHA1 Message Date
Mat Strangeandopencode f87ab00a61 The Document Inspector refuses its removals while the document tracks changes
The inspector's removals delete straight from the document: the hidden
text, the comments, the revisions and the headers go without ever reaching
the engine's tracked-delete path. On a document that tracks changes — and
`trackedChanges` protection turns tracking on — the content was gone with
no revision to show for it, and the revision trail was broken behind the
user's back.

The removals are not tracked, so they cannot be: rather than untrack them
silently, the inspector refuses the whole removal form while the document
tracks changes, and says why ("the document tracks changes: stop tracking
before removing content"). The check comes before anything is removed, so
the document is left untouched, and reading the document — the inspector
without removals — keeps working. A document that does not track changes
is inspected as before.

Co-Authored-By: opencode <noreply@opencode.ai>
2026-10-22 21:19:58 -06:00
skylar taylor-barrick c799fdbcfb Merge pull request #3285 from matstrange/fix/protection-file-commands
Restrict Editing: the file commands, the user name and the post-check
2026-10-22 21:19:40 -06:00
skylar taylor-barrick af2803a546 #3279: Keep protected session author fixed in CLI and Options 2026-10-22 20:52:44 -06:00
Mat Strangeandopencode ff36e73ecb Docs: the session author, not the user name
"the user name can't change while the document is protected" was the
wrong term twice over: it is the session author — the name new tracked
changes and comments are recorded under, and the one a named exception
is matched against — and it is `file.setAuthor` that refuses to change
it. The CLI's `--author` names the session directly, so it works on a
protected document.

The parity row, the two status lines and the two progress rows now say
that.

Co-Authored-By: opencode <noreply@opencode.ai>
2026-10-22 23:51:19 +01:00
Mat Strangeandopencode ec1b539395 The inspector's removals are refused in every protected mode
`file.inspect` with removals takes content out of the document — the
comments, the revisions, the properties, the hidden text, the headers.
Under readOnly and comments it was refused, or rolled back by the
post-check where the document had an exception; under trackedChanges
nothing stopped it, so a document that tracks changes could have its
comments and revisions taken out with no revision to show for it.

The removals are refused now, in every mode a protected document can be
in, next to the properties and the privacy options. An inspection without
removals only reads the document, and still works.

The protection test covers the modes now, not only readOnly.

Co-Authored-By: opencode <noreply@opencode.ai>
2026-10-22 23:51:19 +01:00
Mat Strangeandopencode 5151809e11 Merge origin/main into fix/protection-file-commands
Resolves the conflicts with the changes that landed since the branch was cut:

- crates/engine/src/cmd/protect.rs: the forms-mode refusals stay behind
  upstream's `greyed_out()` (so the ribbon still greys the Developer tab's
  control buttons out), and the refusal of the document's properties and its
  privacy options is added on top of it.
- ROADMAP.md, docs/file-format-parity.md, docs/gaps.md: both sides' entries
  are kept; the status lines carry the merge's date and this change at the
  front.

Co-Authored-By: opencode <noreply@opencode.ai>
2026-10-22 23:08:09 +01:00
Brandon ThomasandClaude Opus 5.5 9130181a5f Release 0.10.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.10.0
2026-10-22 15:37:16 -04:00
BFlat 00bc6a4b02 Merge pull request #3598 from storytold/readme/app-icon
README: the app icon above the title
2026-10-22 18:02:41 +07:00
bflatastic 1928957bef README: the app icon above the title 2026-10-22 17:58:32 +07:00
aiongg 8e986366c7 Header and footer: a click in the other band edits it there (#3557) 2026-10-22 01:03:11 -04:00
aiongg 653a2311b5 IME: the caret follows the composition text (#3556) 2026-10-22 01:03:06 -04:00
aiongg 169581d786 Merge 178 open PRs (backlog round 1) (#3555)
Integrates the backlog round's ready set from aiongg:next.
2026-10-22 00:24:38 -04:00
aiongg b07e045d7e Integration: #3335 header Esc test allows the half-pixel return scroll that #3201 brings
#3201 makes entering an empty header scroll to it; Esc then scrolls back to the caret, landing 0.5 px from the start (17291.0 vs 17290.5). The test checks the view is back within a pixel.
2026-10-22 02:19:18 +00:00
aiongg 6e8113891e Integration: #2722 English text for four labels the Dutch and Danish catalogs lack
every_tab_and_command_is_translated needs Format Shape Pane, Full Screen View, Personal Templates and Underline Color, added by other merged PRs. Rows carry the English text until translated.
2026-10-22 02:11:24 +00:00
aiongg 54003ebc69 Integration: #2041 English text in the Polish catalog for the keys Italian gained
polish_covers_every_key_of_every_other_catalog expects Italian to have only "Style: APA" beyond Polish; #2041 translated 14 newer strings into Italian. Rows carry the English text until translated.
2026-10-22 02:11:17 +00:00
aiongg f2b06167aa Integration: #2244 VML on/off values read case-insensitively by the shape fill reader
Main (#1500) moved VML fill reading into shape_style.rs, where filled="False" still counted as on; #2244's test vml_shape_wrap_side_and_anchor_case_insensitivity expects no fill.
2026-10-22 02:05:32 +00:00
aiongg 079a743e93 Integration: #1832 drop a useless .into() in the end-of-document citation test
clippy::useless_conversion failed cargo xtask ci.
2026-10-22 02:00:08 +00:00
aiongg eb12fc6ee4 Integration: cargo fmt 2026-10-22 01:59:03 +00:00
aiongg c04d670117 Integration: cargo xtask parity 2026-10-22 01:58:53 +00:00
aiongg 3f46d9c65f Integration: status lines list each change once
Combining the tracks' status lines repeated a few entries (#2852, #1500, #2617).
2026-10-22 01:54:49 +00:00
aiongg 2060f86e8e Merge PR #3139: Fix #3137: Cannot insert a tab inside table cells (missing Ctrl+Tab shortcut)
docs/typing-parity.md: status entry prepended to main's line.
2026-10-22 01:54:35 +00:00
aiongg 64f98d824a Merge PR #2280: fix(formats): support xs:time, string-value, and case-insensitive cell types in spreadsheets 2026-10-22 01:54:24 +00:00
aiongg ef39b78adf Merge PR #2886: Recovery: keep explicit New/Open visible after startup discovery
crates/ui-egui/src/backstage.rs: #3125's t.nav fill kept, without the recovery black. Docs: status entries prepended to main's lines; the recovery paragraph placed after the status line.
2026-10-22 01:54:24 +00:00
aiongg 55c31bdbb5 Integration: #1076 English text for the keys the Slovenian catalog lacks
Its complete-catalog test needs every key of every other catalog. Rows carry the English text until translated.
2026-10-22 01:53:54 +00:00
aiongg 946dea4327 Integration: #3203 English text for the keys the Romanian catalog lacks
Its complete-catalog test needs every key of every other catalog; the merged PRs added 72 since it was written. Rows carry the English text until translated.
2026-10-22 01:53:54 +00:00
aiongg 8efd6667ec Merge PR #1076: i18n: add Slovenian (sl) interface translation
i18n: registry holds 27 languages (sl after nl, da, ro); audit.rs and the Polish test list sl beside pl and ro; tests: both sides kept. Docs: language counts and lists name ro, sl, nl and da; status entries prepended to main's lines.
2026-10-22 01:53:21 +00:00
aiongg 5d59afae74 Merge PR #3203: G14: Romanian (ro) interface catalog
crates/ui-egui/src/i18n/mod.rs: registry holds nl, da (#2722) and ro (26 languages). tests.rs: both sides' tests kept.
2026-10-22 01:52:28 +00:00
aiongg 5cfdd7c0dd Integration: #2722 Dutch registry comment on its own line 2026-10-22 01:51:45 +00:00
aiongg 92bdefc3e8 Merge PR #2722: i18n: add Dutch and Danish interfaces 2026-10-22 01:51:39 +00:00
aiongg c354162712 Merge PR #3056: Insert Table of Figures: a dialog with the caption label (Table, Equation, your own) (#3013)
ROADMAP.md: the PR's status entry prepended to main's first status line. i18n catalogs: union by key.
2026-10-22 01:51:21 +00:00
aiongg d99ac8c5a7 Merge PR #2784: #2738: Home › Underline drop-down shows its lines, None, More Underlines… and Underline Color
ROADMAP.md: the PR's status entry prepended to main's first status line. docs/parity-checklist.md: main's side, regenerated after the merges. ko.tsv: union.
2026-10-22 01:50:43 +00:00
aiongg acfdc0cb5f Merge PR #2500: Resolve installed fonts by PostScript face name
Test-font pins: #3389's kept, #2500's dropped (layout tests.rs, tests_pages.rs, render lib.rs). crates/fonts/src/fontdb.rs: #2500's PostScript-name match moved into #3078's family_paths.
2026-10-22 01:50:29 +00:00
aiongg 22124867d0 Merge PR #1249: Ribbon: names for screen readers on the tab strip's drawn buttons (#1110)
crates/ui-egui/src/ribbon.rs: main's Share button (already named) kept; the » button's "More tabs" name added in main's restructured strip; both sides' tests kept. i18n: "More tabs" rows added after main's.
2026-10-22 01:50:03 +00:00
aiongg 65421603e8 Merge PR #2984: #2959: show the formatting mini toolbar with text context menus
crates/ui-egui/src/canvas.rs: #2984's context-menu open logic, opened also by #3419's equation options strip (eq_strip).
2026-10-22 01:49:36 +00:00
aiongg ec988829c9 Merge PR #1800: Layout: paragraph borders take their room and same-bordered paragraphs join in one shaded box
crates/layout/src/lib.rs: #1800's border room in the keep-with-next lookahead, with #2431's list counters passed to next_first_line.
2026-10-22 01:49:08 +00:00
aiongg 5dc68481ed Integration: track t09
crates/ui-egui/src/backstage.rs: t03's bidi_display on the Recent names over t09's borrowed name/path. people.toml: union. Tests: both tracks' tests kept whole. Docs: status lines combined, rows unioned or word-merged.
2026-10-22 01:48:25 +00:00
aiongg e1e258e4d9 Integration: track t08
contributors/people.toml: union. crates/layout/src/tests.rs: both tracks' tests kept whole. Docs: status lines combined, rows unioned or word-merged.
2026-10-22 01:47:56 +00:00
aiongg 3581f80251 Integration: track t07
# Conflicts:
#	ROADMAP.md
#	docs/file-format-parity.md
#	docs/gaps.md
#	docs/layout-parity.md
2026-10-22 01:47:46 +00:00
aiongg 04b3881e3e Integration: track t06
docs/gaps.md row 4: one row (t06 had kept a second, older copy of it); t05's #1840 and t06's #2964 clauses both in, main's #2963 clause kept. docs/recovery.md: t06's retry sentence with t01's base64 size text. Test files: both tracks' tests kept whole.
2026-10-22 01:47:34 +00:00
aiongg 16d1c8a933 Integration: track t05
crates/pdf/src/lib.rs: t01's vector_text kept before t05's watermark (box area signature). Test files and canvas.rs tests: both tracks' tests kept whole. Docs: status lines combined, rows unioned or word-merged.
2026-10-22 01:46:47 +00:00
aiongg 0d3b8eb0cb Integration: track t04
crates/formats/src/odt.rs: t01's Body::new/take_blocks kept; take_blocks finishes tables with t04's TableB::finish (column widths). Test files: both tracks' tests kept whole. Docs: status lines combined, rows unioned or word-merged.
2026-10-22 01:46:17 +00:00
aiongg 86df1e70ce Integration: track t03
# Conflicts:
#	ROADMAP.md
#	crates/formats/src/html.rs
#	docs/gaps.md
#	docs/ui-parity.md
2026-10-22 01:44:54 +00:00
aiongg 245b5bd8d0 Integration: track t02
Docs: status lines combined (t02's entries first); log rows unioned; file-format-parity .rtf row from t02 (#1653, duplicate .rtf row dropped as t02 did), .odt row word-merged.
2026-10-22 01:44:01 +00:00
aiongg 674e0cef5b Integration: track t01 2026-10-22 01:42:06 +00:00
aiongg 3017804459 Integration: cargo fmt 2026-10-22 01:40:29 +00:00
aiongg 520f54cb81 Integration: cargo fmt 2026-10-22 01:34:26 +00:00
aiongg d4debe0592 Integration: cargo fmt 2026-10-22 01:34:25 +00:00
aiongg 3bf53830c5 Integration: #1728 close the layout test the merge resolution left open 2026-10-22 01:34:15 +00:00
aiongg 5c260a16fd Integration: cargo fmt 2026-10-22 01:31:48 +00:00
aiongg ed2ecefac2 Integration: #3257 separate its Find-box test from #2407's recent-files test (auto-merge interleaved them) 2026-10-22 01:29:54 +00:00