craft-print at a0916808 leaves the color feature out of the Windows
PrintTicket unless the job asks for grayscale, so the color chosen in the
driver's preferences applies, and its command preview ends with
color=(driver default). print_builds_the_spool_command still expected
color=color and failed on Windows. It now expects the new preview.
print_submits_the_selected_export_and_reports_refusal also checks that the
job does not ask for grayscale, so the job's color setting is checked on
CUPS too.
Record the two Georgian menu captions and preservation of the existing complete-menu regression. Retain all other roadmap entries and readiness percentages.
Document the two added Georgian menu captions and the unchanged complete-menu regression. Preserve historical coverage counts and make the separate native-speaker review status explicit.
Add Georgian translations for File Info… and Check for Updates…. Keep the complete-menu assertion unchanged; interface_language_switches_and_validates now passes. The Hungarian regressions also pass. The full test stage records 3,376 passed, three previously documented missing-glyph failures and six ignored.
Picks up the startup prompt without the glyphs a font may lack (storytold/craft-libs#343, #344): the close mark is painted and the version pill is ASCII, so apps that panic on a missing glyph no longer take the prompt down.
Part of tracking issue storytold/craft-libs#319
* refactor(engine): split join_paths and apply_para (Sonar S3776)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(engine): use the resolved style types in apply_para_in_story
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Pass the resolved styles by reference at the call site
* Drop the range binding the call no longer uses
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
* refactor(ui): extract helpers from swatches, properties, canvas and app logic (Sonar S3776)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(ui): drop unused variable after extraction
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Use scope_id for the flex grid's interaction id
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Adopt upstream blob 73f98f61 for panel_docking_tests.rs to avoid a parallel-fix conflict. The same 31 names are imported from the same parent module; every byte after the imports is unchanged. cargo fmt --all -- --check and cargo clippy --workspace --all-targets -- -D warnings both pass. No new main-branch changes are merged.
Restore the explicit names required by the upstream panel-docking tests and format the imports. All test bodies and assertions are byte-for-byte unchanged. fmt, pdf-deps and clippy pass; 3,375 tests pass, with four font/Georgian findings documented in the PR and six ignored. The remaining i18n-report, doctest, assets, layers and 16 WASM checks pass. One worker under a 2 GiB memory guard.
Updated progress log with new localization and regression test details for HU1.Preserve every progress entry from both branches and record the Hungarian Arrangement caption, updated egui button role, and retained localization and toolbar tests.
Updated Hungarian catalog entry count to 1,905 and added Data Merge arrangement caption. Minor adjustments made to translation tests and review history.Record 1,905 Hungarian catalog entries and four context captions, preserving historical counts. Clarify that general missing-translation reports are non-blocking while targeted caption regressions can fail tests.
Add Arrangement → Elrendezés to the Hungarian catalog. The retained cross-locale regression and Hungarian catalog tests pass. Full local validation and the separate pre-existing font/Georgian findings are documented in the PR.
The Sonar S2208 sweep replaced use super::* with explicit lists, but
tests_ime.rs and panel_docking_tests.rs use helpers added after it was
written, so main stopped compiling.
Brings in #1374 with upstream main merged (egui 0.37, craft-libs at
storytold/craft-libs e3b9e239).
Conflicts:
- Cargo.toml: print-color's pins (storytold/craft-libs e3b9e239 for
craft-pdf, craft-prepress, krilla and the hayro crates; winit and egui
patches), with craft-prepress keeping the `flatten` feature.
- xtask/src/pdf_deps.rs: print-color's REPO/REV.
- Cargo.lock: print-color's, relocked with cargo metadata; adds only
craft-prepress and linesweeper.
- crates/pdf/src/export.rs: main's optional-content registration and
add_form_fields helper; the helper leaves form fields and media out of
PDF/X-1a with a warning.
- crates/engine/src/cmd/export.rs: the X-1a parameter docs plus main's
`created`; the X-1a flatten and shadow-mask path on top of main's
PDF/A-2b-only rasterize_layered.
Also: x1a_tests builds FlattenTotals through Default, since the struct is
non_exhaustive at e3b9e239.
print_pdf, shared by Export PDF, File › Print and Separations Preview, takes main's two
changes to the inline export pipeline: rasterize_layered runs only for PDF/A-2b (other
standards keep hidden placed-PDF layers as optional content), and the report gets
GRAPHIC_LAYER_RENDERING_WARNING when the source document has graphic layer visibility
overrides and the writer did not report it. The Separations Preview command matches
craft_prepress::Conversion with a fallback arm, since the enum is non-exhaustive at
craft-libs e3b9e239.
PDF/X and CMYK groups keep this branch's approach: krilla's serialize
settings (pdfx::print_settings) write the CMYK page and transparency
groups, the GTS_PDFX output intent and the PDF/X Info and XMP entries.
make_pdfx4 adds only the XMP dates, so main's title argument and its
output-intent, Info and pdfxid XMP edits are dropped, and both
cmyk_group_spaces calls after writer.finish() (Export PDF, Print
Booklet) stay removed. Main's new parts are kept: file_info_metadata
(also for Print Booklet, on top of the print settings), optional content
registration and layer errors, add_form_fields, and pdfx's fonts module.
Main's metadata panic test calls the two-argument make_pdfx4.
craft-libs and the krilla patch are pinned to storytold/craft-libs
e3b9e239; Cargo.lock is main's, relocked without updates.
craft-keymap with the dialog comes from storytold/craft-libs main e3b9e239. egui 0.37's
shaper owns bidi, so the dialog's labels go to it in logical order: rtl::visual_text and the
dialog's visual hook are gone. ForeignSet keeps the dropped-entry count through its builder.
Main's shortcut dispatch (shortcut_key, used for keys forwarded from floating panel windows)
becomes the keymap's: shortcuts and forwarded_shortcuts both take their presses through the
key dispatcher and run them once the input is released. craft-keymap comes from
storytold/craft-libs, ForeignSet is built through its constructor, and the panel shortcut test
asks the docking layout which panel shows.
Wake the UI when a manual check is queued from a menu callback; the update prompt owns the keyboard while it is open (LightCraft); Download opens through the desktop URL hook (FilmCraft); the Help menu dispatches through menus::invoke (FigCraft); print jobs and comment drafts hold an install back (WordCraft); Check for Updates is a registered command (GridCraft); an install holds back while documents are unsaved.
The update flow (check at start or on request, the startup prompt, the self-update worker) is craft-update's Updater; the app only supplies the suite, its close path and its status window. The check at start is opt-in for the desktop app, and the Windows update helper runs before argument parsing.
Ref: storytold/craft-libs#319
At 100% K a device CMYK conversion is black whatever C, M and Y are,
so the picked RGB stayed the same and the `p != before` guard dropped
the typed percentages. They are stored (and the colour marked edited)
whenever a C/M/Y/K field was typed in; the rest still only when the
colour changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main moved to egui 0.37 (#1810) and named the old picker's fields. The
picker's own layout here takes the new API (Role for WidgetType,
scope_id, Id::unique, TextEdit::align) and names its value fields by
their captions and the hex field "Hex".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preserve the German 2006 hyphenation entry alongside the newer optical margin alignment documentation. Merge upstream main at 5024d61ce6.
Validation: cargo xtask ci passed all nine steps; 3271 tests passed, 6 ignored; all four German hyphenation tests passed; WASM check passed for all 16 crates.