Brandon Thomas
|
ff3dd114d6
|
Roadmap: session 9 (≈ 18%)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 00:30:48 -04:00 |
Brandon Thomas
|
d2926538bd
|
M8.4: Remove Hidden Information and Sanitize Document: scan with per-category counts (metadata, attachments, comments, form fields, hidden text in render modes 3/7 or off the page, hidden layers' content and groups, bookmarks, links/actions/JavaScript, private data); remove chosen categories (fields flattened so values stay visible) or all; full rewrite on save. Dialogs with checkboxes and counts, Sanitize confirmation; doc_hidden_info/doc_remove_hidden tools (59 tools)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 00:30:18 -04:00 |
Brandon Thomas
|
f8175fb97e
|
M8.5/M8.6/M8.7: Redact a PDF: new content crate (L2: content-stream operators with spans, inline images, serializer, matrices) and redact crate (L4): Redact annotations; apply removes glyphs (TJ displacement keeps the rest in place; simple, composite/CMap and Type 3 fonts), clears covered image pixels (or removes images it can't re-encode), removes or clips vectors and shadings, rewrites form XObjects copy-on-write, removes overlapping comments, links and fields, draws the boxes with overlay text, then verifies and fails closed; redacted documents save as a full rewrite. Search & Redact text and patterns (phone, e-mail, credit card, SSN, dates). UI: Redact tool (text or box), Redact pages, Find text and redact, Set properties, Clear all / Redact all with confirmation; redact_mark/redact_apply/redact_clear tools (57 tools). Fix: deleting a field when /AcroForm is a direct dictionary
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 00:24:29 -04:00 |
Brandon Thomas
|
d8209fcbd2
|
M6.6: Prepare a form: add text, date, check box, radio (new group or join the selected one), drop-down, list box, button and signature fields with Acrobat's names (Text1, Check Box1, Group1…) by click or drag; fields shown with blue fill and name tags, select/move/resize/Delete; Field Properties (General, Appearance font size, Position, Options); engine AddField/SetFieldProps/DeleteField; form_add_field/form_set_props/form_delete_field tools (54 tools). Fix: check box appearance states were direct streams that read back as null after saving
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 00:04:25 -04:00 |
Brandon Thomas
|
79fc2e9c71
|
M4.4: Replace pages (Acrobat semantics: page content, resources and boxes replaced; links, comments, fields and bookmarks kept): organize replace_pages, engine ReplacePages, file picker + Replace Pages dialog, page.replace command, page_replace tool (51 tools)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:46:34 -04:00 |
Brandon Thomas
|
750fb9a337
|
Roadmap: session 8 later arcs (≈ 16%)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:42:17 -04:00 |
Brandon Thomas
|
4cdf74a4f2
|
M5.5/M6.7: Flatten comments and form fields: appearances (with /AS states) drawn into page content by Algorithm 8.1, pop-ups and replies removed, flattened widgets pruned from the field tree, links and hidden annotations kept; engine Flatten edit, comment.flatten/form.flatten commands, doc_flatten tool (50 tools)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:41:59 -04:00 |
Brandon Thomas
|
245c468bc7
|
M5.4: Comment Properties (appearance: colour, opacity, thickness, note icon; general: author, subject; review history) from the canvas and card menus, one undo step; Comments panel filter (type, author, status) and sort (page, author, date, type, colour) with group headers; annot set_info/props
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:35:30 -04:00 |
Brandon Thomas
|
adb644c5e1
|
M10.2/M11.1: Create a PDF (blank, from PNG/JPEG images at their resolution with transparency, from plain text) in a new create crate (L4); opening an image or text file converts it to a new unsaved PDF; Reduce file size (resource merge across the document, GC, object streams) writes a compact copy; Create group Ready; doc_create/doc_reduce tools (49 tools). Fix: the Hand tool did not pan (the page widget took the drag)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:29:17 -04:00 |
Brandon Thomas
|
2c69c02699
|
M5.7: Fill & Sign: typewriter text, check/cross/dot/line marks (PrintCraft-drawn stamps), today's date (local time), drawn signature (signature pad, saved in settings, placed by click); quick-bar Fill & Sign flyout, 7 commands, catalog Ready; fill_sign_add tool (47 tools) for agents filling flat forms; local UTC offset via chrono (already in the graph)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:21:11 -04:00 |
Brandon Thomas
|
ba944746e5
|
M10.3 (first formats): Export a PDF to images (PNG, 72–600 dpi) and text: engine export module (Exporter over the working file, so unsaved edits and hidden layers apply), export dialogs with page ranges, background export thread with progress notices (in place + downloads on the web), export.image/export.text commands, doc_export_images/doc_export_text tools (46 tools)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:09:49 -04:00 |
Brandon Thomas
|
fbab67c7dc
|
Roadmap: session 8 progress (M4 88%, M7 6%, overall ≈ 14%)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:03:40 -04:00 |
Brandon Thomas
|
d1323abaff
|
M7.6: header & footer, watermark, background: new model (L2: page tree with inheritance, display geometry) and edit (L4) crates; marks drawn in display space on rotated pages, artifact-tagged and /PCMark-tagged (found without decompressing), original content wrapped in q/Q, page resources copied not shared; Acrobat tokens (page numbers, dates, Bates); Add/Update/Remove with exact restore of the original content; dialogs with page range options (subsets) and previews; 9 commands; tools doc_header_footer/doc_watermark/doc_background/doc_remove_marks (44 tools); dialogs outline their controls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:03:20 -04:00 |
Brandon Thomas
|
2f55c3471c
|
M4.4: page boxes and duplicate: organize set_page_box (crop/trim/bleed/art/media by margins or rect, defaults and inheritance handled, all-or-nothing validation) and duplicate_pages; engine SetPageBox/DuplicatePages; Set Page Boxes dialog (units, page range, preview), Crop tool (drag to crop, double-click for the dialog), Duplicate pages command; tools page_set_box/page_duplicate (40 tools); dialog controls are outlined (radios, combos and number fields were invisible); catalog Page labels points at Number pages
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 22:48:13 -04:00 |
Brandon Thomas
|
67ff9303c8
|
M6.1/M6.2: form filling: new fonts (L2) and forms (L3) crates; field tree with inheritance, widgets, options; set_value with validation and regenerated appearances (auto-size, comb, multiline, password, quadding, /MK, combo, list selection), check/radio states (own AP when missing), reset to /DV; engine SetFieldValue/ResetForm with fill-forms permission; UI in-place editor (Enter/click-away commit, Escape, Tab with select-all), check/radio toggle, choice popup, Clear form; tools form_fields/form_fill/form_reset. Perf: named destinations indexed once (190 MB manual opens in 1.8 s instead of 172 s); comment and form edits refresh view data from the object graph instead of a full re-inspection (6x faster per edit on large files; equivalence-tested). annot uses the shared fonts helpers. Docs, parity, roadmap.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 22:37:35 -04:00 |
Brandon Thomas
|
ff641c669e
|
M8.1: Protect Using Password: engine Protect/RemoveProtection edits (Acrobat permission levels: printing, changes, copy, screen readers; AES-256/AES-128/RC4 compatibility; encrypt-except-metadata), per-state passwords on the undo stack, owner rights kept after saving, pending security in Document Properties; dialog matching Acrobat's (Viewing/Editing, strength meter, Advanced Options), protect.password/protect.remove commands; doc_protect/doc_unprotect tools (passwords never echoed). Fixes: saving a password-protected document failed to rebase on the encrypted file; DocInfo.encrypted was false for every decrypted file
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 21:55:00 -04:00 |
Brandon Thomas
|
54e288c5fe
|
M5.3/M5.4: commenting UI: quick-bar Comment/Highlight/Draw flyout groups with pin, colour and thickness; sticky note and text box composer; highlight/underline/strikethrough from text selection; freehand, line, arrow, rectangle and oval gestures with live previews; Select tool selects (per-line frames for markup), moves, resizes with 8 handles, edits and deletes comments; canvas context menu (edit, reply, set status, colour, delete); Comments panel rewrite (add-a-comment box, search, selectable cards with reply box, ... menu, inline edit, status badges); comment edits re-render only their page and keep stale rasters on screen; control channel ui.drag, secondary click, pages_on_screen and comment state; view options quick/author/comment; 7 Lucide icons; parity entries; README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 21:38:07 -04:00 |
Brandon Thomas
|
4058c156f7
|
M5.1/M5.2: comments engine: new annot crate (L3) with builders and appearance streams for sticky note, highlight, underline, strikeout, squiggly, rectangle, oval, line/arrow, ink, text box; reply, review status, move, resize, restyle, delete (with pop-ups and replies); undoable engine edits with /NM ids and dates, annotate-permission check; inspector reports index, state, quads; 6 automation tools (comment_list/add/reply/set_status/edit/delete, highlight by text search)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 20:44:19 -04:00 |
Brandon Thomas
|
f1111c0c59
|
M4.4: parity (page labels shipped), roadmap update for session 7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 14:15:25 -04:00 |
Brandon Thomas
|
2fc7cb4e64
|
Community links: Discord button in the title bar, ArtCraft community card on Home, About dialog with ArtCraft mark/wordmark and links, Help menu commands (help.discord/app_page/github/website), CLI --version and MCP websiteUrl, README Community section; 4 Lucide icons (attributed); regenerated screenshots with honest brand attribution
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 14:15:05 -04:00 |
Brandon Thomas
|
bb31b5a1b5
|
Brand assets: ArtCraft logos attributed as Storyteller-owned (not open source, LicenseRef-Storyteller-Trademark) with a narrow asset-gate exception for docs/brand logos; AGENTS.md §1.2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 14:02:40 -04:00 |
Brandon Thomas
|
6616ccdead
|
M4.4: page labels (Number pages): organize label ranges with Acrobat semantics (later pages keep labels, continuations merged), undoable NumberPages edit, page_number tool, Number pages dialog (Pages menu)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 14:02:40 -04:00 |
Brandon Thomas
|
6089e58051
|
M4.6: parity: bookmark add/rename/delete/move/set-destination shipped
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 13:12:49 -04:00 |
Brandon Thomas
|
0ac2908195
|
M4.6: bookmark editing: organize outline API (add/rename/move/delete/set page, surgical relinking, /Count recompute), undoable engine edits, 6 automation tools, Bookmarks panel (⌘B new + inline rename, context menu: rename, set page, move, indent/outdent, delete), Lucide bookmark-plus icon (attributed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 13:10:49 -04:00 |
Brandon Thomas
|
ebfe058a9c
|
M3.9: control channel counts real egui passes (eframe runs logic without a pass while the window is hidden): clicks/keys/screenshots fail after 5 s with a clear message and dropped input instead of false success
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 13:10:49 -04:00 |
Brandon Thomas
|
669196a67e
|
M3.4: view tests (layouts, actual size/fit width/fit page, link clicks, field list jump, field highlighting pixels, fonts tab); parity: 10 features to shipped (P0 35.2%)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 12:29:05 -04:00 |
Brandon Thomas
|
4c4b17e5fa
|
M3.3: render watchdog (a page rendering past 20 s is reported and skipped, later requests fail fast, a bounded replacement worker keeps rendering); ui.state reports page errors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 12:23:15 -04:00 |
Brandon Thomas
|
825cae7a8d
|
M1.10: roadmap update (fuzzing, parity checklist)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:49:03 -04:00 |
Brandon Thomas
|
ee254a91a2
|
M2.6: fuzz findings in the bootstrap renderer: paint-nesting cap now covers Type 3 glyphs (stack overflow), hayro skips images over 2^28 px (hang); regression tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:48:52 -04:00 |
Brandon Thomas
|
0bf28b79d4
|
M0.8: parity/acrobat-features.toml (826 features) + xtask parity (schema, registry/tool/test cross-checks, tier/area report) in ci; fuzzer skips known-hang seeds
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:34:02 -04:00 |
Brandon Thomas
|
d4c4534821
|
M1.10: cargo xtask fuzz (stable mutation fuzzer: child processes, crash/hang triage, minimization), check-one --edit, nightly CI fuzz job
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:20:36 -04:00 |
Brandon Thomas
|
703d057578
|
M3.3: effective_scale floor overrode the size caps (a huge page box rendered 9M px wide); regression tests for the fuzz findings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:20:36 -04:00 |
Brandon Thomas
|
675b258e77
|
M2.6: hayro-interpret patches from fuzzing: tiling-pattern nesting cap (stack overflow), CID width ranges clamped to 65535 (hang)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:20:36 -04:00 |
Brandon Thomas
|
24418ae3c5
|
M1.3: number parser cut a multi-byte token mid-character and panicked (found by fuzzing)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:20:36 -04:00 |
Brandon Thomas
|
6ea1402424
|
fuzzing
|
2026-10-01 08:55:16 -04:00 |
Brandon Thomas
|
8426503edb
|
M1.9: roadmap update
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 08:43:54 -04:00 |
Brandon Thomas
|
1d1005f36c
|
M1.9: full saves write object streams + xref stream (PNG Up predictor); encrypt-dict closure kept outside; reader authenticates before validating the catalog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 08:43:41 -04:00 |
Brandon Thomas
|
2849ad8922
|
M2.6: vendor hayro-syntax 0.7.2 with a page-tree cycle guard (stack overflow on /Kids loops in object streams)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 08:43:41 -04:00 |
Brandon Thomas
|
c342387239
|
M4.5: roadmap update for session 6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 08:28:24 -04:00 |
Brandon Thomas
|
2ca1f5e1eb
|
continued work
|
2026-10-01 08:26:58 -04:00 |
Brandon Thomas
|
5cebbb9b33
|
M3.9: transport test (token required, auth handshake, forwarding)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 08:21:56 -04:00 |
Brandon Thomas
|
93fa9b79a8
|
M3.9: UI control channel (opt-in --control; ui.state/inspect/click/type/key/command/set/open/screenshot over token-authenticated loopback JSON-RPC; printcraft-cli ui)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 08:20:59 -04:00 |
Brandon Thomas
|
ce5f7ebd1c
|
M0.9: roadmap update for session 5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:52:59 -04:00 |
Brandon Thomas
|
abc4f56958
|
M13.1: parallel, cached page text for text_extract/text_find (520 pages: find 17.9s -> 3.7s cold, ~20ms warm)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:51:45 -04:00 |
Brandon Thomas
|
19788d3336
|
M0.4/M0.5: deny.toml + xtask deny in ci, GitHub CI workflow; MCP module behind a Cargo feature
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:45:10 -04:00 |
Brandon Thomas
|
b8fed39be5
|
M13.1: docs for agent control (README, AGENTS §3, crate README, CLAUDE.md)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:33:21 -04:00 |
Brandon Thomas
|
88e4ca7e5b
|
M13.1: printcraft-automation (headless tool set + opt-in MCP server over stdio); M4.8: CLI tools/run/mcp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:32:23 -04:00 |
Brandon Thomas
|
49c0c6bffc
|
M2.7: text layout follows the dominant text direction (rotated pages read along their lines)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:32:23 -04:00 |
Brandon Thomas
|
5f5f83cc0c
|
Session 4: M1.6 encryption (crypt crate R2-R6), M4 command registry, combine/extract/split, autosave + crash recovery, asset policy + xtask assets, README screenshots
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-09-30 23:12:34 -04:00 |
Brandon Thomas
|
5f61bde5eb
|
more work
|
2026-09-30 11:34:29 -04:00 |