Commit Graph
29 Commits
Author SHA1 Message Date
Martin BallandClaude Opus 5.5 c1490c5ba9 CP4.3: review — a click from the control channel never turns on downloading; installs and refreshes run in the background in the app; parked documents proof again after a pack change
- Install, Show available languages and Refresh turn on the font store's downloading only on the
  person's own click (input_from_control, as in #959); a faked click says why instead.
- proof.installPack and proof.packs {refresh} run on the engine's thread in the app ("started"),
  with progress, results and errors in proof.packs; the CLI and headless MCP stay synchronous.
- A session's layout is keyed on the dictionaries' generation, so parked documents proof again.
- proof.removePack refuses while that pack installs; pack commands that need a locale are left out
  of Search; options text names Refresh; licence tooltip says Source; errors go through tl!;
  the bar rescans at most once a second while typing; English names for every pack language and
  sr-latn; About has one Close button; xtask doc comment back on cmd_i18n_report.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FypgCX8LsYYE8fsj4byBm2
2026-11-02 01:04:00 +00:00
Martin BallandClaude Opus 5.5 e5d46bb242 CP4.3: Language packs: proof.packs, proof.installPack, proof.removePack; Options › Language list, missing-pack bar, About › Language data
- engine `packs`: the packs Backend (the font store on the desktop and CLI, a fixed list in tests
  and ui_shot), the pinned index, installs and removals through craft-font-store's
  `language-pack` kind, craft-proof reading the store's `language-packs/` folder at once.
  Commands open nothing and never turn downloading on (only an Install click in the app does);
  confined automation can't write the packs folder outside its write root.
- ui-egui `language_packs`: File › Options › Language › Language packs (name, size, licence,
  source, Install/Remove, progress, errors), the missing-pack bar (dismissible per document,
  never for a language without a pack), About › Language data (full licence texts).
- CP4.4: `cargo xtask language` (in `ci`): the default build embeds only en-* Language data.
- CP4.5: docs (help, MCP, control protocol, gaps #8, localization parity, roadmap).
- Path deps to Lane 4's worktrees while developing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FypgCX8LsYYE8fsj4byBm2
2026-11-02 01:03:59 +00:00
LucienandBrandon Thomas a2446aa330 View › Macros opens a dialog to run, delete and record macros (#4327) (#4426)
* View › Macros opens a dialog to run, delete and record macros (#4327)

* Docs: date the Macros dialog row and bump the ui-parity status line (#4327)

---------

Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-31 10:15:51 -04:00
9632646c5e Bibliography: keep a source's corporate author (#4848) (#4898)
* #4848: corporate authors in bibliographies

A Word source whose author is an organisation (Create Source › Corporate Author)
stores it as `b:Corporate`, which the reader ignored: the source opened with no
author, citations fell back to the title and bibliography entries started with
the year. A bare name typed into Author was split into "Organization, W. H.".

- Source gains `corporate`, read from and written as `b:Corporate` (in place of a
  name list: a role holds one or the other, ECMA-376 CT_NameOrCorporateType).
- Citations and bibliography entries write it as it is in every style; it gives
  the source's tag and its place in an author-sorted list, and untagged sources
  are matched by it.
- APA puts its full stop after a group author ("World Health Organization.
  (2021).") instead of relying on the initials for it.
- Create Source has a Corporate Author box under Author; Edit Source opens with
  it checked when the source has one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LvG6DxS4tKmWSLCiDPvb4G

* Match untagged sources by corporate author before personal author

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-30 00:12:17 -04:00
ReesandBrandon Thomas 18ae8b2150 DOCX: preserve custom-property bookmark links (#4767) (#4771)
* M12: preserve custom-property bookmark links (#4767)

* M12: preserve bookmark links across property renames (#4767)

* M12: align custom-property preservation status dates (#4767)

* docs: keep the gaps.md note in the status line and revision table

---------

Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-30 00:11:27 -04:00
9a172e2241 Table Properties: row, column and cell settings follow the selection (#4857) (#4896)
Row, column and cell settings applied to the caret's row, column and cell only, so
selecting the whole table and unticking "Allow row to break across pages" changed
one row and the others still split across pages.

- table.properties applies row height and rule, allow break and header row to every
  selected row, the column width to every selected column, and the cell width and
  vertical alignment to every selected cell (the caret's with nothing selected), in
  one undo step.
- The dialog shows "Allow row to break" and "Repeat as header row" as mixed when the
  selected rows differ; left alone they change nothing, clicked they set every row.
- The row-height rule box is named by "Specify height" for screen readers.


Claude-Session: https://claude.ai/code/session_01LvG6DxS4tKmWSLCiDPvb4G

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-30 00:10:33 -04:00
Dylan M. Taylor df5a59275d Fix platform-gated imports for wasm builds 2026-10-28 01:24:26 +00:00
Dylan M. Taylor 9c0f61356c Refactor ui dialogs for strict Clippy checks 2026-10-28 01:06:48 +00:00
aiongg 436d444ef0 fix(ui): dropdown menus grow back after a search with no matches (#4577)
* ui: craft_ui::ComboBox everywhere and the combo arrow popup on craft_ui::combo::Menu

Repin craft-libs to aiongg/craft-libs 62bb0e1d (dropdown regrow). Ban egui::ComboBox in clippy.toml.

* chore(deps): craft-libs 60d60d48 (dropdown fixes)

* chore(deps): craft-libs 6af63481 (dropdown fixes)

* chore(deps): craft-libs 4d7b82f7 (dropdown fixes)

* chore(deps): craft-libs 92d392cf (#387 merged)
2026-10-27 10:27:21 -04:00
aiongg 1344b5204e refactor(ui-egui): split dialogs/dialogs_refs.rs into dialogs_refs/ 2026-10-26 21:16:48 +00:00
aiongg 17f3a4f919 refactor(ui-egui): split dialogs/dialogs_insert.rs into dialogs_insert/ 2026-10-26 21:16:48 +00:00
aiongg ffc631861e refactor(ui-egui): move dialogs_insert tests to dialogs_insert/tests.rs 2026-10-26 21:16:48 +00:00
aiongg 188f379b85 refactor(ui-egui): split dialogs/dialogs_layout.rs into dialogs_layout/ 2026-10-26 21:16:48 +00:00
aiongg afc3b8ad4d refactor(ui-egui): split dialogs.rs into dialogs/ 2026-10-26 21:16:48 +00:00
aiongg 741e6c7986 refactor(ui-egui): move dialogs_templates to dialogs/dialogs_templates.rs 2026-10-26 20:54:03 +00:00
aiongg f2ae6a9c36 refactor(ui-egui): move dialogs_table_style to dialogs/dialogs_table_style.rs 2026-10-26 20:54:03 +00:00
aiongg f5c48c0fa2 refactor(ui-egui): move dialogs_smart_art to dialogs/dialogs_smart_art.rs 2026-10-26 20:54:03 +00:00
aiongg bbfcf81b8d refactor(ui-egui): move dialogs_ribbon to dialogs/dialogs_ribbon.rs 2026-10-26 20:54:03 +00:00
aiongg 695a1b11f4 refactor(ui-egui): move dialogs_review to dialogs/dialogs_review.rs 2026-10-26 20:54:03 +00:00
aiongg 811e5aca3b refactor(ui-egui): move dialogs_refs to dialogs/dialogs_refs.rs 2026-10-26 20:54:03 +00:00
aiongg 19007c8e1a refactor(ui-egui): move dialogs_para to dialogs/dialogs_para.rs 2026-10-26 20:54:03 +00:00
aiongg a2389baed5 refactor(ui-egui): move dialogs_notes to dialogs/dialogs_notes.rs 2026-10-26 20:54:03 +00:00
aiongg b3b7fc6724 refactor(ui-egui): move dialogs_lists to dialogs/dialogs_lists.rs 2026-10-26 20:54:03 +00:00
aiongg 15417121db refactor(ui-egui): move dialogs_layout to dialogs/dialogs_layout.rs 2026-10-26 20:54:03 +00:00
aiongg 81df9013bf refactor(ui-egui): move dialogs_keyboard to dialogs/dialogs_keyboard.rs 2026-10-26 20:54:03 +00:00
aiongg aa05b92df4 refactor(ui-egui): move dialogs_insert to dialogs/dialogs_insert.rs 2026-10-26 20:54:02 +00:00
aiongg d1d17835e6 refactor(ui-egui): move dialogs_controls to dialogs/dialogs_controls.rs 2026-10-26 20:54:02 +00:00
aiongg fc401225b0 refactor(ui-egui): move dialogs_chart to dialogs/dialogs_chart.rs 2026-10-26 20:54:02 +00:00
aiongg f9a5dbb670 refactor(ui-egui): move dialogs tests to dialogs/tests.rs 2026-10-26 20:54:01 +00:00