`findFormat.chars` must be an object and `charStyle` / `paraStyle` style
names (or null); any other value is an error instead of being skipped.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`export::check_pdf_options` refuses what `pdf_report` would: the export
options, the flattener, and now `pageLayout` and `view`, which `pdf_report`
reads up front too. `file.package` checks with it before the output folder
is made, so an unknown page layout or view leaves no partial package.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A gradient made in the Gradient panel stayed unnamed: there was no way
to drag it into the Swatches panel for reuse. The panel's thumbnail now
drags the selection's gradient, and the Swatches list takes the drop as
a new gradient swatch (swatch.new, "New Gradient Swatch"). A gradient
that already is a swatch is left as it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ending a rename by clicking another swatch keeps that swatch picked (for
Delete Swatch) instead of the renamed one. A click on another swatch while
the rename's double-click wait runs cancels the rename.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Last Line Right Indent field takes negative values, as the First Line
Left Indent does. The Control panel's Bulleted and Numbered List buttons
show pressed through `Session::selection_has_list`, as Type › Apply Bullets
and Properties do. With #1483's fix merged, an explicit off no longer takes
the other list type away.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`Session::selection_has_list` checks every paragraph the list commands apply
to (selected text, cells or text frames). Type › Apply Bullets / Numbers and
Properties' Bulleted and Numbered List buttons both use it, so a selection
reaching an unbulleted paragraph isn't shown pressed. An explicit `on: false`
leaves paragraphs with the other list type, and their hanging indent, alone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Clicking "Make all settings the same" back on gives the four weights or
offsets Top's value, and the four corners Top Left's size and shape, so OK
never saves sides that differ under a closed link.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
file.package now writes its PDF through export's `pdf_report`, so a preset's
transparency flattening, the effects and hidden-layer rasterising, the blend
space, the view options and the transitions all reach the packaged PDF.
A `pdf` that is neither a switch nor export options is refused, as is a bad
flattener, before anything is written. Georgian: the printing term for spot
inks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- When `file.package` fails, the Package or Printing Instructions dialog
comes back with its options and instructions, and the status line says
why. Before, they were lost.
- The Colors and Inks table heads its kind column with the "Type:" key
(without its colon). The "Type" key is the menu's and reads Text in
most languages.
- `app.packageDialog` with no document open is an error rather than a
silent success.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test checked only that the count was whole, so another default would
pass. It asserts 20, InDesign's default.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Tools Panel menu's Single Column fell back to English in these
catalogs. Russian Double Column reads "Две колонки", the table's word for
layout columns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- `screen_post` holds what the canvas does to a render before showing it
(Proof Colors, the composite ink-limit preview). The texture and the
eyedropper's one-pixel sample both go through it, so with either view
on, the eyedropper takes the colour on screen.
- The picker's OK uses the footer's padded " OK " key, which every
catalog has (Chinese showed "OK").
- "RGB Color Space View", "Lab Color Space View", "Add CMYK Swatch" and
"Added swatch" are in the ar, cs, it, ka, pl, pt-br, ru and uk
catalogs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change used to accept a selection only when Change All's matches (from
the start of the target) included it. Find Next can select text those
never produce: the rest of a Find Format stretch from a caret inside it,
or an overlapping match ("aa" in "aaa" from the second a). Both commands
now share one definition (`Search::found_edit`). Without a pattern, a
selection inside one stretch is a match; with one, the pattern's match
from the selection's start must be the selection, and a GREP replacement
is expanded for that match (`Grep::replacement_at`).
"Selection" has a row in the shared table (Spanish and Chinese fell back
to English); the French entry moves there from `fr.rs`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The Find Format's character attributes are read through
`CharAttrs::set_json` and matched as the document writes them
(camelCase keys, its number forms), so `font_style` finds what
`fontStyle` finds. A null attribute asks for nothing.
- Values compare numbers within rounding inside objects and lists too, so
a 14 pt leading written as `{"kind": "points", "value": 14}` matches.
- `FindFormat::spans` passes over a story's runs once, with a cursor that
only moves forward across the paragraphs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The dialog notes that the created style exists (so a second OK edits it)
before Apply Style to Selection runs, so a failure there can't lead to a
duplicate style. The Justification check's doc comment is back above
its function.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`layout.pages.insert` refuses `after` and `before` given together (null
counts as given) and a placement that isn't a page index, instead of
inserting at the default position; the default applies only when
neither is given. The dialog sends the page its menu shows (a page past
the end is the last). The dialog title is in the shared table, and
Georgian "Before Page" reads "გვერდის წინ".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A full gap tint is left out of the rule's JSON, so the field read nothing
even after a Gap Color was chosen. It now reads a missing gap tint as
100%.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The course's chapter 40 (Applying Borders to Styles). Paragraph Style
Options › Paragraph Border and Paragraph Shading get InDesign's "Make all
settings the same" link for the stroke weights, the offsets and the
corners. It starts on when the four are the same, so a side typed in sets
all four; with the link off a side is set alone, as the lesson gives a
border only a thick left side.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Calls storytold/craft-common-actions/.github/workflows/sonarcloud.yml@main
with secrets: inherit. Adds SonarCloud badge to README where missing and
removes the redundant sonar-project.properties (config now passed by the
reusable workflow).
The Package dialog's Include PDF (Print) gets a PDF Preset, as InDesign's
Select PDF Preset: the Export PDF presets, the last one used first. The
packaged PDF always had the default settings.
`file.package` takes `pdf: {…file.exportPdf options}` besides true/false,
read with the same `export::options` before anything is written, so bad
options leave no partial package. The Export PDF dialog's field-to-params
code is shared (`pdf_export_params`, `pdf_preset_params`).
Found in the Learn Skills Daily course, chapter 27.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Package… went straight to a folder picker and packaged with fixed options.
As in InDesign it now opens the Package dialog: Summary counts the fonts,
links and images and inks the package carries (a warning where some are
missing or modified), and Fonts, Links and Images and Colors and Inks list
them, with Show Problems Only. Create Printing Instructions leads to the
Printing Instructions dialog (contact, company, address, phone, fax,
email, instructions), whose text goes into the package's Instructions.txt;
Include IDML and Include PDF (Print) choose the copies the package carries.
Found in the Learn Skills Daily course, chapter 27.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Number of Recent Items to Display read "20.0": its field's drag speed of
0.2 gave it a decimal place. It now shows "20", as InDesign's does.
Found in the Learn Skills Daily course, chapter 26.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preferences › Interface held only UI Size, and the interface theme could be
changed only from Window › Interface Color Theme. As in InDesign, Interface
now has Appearance, with a Color Theme swatch per theme (a click shows it at
once, Cancel goes back to the theme Preferences opened with), and Panels,
where Tools Panel sets a single or double column. UI Size moves to a UI
Scaling section of its own, as in InDesign's list.
Found in the Learn Skills Daily course, chapter 26.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The spell checker uses the Moby Hyphenator II word list, which lacks some
very common short words (we, us, if, Mr, pm, vs) and most computer and web
vocabulary (email, online, website, database, desktop, download...).
Contractions typed with a typographer's apostrophe (don’t, we’re), which
Use Typographer's Quotes produces by default, were looked up with the
curly apostrophe and flagged too. Dynamic Spelling underlined most words
of an ordinary sentence.
`known` now reads U+2019 as a straight apostrophe (also in the user
dictionary) and accepts a short sorted list of such common words, with
the existing inflection rules applied to them.
Found in the Learn Skills Daily course, chapter 26.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Insert Pages… opened the generic command form (Count, a 0-based After
index, a parent id). It now opens InDesign's dialog: Pages; Insert After
Page, Before Page, At Start of Document or At End of Document, with the
page by name; and Parent ([None] or a parent). It is set to the page in
view (or the page right-clicked) and that page's parent.
`layout.pages.insert` takes `before` (0: at the start of the document);
`after` and `before` together are refused.
Found in the Learn Skills Daily course, chapter 25.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
While a parent was shown, the status bar's page box and Properties › Page
still read page 1. As in InDesign, they now name the parent ("A-Parent"),
and their lists have the parents after the pages: choosing a parent shows
it, choosing a page leaves the parents for that page.
Found in the Learn Skills Daily course, chapter 25.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With a gradient fill or stroke, the Color panel showed "[None] — choose a
colour on the ramp", and a spectrum click replaced the whole gradient with a
flat colour. As in InDesign, it now shows the stop selected in the Gradient
panel (the stop before a selected midpoint) with its values, and its
C/M/Y/K or R/G/B sliders and spectrum recolour that stop, keeping the others.
Found in the Learn Skills Daily course, chapter 24.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The place cursor draws a frame from 3 points, but the canvas sent Drag
events only once egui started a drag (at max_click_dist, 6 points). A
release in between placed a frame the preview never showed. With the
place cursor, the canvas now follows the pointer from 3 points. (Review.)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With nothing in the place cursor there's no thumbnail to show, so the
cursor is the crosshair before a press too, as it already was while
dragging. (Review.)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The eyedropper beside the hex code works as InDesign's: pressed and
dragged onto the page, it takes the colour shown under the pointer when
let go (one device pixel rendered as the canvas renders it, over the
paper); off the pages it takes nothing. Found in the Learn Skills Daily
course, chapter 23.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
As in InDesign, a click on the name of the swatch picked already (a slow
double-click) turns the name into a field: Enter renames the swatch
(swatch.options, so everything that uses it follows), Escape keeps the
name. A double-click still opens Swatch Options, and the special swatches
keep their names. Found in the Learn Skills Daily course, chapter 23.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
As in InDesign, a double-click on Properties › Appearance's Fill or
Stroke chip opens the Color Picker with that colour (a click still opens
the swatches). For selected text, its own Fill and Stroke chips open it
for the text. Found in the Learn Skills Daily course, chapter 23.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
find.change takes found: true for Change: only the text Find Next found
changes (the selection, while it's still a match of the search in its
domain), it stays selected, and the search keeps its domain so the next
Find Next goes on after it. A selection that isn't a match changes
nothing and makes no undo step.
The dialog has InDesign's Change and Change/Find buttons, off until text
is selected, and its Search list reads Document, Story and Selection.
Found in the Learn Skills Daily course, chapter 22.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>