Plan the port of Compositor 1.3.3

TASKS.md splits the 220 upstream commits since 1.1 into items 12.1 to
12.16, by release, with the user's choices for RAW (LibRaw), SVG (Qt
SVG) and the Magic tool's Object mode (U2-Net). OmaPhoto's version
follows Compositor's.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
雷电芽衣andClaude committed 2026-09-26 16:04:27 -04:00
1 parent eb20c95059
commit 3e52fd90ee
2 files changed
+23 -2

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# OmaPhoto — agent notes # OmaPhoto — agent notes
OmaPhoto is the Linux port of Compositor, the macOS app at https://github.com/robbietilton/Compositor. That repository's Swift tree (`Compositor/`, `CompositorTests/`) is the specification; this repository mirrors it. Keep a checkout of it beside this one to read the Swift sources; never edit it for OmaPhoto work. OmaPhoto is the Linux port of Compositor, the macOS app at https://github.com/robbietilton/Compositor. That repository's Swift tree (`Compositor/`, `CompositorTests/`) is the specification; this repository mirrors it. Its checkout at `../Compositor-spec`, pinned to the tag being ported (v1.3.3 since item 12), is where the Swift sources are read; never edit it for OmaPhoto work.
## Trees ## Trees
+22 -1
View File
@@ -294,7 +294,28 @@ The panel of 4.6 shows and edits what the session holds so far. Each item adds i
- [x] 11.4f Release 1.0.1: the fixes above, the Node 24 actions, the install scripts rerun against the new release; the issues answered and closed. - [x] 11.4f Release 1.0.1: the fixes above, the Node 24 actions, the install scripts rerun against the new release; the issues answered and closed.
- 11.4f work: version 1.0.1 in CMakeLists.txt, the PKGBUILD and the flake; `ProjectWorkspaceViewTests` reads the build's `OMAPHOTO_VERSION` in place of a literal. `main` and `v1.0.1` pushed together (`--atomic`), since `ubuntu.sh` asks for 1.0.1's asset names. The release run passed every job (the version check, two DEBs, the RPM, the Arch package, publish) on the Node 24 actions, no deprecation warning, and published `omaphoto-noble_amd64.deb`, `omaphoto-resolute_amd64.deb`, `omaphoto.x86_64.rpm`, `omaphoto-x86_64.pkg.tar.zst` and `SHA256SUMS`. Each install script, fetched from GitHub as the README says, in fresh containers: Ubuntu 24.04 and 26.04, Fedora 43 and 44 and Arch verified their package, installed it and started 1.0.1 with the bundled runtime; Debian 13 was refused; `nixos.sh` resolved `v1.0.1`, built its flake and started 1.0.1 (`live-installs.log`, `live-nixos.log`). Issues #1, #2 and #5 answered and closed; #2's reply says the black areas did not reproduce here. Issue #6, opened meanwhile, is another developer's proposal, not a defect: left for the user. - 11.4f work: version 1.0.1 in CMakeLists.txt, the PKGBUILD and the flake; `ProjectWorkspaceViewTests` reads the build's `OMAPHOTO_VERSION` in place of a literal. `main` and `v1.0.1` pushed together (`--atomic`), since `ubuntu.sh` asks for 1.0.1's asset names. The release run passed every job (the version check, two DEBs, the RPM, the Arch package, publish) on the Node 24 actions, no deprecation warning, and published `omaphoto-noble_amd64.deb`, `omaphoto-resolute_amd64.deb`, `omaphoto.x86_64.rpm`, `omaphoto-x86_64.pkg.tar.zst` and `SHA256SUMS`. Each install script, fetched from GitHub as the README says, in fresh containers: Ubuntu 24.04 and 26.04, Fedora 43 and 44 and Arch verified their package, installed it and started 1.0.1 with the bundled runtime; Debian 13 was refused; `nixos.sh` resolved `v1.0.1`, built its flake and started 1.0.1 (`live-installs.log`, `live-nixos.log`). Issues #1, #2 and #5 answered and closed; #2's reply says the black areas did not reproduce here. Issue #6, opened meanwhile, is another developer's proposal, not a defect: left for the user.
- 11.4f round 1: PASS, no findings. - 11.4f round 1: PASS, no findings.
- [ ] 12.0 Port Compositor 1.3: survey the upstream changes from 1.1 to 1.3.x and split them into ordered items here before any code. - [x] 12.0 Port Compositor 1.3: survey the upstream changes from 1.1 to 1.3.x and split them into ordered items here before any code.
- 12.0 survey: the twin mirrors Compositor at 7451cef (the 1.1 feed); the target is tag v1.3.3, 220 commits later, 164 files (157 Swift and C, the seven app icon PNGs), about 17,400 lines added (`git diff 7451cef v1.3.3 -- Compositor CompositorTests`). The spec is checked out at `~/Documents/Github/Compositor-spec`, pinned to v1.3.3. Items follow upstream's versions, since each builds on the last; each ports its range's Swift and C changes with their tests, and a later fix to a feature travels with the item that ports the feature (named below where it crosses items), so no item ports a state upstream abandoned. A change reaches an item by the release that contains it (`git describe --contains`), not by the log's date order. Already held by the twin, so ported as no code but their AGENTS.md notes updated to say Swift now agrees: `f6a74c9` (Levels no longer converts soft edges twice; the Levels known difference), `121a15f` (Color Dodge and Color Burn in sRGB; the `SeparableBlend` note), `5775dd1` and `6230e41` (effects through snapshots; the 9.6a fix beyond Swift), `90ee29f` (Select All in text fields), `b5cb4fa` (M and L choose their tools only; the 7.2 note) in 12.5b, and `7111885` (the distort tests' folding; the 6.2 note) in 12.6. Open Recent's list lives in OmaPhoto's own settings (`QSettings`), where Swift reads `NSDocumentController`'s: Qt has no API for the desktop's recent documents. The user's decisions (2026-09-26): LibRaw decodes RAW where Swift uses `CIRAWFilter`; Qt SVG renders SVG where Swift uses `NSImage`; the Magic tool's Object mode takes U²-Net's foreground mask and selects the connected region under the click, where Swift uses Vision's `VNGenerateForegroundInstanceMaskRequest`. Left out, macOS alone: automatic updates and the appcast, the title bar's drag, "always dark" alerts and panels (Linux follows the Omarchy theme), opening a project while the app is quit.
- 12.0 round 1: FAIL, six findings: the reload on disk sat in 1.2.11 though 1.3 merged it (moved to 12.13 by `git describe --contains`), the reshaped app icon had no item (12.6), fixes crossing items were placed by version (the rule stated, `d9b3f9e` to 12.2, `5d7adba` to 12.8c, `96edd5f` to 12.8b, `b683acb` and `a5721b2` named), changes the twin holds were unmarked (listed with their AGENTS.md notes), the counts were off, Open Recent's list had no home (QSettings). Round 2: PASS, no findings.
- [ ] 12.1 Versions 1.1.1–1.1.4: feathered selection modifiers, the Soft Light blend mode, the Type tool's responsiveness, a fixed-width font menu.
- [ ] 12.2 Versions 1.1.5–1.1.6: folder duplication and the refined layer controls, folder opacity with 1.2.0's store rule for a dimmed folder (`d9b3f9e`), the keyboard shortcuts window.
- [ ] 12.3 Version 1.1.7: rulers, guides, the layout grid and Snap To.
- [ ] 12.4 Version 1.1.8: the Magic tool's Object mode (U²-Net and the clicked region).
- [ ] 12.5a Version 1.2.0, part one: Photoshop PSD import (the reader, channel coder, vectors, document builder, the conversion report sheet).
- [ ] 12.5b Version 1.2.0, part two: the Outer Glow effect, brush Smoothing, and the release's other changes to what the twin holds.
- [ ] 12.6 Version 1.2.1: camera RAW import through LibRaw with its develop step, middle-button pan, persistent tool settings, Auto Select picking the foreground layer, the reshaped app icon (`45ab8fd`) in `packaging/icons`.
- [ ] 12.7 Version 1.2.2: Photoshop's remaining blend modes in its groups; Black & White, Color Balance and Invert adjustments.
- [ ] 12.8a Version 1.2.3, part one: the Camera Raw filter's model and pixel kernels.
- [ ] 12.8b Version 1.2.3, part two: the Camera Raw panel beside the canvas, its grading wheels turning the way their hue runs (1.2.9's `96edd5f`).
- [ ] 12.8c Version 1.2.3, part three: Inner Glow, Image Trim, blur and noise adjustment layers, the layer context menu without 1.2.5's dropped Layer Effects entry (`5d7adba`).
- [ ] 12.9 Version 1.2.4: the finishing filters, stepped keyboard zoom, a steady tool rail and tab strip, the project format's version in one place.
- [ ] 12.10 Versions 1.2.5–1.2.7: copying and pasting whole layers within and between projects, duplicating every selected layer, crop ratios 3:4 and 9:16 and a crop that starts at the selection, Vignette's defaults, text colour previews.
- [ ] 12.11 Versions 1.2.8–1.2.10: the document's own pixel budget, PSB, simple Photoshop text as editable text, background-only PSDs, oversized Photoshop layers cropped, clicked text starting on its first baseline, live text opened by a double click with the Move tool (`a5721b2`), marching ants at screen resolution, SVG import (Qt SVG).
- [ ] 12.12 Version 1.2.11: masks painted anywhere on the canvas, moved unlinked masks under effects, effects kept on screen while text is edited, masks painted and steps undone (`b683acb`), mask thumbnails' ground, text shown as its committed pixels, numeric label scrubbing.
- [ ] 12.13 Version 1.3: reloading a project changed on disk (`ed5ddea`, merged in 1.3), its manifest-and-sizes fingerprint (`cd4061a`), editing while a project saves, images decoded from memory, the guide for AI agents writing projects.
- [ ] 12.14 Versions 1.3.1–1.3.2: quitting and closing while text is edited, the I-beam over the canvas, File > Open Recent, Image Size keeping print sizes, Camera Raw's Color Grading layout, coloured slider tracks with double-click reset, colouring only the selected letters, sampling keeping a panel's focus, filters waiting for text editing to finish.
- [ ] 12.15 Version 1.3.3: the Dither filter.
- [ ] 12.16 Release OmaPhoto 1.3.3, the version Compositor carries (the user's decision, 2026-09-26: OmaPhoto's version follows Compositor's): README's features, AGENTS.md, the distro checks, packages, the install scripts rerun.
- [ ] 11.5 End-to-end acceptance run with screenshots, README Linux section, `AGENTS.md` sync, MVP acceptance table. - [ ] 11.5 End-to-end acceptance run with screenshots, README Linux section, `AGENTS.md` sync, MVP acceptance table.
## Skills by phase ## Skills by phase