Brandon Thomas
8490965e71
CI: fix new Rust 1.99 clippy lints (as_chunks, ?, redundant ref)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:37:09 -04:00
Brandon Thomas
558e798dfc
E: CMYK transparency blend space on screen
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 02:09:26 -04:00
Brandon Thomas
fe40d4b80b
T: tate-chu-yoko in vertical frames
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 00:46:52 -04:00
Brandon Thomas
b13135472a
V: Rotate Spread per spread — canvas layout through per-spread transforms
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 00:25:16 -04:00
Brandon Thomas
7b636fb9f5
C: separations from source colours
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 23:54:54 -04:00
Brandon Thomas
dc2114be26
I: PDF form fields — text, check box, combo, list, signature
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:48:58 -04:00
Brandon Thomas
55af964ea8
X: inline XML tagging and tag markers
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:48:58 -04:00
Brandon Thomas
84d8f498eb
E: Directional Feather
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:55:15 -04:00
Brandon Thomas
9ecd3fb9fd
E: Inner Glow, Bevel and Emboss, Satin; soft effects kept in PDF export
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:50:43 -04:00
Brandon Thomas
37f0cd99e1
P: Object Layer Options for placed PDFs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:38:23 -04:00
Brandon Thomas
77fc006b02
T: vertical type — Vertical Type tool, upright CJK, CJK line breaking
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:18:14 -04:00
Brandon Thomas
fb747c5fa5
C: Color Settings, Proof Setup and Proof Colors
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 07:44:40 -04:00
Brandon Thomas
839887eb04
I: video and sound — media frames, posters, EPUB players (+ Media panel)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 05:20:35 -04:00
Brandon Thomas
08495e45d0
T: graphic cells — images in table cells
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:30:47 -04:00
Brandon Thomas
3fc38549d4
I: Object States — multi-state objects (+ panel)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:08:35 -04:00
Brandon Thomas
a4e76ed620
T: Track Changes — marked insertions and deletions, accept/reject all
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:57:22 -04:00
Brandon Thomas
adb054df46
V: Separations Preview and ink limit view
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:43:22 -04:00
Brandon Thomas
ba95a6f900
F: stroke styles — stripes, wavy, hash drawn (screen + PDF); named custom styles (+ IDML)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:39:39 -04:00
Brandon Thomas
10dd488e72
H: Image Import Options — crop placed PDFs to trim/bleed/art/media box
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:23:41 -04:00
Brandon Thomas
c9785ae1ed
U: Font menu with search, favourites and previews; persist engine preferences
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:27:52 -04:00
Brandon Thomas
2f54f0b53d
O: Frame Fitting Options — auto-fit on resize, align from, crop (+ dialog, IDML)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:14:47 -04:00
Brandon Thomas
eb2e8d8b4f
C: Appearance of Black — output rich black, Overprint [Black] at 100%
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:51:51 -04:00
Brandon Thomas
3b462285c5
T: editorial notes — anchored, flagged on screen, never printed; Notes panel
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:18:21 -04:00
Brandon Thomas
af0d241190
T: conditional text — conditions, hide/show in layout and exports, panel, IDML
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 23:02:15 -04:00
Brandon Thomas
98d8edf764
T: Composition highlights — keep and H&J violations, custom tracking/kerning
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:35:23 -04:00
Brandon Thomas
3609862c2e
C: Attributes panel — overprint fill/stroke/gap, nonprinting
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:18:30 -04:00
Brandon Thomas
74e352698e
F: Global Light and Generate Static Caption
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:42:46 -04:00
Brandon Thomas
cd72171859
O: Script Label, alt text, isolate/knockout groups, sort table rows
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:27:26 -04:00
Brandon Thomas
aa54531472
F: Gradient Feather — tool, effect on screen, soft mask in PDF
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:19:57 -04:00
Brandon Thomas
175aaf28fd
H: place a chosen PDF page (Image Import Options)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:57:38 -04:00
Brandon Thomas
b10a06f7b8
V: Overprint Preview
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:36:07 -04:00
Brandon Thomas
eb4fa9c64c
T: Type on a Path — tool, options, screen and PDF
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:34:20 -04:00
Brandon Thomas
bfe4220840
C: Appearance of Black on screen (rich black / accurate)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:59:19 -04:00
Brandon Thomas
20ef6c2c4e
T: Glyphs panel — font grid rendered in-house, search, click to insert, recently used
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:16:49 -04:00
Brandon Thomas
4aa76b85f9
T: Underline / Strikethrough Options — weight, offset, colour, tint
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:57:02 -04:00
Brandon Thomas
5971553d60
H: place SVG (vector PDF export), PSD, BMP, AI — designcraft-images crate
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:51:48 -04:00
Brandon Thomas
c0f8679ba5
V: Display Performance — Fast, Typical, High Quality display
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:34:40 -04:00
Brandon Thomas
66ab252044
F: Gradient Swatch tool, Gradient panel, unnamed gradients (object.gradient)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:15:01 -04:00
Brandon Thomas
97b305fdcd
F: Stroke panel — arrowheads (screen and PDF), cap/join/miter, gap colour
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:56:14 -04:00
Brandon Thomas
da0e87b86b
H: place PDF — sized by crop box, hayro on screen, vector form XObjects in PDF export
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:11:04 -04:00
Brandon Thomas
87727f279a
D: Paste Into, Polygon Settings
...
- Edit › Paste Into (⌥⌘V): copied objects (with their stories and images) become the selected
frame's content, clipped by it; Item::is_group / has_nested_items; renderer and PDF draw fill,
clipped content, stroke; IDML nests the items inside the frame both ways (verified in
InDesign 2026) (+ tests)
- Polygon Settings: sides and star inset as engine preferences used by the polygon tools and
frame.create; double-click the Polygon tool (+ test)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 08:24:48 -04:00
Brandon Thomas
ded7c7ad04
M9: damage-region repaint — re-render only changed frames and patch the canvas texture
...
- render: damage()/damage_with() — changed items and only the frames whose composition changed
(cache keeps the composition each edit replaced; Cache::composed_for matches a document
version exactly); conservative full repaint for styles, swatches, layers, parents, wrap,
effects and cross-story text (+ tests incl. pixel-identical patch vs full render)
- UI: canvas patches its texture after edits with the view unchanged (0.6 ms vs 22 ms on the
sample when typing); perf harness row for the damage repaint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 00:54:31 -04:00
Brandon Thomas
69563933be
M2: Find/Replace Font and missing-font highlighting
...
- engine: font.list (fonts used, missing first), font.replace (text, cells, footnotes, styles) (+ test)
- compose: RunStyle.missing_font (memoized per composition); render: pink highlight behind such
text when RenderOptions.highlight_missing_fonts (canvas only, never output) (+ test)
- UI: Type › Find/Replace Font… dialog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 00:47:12 -04:00
Brandon Thomas
5a9fa2d16a
M5: anchored objects — inline and above line
...
- doc: OBJECT_MARK with Story::objects (items normalized to the origin) kept in sync on edits,
copy/paste slices and threading
- compose: inline objects are wide glyphs sitting on the baseline (Y offset; auto leading grows);
above-line objects push their line down; placements per frame follow vertical justification
- render + PDF draw anchored items with their lines
- engine: anchored.insert/options/release/list; pasting copied items into text anchors them;
Options/Release act on the object at the insertion point (+ test)
- Object › Anchored Object menu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:21:24 -04:00
Brandon Thomas
3ad71d5a76
M7: footnotes — Insert Footnote, Document Footnote Options, column-bottom layout, PDF/IDML; generic command dialogs
...
- doc: FOOTNOTE_REF marker + Story::notes (kept in sync on insert/delete/thread), FootnoteOptions,
NumberStyle::Symbols, footnote text addressed like cell text (CellAddr::footnote)
- compose: notes numbered (continuous / restart per page, spread, section), composed at column
width, body text makes room, stacked at the column bottom with the rule above
- render + PDF draw footnote text; IDML export/import in InDesign's structure (verified in
InDesign 2026), FootnoteOption preferences
- engine: footnote.insert/options/list/setText/delete/goToReference (+ tests)
- UI: caret/selection in footnote text, Footnote Options dialog, Type menu entries; menu items
labelled '…' with parameters open a dialog generated from the command's params doc
- sample magazine carries a footnote
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:01:27 -04:00
Brandon Thomas
7a7d7b78a1
Merge main into M8 tables
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:47:48 -04:00
Brandon Thomas
77a23151ba
M8: tables
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:44:45 -04:00
Brandon Thomas
b62a795602
M9: render perf (glyph path cache, culling) + soft drop shadow/feather/glow; perf harness
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:31:01 -04:00
Brandon Thomas
91ae2b3cc9
M0: engine, tools, egui UI, desktop app, CLI, sample document, docs
...
Engine with command registry (~100 commands), tool hosting with one-step
undo per gesture, InDesign-style egui frontend (app bar, Control panel,
Tools panel, rulers, guides, frame edges, ports/threads, Properties/Pages/
Layers dock, panels, dialogs), JSON control channel, headless CLI renderer,
generated sample magazine, README/AGENTS/ROADMAP/ASSETS.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:39:15 -04:00
Brandon Thomas
c9dcad1f6e
continued work
2026-10-01 09:36:32 -04:00