release.yml also runs nightly on main with craft-common-actions' dry-run: every release build
except macOS, with nothing signed, pushed or drafted. Breakage that only the release build hits
(riscv64, Flatpak, FreeBSD, packaging) then shows up the next morning instead of on release
day, as it did on 11 Nov 2026.
* fix: index style, font, class and layer name lookups in exporters and importers
* Apply review fixes
- crates/epub/src/css.rs
---------
Co-authored-by: aiongg <67543387+aiongg@users.noreply.github.com>
* fix(engine): whole-file reads take regular files only, up to the format limit
* Apply review fixes
- crates/engine/src/io.rs
* Apply review fixes
- crates/engine/src/io.rs
* Fix failing CI check
- crates/engine/src/io.rs
* address review: refuse to save an encoded document longer than the open limit
* address review: open files for reading without blocking (FIFOs, stream-backed pseudo-files)
---------
Co-authored-by: aiongg <67543387+aiongg@users.noreply.github.com>
* fix(engine): package fonts from their loaded bytes under the read roots
* address review: a font's own file is neither overwritten nor packaged when it changed since loading
* Apply review fixes
- crates/engine/src/cmd/package.rs
* address review: compare packaged font file in fixed-size chunks
---------
Co-authored-by: aiongg <67543387+aiongg@users.noreply.github.com>
* Strokes: cap the points a wavy or hashed stroke places along a path
* address review: zero-length quadratic contributes no length in stroke samples
* Fix failing CI check
- crates/geom/src/stroke_style.rs
* Fix failing CI check
- crates/geom/src/stroke_style.rs
---------
Co-authored-by: autocraft-bot[bot] <354215646+autocraft-bot[bot]@users.noreply.github.com>
* engine: Erase/Smooth look at each distinct drag sample once, thinned past 4096
* Apply review fixes
- crates/engine/src/cmd/anchors.rs
* address review: decide whether a drag touched the path on every distinct sample, then thin
---------
Co-authored-by: autocraft-bot[bot] <354215646+autocraft-bot[bot]@users.noreply.github.com>
* doc: appending to a story extends the last run, no scans
* Apply review fixes
- crates/doc/src/story.rs
---------
Co-authored-by: aiongg <67543387+aiongg@users.noreply.github.com>
* Tables: commands given a table id run with nothing in a table selected
Table commands whose params list `story?` and `table?` (table.insertRow,
table.deleteColumn, table.options, the Convert Rows commands and the
others) were refused with "place the insertion point in a table" when the
call named the table but the selection was not in one. A call that passes
`table` now acts on that table whatever is selected. A table that is not
in the document, or not in the given `story`, is refused, and a `story`
that is not a non-negative integer is an error.
The menus are unchanged: with nothing in a table selected, the table
items stay disabled, and calls that name no table are still refused.
* Tables: a bad story is refused whether or not a table is selected
A call that names a table with a story that is not a non-negative integer (a string, a negative number, a fraction or null) was refused only when nothing in a table was selected. With a table selected, the command ignored the story and acted on the named table. Both paths now read story with one helper and refuse it the same way.
* Tables: an edit to a named table keeps a caret in footnote text
With the caret in footnote text, a table command that names a table
runs, and the edit cleared the caret's footnote address, so the next
typing went into the story. clamp_selection now leaves footnote
addresses alone, as in_cell does.