Milestone 10 — Studio workflow (#146–#149) #156

Open
gronod wants to merge 18 commits from milestone/m10-studio into develop
Owner

This PR is opened so Gitea Actions runs. Merge is deferred; do not merge in this session. .gitea/workflows/macos.yml only triggers on PRs targeting develop; this is the only M10 PR with that base. A later session / human merges once CI evidence is reviewed.

Scope — Milestone 10 (id 32): Studio workflow

Issue Feature Feature PR Merge SHA on milestone/m10-studio
#146 Media recipe library bound to presets #151 1931da8
#148 Spot-read console (spotread, bundled sidecar only) #152 538ef1e
#147 Gamut compare: second profile + click-inspect #153 99c0d7e
#149 .icceryproj project file index + recents + report #154 c39afe0
Docs hygiene: default_instrument seeds Spot Read; README floor macOS 12.0 #155 48d2816
M10 tracking (BUILD-PLAN / README rows) #150 2f305c4

All four issues are closed (manually, with evidence). Milestone 32 stays open — hardware gates (R6) and this merge are deferred.

Local full host-arch gate (on head SHA 48d2816)

xcodegen generate --spec project.yml
xcodebuild test -scheme ICCery -destination 'platform=macOS' \
  -derivedDataPath build/DerivedData-m10-final \
  ARCHS="$(uname -m)" CODE_SIGNING_ALLOWED=YES CODE_SIGN_IDENTITY='-'
  • ICCeryCoreTests: 439 executed, 0 failures
  • ICCeryUITests: 49 executed, 0 failures — real Automation attach, no skip
  • xcresult: build/DerivedData-m10-final/Logs/Test/Test-ICCery-2026.09.13_12-25-16-+0100.xcresult
  • Known flakes (testNonZeroExitThrowsToolFailed, testHandheldFixtureChartreadAndAverage, testSpotReadButtonDisabledDuringChartread) all passed without rerun

Sync status

origin/develop (800c980) is still an ancestor of this head — no sync merge needed; the diff is exactly M10.

Refs #146
Refs #147
Refs #148
Refs #149

**This PR is opened so Gitea Actions runs. Merge is deferred; do not merge in this session.** `.gitea/workflows/macos.yml` only triggers on PRs targeting `develop`; this is the only M10 PR with that base. A later session / human merges once CI evidence is reviewed. ## Scope — Milestone 10 (id 32): Studio workflow | Issue | Feature | Feature PR | Merge SHA on `milestone/m10-studio` | |---|---|---|---| | #146 | Media recipe library bound to presets | #151 | `1931da8` | | #148 | Spot-read console (`spotread`, bundled sidecar only) | #152 | `538ef1e` | | #147 | Gamut compare: second profile + click-inspect | #153 | `99c0d7e` | | #149 | `.icceryproj` project file index + recents + report | #154 | `c39afe0` | | — | Docs hygiene: `default_instrument` seeds Spot Read; README floor macOS 12.0 | #155 | `48d2816` | | — | M10 tracking (BUILD-PLAN / README rows) | #150 | `2f305c4` | All four issues are closed (manually, with evidence). Milestone 32 stays **open** — hardware gates (R6) and this merge are deferred. ## Local full host-arch gate (on head SHA `48d2816`) ``` xcodegen generate --spec project.yml xcodebuild test -scheme ICCery -destination 'platform=macOS' \ -derivedDataPath build/DerivedData-m10-final \ ARCHS="$(uname -m)" CODE_SIGNING_ALLOWED=YES CODE_SIGN_IDENTITY='-' ``` - ICCeryCoreTests: **439 executed, 0 failures** - ICCeryUITests: **49 executed, 0 failures** — real Automation attach, no skip - xcresult: `build/DerivedData-m10-final/Logs/Test/Test-ICCery-2026.09.13_12-25-16-+0100.xcresult` - Known flakes (`testNonZeroExitThrowsToolFailed`, `testHandheldFixtureChartreadAndAverage`, `testSpotReadButtonDisabledDuringChartread`) all passed without rerun ## Sync status `origin/develop` (`800c980`) is still an ancestor of this head — no sync merge needed; the diff is exactly M10. Refs #146 Refs #147 Refs #148 Refs #149
gronod added 12 commits 2026-09-13 12:45:26 +01:00
Refs #146

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Refs #146

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Refs #148

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Refs #148

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
gronod added this to the M10 — Studio workflow (media library, gamut compare, spot-read, projects) milestone 2026-09-13 12:45:34 +01:00
Author
Owner

CI result (Actions run 33666): FAILED at build. Deterministic product bug, not infrastructure.

build-and-test (job 34939), step "Build for testing (host arch)", runner macos-12 / Xcode 14.2 (Swift 5.7):

Sources/ICCery/SidebarView.swift:40:13: error: extra arguments at positions #11, #12, #13, #14 in call
Sources/ICCery/MediaLibraryDialogs.swift:51:13: error: extra arguments at positions #11, #12, #13 in call

ViewBuilder.buildBlock caps at 10 children on Swift 5.7 (no buildPartialBlock until 5.9). Two M10 view builders exceed it — 14 and 13 children respectively. Local gates missed it because the dev host runs Xcode 15.x. Unit/UI steps were skipped; package never ran.

Issue #146 reopened with the evidence comment (the over-capacity builders are its deliverable). A fix/ branch into milestone/m10-studio is a later session. This PR remains open and unmerged; milestone 32 remains open.

**CI result (Actions run 33666): FAILED at build.** Deterministic product bug, not infrastructure. `build-and-test` (job 34939), step "Build for testing (host arch)", runner `macos-12` / Xcode 14.2 (Swift 5.7): ``` Sources/ICCery/SidebarView.swift:40:13: error: extra arguments at positions #11, #12, #13, #14 in call Sources/ICCery/MediaLibraryDialogs.swift:51:13: error: extra arguments at positions #11, #12, #13 in call ``` `ViewBuilder.buildBlock` caps at 10 children on Swift 5.7 (no `buildPartialBlock` until 5.9). Two M10 view builders exceed it — 14 and 13 children respectively. Local gates missed it because the dev host runs Xcode 15.x. Unit/UI steps were skipped; `package` never ran. Issue #146 reopened with the evidence comment (the over-capacity builders are its deliverable). A `fix/` branch into `milestone/m10-studio` is a later session. **This PR remains open and unmerged; milestone 32 remains open.**
gronod added 2 commits 2026-09-13 13:35:41 +01:00
Actions run 33666 (Xcode 14.2, macOS 12) failed to compile: the
sidebar VStack had 14 children and SaveMediaRecipeDialog had 13,
over the Swift 5.7 ViewBuilder 10-child cap. Extracted
layout-transparent Group subviews (header/presetBlock/mediaBlock/
studioButtons/stepperAndProject; fields/readOnlyRows) — no id,
order, or layout change.

Refs #146

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Author
Owner

Status update — Actions run 33718 on head 3d8e70b (includes #157 ViewBuilder fix):

  • Build for testing (host arch): PASS — Xcode 14.2 / Swift 5.7 compiles cleanly; the SidebarView (14→5) and SaveMediaRecipeDialog (13→7) Group splits resolved the run-33666 compile failure.
  • Unit (ICCeryCoreTests): PASS
  • UI (ICCeryUITests): real run, 48 tests, 4 failures (Automation attached — no skip):
    • Milestone10GamutCompareUITests.testLayerTogglesExistWithSRGB
    • Milestone10GamutCompareUITests.testCompareGamLoadEnablesToggle — "Compare toggle should enable after load"
    • Milestone10GamutCompareUITests.testOpenProfileRunsIccgamutForCompare — "Compare toggle should enable after iccgamut"
    • Milestone10ProjectUITests.testNewProjectClearsBasenameDoesNotDeleteFixtureTi3 — "expected the New or dirty alert"

All four exercise untouched #147/#149 paths (gamutLayer-* toolbar checkboxes, stubbed compare-gamut load, ⌘N File-menu alert) and pass locally on newer macOS/Xcode — first time these tests ran on the macOS 12 CI runner (33666 died at build). Looks environment-specific, needs its own investigation.

#146 stays open. Do not merge this PR.

Status update — Actions run **33718** on head `3d8e70b` (includes #157 ViewBuilder fix): - **Build for testing (host arch): PASS** — Xcode 14.2 / Swift 5.7 compiles cleanly; the `SidebarView` (14→5) and `SaveMediaRecipeDialog` (13→7) Group splits resolved the run-33666 compile failure. - **Unit (ICCeryCoreTests): PASS** - **UI (ICCeryUITests): real run, 48 tests, 4 failures** (Automation attached — no skip): - `Milestone10GamutCompareUITests.testLayerTogglesExistWithSRGB` - `Milestone10GamutCompareUITests.testCompareGamLoadEnablesToggle` — "Compare toggle should enable after load" - `Milestone10GamutCompareUITests.testOpenProfileRunsIccgamutForCompare` — "Compare toggle should enable after iccgamut" - `Milestone10ProjectUITests.testNewProjectClearsBasenameDoesNotDeleteFixtureTi3` — "expected the New or dirty alert" All four exercise untouched #147/#149 paths (`gamutLayer-*` toolbar checkboxes, stubbed compare-gamut load, ⌘N File-menu alert) and pass locally on newer macOS/Xcode — first time these tests ran on the macOS 12 CI runner (33666 died at build). Looks environment-specific, needs its own investigation. #146 stays open. **Do not merge this PR.**
gronod added 2 commits 2026-09-13 14:59:49 +01:00
Actions run 33718 (Xcode 14.2, macOS 12) failed four UI tests that
pass locally. Gamut layer toggles render as disabled placeholders
until the async layer load lands, so waitFor(id) won the race on the
placeholder — added waitUntilEnabled and gate on isEnabled. The
project New test's ⌘N may not reach the CommandGroup and alert
buttons often lack identifiers on macOS 12 — drive New through the
File menu "New Project" item and confirm the alert by button title
with id fallback.

Refs #147 #149 #146

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
gronod added 2 commits 2026-09-13 15:53:51 +01:00
Run 33803 still reported the layer toggles disabled after a real
waitUntilEnabled: on macOS 12 the identifier lands on the Toggle's
container element, which never reports isEnabled — combine the
Toggle's children so the a11y leaf is the checkbox itself (checkbox
style unchanged). testPrinttargFixtureGalleryAndStubbedPrint flaked
once on the same runner: wait for btnCreateLayout enabled before
clicking and retry once when the gallery never materialises.

Refs #147 #149 #146

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Merge pull request 'test(m10): combine gamut layer toggle AX; harden gallery wait on macOS 12' (#159) from fix/m10-ci-ui-macos12 into milestone/m10-studio
macOS CI / package (pull_request) Blocked by required conditions
macOS CI / build-and-test (pull_request) In progress
9fcd21dc2d
Some checks are pending
macOS CI / package (pull_request) Blocked by required conditions
macOS CI / build-and-test (pull_request) In progress
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin milestone/m10-studio:milestone/m10-studio
git checkout milestone/m10-studio
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#156