System profile installation #27

Open
opened 2026-09-08 17:43:43 +01:00 by gronod · 0 comments
Owner

Summary

Copy never move. ColorSync folders. Collision dialog.

Spec refs

docs/19-profile-install.md, 17-stage5-verification.md. #223 #69.

Scope

In: installProfileToSystem, UI, settings bindings.
Out: system-folder elevation helper beyond a guidance message.

Implementation notes

Destinations: ~/Library/ColorSync/Profiles (user) / /Library/ColorSync/Profiles (system; error text MUST mention admin rights).
Filename {stem}.icc. Reject stem .. / \.
Source checks: file exists, .icc/.icm, ≥128 bytes.
Collision: overwrite | rename {stem}-{epoch}.icc | cancel. Honour ask_before_overwrite_profile / force_overwrite.
Atomic {dest}.iccery-install.tmp + rename. Create parents.
Registration = presence in ColorSync folder. open_color_panelopen -a "ColorSync Utility".
InstallResult{dest_path, registered, overwritten, renamed, opened_panel, message, calibration_note}.
Working artefact stays put for Stage 5 / drift.

Rewrite invariants

#223 copy never move; never register a failed copy.

Dependencies

Blocks-on: 6, 5, 23.
Unblocks: none.

Test

  • CI/mock: dest matrix in temp dirs; collision paths; failed copy does not register.
  • Hardware: profile appears in ColorSync Utility.

Acceptance criteria

  • Source file still exists after install.
## Summary Copy never move. ColorSync folders. Collision dialog. ## Spec refs docs/19-profile-install.md, 17-stage5-verification.md. #223 #69. ## Scope In: installProfileToSystem, UI, settings bindings. Out: system-folder elevation helper beyond a guidance message. ## Implementation notes Destinations: `~/Library/ColorSync/Profiles` (user) / `/Library/ColorSync/Profiles` (system; error text MUST mention admin rights). Filename `{stem}.icc`. Reject stem `.. / \`. Source checks: file exists, `.icc/.icm`, ≥128 bytes. Collision: overwrite | rename `{stem}-{epoch}.icc` | cancel. Honour `ask_before_overwrite_profile` / `force_overwrite`. Atomic `{dest}.iccery-install.tmp` + rename. Create parents. Registration = presence in ColorSync folder. `open_color_panel` → `open -a "ColorSync Utility"`. `InstallResult{dest_path, registered, overwritten, renamed, opened_panel, message, calibration_note}`. Working artefact stays put for Stage 5 / drift. ## Rewrite invariants #223 copy never move; never register a failed copy. ## Dependencies Blocks-on: 6, 5, 23. Unblocks: none. ## Test - CI/mock: dest matrix in temp dirs; collision paths; failed copy does not register. - Hardware: profile appears in ColorSync Utility. ## Acceptance criteria - [ ] Source file still exists after install.
gronod added this to the M5 — Profile, verification & install milestone 2026-09-08 17:43:43 +01:00
gronod added the
Priority
High
2
Project/ICCery-v2Feature/BackendFeature/UI
labels 2026-09-08 17:43:43 +01:00
gronod added a new dependency 2026-09-09 11:11:51 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Depends on
#52 Milestone 5 Bugfixes
gronod/iccery-v2-mac
Reference: gronod/iccery-v2-mac#27