2861 Commits
Author SHA1 Message Date
Brandon Thomas 89bfb16a20 Merge pull request #1230 from ghanashyam03/fix/designcraft-roadmap-parity-link
docs: fix broken parity checklist link
2026-10-19 02:49:37 -04:00
Brandon Thomas 54052d77f9 Merge pull request #1237 from aykutfirat/fix/cell-first-baseline
Tables: cell First Baseline offset (Cell Options › Text › First Baseline)
2026-10-19 02:49:33 -04:00
Brandon Thomas 33427bb053 Merge pull request #1272 from marcoarnulfo/fix/document-setup-bare-unit
Document Setup: read a number without a unit in the document's units
2026-10-19 02:49:27 -04:00
Brandon Thomas 2745aa13ea Merge pull request #1284 from Silvertree2010/fix/h2791-object-stroke-accepts-an-unbound
Clamp object.stroke tint and gapTint to 0..1
2026-10-19 02:49:24 -04:00
Brandon Thomas f559680518 Merge pull request #1288 from MarekSpodBiedry/issue-1245
Let single-line paths be resized along their length (#1245)
2026-10-19 02:49:20 -04:00
Brandon Thomas f026090935 Merge pull request #1289 from MarekSpodBiedry/issue-1251
Align Story Editor paragraph style labels with the wrapped text rows (#1251)
2026-10-19 02:49:17 -04:00
Brandon Thomas 043383f2dc Merge pull request #1290 from MarekSpodBiedry/issue-1260
Show New Document preset sizes in the selected units (#1260)
2026-10-19 02:49:13 -04:00
Brandon Thomas 9872cec044 Merge pull request #1291 from MarekSpodBiedry/issue-1265
Show text stroke options in the Stroke panel when text is selected (#1265)
2026-10-19 02:49:08 -04:00
Brandon Thomas e537f6065f Merge pull request #1292 from MarekSpodBiedry/issue-1267
Reject invalid story.replaceRange offsets with an error (#1267)
2026-10-19 02:49:04 -04:00
Brandon Thomas 3d91760e39 Merge pull request #1297 from Silvertree2010/fix/1269-anchored-images-are-marked-unuse
Show page and resolution of anchored images in the Links panel
2026-10-19 02:49:00 -04:00
Brandon Thomas 020f6c787d Merge pull request #1300 from KnottyDyes/squad/cli-install-docs
Docs: install the CLI and register it with MCP clients
2026-10-19 02:48:54 -04:00
Brandon Thomas dbf03b7b06 Merge pull request #1301 from Silvertree2010/fix/h368-ase-swatch-import-stores-out-of
Clamp RGB, CMYK and Gray components on ASE import
2026-10-19 02:48:51 -04:00
Brandon ThomasandClaude Opus 5.5 4e848d9727 ROADMAP: drop the duplicate review line and the stray blank line
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:38:44 -04:00
Brandon ThomasandClaude Opus 5.5 b741d0dabb ROADMAP: move the package-links note into the progress log
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:38:43 -04:00
Brandon ThomasandClaude Opus 5.5 dcb0417b63 Dock: the » chevron runs window.collapseToIcons
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:38:32 -04:00
Brandon ThomasandClaude Opus 5.5 8981d5e4cd IDML import: ignore non-finite Minimum First Baseline offsets, clamp to 0..8640
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:31:31 -04:00
Brandon ThomasandClaude Opus 5.5 0d0fa585a0 story.replaceRange: convert offsets with usize::try_from (wasm32-safe)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 02:23:07 -04:00
NetterSilverandClaude Haiku 5.5 49fc2c1209 Clamp RGB, CMYK and Gray components on ASE import
Found while testing crates/color/src/ase.rs:100-103

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 07:43:14 +02:00
KnottyDyes 07b4956e0f Docs: install the CLI and register it with MCP clients 2026-10-18 23:03:26 -06:00
NetterSilverandClaude Haiku 5.5 3b3544477d Show page and resolution of anchored images in the Links panel
Fixes #1269

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 04:04:40 +00:00
KnottyDyes 287b65f788 Object: reject malformed stroke types 2026-10-18 17:25:35 -06:00
MarekSpodBiedry 4df5d1639c Align Story Editor paragraph style labels with the wrapped text rows (#1251) 2026-10-18 23:40:40 +02:00
MarekSpodBiedry 551886c133 Show text stroke options in the Stroke panel when text is selected (#1265) 2026-10-18 23:38:00 +02:00
MarekSpodBiedry 251ceda1e0 Reject invalid story.replaceRange offsets with an error (#1267) 2026-10-18 23:37:25 +02:00
MarekSpodBiedry 6e0b50a819 Show New Document preset sizes in the selected units (#1260) 2026-10-18 23:35:57 +02:00
MarekSpodBiedry 6fc7172628 Let single-line paths be resized along their length (#1245) 2026-10-18 23:35:56 +02:00
NetterSilverandClaude Haiku 5.5 103d7eb3ff Clamp object.stroke tint and gapTint to 0..1
Found while testing crates/engine/src/cmd/object.rs:299-313 (object.stroke: `st.tint = v as f32`, `st.gap_tint = v as f32`; the no-selection path at :273 clamps, this one doesn't)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-18 19:59:59 +00:00
Dylan M. Taylor ecd7e5d063 ci: configure Dependabot for Cargo and GitHub Actions
Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
2026-10-18 12:31:22 -06:00
seanth 8f1f20f24a Merge branch 'storytold:main' into tool-units 2026-10-18 13:36:03 -04:00
Marco Arnulfo 526eeda545 Document Setup: read a number without a unit in the document's units (fixes #1247) 2026-10-18 18:04:22 +02:00
Hamza b8ae284a4a View: Bleed and Slug screen modes show their area; draw the slug guide
Bleed and Slug were selectable from the toolbar, the View menu and
`view.screenMode`, and were stored, but the canvas only ever asked whether the
mode was Preview or Presentation. Both therefore drew exactly what Normal drew:
guides, frame edges, the other non-printing marks, and content reaching across
the pasteboard.

They are preview modes now, and what each spread shows reaches out to its box:
the bleed for Bleed, the bleed and the slug for Slug (Slug shows every printing
element, and a slug narrower than the bleed does not pull the edge back in).
Preview and Presentation still stop at the trim.

The slug guide was never drawn either, so the Slug colour in Preferences ›
Guides & Pasteboard was stored, exported and round-tripped while nothing read
it. It is drawn beside the bleed guide, in that colour.

`Spread::bleed_rect`'s body becomes `outset_rect`, which measures either offset
from the page edges, with `bleed_rect` and `slug_rect` as its named callers.
2026-10-18 20:47:01 +05:00
Dylan M. Taylor 7141a68f18 docs: drop references to competing commercial software (#1248) 2026-10-18 10:39:57 -04:00
Brandon ThomasandClaude Opus 5.5 7cb8b12507 Release 0.9.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.9.0
2026-10-17 21:43:04 -04:00
Paul G b20009076e Contributors: credit Paul Gemignani 2026-10-17 17:20:45 -07:00
Paul GandClaude Sonnet 5.5 17848dd1e9 Package: link the packaged document and IDML relative to the package (fixes #340)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EDKUo6t8zLKhzeuPrJxa3n
2026-10-17 17:11:31 -07:00
harrisonoconnorhover 9434e96dbf fix: integrate parent deletion with current main (#956) 2026-10-17 17:52:04 -04:00
skylar taylor-barrick 5aeb4dd743 Merge pull request #1236 from skylartaylor/linked-path-checks
Follow paths stored in documents only on this computer or the document's share
2026-10-17 13:57:26 -06:00
Aykut FiratandClaude Opus 5.5 08ce444054 Tables: cell First Baseline offset (Cell Options › Text › First Baseline)
Cells and cell styles had no first-baseline setting, so every cell set its first line by the
Ascent offset (the font's typographic ascender). IDML documents that set FirstBaselineOffset on a
cell style (CapHeight is common, often through a table style's body region) composed every row
taller than the document asked for. With a font whose typographic ascender is a full em (Avenir),
each row grew about 2.6 pt and long tables overset, losing their last rows.

- doc: Cell.first_baseline / first_baseline_min; CellStyle.first_baseline / first_baseline_min,
  applied by CellStyle::apply_to and carried through resolve_cell_style's BasedOn chain.
- idml: FirstBaselineOffset and MinimumFirstBaselineOffset read and written on cells and cell styles.
- compose: a cell's text frame uses the cell's first baseline offset and minimum.
- engine: table.setCell, style.cell.create/edit take firstBaseline / firstBaselineMin; table.get
  reports them; style.cell.create fromSelection captures them.
- tests: import through BasedOn and a table style's body region, a cell's own override, IDML round
  trip; composer cap height vs ascent and a fixed minimum; command parameters and validation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 15:07:46 -04:00
skylar taylor-barrick 9fd0a881f7 Merge storytold/main into linked-path-checks
The conflict was in links.rs, where main's atomic relink work (b050343a) and
this branch's path gate both changed `update`. Kept main's mechanism (build the
replacement with relinked_asset, then insert it) and this branch's gate (a link
craft-docpath refuses is missing and never read).

relinked_asset now takes the path to read and the link to record separately.
Previously they were one argument, safe only because update passed the raw stored
link; passing the resolved path to the old signature would have rewritten every
relative link to an absolute one on each refresh.

Also passes None for the document in main's embedded-status test, where the asset
has no link so the document is irrelevant.
2026-10-17 12:39:14 -06:00
skylar taylor-barrick d149123cd3 Build: take craft-docpath from the merged craft-libs rev
craft-libs#169 is merged, so the fork pin is no longer needed. Pinned to
storytold/craft-libs 82a24b00 (main after the merge) rather than the older
12281d07, which predates resolve_absolute and the Windows colon refusal.
2026-10-17 12:02:18 -06:00
ghanashyam03 636277c69f docs: fix broken parity checklist link 2026-10-17 20:35:40 +05:30
MarekSpodBiedry f633cf54dd PDF/X-4 export: add xmp:MetadataDate and xmpMM:VersionID to the XMP (#1207) 2026-10-17 15:07:14 +02:00
MarekSpodBiedry b13b1ec408 Keep the mapped style of the first paragraph when placing text at an empty caret (#1208) 2026-10-17 15:05:08 +02:00
NetterSilverandClaude Haiku 5.5 7762573344 Keep a moved equation in place when editing its LaTeX
Found while testing crates/engine/src/cmd/mathexpr.rs:73-83

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 12:39:38 +00:00
MarekSpodBiedry 1b1a66ee77 Make the dock collapse and expand chevrons clickable (#1203) 2026-10-17 14:36:00 +02:00
NetterSilverandClaude Haiku 5.5 485a964e94 Reject a non-finite or non-positive --scale in designcraft-cli run
Found while testing apps/designcraft-cli/src/main.rs:361 (`--scale` parse) and :386 (export); crates/render/src/lib.rs:422-423 (render_page)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 08:51:07 +00:00
Claude 3eb7b5085b Tools: readouts measure in the document's ruler units
Tool readouts (the Page tool's size while dragging, smart-guide distances, the
resize readout) took their unit from the UI's own setting, which nothing changes
from picas, so a document set to inches read in picas. The tool context now takes
the active document's horizontal ruler unit, and the Page tool's W/H use the
horizontal and vertical units, as the Control and Properties fields do.

Test: tool_readouts_measure_in_the_documents_units (picas before).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CgGsJkVe5GYG9qK6VFdECa
2026-10-17 06:27:34 +00:00
NetterSilverandClaude Haiku 5.5 ec4fbb270f Ignore NaN and infinite numbers when importing IDML
Found while testing crates/idml/src/import.rs:2748 (stroke_from: StrokeWeight, MiterLimit), also El::num in crates/idml/src/xml.rs:96 and the plain `.parse().ok()` calls around import.rs:1833, 2823 and 2832

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 06:20:21 +02:00
skylar taylor-barrick fc36957fe0 Ignore the local outputs/ folder
Scratch exports from running the app and the CLI land in outputs/. It is
not ignored, so `cargo xtask assets` — which scans tracked and untracked
files alike — reports every PNG and PDF in it as an asset with no row in
ASSETS.md, and the check cannot pass on a machine that has ever run the
app with an output directory.
2026-10-16 22:00:52 -06:00
skylar taylor-barrick 61b1a3b08d Merge pull request #150 from skylartaylor/codex/fix-relink-eps
Merges upstream/main into the branch, resolving 12 conflicted files, and reconciles where the two sides meant different things — notably the format version, where both had independently defined version 2 (EPS sources here, pinned paragraph defaults on main), so a document without EPS was being written as version 1 and re-upgraded on load.

Verified locally against main b17efb2d: cargo test --workspace --no-fail-fast 2869 passed / 0 failed, cargo fmt --check clean, cargo clippy --workspace --all-targets -D warnings clean, xtask layers and wasm ok.
2026-10-16 21:55:21 -06:00