Commit Graph

  • 3908a03aa6 Optimizer: Audit space usage counts images PrintCraft added as images (#3) storybored379 2026-10-04 10:24:06 -07:00
  • 554969da72 Never crash: forbid unsafe, clippy.toml for tests, guard and craftrules link Brandon Thomas 2026-10-04 10:59:39 -04:00
  • d9d7caca22 Agent rules: never panic (AGENTS.md §4, CLAUDE.md non-negotiables) Brandon Thomas 2026-10-04 08:14:16 -04:00
  • 1434db626a Never crash: deny the panic lints in crates that are already clean Brandon Thomas 2026-10-04 13:12:21 -04:00
  • 7632d8b179 Never crash: create has no expect calls Brandon Thomas 2026-10-04 13:12:21 -04:00
  • 51027324e1 Never crash: UI and app shell have no expect/unreachable Brandon Thomas 2026-10-04 11:56:00 -04:00
  • d54f7c2fa7 Never crash: the automation (MCP/script) tools have no expect/unreachable Brandon Thomas 2026-10-04 11:56:00 -04:00
  • f7a0d3a3b9 Never crash: render has no expect/unreachable Brandon Thomas 2026-10-04 11:56:00 -04:00
  • c74fb89a0d Never crash: organize has no expect/unreachable Brandon Thomas 2026-10-04 11:56:00 -04:00
  • 456a42a896 Never crash: sign has no expect/unreachable Brandon Thomas 2026-10-04 11:56:00 -04:00
  • 7f09486004 Never crash: last-resort guard around edits, opens, saves and UI commands Brandon Thomas 2026-10-04 11:56:01 -04:00
  • 18c1acdb31 Never crash: hostile form scripts can't overflow the stack Brandon Thomas 2026-10-04 13:05:52 -04:00
  • 58cd6614ea Never crash: engine denies the panic lints Brandon Thomas 2026-10-04 11:56:00 -04:00
  • 9fc3354fe6 Never crash: filters, fonts, js, optimize and a11y deny the panic lints Brandon Thomas 2026-10-04 11:55:59 -04:00
  • 95d8ba3101 Never crash: crypt has no panic paths Brandon Thomas 2026-10-04 11:55:59 -04:00
  • 15f6fa7d4c Never crash: forms scripts can't overflow the stack or the date arithmetic Brandon Thomas 2026-10-04 11:55:59 -04:00
  • 8f1f4e7ffb Git: mark PDFs, keys, fonts and images binary so Windows checkouts keep their bytes Brandon Thomas 2026-10-04 12:13:50 -04:00
  • 48f1495ac2 Tests: take split part names with Path::file_name so the test passes on Windows Brandon Thomas 2026-10-04 11:40:29 -04:00
  • ab47bf4b9a CI: as_chunks instead of constant-size chunks_exact (clippy 1.99 chunks_exact_to_as_chunks) Brandon Thomas 2026-10-04 10:16:27 -04:00
  • 788456a8e7 Merge pull request #9 from storytold/pr/license-standard Brandon Thomas 2026-10-04 10:09:05 -04:00
  • d20eef9d56 Licensing: standard LICENSE files, NOTICE, ArtCraft brand terms Brandon Thomas 2026-10-04 10:07:05 -04:00
  • 2336b24746 M4: Deleted pages leave the file even when bookmarks, links or widgets still point at them (#2) storybored379 2026-10-03 21:14:59 -07:00
  • 0523ccdfdc M8: Redaction drops /PCAdded from rewritten content streams so redacted added text does not stay in the file (#1) storybored379 2026-10-03 21:14:56 -07:00
  • 9d99f4b278 Release 0.1.1 v0.1.1 Brandon Thomas 2026-10-03 09:55:41 -04:00
  • 2f248974ae M13: ROADMAP: session 12 later progress (compare, actions, PDF/A, Office export, forms) Brandon Thomas 2026-10-03 09:46:13 -04:00
  • 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 Brandon Thomas 2026-10-03 09:40:46 -04:00
  • 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 Brandon Thomas 2026-10-03 07:19:54 -04:00
  • 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 Brandon Thomas 2026-10-03 05:48:19 -04:00
  • a4bf717c06 M12: Compare files: visual differences (pages rendered and compared region by region), shaded orange; doc_compare visual option Brandon Thomas 2026-10-03 05:37:23 -04:00
  • 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 Brandon Thomas 2026-10-03 05:31:18 -04:00
  • aa194686f1 M6: Prepare a form detects fields (underscore blanks, rules, boxes, check squares) and names them from their labels; form.detect, form_detect_fields Brandon Thomas 2026-10-03 05:20:54 -04:00
  • 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 Brandon Thomas 2026-10-03 05:08:28 -04:00
  • 6ff0bf8f64 M6: Merge data files into spreadsheet (FDF, XFDF, filled PDF forms → CSV); form_merge_data tool Brandon Thomas 2026-10-03 04:52:59 -04:00
  • 9321864393 M13: ROADMAP: session 12 progress (OCR, JavaScript, in-place editing) Brandon Thomas 2026-10-03 04:42:32 -04:00
  • 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 Brandon Thomas 2026-10-03 04:41:47 -04:00
  • a7ffee01b5 M10: Recognize text in multiple files (ocr.recognize_batch, ocr_recognize_files): searchable copies written to a folder in the background Brandon Thomas 2026-10-03 03:54:11 -04:00
  • 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 Brandon Thomas 2026-10-03 03:47:58 -04:00
  • d7c22d7ef0 M7: Justify, underline, line spacing, character spacing and horizontal scale for existing paragraphs (and justify for added text); Lucide align-justify icon Brandon Thomas 2026-10-03 03:16:03 -04:00
  • 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 Brandon Thomas 2026-10-03 03:07:43 -04:00
  • 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 Brandon Thomas 2026-10-03 02:55:08 -04:00
  • 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 Brandon Thomas 2026-10-03 02:42:18 -04:00
  • 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 Brandon Thomas 2026-10-03 02:25:06 -04:00
  • 5a70838884 M7: PDF font tables move to the fonts crate with Unicode decoding/encoding (ToUnicode, WinAnsi/MacRoman/Standard, Differences glyph names, subset glyph checks) Brandon Thomas 2026-10-03 00:42:57 -04:00
  • 2548228b1d M3: frame-budget tests skip (and say so) when the machine is overcommitted Brandon Thomas 2026-10-03 00:42:57 -04:00
  • beb4e14c44 xtask: version test uses gates::root (fixes the xtask test build) Brandon Thomas 2026-10-03 00:42:57 -04:00
  • dab27f098c Roadmap: measured parity (45% of features, ≈35% of effort) and revised Opus 5.5 hour estimate (≈600–1,100 h remaining) Brandon Thomas 2026-10-03 00:30:22 -04:00
  • e849fbcf1b xtask: make version.rs compile here and register cargo xtask version Brandon Thomas 2026-10-02 16:20:47 -04:00
  • 92dd783b7e Web: add Trunk.toml so the release zip finds the site in dist/web with relative URLs v0.1.0 Brandon Thomas 2026-10-02 15:47:40 -04:00
  • 1dd9f27b36 README: tagline names the Adobe app it reimplements; standard Adobe trademark and non-affiliation notice Brandon Thomas 2026-10-02 12:24:17 -04:00
  • ff0d0ac294 README: Crafting Apps table in five columns (icon, app, purpose, GitHub, Website) Brandon Thomas 2026-10-02 12:19:06 -04:00
  • 099ea8c152 README: drop the old DrawCraft name; VectorCraft links to /apps/vectorcraft Brandon Thomas 2026-10-02 12:18:18 -04:00
  • fa601c1641 README: app icons in the Crafting Apps table Brandon Thomas 2026-10-02 12:17:17 -04:00
  • 4466fe8623 Signed release pipeline (macOS/Windows/Linux/Web); README community note Brandon Thomas 2026-10-02 12:06:19 -04:00
  • fcf3a7efa1 M3: About credits Dancing Script (typed signatures) Brandon Thomas 2026-10-02 10:02:18 -04:00
  • 01d0dc67ba M5: Fill & Sign typed signatures and initials (Type or Draw; script-font outlines drawn as filled paths); fill_sign_add signature/initials Brandon Thomas 2026-10-02 09:59:28 -04:00
  • 1f2e267f32 app icon: lion (owner's ArtCraft drawing), Dock/taskbar/launcher wiring, palette docs Brandon Thomas 2026-10-02 09:53:34 -04:00
  • 03fca33d10 M5: Text boxes write rich text (/RC XHTML and /DS) in step with their text and style Brandon Thomas 2026-10-02 08:11:12 -04:00
  • 9372b25d0b M10: Create PDF from JPEG 2000 images (JP2 or codestream, embedded as JPXDecode); M1: looping /Prev chains test Brandon Thomas 2026-10-02 08:07:53 -04:00
  • 80a8087ebc M9: Certificate Viewer (chain, Summary, Details, Trust; export, trust) from the Signatures panel; dialog button rows no longer stretch dialogs Brandon Thomas 2026-10-02 08:00:56 -04:00
  • 183eda77ca M9: Roadmap log Brandon Thomas 2026-10-02 07:55:20 -04:00
  • 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:… Brandon Thomas 2026-10-02 07:55:07 -04:00
  • 294cbd6716 M8: Applying redactions cleans the tags: elements of changed marked content lose Alt/ActualText/E, empty marked content leaves them Brandon Thomas 2026-10-02 07:48:43 -04:00
  • 1d8b1ecb02 M1/M4: Hybrid-reference files: /XRefStm entries replace the table's free entries; signed documents refuse edits that would force a full rewrite Brandon Thomas 2026-10-02 07:45:20 -04:00
  • ba4a7a6d42 M11: Optimizer Clean Up removes invalid links and bookmark destinations and unreferenced named destinations Brandon Thomas 2026-10-02 07:40:51 -04:00
  • 763cd70ece M11: PDF Optimizer ▸ Audit space usage: bytes and share of the file per kind of content; doc_audit_space Brandon Thomas 2026-10-02 07:37:48 -04:00
  • 55275cd935 M3: Advanced Search panel (⇧⌘F): every match with its context, by page; click to go; shares the find bar's search Brandon Thomas 2026-10-02 05:40:22 -04:00
  • e9322b597b M12: Add alternate text: figures one by one with a preview, alternate text or Decorative (content becomes an artifact); accessibility_figures / accessibility_set_alt Brandon Thomas 2026-10-02 05:36:39 -04:00
  • 095a17610f M12: Heading-nesting findings read naturally ("H3 follows an H1") Brandon Thomas 2026-10-02 05:30:38 -04:00
  • e8bc0db811 M5: Custom stamps: create from a PDF page or an image under a category and name, kept in the stamp library, placed at natural size; stamp_custom tool Brandon Thomas 2026-10-02 05:24:28 -04:00
  • d5c659812c M6: Image fields: Prepare a form ▸ Image field places an icon-only button that asks for a picture when clicked (buttonImportIcon recognised natively); form_set_image Brandon Thomas 2026-10-02 05:16:42 -04:00
  • 8486a35207 M4: Combine files lists the files first: reorder, remove, add more, and choose each file's pages (doc_combine pages) Brandon Thomas 2026-10-02 05:11:25 -04:00
  • 9ba951dd93 M12: Roadmap log for session 11 Brandon Thomas 2026-10-02 05:06:57 -04:00
  • 0b628d5515 M12: Accessibility Checker: new a11y crate with Acrobat's 32 rules in 7 categories, HTML report, fixes (language, title, tab order); options dialog and results panel (Fix, Skip Rule, Explain, Check Again, Show Report); accessibility_check / _report / _fix tools Brandon Thomas 2026-10-02 05:05:56 -04:00
  • 1e69a92c41 M10: Export a PDF ▸ Export all images: JPEGs unchanged, other images as PNG with alpha; skipped images reported; doc_export_all_images Brandon Thomas 2026-10-02 04:47:45 -04:00
  • f1817459f2 M10: MCP resources for open documents: information, text, page text and page images (resources/list, templates, read) Brandon Thomas 2026-10-02 04:42:21 -04:00
  • 19b5b1d6d2 M1: List document revisions and open an earlier one (Document Properties ▸ Advanced; doc_revisions, doc_open_revision); PDF version reads 1.7, not 17 Brandon Thomas 2026-10-02 04:40:25 -04:00
  • 6a9dd32ef9 M3: Tabs and the window title show the document title when Initial View asks for it (DisplayDocTitle); parity for setting the document language Brandon Thomas 2026-10-02 04:34:26 -04:00
  • d26821fdcd M3: View ▸ Zoom ▸ Fit visible (⌘3): zoom so the current page's visible content spans the window Brandon Thomas 2026-10-02 04:32:03 -04:00
  • c0f9c73ae9 M6: Prepare a form ▸ Preview (fill the form as a reader would; Edit fields goes back) and Field Properties ▸ Locked (annotation Locked flag; properties greyed out until unlocked, values still fillable); form_set_props takes locked Brandon Thomas 2026-10-02 04:28:19 -04:00
  • 4df7a73a1a M6: Several fields at once in Prepare a form: Shift/⌘-click to select, then right-click to Align (left, right, top, bottom, centres), Distribute evenly, or Set Fields to Same Size, anchored on the right-clicked field; one undo step each. Test fix: the area-highlight test waits for the text layer before dragging over text Brandon Thomas 2026-10-02 04:23:22 -04:00
  • aac0db461d M6: Duplicate a field across pages (right-click ▸ Duplicate…, all pages or a range): widgets of the same field share one value; a field that is its own widget is split into a field and a widget kid. Prepare mode gets a field context menu (Properties, Duplicate, Delete) Brandon Thomas 2026-10-02 04:20:26 -04:00
  • cce71c7607 M6: Date picker: date fields show a month calendar while focused; the picked day is written in the field's own format Brandon Thomas 2026-10-02 04:17:02 -04:00
  • e0d954f10a M5: Eraser for drawings (Draw flyout): rubs out the parts of ink strokes it passes over, splitting strokes and deleting emptied drawings, in one undo step Brandon Thomas 2026-10-02 04:12:36 -04:00
  • 968d26a41e M5: Attach a file as a comment (push pin, paperclip, graph or tag icon in PrintCraft's own drawings; the file is embedded and listed under Attachments); comment_add type attachment Brandon Thomas 2026-10-02 04:09:44 -04:00
  • bf58d1f6bf M5: Area highlight (drag the highlighter off text) and Replace Text (strikeout plus a grouped caret holding the replacement; Highlight flyout, comment_add type replace) Brandon Thomas 2026-10-02 04:05:25 -04:00
  • fe46d6fa3a M3/M4: Roadmap log Brandon Thomas 2026-10-02 04:00:22 -04:00
  • e61f75d69a M3: Marquee zoom (drag to fill the window with an area, click to zoom in) and Take a Snapshot (copies an area at the current zoom to the clipboard as an image) Brandon Thomas 2026-10-02 04:00:12 -04:00
  • 7515170103 M4: Cut, copy and paste pages in Organize Pages (⌘C/⌘X/⌘V and a thumbnail context menu; paste after the selection, across documents; the last page can't be cut) Brandon Thomas 2026-10-02 03:57:11 -04:00
  • 4991a59479 M5/M6: Make Current Properties Default for comments (colour, opacity, width become the tool's default); required fields get a red border when fields are highlighted Brandon Thomas 2026-10-02 03:53:59 -04:00
  • c6d82ab62a M4: Initial View: Document Properties ▸ Initial View (navigation panel, page layout, magnification, open-to page, window and interface options) and Advanced ▸ reading options (binding, language), honoured when a document opens; script open actions are kept; Bookmarks panel options expand all, expand top-level or collapse all; doc_initial_view tool (85 tools) Brandon Thomas 2026-10-02 03:50:56 -04:00
  • 05195a2af6 M7: Backgrounds and watermarks from a file: an image or a page of a PDF (imported as a form XObject that draws upright, inherited resources included), scaled relative to the page, with rotation, opacity and placement; Source ▸ File in the dialogs; doc_watermark / doc_background take file, file_page and scale Brandon Thomas 2026-10-02 03:44:22 -04:00
  • d97711302c M6: Order tabs manually: the Fields panel lists fields in tab order and, while preparing a form, moves a field earlier or later on its page (widgets reordered in /Annots, other annotations keep their places, page switches to annotation order); form_tab_order takes field + move Brandon Thomas 2026-10-02 03:37:13 -04:00
  • 65c3f84ea8 M11: Roadmap and status (≈ 27%) Brandon Thomas 2026-10-02 03:33:18 -04:00
  • 17e3eb255d M8: Redaction Properties: overlay text font (Helvetica, Times, Courier), size or auto-size, colour, alignment and repeat, written as /DA, /Q and /Repeat and drawn on apply; overlay fonts are added to the page only when used Brandon Thomas 2026-10-02 03:33:01 -04:00
  • dfae15ec67 M6: Field Properties ▸ Options for every field type: text alignment, default value, scroll long text, rich text, password, file selection, spell check, comb of characters (with its rules); choice defaults, sort items (the list is reordered), custom text, multiple selection, commit immediately; check box / radio checked by default and radios in unison. Reset form restores defaults. form_set_props takes align, default and flags Brandon Thomas 2026-10-02 03:28:44 -04:00
  • 09c1404d95 M4/M1: Drag page thumbnails to reorder (selection or the grabbed page, insertion bar, one undo step); damaged files say they were repaired, and Document Properties ▸ Advanced lists the repairs Brandon Thomas 2026-10-02 03:22:58 -04:00
  • 9fcece8afb M11.1: PDF Optimizer: new optimize crate measures each image's effective resolution where pages draw it and resamples (bicubic) and recompresses (JPEG quality steps or ZIP) colour and grayscale images, soft masks with them, only when smaller; discards thumbnails, alternate images, tags and print settings; Flate for unencoded streams. Reduce File Size now downsamples like Acrobat (150 ppi above 225, JPEG medium); Optimize PDF dialog (Images, Discard Objects, Discard User Data, Clean Up) composes Remove Hidden Information; doc_optimize tool (84 tools) Brandon Thomas 2026-10-02 03:18:47 -04:00
  • 68ea2a068a M9 perf: signature revalidation after edits reuses the signed ranges' digests and the parsed signed revision (DigestCache per document) and no longer scans the file for revision markers: a comment edit on a 120 MB signed file takes 6 ms instead of 84 ms; cos exposes xref entries so unchanged objects are skipped when diffing revisions Brandon Thomas 2026-10-02 03:06:54 -04:00
  • dee7bef0ea M9: Roadmap and status (≈ 26%) Brandon Thomas 2026-10-02 03:00:04 -04:00
  • 7ff3053fda M9.6: --dialog sign|certify opens Sign with a Digital ID (headless screenshots, control channel) Brandon Thomas 2026-10-02 03:00:04 -04:00