Commit Graph
37 Commits
Author SHA1 Message Date
aiongg 6df33fa344 CJK 1.7: story direction belongs to the story
Vertical is a story property: every frame of a thread is vertical or
horizontal together, a frame threaded onto a story takes its direction,
and frames split off by threading or breaking a thread keep theirs.
Type > Story Direction is type.storyDirection {vertical} (checked in the
menu) for the stories of the text selection or selected frames;
object.textFrameOptions {vertical} and frame.create {vertical} set the
frames' stories. Documents that stored Vertical on the frame open with
each story taking its first frame's direction. IDML StoryOrientation is
read into and written from the story, beside its column direction
(StoryDirection), which stays a separate setting.
2026-10-07 10:44:46 -04:00
Brandon ThomasandClaude Opus 5.5 f1767a84fd Engine: an empty ids names nothing; states.create and conveyor.collect honour id
named_targets reads ids/id as targets() does, so {ids: [], id} can't
pass the gate and then run on nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:04:22 -04:00
japbcoelhoandClaude Opus 5.5 7e69c82b89 Engine: commands given ids run without a selection
A command that documents ids (object.textFrameOptions, transform.rotate, ...)
acts on the objects a call names, yet its enabled check looked only at the
selection. With a text caret or nothing selected, {"ids": [5]} failed with:

  command `object.textFrameOptions` is not available right now: nothing selected

Execute now lets such a call through when every named object exists, and
says "no object with id N" when one doesn't. transform.set, object.arrange
and edit.stepAndRepeat, which already acted on ids, now document them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:04:22 -04:00
japbcoelhoandClaude Opus 5.5 b54fa8d9bb Text: carriage returns in typed or created text start paragraphs
frame.create's text and text.insert kept CR and CR LF as characters, so text
written with InDesign's, classic Mac or Windows line ends ("One\rTwo") became
a single paragraph, and paragraph formatting (spaceAfter) never applied
between the parts. They now become \n, the paragraph separator, as edit.paste
and text import already did.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:04:08 -04:00
Brandon ThomasandClaude Opus 5.5 f05bbfeea2 Never crash: engine, MCP and tools
Commands return errors instead of expect()/unreachable!() (book, library,
undo/redo, paste, find/replace, Pathfinder, tables, QR, select, swatches,
anchors, articles, transform again, XML import). The sample document builder
propagates errors. Commands that add a key to their parameters no longer
panic when a caller (control channel, MCP, script) passes an array or a
string, and corrupt crash-recovery metadata is ignored. engine, mcp and
tools now deny unwrap/expect/panic/unimplemented/todo/unreachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 12:43:33 -04:00
Brandon ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 8eca6305f8 I: Object Export Options — artifact, rasterize, alignment, page break
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 10:48:58 -04:00
Brandon ThomasandClaude Opus 5.5 b655a5f75c V: Flattener Preview; knockout groups kept in PDF export
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:58:27 -04:00
Brandon ThomasandClaude Opus 5.5 84d8f498eb E: Directional Feather
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 08:55:15 -04:00
Brandon ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 6a476a28e3 L: Liquid Layout — page rules, liquid guides, object pins, alternate layouts (+ panel)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:56:27 -04:00
Brandon ThomasandClaude Opus 5.5 036144d327 O: Live Distribute while resizing a selection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:34:34 -04:00
Brandon ThomasandClaude Opus 5.5 3f2d53f330 Q: Gap tool
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:09:58 -04:00
Brandon ThomasandClaude Opus 5.5 1824d3c275 Q: gridify while drawing frames
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:05:53 -04:00
Brandon ThomasandClaude Opus 5.5 754425b1c7 O: clipping paths traced from alpha or edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:01:39 -04:00
Brandon ThomasandClaude Opus 5.5 b1924618ac D: Primary Text Frame toggle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:43:27 -04:00
Brandon ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 240668e87d T: scale/rotation/shear fields, absolute transform values, Transformations are Totals
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:54:05 -04:00
Brandon ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 571e1043f7 O: Transform Again family, Clear Transformations, layer merge/unused/others, Break Link to Style
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:09:32 -04:00
Brandon ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 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 ThomasandClaude Opus 5.5 7143973f52 G: Preferences (⌘K), scale strokes, Dimensions Include Stroke Weight, Quick Apply (⌘Return)
prefs.set (application) and document.preferences (units, increments, grids; undoable).
Scaling applies to content: paths and placed graphics take the scale, stroke weights follow
with Include Stroke Weight. X/Y/W/H and transform.set measure the stroke's outer edge.
The command palette becomes Quick Apply and lists styles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:26:39 -04:00
Brandon ThomasandClaude Opus 5.5 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 598de2cc1c Merge branch 'worktree-agent-abb433558e9b52d63'
# Conflicts:
#	crates/ui-egui/src/canvas.rs
2026-10-01 13:04:12 -04:00
Brandon ThomasandClaude Opus 5.5 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 cf8e6d1f74 Merge branch 'main' into worktree-agent-abb433558e9b52d63 2026-10-01 12:46:43 -04:00
Brandon ThomasandClaude Opus 5.5 67ac9f1dfb UI: fidelity pass 2 (Properties sections, spinner fields, task bar, inverse text selection, Pages/Layers panels)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:46:43 -04:00
Brandon ThomasandClaude Opus 5.5 77a23151ba M8: tables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:44:45 -04:00
Brandon ThomasandClaude Opus 5.5 12e502c203 M4: inner shadow, outer glow, basic feather commands; drop shadow spread/color
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:35:09 -04:00
Brandon ThomasandClaude Opus 5.5 d8c7d4455d M10.2/M11: spell checking (Moby PD word list + user dictionary, suggestions); Step and Repeat (count or grid)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:22:14 -04:00
Brandon ThomasandClaude Opus 5.5 c244e32bfe M8: rotate from selection corners, Rotate/Scale/Shear tools, Eyedropper (match attributes)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:06:16 -04:00
Brandon ThomasandClaude Opus 5.5 362c16e050 M1.7/M2: align & distribute, Pen tool, Direct Selection anchor/handle editing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:51:17 -04:00
Brandon ThomasandClaude Opus 5.5 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