Skip to content

Claude/setup docs planning im7e v#3

Merged
yeapea merged 2 commits into
developfrom
claude/setup-docs-planning-Im7eV
Apr 5, 2026
Merged

Claude/setup docs planning im7e v#3
yeapea merged 2 commits into
developfrom
claude/setup-docs-planning-Im7eV

Conversation

@yeapea
Copy link
Copy Markdown
Owner

@yeapea yeapea commented Apr 5, 2026

No description provided.

claude added 2 commits April 5, 2026 16:59
- Replace ObservableObject/@Published/@StateObject with the
  Observation framework (@observable + @State + @bindable).
- Annotate PreferencesViewModel as @mainactor so timer callbacks
  and UserDefaults access are isolated to the main actor.
- Drop @AppStorage from the view model; read autoRefreshSpaces
  directly from UserDefaults in init(). @AppStorage is a
  SwiftUI DynamicProperty and is not reliable inside an
  @observable class.
- Dispatch the Timer tick through Task { @mainactor in } so the
  refreshSpaces() call is cleanly isolated.
- Bump SWIFT_VERSION from 5.0 to 5.10 across both targets
  (debug and release) so Observation macros are available.
NSImage.lockFocus()/unlockFocus() mutates global graphics state and
is error-prone: forgetting unlockFocus() corrupts subsequent drawing,
and mixing with concurrent rendering is unsafe. Apple recommends
NSImage(size:flipped:drawingHandler:) for new code.

Rewrite every icon composition site in IconCreator to use the
block-based initializer. isTemplate = true is still set on the
resulting image (it applies to the wrapper, not the draw block).
Behaviour is unchanged.
@yeapea yeapea merged commit 740c76d into develop Apr 5, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants