Brandon Thomas and Claude Opus 5.5
0e2f8a2fb3
Root clippy.toml: tests may unwrap, expect, panic and index
...
The same file as the steering PR (#11 ), so this PR stands on its own. The crate-level
`#![deny(clippy::unwrap_used, …)]` applies to production code only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 13:35:00 -04:00
Brandon Thomas and Claude Opus 5.5
58cd6614ea
Never crash: engine denies the panic lints
...
The one `unreachable!` in the scoped refresh becomes a full refresh.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 13:06:23 -04:00
Brandon Thomas and Claude Opus 5.5
8f1f4e7ffb
Git: mark PDFs, keys, fonts and images binary so Windows checkouts keep their bytes
...
CI's Windows runner checks out with core.autocrlf=true, which rewrote the
signed openssl-signed.pdf fixture and made validates_a_signature_made_by_openssl
report Invalid there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 12:48:43 -04:00
Brandon Thomas and Claude Opus 5.5
48f1495ac2
Tests: take split part names with Path::file_name so the test passes on Windows
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 12:48:43 -04:00
Brandon Thomas and Claude Opus 5.5
ab47bf4b9a
CI: as_chunks instead of constant-size chunks_exact (clippy 1.99 chunks_exact_to_as_chunks)
...
Stable clippy 1.99 denies chunks_exact/chunks_exact_mut with a constant
size (32 sites), which failed the test job on main and every open PR.
Behaviour unchanged; MSRV 1.90 has as_chunks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 12:48:43 -04:00
Brandon Thomas
788456a8e7
Merge pull request #9 from storytold/pr/license-standard
...
Licensing: standard LICENSE files, NOTICE, ArtCraft brand terms
2026-10-04 10:09:05 -04:00
Brandon Thomas and Claude Opus 5.5
d20eef9d56
Licensing: standard LICENSE files, NOTICE, ArtCraft brand terms
...
Adopt the shared Crafting Apps licensing standard. LICENSE-MIT names "ArtCraft Team and the
PrintCraft contributors"; LICENSE-APACHE matches the standard byte for byte; NOTICE gets the
standard header and brand paragraph above the existing third-party list. docs/brand/LICENSE-brand.txt
now holds the ArtCraft Team brand terms: the marks may be used only unmodified within PrintCraft,
and forks and modified versions must remove them. The brand entries in ATTRIBUTION.toml, AGENTS.md
§1.2 and the README follow suit, and the README's Licence section becomes the standard
"License and credits" block. xtask inherits the workspace licence.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 10:07:05 -04:00
storybored379 and Claude Opus 5.5
2336b24746
M4: Deleted pages leave the file even when bookmarks, links or widgets still point at them ( #2 )
...
Delete Pages only took the pages out of the page tree, so a bookmark, link or form widget that
referenced a deleted page kept it (and its content) in a full save. Deleted page objects are now
freed; their widgets leave the form (with fields left without widgets), and bookmarks and links
to them lose that destination.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 00:14:59 -04:00
storybored379 and Claude Opus 5.5
0523ccdfdc
M8: Redaction drops /PCAdded from rewritten content streams so redacted added text does not stay in the file ( #1 )
...
Text added with Edit ▸ Add content keeps its source string in the stream dictionary's /PCAdded.
Applying a redaction rewrote the stream's glyphs but copied the dictionary unchanged, so the
redacted text survived in the saved PDF. The redacted item now stays as plain drawn content and
is no longer editable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 00:14:56 -04:00
Brandon Thomas and Claude Opus 5.5
9d99f4b278
Release 0.1.1
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
v0.1.1
2026-10-03 09:55:41 -04:00
Brandon Thomas and Claude Opus 5.5
2f248974ae
M13: ROADMAP: session 12 later progress (compare, actions, PDF/A, Office export, forms)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 09:46:13 -04:00
Brandon Thomas and Claude Opus 5.5
70280a44d0
M10: Export to Word (.docx), HTML and RTF (new export crate with a small zip writer): paragraphs, headings, bold/italic, images, page breaks; doc_export_office tool
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 09:40:46 -04:00
Brandon Thomas and Claude Opus 5.5
4d60af8b1e
M11: PDF/A (new preflight crate): verify PDF/A-2b/3b structural rules, Save as PDF/A (XMP identification, generated sRGB output intent, forbidden actions, annotation flags, interpolation, encryption), PDF/A dialog; pdfa_verify, pdfa_convert tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 07:19:54 -04:00
Brandon Thomas and Claude Opus 5.5
632a21bfcf
M13: Action Wizard: built-in actions (Prepare for Distribution, Optimize Scanned Documents, page numbers, confidential, sanitize), custom actions with 12 step kinds, background runs over files; action_list, action_run tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 05:48:19 -04:00
Brandon Thomas and Claude Opus 5.5
a4bf717c06
M12: Compare files: visual differences (pages rendered and compared region by region), shaded orange; doc_compare visual option
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 05:37:23 -04:00
Brandon Thomas and Claude Opus 5.5
c12b795ce5
M12: Compare files (new compare crate): word-level text differences, Compare panel with shading on the new file, report PDF, differences as comments; doc_compare, doc_compare_report, doc_compare_mark tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 05:31:18 -04:00
Brandon Thomas and Claude Opus 5.5
aa194686f1
M6: Prepare a form detects fields (underscore blanks, rules, boxes, check squares) and names them from their labels; form.detect, form_detect_fields
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 05:21:01 -04:00
Brandon Thomas and Claude Opus 5.5
620ef4fcad
M6: Field Properties ▸ Actions tab (six triggers, JavaScript/link/reset/menu/page/show-hide/submit actions); form_actions, form_set_actions tools; signing UI tests get their own temp folders
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 05:08:28 -04:00
Brandon Thomas and Claude Opus 5.5
6ff0bf8f64
M6: Merge data files into spreadsheet (FDF, XFDF, filled PDF forms → CSV); form_merge_data tool
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 04:52:59 -04:00
Brandon Thomas and Claude Opus 5.5
9321864393
M13: ROADMAP: session 12 progress (OCR, JavaScript, in-place editing)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 04:42:32 -04:00
Brandon Thomas and Claude Opus 5.5
06f8d73ec7
M6: Acrobat JavaScript: sandboxed boa engine with the forms object model (printcraft-js); custom keystroke/validate/calculate/format scripts, button scripts, document JavaScripts, JavaScript console (⌘J), Preferences ▸ Enable JavaScript; js_run, js_document_scripts, js_set_document_script, form_set_script, js_enabled tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 04:41:47 -04:00
Brandon Thomas and Claude Opus 5.5
a7ffee01b5
M10: Recognize text in multiple files (ocr.recognize_batch, ocr_recognize_files): searchable copies written to a folder in the background
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 03:54:11 -04:00
Brandon Thomas and Claude Opus 5.5
b87cf39168
M10: Scan & OCR ▸ Recognize text: ocrs-based recognition (models fetched by cargo xtask models), invisible searchable text layer, Recognize Text dialog with background progress; ocr_recognize / ocr_status tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 03:47:58 -04:00
Brandon Thomas and Claude Opus 5.5
d7c22d7ef0
M7: Justify, underline, line spacing, character spacing and horizontal scale for existing paragraphs (and justify for added text); Lucide align-justify icon
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 03:16:03 -04:00
Brandon Thomas and Claude Opus 5.5
385313e0bf
M7: Format existing text: font family, bold/italic, size, colour and alignment for a paragraph (Format text panel live while editing; text_edit formatting arguments); centred and right-aligned paragraphs are detected
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 03:07:43 -04:00
Brandon Thomas and Claude Opus 5.5
c2f53d5595
M7: Edit text & images: select existing page images to move, resize, rotate, flip, replace, save or delete; page_images, image_edit, image_save tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 02:55:08 -04:00
Brandon Thomas and Claude Opus 5.5
695e460bbb
M7: Edit text works on paragraphs: detection, in-place editing with rewrap to the box, original spacing, colour and font (or Helvetica); text_paragraphs and text_edit paragraph
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 02:42:18 -04:00
Brandon Thomas and Claude Opus 5.5
fb6208b089
M7: Edit text: click a line of existing text and retype it in place, reusing its font when it can show the text, else Helvetica; text_lines / text_edit tools
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 02:25:06 -04:00
Brandon Thomas and Claude Opus 5.5
5a70838884
M7: PDF font tables move to the fonts crate with Unicode decoding/encoding (ToUnicode, WinAnsi/MacRoman/Standard, Differences glyph names, subset glyph checks)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 00:42:57 -04:00
Brandon Thomas and Claude Opus 5.5
2548228b1d
M3: frame-budget tests skip (and say so) when the machine is overcommitted
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 00:42:57 -04:00
Brandon Thomas and Claude Opus 5.5
beb4e14c44
xtask: version test uses gates::root (fixes the xtask test build)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 00:42:57 -04:00
Brandon Thomas and Claude Opus 5.5
dab27f098c
Roadmap: measured parity (45% of features, ≈35% of effort) and revised Opus 5.5 hour estimate (≈600–1,100 h remaining)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 00:30:22 -04:00
Brandon Thomas and Claude Opus 5.5
e849fbcf1b
xtask: make version.rs compile here and register cargo xtask version
...
version.rs (ported from PhotoCraft) called crate::cargo() and a two-argument
crate::run() that don't exist in this xtask, so xtask didn't build at all.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 16:20:47 -04:00
Brandon Thomas and Claude Opus 5.5
92dd783b7e
Web: add Trunk.toml so the release zip finds the site in dist/web with relative URLs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
v0.1.0
2026-10-02 15:47:40 -04:00
Brandon Thomas and Claude Opus 5.5
1dd9f27b36
README: tagline names the Adobe app it reimplements; standard Adobe trademark and non-affiliation notice
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 12:24:17 -04:00
Brandon Thomas and Claude Opus 5.5
ff0d0ac294
README: Crafting Apps table in five columns (icon, app, purpose, GitHub, Website)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 12:19:06 -04:00
Brandon Thomas and Claude Opus 5.5
099ea8c152
README: drop the old DrawCraft name; VectorCraft links to /apps/vectorcraft
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 12:18:18 -04:00
Brandon Thomas and Claude Opus 5.5
fa601c1641
README: app icons in the Crafting Apps table
...
Drop the app icon from the top of the README, matching PhotoCraft, and
show each app's icon next to its name in the Crafting Apps table in place
of the coloured name badges. The table is now identical across all seven
apps apart from the "you are here" row.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 12:17:17 -04:00
Brandon Thomas and Claude Opus 4.8
4466fe8623
Signed release pipeline (macOS/Windows/Linux/Web); README community note
...
Ports photocraft's release workflow + packaging (signing, notarization,
MSI/DMG/deb/rpm/AppImage/web), adds `cargo xtask version`. File-type
associations omitted (route B); app keeps its own .desktop. Fresh WiX
UpgradeCode. README 'about' note updated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-10-02 12:06:19 -04:00
Brandon Thomas and Claude Opus 5.5
fcf3a7efa1
M3: About credits Dancing Script (typed signatures)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 10:02:18 -04:00
Brandon Thomas and Claude Opus 5.5
01d0dc67ba
M5: Fill & Sign typed signatures and initials (Type or Draw; script-font outlines drawn as filled paths); fill_sign_add signature/initials
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 09:59:28 -04:00
Brandon Thomas and Claude Opus 5.5
1f2e267f32
app icon: lion (owner's ArtCraft drawing), Dock/taskbar/launcher wiring, palette docs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 09:53:34 -04:00
Brandon Thomas and Claude Opus 5.5
03fca33d10
M5: Text boxes write rich text (/RC XHTML and /DS) in step with their text and style
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:11:12 -04:00
Brandon Thomas and Claude Opus 5.5
9372b25d0b
M10: Create PDF from JPEG 2000 images (JP2 or codestream, embedded as JPXDecode); M1: looping /Prev chains test
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:07:53 -04:00
Brandon Thomas and Claude Opus 5.5
80a8087ebc
M9: Certificate Viewer (chain, Summary, Details, Trust; export, trust) from the Signatures panel; dialog button rows no longer stretch dialogs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:00:56 -04:00
Brandon Thomas and Claude Opus 5.5
183eda77ca
M9: Roadmap log
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:55:20 -04:00
Brandon Thomas and Claude Opus 5.5
f58570699e
M9: Sign with macOS Keychain identities (keys stay in the Keychain): listed in Sign with a Digital ID; sign_keychain_ids, sign_document id keychain:…
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:55:07 -04:00
Brandon Thomas and Claude Opus 5.5
294cbd6716
M8: Applying redactions cleans the tags: elements of changed marked content lose Alt/ActualText/E, empty marked content leaves them
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:48:43 -04:00
Brandon Thomas and Claude Opus 5.5
1d8b1ecb02
M1/M4: Hybrid-reference files: /XRefStm entries replace the table's free entries; signed documents refuse edits that would force a full rewrite
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:45:20 -04:00
Brandon Thomas and Claude Opus 5.5
ba4a7a6d42
M11: Optimizer Clean Up removes invalid links and bookmark destinations and unreferenced named destinations
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:40:51 -04:00