···44make build-ghostty-xcframework # Rebuild GhosttyKit from Zig source (requires mise)
55make build-app # Build macOS app (Debug) via xcodebuild
66make run-app # Build and launch Debug app
77-make check # Run swiftformat and swiftlint
77+make install-dev-build # Build and copy to /Applications
88+make format # Run swift-format only
99+make lint # Run swiftlint only (fix + lint)
1010+make check # Run both format and lint
811make test # Run all tests
1212+make log-stream # Stream app logs (subsystem: app.supabit.supacode)
913make bump-version # Bump patch version and create git tag
1014make bump-and-release # Bump version and push to trigger release
1115```
···7882- Use `@ObservableState` for TCA feature state; use `@Observable` for non-TCA shared stores; never `ObservableObject`
7983- Always mark `@Observable` classes with `@MainActor`
8084- Modern SwiftUI only: `foregroundStyle()`, `NavigationStack`, `Button` over `onTapGesture()`
8585+- When a new logic changes in the Reducer, always add tests
8186- Prefer Swift-native APIs over Foundation where they exist (e.g., `replacing()` not `replacingOccurrences()`)
8287- Avoid `GeometryReader` when `containerRelativeFrame()` or `visualEffect()` would work
8388- Do not use NSNotification to communicate between reducers.