Commit Graph
8267 Commits
Author SHA1 Message Date
yoriswind 7b0d68c8e3 Fix Artboard action round trips and singleton links 2026-11-01 17:48:22 -08:00
yoriswind c06d7d1e34 Simplify recorded guide validation 2026-11-01 17:00:10 -08:00
yoriswind ed71465b89 Apply measured Artboard background settings without resizing 2026-11-01 16:58:20 -08:00
yoriswind 863597ba90 Merge remote-tracking branch 'origin/main' into codex/atn-missing-action-events 2026-11-01 16:53:50 -08:00
yoriswind 042a8b4d51 Merge measured Artboard reference from davidmann4 2026-11-01 16:12:46 -08:00
aiongg fab871dadb Merge pull request #10535 from davidmann4/integration-batch-11
Integration batch 11: 9 ATN PRs on main
2026-11-01 19:11:02 -05:00
David MannandClaude Opus 5.5 d82f32db36 docs(atn): Artboard from Group guides and changeBackground measured; editArtboardEvent
Guide ids are session metadata that playback ignores; changeBackground 1 or
absent applies the background type and colour, any other value gives white.
Background types 1..4 = white, black, transparent, other. The recorded step
carries the last used background. Properties panel background changes record
editArtboardEvent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 01:01:07 +01:00
Gabriel Heuser 24be8ea6e2 Add editable arrowheads to Line tool (#6408) (#9259)
* Add configurable arrowheads to line tool

* Add editable arrowheads to Line tool

* Fix arrow scaling validation and PSD import defaults

* Preserve arrow geometry under affine transforms

* Preserve scaled arrowhead dimensions and prevent non-finite geometry

* Localize arrowhead Start and End labels

* Fix arrow transform editability and short line handling

* Fix PSD arrow concavity serialization

* Fix arrow dimension fallback validation

* Refine arrowhead options UI to match Photoshop

* Add opt-in arrowhead defaults to Shape properties

* Fix tool reset syntax after upstream merge

* Validate arrowhead flags and clamp copied defaults

* Preserve editable headless lines under transforms

* Fix arrowhead UI imports and formatting after v0.17 merge

* Format arrowhead properties after v0.18 merge

* Fix Clippy lint errors in arrow geometry and tests

* Fix headless arrow geometry after nonuniform scaling

* Fix proportional arrow scaling in Properties panel

* Fix Rust formatting in Properties arrow scaling tests

* test: validate invalid arrowhead dimensions without mutation

* fix: preserve arrow compatibility with older pcraft versions
2026-11-01 18:46:05 -05:00
yoriswind e6f23fd8e2 feat(engine): map limited Artboard-from-Group ATN forms
Preserve the target-only call and exactly reconstruct empty-guide settings. Apply preset tags without resizing, retain fractional RGB, and refuse unresolved guide state before mutation. Nonempty associations and unproved flag values remain unfinished.
2026-11-01 15:26:29 -08:00
yoriswind 82e613fca8 docs: explain ATN adapters and reference survey scope 2026-11-01 14:34:32 -08:00
David MannandClaude Opus 5.5 d3f5fad607 Merge #8327's current head (6d96ae9fa) into the batch
The author rebased #8327 onto a newer main; its code is the same change as the reviewed head
c60cbcb99 (range-diff: Cargo.lock context and the people.toml position only). The batch keeps
its reviewed and fixed-up version of every file, so the tree is unchanged; merging the new head
lets GitHub mark #8327 as merged with the batch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 23:27:26 +01:00
yoriswind 8b2cd1a70a Merge original ATN reference documentation from #10603
Preserve the original reference history and measurements, then document the 22 newly supported forms and their strict mapping boundaries. Artboard from Group remains kept; the Crop Photos parent does not cover generated helper recordings.
2026-11-01 14:07:21 -08:00
yoriswind f39d0b8280 feat(engine): replay the Crop Photos ATN parent once 2026-11-01 14:06:12 -08:00
yoriswind 1130c8a66c feat(engine): map Type to Shape and radius-only Shape Blur ATN 2026-11-01 13:53:09 -08:00
yoriswind 71b98c8134 feat(engine): replay target-only ATN menu events 2026-11-01 13:36:08 -08:00
yoriswind b4c7656c49 feat(engine): replay Smart Object file events from ATN 2026-11-01 13:09:16 -08:00
yoriswind 5881923406 fix(engine): replay recorded link and unlink explicitly 2026-11-01 12:49:47 -08:00
David MannandClaude Opus 5.5 02316e552d Integration: a paused set Play ends at an action replaced under its name (#10459)
CodeRabbit on batch 11: the rest of a set paused at a step dialog was kept by name, so an action
deleted and made again under the same name while the dialog was open played under the original
Play. Actions have no id, so the rest is now kept as the actions themselves and continues only
while each one is unchanged; moving them in the list still works.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 21:20:38 +01:00
Brandon ThomasandClaude Opus 5.5 2df9f80770 Release 0.19.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.19.0
2026-11-01 13:58:51 -05:00
David MannandClaude Opus 5.5 5a9ca48f8a docs(atn): Convert Stroke to Fill exists only internally; where it was looked for
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:37:35 +01:00
Dylan M. Taylor cf8e3d352b docs: sync Craft App Suite list with ArtCraft Launcher 2026-11-01 12:29:54 -05:00
David MannandClaude Opus 5.5 ea326374b2 docs(atn): Convert Stroke to Fill is not a user command, nothing to map
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:23:54 +01:00
David MannandClaude Opus 5.5 2ec27abb95 docs(atn): measure the remaining menu events through recordings
Every remaining event recorded in the reference application through its
menus: Scale Effects, Create Layers, Frame and Artboards, all eleven
Stack Modes with their plug-in codes, video layer and frame commands,
Create Work Path, Find and Replace, Check Spelling, measurement scale
and Scale Marker, Close All, data sets (apply, import, export), Package,
Video Frames to Layers, Import Notes, Photomerge, Crop and Straighten
Photos, Conditional Mode Change and Fit Image. Close Others and Define
Variables record nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:10:32 +01:00
5f63b3fe4c Integration: address CodeRabbit review of batch 11
- #8714: a Camera Raw Filter step imports only with a process version
  the PSD mapping has verified (PrVN/PrVe 5/184549376 or 6/251920384)
  and a CrVe text; other steps stay kept steps that save back unchanged.
- #7642: the patternName fallback matches names only, so a pattern
  whose id equals that text no longer wins. A step that names its
  pattern only by patternName exports that name.
- #8327: the iso-2022-jp label is refused (its names are 7-bit escape
  sequences that would pass through as ASCII).
- #10417: the Levels export gate also refuses endpoints of the wrong
  shape (both ends text, a text gamma) and channels that aren't objects.
- #10459: a set paused at a step dialog keeps the rest of the set by
  action name, so actions.move while the dialog is open neither plays a
  foreign action nor skips one; "Played N steps" covers the whole Play
  (steps before the pause and the dialog's own step); the suggested .atn
  name is cut to 255 bytes at a character boundary; actions.list returns
  every set, empty ones too; set_names dedups with a HashSet.

Co-authored-by: FinnNk <1424666+FinnNk@users.noreply.github.com>
Co-authored-by: Silvertree2010 <133535268+Silvertree2010@users.noreply.github.com>
Co-authored-by: regexer <3689390+regexer@users.noreply.github.com>
Co-authored-by: marshiyar <57055687+marshiyar@users.noreply.github.com>
Co-authored-by: hectorviov <1501713+hectorviov@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:51:02 +01:00
David MannandClaude Opus 5.5 0588012b29 docs(atn): measure Batch behaviour, document-independent recording, Trace Contour
Measured in the reference application: Batch source and destination keys
(open documents, Save and Close, override Open and Save As, suppress open
options), file naming output (the extension component only gets a dot as
the last component), processing order, flat output with subfolders, name
clashes, stop and log error modes with the log file format, and Esc.
What a normal recording names (layers by name, merged nudges and typing,
document offsets) and how it plays on another document. Trace Contour's
recorded keys and its 0..255 level; Quick Export records no step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:11:39 +01:00
David MannandClaude Opus 5.5 5020854dde docs(atn): measure Shear, gradients, workspaces, Print, Droplet, Sky Replacement, layer comps
Measured in the reference application through its dialogs and recorded
actions: Shear point ranges and what ShrS/ShrE mean, the classic and the
new Gradient tool steps, Content-Aware Fill, Perspective Warp, Print,
Create Droplet and Sky Replacement descriptors, the mmdd/ddmm Batch date
components, and every layer comp reference form. Export As records no
step; Convert Stroke to Fill was not available in the measured version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:31:26 +01:00
Khawar Zamman WaniandFredApps 209bce8d46 Budget PSD pattern expansion and bound multichannel conversion (#10541)
* Stream PSD user and real masks into tile rows

* Correct streamed-mask fixture metadata and test lint issues

* Budget PSD pattern expansion and bound multichannel conversion

---------

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
2026-11-01 16:00:21 +01:00
David MannandClaude Opus 5.5 a02e1211e9 Docs (atn): Custom ranges from the dialog; only Spatter of the Filter Gallery is mapped
Addresses CodeRabbit on #10603: the Group A intro said every Filter Gallery effect loads as a
kept step, but Spatter is mapped; Custom's scale, offset and matrix cells now have their
measured ranges and the matrix has no default (a step carries all 25 cells).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:51:23 +01:00
David MannandClaude Opus 5.5 4614b3e119 Integration: build two ATN test files with defaults (#8714, #8858, #8327)
#8327 adds `AtnFile::encoding`. Two tests from other PRs in the batch
build an AtnFile literal without it (#8714 fix-up's Camera Raw save-back
test, #8858's Vibrance string-class test), so the engine's lib tests
didn't compile on the batch. They now fill the rest with
`..Default::default()`, as the other literals in the file do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:46:37 +01:00
David MannandClaude Opus 5.5 2e0c0f9a69 Docs (atn): how Insert Menu Item and Insert Path are recorded
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:40:20 +01:00
David MannandClaude Opus 5.5 ceb5ddf6c5 Docs (atn): events measured through dialogs and recordings, Batch file naming, panel menu
Recorded in the reference application through its menus and read back from the saved Actions
panel, or returned by the dialog on OK: Custom, Fibers, Displace (with ranges), Color Lookup,
Shape Blur, Lighting Effects, Blur Gallery, Liquify, Camera Raw Filter, Vanishing Point,
Calculations; how Image Size, Canvas Size, Convert Mode and New Group are recorded. The Batch
descriptor with its file naming components, and the Actions panel menu and Playback Options.

Known gaps gain four rows: Convert Mode is saved with an enum the reference application
rejects, adjustment layer opacity on Make, Canvas Size in percent, Image Size in cm/inches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:37:04 +01:00
David Mann bb8edaf596 Merge PR #8327: Actions: read .atn step names in the code page Photoshop wrote them in (#6743)
# Conflicts:
#	contributors/people.toml
#	crates/engine/src/cmd/atn_cmds/tests.rs
2026-11-01 15:36:45 +01:00
7e50896afb Integration: drop the glued-letter rule again (#8327)
The previous fix-up counted a letter glued to an ASCII letter as common
only when it was Latin. That turned ordinary windows-1251 names such as
"CMYKканал" or Ukrainian "Копiя" (Latin i) into a windows-1252 (or GBK)
reading of the whole set, with no warning, where the PR read them right.

Back to the PR's scoring for single-byte pages; the ¥ removal stays.
windows-1252 "Fläche m²" / "Preis £5" reading as windows-1251 is the
PR's own known limitation, now noted in the code. A Russian set plus
"CMYKканал" is pinned as windows-1251.

Co-authored-by: regexer <3689390+regexer@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:35:14 +01:00
bd04a88292 Integration: keep Mac Roman bullets and Latin words out of the wrong page (#8327)
Mac Roman 0xA5 is the bullet, windows-1252 0xA5 is ¥: with ¥ counted in
the windows-1252 re-weigh, Mac "Ebene • Kopie" read as "Ebene ¥ Kopie".
Drop ¥; the other kept symbols are no letter or typographic mark in Mac
Roman.

windows-1251 has І і д where windows-1252 has ² ³ ä, so "Fläche m²" read
as "Flдche mІ" (already so in the PR head; main showed it right). In a
single-byte page, a letter glued to an ASCII letter now counts as common
only when it is a Latin letter. Real Cyrillic names ("Новый слой",
"Копия слоя 2", "Канал RGB") still read as windows-1251. "Preis £5"
(Ј between a space and a digit) still reads as windows-1251; documented.

Co-authored-by: regexer <3689390+regexer@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:19:58 +01:00
David Mann 6aba9ddfd8 Merge PR #10459: Actions panel: New Set, and New Action records into the selected set (#7535)
# Conflicts:
#	crates/engine/src/cmd/atn_cmds/tests.rs
2026-11-01 15:13:27 +01:00
e2789c041c Integration: a set stops at a called action's dialog; folders toggle without a pointer (#10459)
- A set whose action paused at a step dialog inside an action it calls handed the rest of
  the set to the called action's dialog, which resumes alone: after OK the set's next
  action ran and the caller's own remaining steps never did. The rest of a set now rides
  only on a pause of the target action itself; otherwise the set stops there.
- Set folders could only be collapsed with the pointer on the triangle: a keyboard or
  accessibility activation always just selected. Without a pointer it now selects and
  toggles, as before, and the row reports whether it is selected (not whether it is expanded).

Co-authored-by: hectorviov <1501713+hectorviov@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:11:33 +01:00
1d0bc23c3e Integration: don't count symbols on Mac Roman letters as windows-1252 (#8327)
The previous fix-up counted § ® ¾ ¿ (and ¹ » ¼ ½) as common windows-1252
text, but those bytes are Mac Roman ß Æ æ ø (π ª º Ω). Mac names with no
Unicode copy such as "Weiß", "Gaußscher Weichzeichner", "Størrelse",
"Lærredstørrelse" and "Æble" then tied and read as windows-1252 ("Wei§",
"St¿rrelse"), where the PR read them right.

Keep only the 12 symbols whose byte is not a letter in Mac Roman
(¡ ¢ £ ¥ © « ° ± ² ³ ¶ ·). Windows "Größe »", "50 °" and "« auto »" still
read as windows-1252; a name whose only non-ASCII character is ® ("Logo
®") reads as Mac Roman "Logo Æ" again, as on the PR head (tested as a
known limitation).

Co-authored-by: regexer <3689390+regexer@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:00:36 +01:00
aiongg 84732d09bc Merge pull request #9618 from RickiNano/prefs/gpu-adapter-typed-read
Prefs: startup reads Graphics Adapter through the typed Performance section
2026-11-01 08:56:16 -05:00
aiongg dbe24c7e92 Merge pull request #10658 from RickiNano/fix/10640-preset-group-reimport
Ask before re-importing a brush or gradient file over its group (#10640)
2026-11-01 08:55:56 -05:00
David MannandClaude Opus 5.5 fe3d8db7e3 Docs (atn): reference forms, newer events, version 12 files, wrong codes in the mapping
- Known gaps: every exported step of the round-trip test was played in the reference
  application (128 of 151 ran); six codes the mapping writes are wrong there (Vibrance and
  Gradient Map events, Stroke Outside, Pass Through, canvas extension colour, Absolute
  Colorimetric), and a document offset wraps around there.
- Reference forms: layers and documents by index, id, offset and ordinal, measured.
- Newer events: 63 candidates from the menu catalogue run in the reference application;
  which need no settings, which were measured with settings, which need their dialog.
- Version 12 files: the older descriptor layout, checked on 325 real sets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:55:29 +01:00
a89b7cc4a7 Integration: set playback continues after a step dialog; the triangle only collapses (#10459)
Three gaps in the set selection the fix-up added:
- Play on a set whose action paused at a step dialog dropped the rest of the set after OK.
  The pause now carries the remaining actions (also across a second dialog of the same
  action), and OK plays them under the same gate. Cancel still stops the whole set.
- A collapse or expand selected the set and cleared the action, so Play then ran a whole
  other set. As on action rows, the triangle's column now only collapses or expands, and
  the rest of the folder row selects the set.
- Selecting a step (or an action through Load, Insert Stop, a drag or recording) kept an old
  selected set, which came back after Delete. Every action selection now clears it.

Co-authored-by: hectorviov <1501713+hectorviov@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:54:25 +01:00
af59f65b82 Integration: keep windows-1252 symbols in .atn step names (#8327)
The code-page guess counted only letters and typographic marks as common
text in single-byte pages, so a Windows step name with no Unicode copy and
a Latin-1 symbol read better as Mac Roman, whose letters sit on those
bytes: "Logo ®" showed as "Logo Æ", "Größe »" as "Grˆfle ª" (main showed
them right), and Save Actions wrote that text back.

When the guess lands on Mac Roman, weigh it against windows-1252 once more
with common Latin-1 symbols (© ® ° § « » ± ½ …) counted and the letters
windows-1252 has only at 0x80-0x9F left out. Mac Roman keeps the names
only when it still reads better; a tie goes to windows-1252, confident
with a Latin hint and flagged uncertain otherwise. Mac Roman "Größe",
"Ändern", "Contrôle", "Arrière-plan" and the corpus French sets still read
as Mac Roman.

Co-authored-by: regexer <3689390+regexer@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:43:03 +01:00
David Mann acddb90d47 Merge PR #8736: Refuse exporting an adjustment edit that names its layer to .atn
Conflict: main moved crates/engine/src/atn_cmds.rs into crates/engine/src/cmd/atn_cmds/; the refusal is ported into steps_make.rs set_to's layer.setAdjustment arm unchanged. The tests followed the rename.
2026-11-01 14:41:56 +01:00
David Mann f2fd6efdc0 Merge PR #7642: Prefer an installed pattern ID over a colliding name in ATN import 2026-11-01 14:41:19 +01:00
David Mann 2c0ad3fc34 Merge PR #8714: feat(actions): import recorded Camera Raw Filter steps as filter.cameraRaw 2026-11-01 14:41:16 +01:00
David Mann 1b308ca411 Merge PR #8858: fix(atn): import Photoshop's string class for Vibrance adjustment Sets 2026-11-01 14:41:14 +01:00
David Mann da6b7d55ff Merge PR #7561: test(atn): add native parser matrix and contract fixtures 2026-11-01 14:41:11 +01:00
David Mann fa69a54f74 Merge PR #10424: ATN export: Stroke steps write the settings they leave at default (#8303) 2026-11-01 14:41:09 +01:00
David Mann 53aa1a4a2c Merge PR #10417: fix(engine): refuse strict .atn export of a partial Levels edit (#8530) 2026-11-01 14:41:06 +01:00
David Mann a2510804c1 Merge main into integration batch 11
# Conflicts:
#	contributors/people.toml
2026-11-01 14:40:45 +01:00