Repository navigation
Merge upstream pdfcraft and adopt the Mermaid palette - #25
Merged
Merged
Conversation
New modules: draft (Which, Handling, PrintDraft), body (driver_options_panel, combo, body).
New modules: thumbs (thumbnail cache, Key, Look, Thumbs, texture), card (Card, preview).
New module: scan (ScanDraft, ScanRequest, ScanAnswer, ScanWorker, FrameDrag, next_photo_version, scan_tab).
New modules: save (SaveTarget, PendingOverwrite, save methods, atomic writers), close (CloseRequest, close/quit methods).
# Conflicts: # crates/forms/src/author/edit.rs # crates/forms/src/tests.rs
# Conflicts: # crates/automation/tests/it/automation.rs # crates/forms/src/author/edit.rs # crates/forms/src/tests.rs # crates/forms/src/values.rs # parity/acrobat-features.toml
# Conflicts: # vendor/README.md
# Conflicts: # crates/render/tests/it/main.rs # vendor/README.md
# Conflicts: # vendor/README.md # vendor/hayro-interpret/src/device.rs
…26-10-29 Integrate 13 KenM76 fixes for forms, text and rendering
* Make PdfCraft's app colour red The icon tile, the Windows PDF file icon's badge and lines, the DMG background and the README badges move from green #12a58a to crimson #b70228 (darker shade #8a011e, fold #f3cfd6). Every PNG, .ico and .icns is re-rendered from the edited master SVGs with packaging/icons.sh and resvg 0.47; the .icns is written with Pillow because iconutil is macOS-only, with iconutil's size set. The DMG background is re-rendered with generate.py; its .DS_Store is unchanged. ATTRIBUTION.toml hashes updated; cargo xtask assets passes. * Fix OCR model attribution hashes
* packaging: Flatpak finds and prints to CUPS printers The Print dialog listed no printers in the Flatpak: the runtime has libcups but not lpstat/lp, the sandbox couldn't reach the CUPS socket, and driverless network printers (lpstat -e) need Avahi. Bundle lpstat/lp/lpoptions from CUPS 2.4.20 (Apache-2.0, statically linked, licence installed) and grant --socket=cups and --system-talk-name=org.freedesktop.Avahi in both manifests. * packaging: Flatpak reads the user's CUPS settings (~/.cups, read-only) Review (CodeRabbit): without it the sandbox's lp/lpstat ignore the user's default printer and saved options (lpoptions) and a print server named in their client.conf. * packaging: Flatpak CUPS tools reach the host socket when client.conf names a custom path Review: Flatpak mounts the host's CUPS socket at /var/run/cups/cups.sock whatever path ~/.cups/client.conf or CUPS_SERVER names, so lp/lpstat/lpoptions now run through a wrapper that points a socket path missing in the sandbox there. Server names (remote servers) and sockets that exist are left alone. Tested in the sandbox: CUPS_SERVER=/run/custom/cups.sock lists the host's printers through the wrapper and none without it; a host name is passed through unchanged. * packaging: redirect a custom CUPS socket only when it is the one Flatpak mounted Review (CodeRabbit): Flatpak picks the socket it mounts at /var/run/cups/cups.sock with stricter rules than CUPS (flatpak-run-cups.c: a socket CUPS_SERVER, else the first line spelled exactly "ServerName /path" in ~/.cups/client.conf, else the default), while CUPS reads the keyword in any case and takes the last ServerName. The wrapper now redirects only when CUPS' socket is the one Flatpak chose, so a job can't reach a different server; otherwise CUPS fails on the missing path. * packaging: never redirect a CUPS_SERVER the sandbox was given Review (CodeRabbit): Flatpak picks the socket it mounts from the host's CUPS_SERVER, so one set by flatpak run --env or an override may not be what it mounted. The wrapper now leaves any CUPS_SERVER alone and redirects only a client.conf socket that matches Flatpak's choice; otherwise CUPS fails on the missing path instead of reaching a different server. * packaging: point CUPS at the mounted socket only when it is the one Flatpak chose, else fail Review (CodeRabbit): with a custom socket listed first and the default last in ~/.cups/client.conf, Flatpak mounts the custom one at /var/run/cups/cups.sock while CUPS picks the last line, finds that path, and talks to the custom server. The wrapper now compares CUPS' socket with Flatpak's choice even when the path exists: equal, CUPS is pointed at the mount; different, the tool fails with an error instead of reaching another server.
AGENTS.md (and CLAUDE.md where present) gets a CI workflows section: workflows only call craft-common-actions at @main, with no other jobs; feature and fix PRs don't touch CI and link or open a craft-common-actions issue (a PR only for a small fix that is safe for every app and does not increase CI time); legacy jobs aren't added to and move only as their own task, staying until a shared workflow runs them. windows-arm64.yml moves from its SHA pin to @main. The pinned revision is on craft-common-actions main and the workflow (and the actions it calls) is identical there, so nothing changes in behaviour.
…latest versions (storytold#5381) - `zip`: 9.1.0 → 9.1.3 Requirement `roxmltree` 0.20 → 0.21: `ParsingOptions` gained `entity_resolver` (initializers take `..Default::default()`, i.e. none, as before) and is no longer `Copy` (two functions build it with a closure, the pattern merge.rs already used).
…storytold#5388) UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#b70228, its red, from the icon (storytold#5245)). The updater, the self-update helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer). craft-update is pinned to storytold/craft-libs main at 1065653e7 (storytold#434). Clippy fixes for Rust 1.99 in untouched code (same logic): - crates/edit/src/images.rs - crates/forms/src/appearance.rs
Merges storytold/pdfcraft main at 1d1cbc4. Fork behaviour kept: the PlutarchPages name without the ArtCraft brand, EquityBot update and repository links, external converters, speech, xlsx export and the fork's theme colours. Upstream's craft_update replaces the fork's update check and its permission gates replace the view flag for copying. The fork's stricter redaction refusal and automation text_find refusal stay; upstream tests that expected otherwise now assert the refusal.
Every interface colour now lives in theme.rs: ivory and true black surfaces, platinum and gold frames, crimson and Tyrian purple accents, and red, gold, lavender and Rhodesian green for status. A test fails when a colour literal returns outside the theme. The icon, DMG background, demo cover and README screenshots follow it. Also labels the Split dialog's spin buttons, keeps dark comment icons visible on the dark theme, and adds SECURITY.md and PATCHES.md.
A kept annotation sharing a redacted annotation's appearance stream would keep drawing the content, so apply now refuses and names the page. On-page colours read on white and black pages, and thin accents use the readable accent on the black theme.
There was a problem hiding this comment.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Brings the fork up to upstream
storytold/pdfcraftat1d1cbc4e(2,796 commits, 99 conflicts) whilst keeping the fork's fixes, then adopts the full Mermaid palette across the app, icon and screenshots.PATCHES.mdlists what the fork carries and how to repeat the merge.Merge this with a merge commit, not a squash. A squash drops upstream's history, so the next sync would have to resolve all of it again.
Also adds
SECURITY.mdand labels the Split dialog's spin buttons.Evidence
an_appearance_a_kept_annotation_shares_is_refusedfailed: a removed annotation's appearance stream stayed in the file when a kept annotation shared it.After: passes. Apply refuses with
StillUsedand names the page. Identical icons sharing an appearance now cost a refusal, as this fork fails closed.status_colours_stay_readable_on_every_surface,chrome_literals_stay_in_the_themeandon_page_colours_read_on_white_and_black_pages.2f23f623:cargo fmt --all --checkandcargo clippy --workspace --all-targets -- -D warningsexit 0.cargo test --workspace --no-fail-fastfails only these 2 inui-egui'sittarget (1,201 passed there); the other targets pass:Both were reported failing on plain upstream too, from a missing CJK font.
cargo xtask assetspasses.Merge danger
Door: two-way until the next sync builds on it. Blast radius: whole app.
Fork behaviour kept over upstream's, for review: fail-closed redaction,
text_findrefused on copy-restricted documents and CSV neutralising instead of the round trip. No build is published by this PR.Unverified
cargo xtask i18n-report: not run.cargo deny checkandcargo xtask wasm: last run on the merge, before the palette commits.2f23f623, which changes only scan, page-box and thumbnail-viewport outlines; not rechecked.page_tree_counts_do_not_size_the_page_listfailed once in a full run, then passed alone and in every run since. Cause unknown.PdfCraft.Document, the Explorer verbs, theRegisteredApplicationsvalue name and context-menu GUIDs are shared with upstream.45a25a9cmoved the install-folder key toSoftware\PlutarchPages, which the installer policy check requires;test-install-policy.ps1passes locally for x64, x86 and arm64.d5f2ca8epins thestorytold/craft-common-actionsworkflows to a commit, as SonarCloud's security gate requires, but those workflows still call that repository's actions at@main.