You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: Build requires CODE_SIGNING_ALLOWED=NO or a configured Apple Development team. The upstream team ID (9DLM793N9T) is baked into the project; local dev needs their own team or ad-hoc signing.
2. Warning Audit
By Category
Concurrency / Swift 6 Preparation (16 warnings)
The largest category. These will become errors under Swift 6 strict concurrency.
No remaining merge artifacts. All draggedItem references (15 total) use the new NookDragSessionManager system. Legacy drag code has been fully removed.
4. Feature Status Matrix
Feature
Status
Notes
Tab creation/navigation
Likely Working
Core path, no warnings in critical code
Sidebar rendering
Likely Working
Spaces, tabs, essentials grid all compile clean
Tab drag-drop reorder
Likely Working
New unified system fully integrated, no type mismatches
Tab drag between spaces
Likely Working
NookDragSessionManager handles cross-zone drops
Space switching
Likely Working
BigUIPaging integration unchanged
Space creation/deletion
Likely Working
Standard SwiftData CRUD
Profile switching
Likely Working
ProfileManager unchanged
Split view
Partial Risk
SplitViewManager has 7 unused bm variables — may indicate incomplete refactoring
Extensions
Partial Risk
13 warnings including potential API mismatch (connectUsingMessagePort), Sendable violations
Boosts
Partial Risk
2 unused variables (allScripts, boostScriptSources) in Tab.swift suggest dead injection code
Keyboard shortcuts
Likely Working
Only nonisolated(unsafe) deprecation warnings
Downloads
Minor Risk
Main actor isolation warnings in completion handlers
AI chat
Minor Risk
Immutable property won't decode; MCPClient has unnecessary await
Peek preview
Likely Working
Only unused variable warning
Onboarding
Likely Working
No warnings
Incognito
Likely Working
Profile system with ephemeral stores unchanged
Auto-update (Sparkle)
Likely Working
No warnings from integration
5. Technical Debt
God Objects
File
Lines
Status
ExtensionManager.swift
3,990
Highest complexity, most warnings (13)
BrowserManager.swift
2,874
Central coordinator, 1 warning
TabManager.swift
2,810
Core logic, 1 TODO
Deprecated Code
Nook/Components/Boosts - deprecated/ — 2 files (BoostColorCanvas.swift, ColorWheelPicker.swift). Replaced by new Boosts UI but not yet removed from project.
Outstanding TODOs
9 TODOs across BrowserManager (3), TabManager (1), ExtensionManager (1), BoostsWindowManager (1), SpaceTab (3)
1 FIXME in HTSymbolHook.m (third-party)
Dual State Pattern
Tab uses both @Observable and @Published/ObservableObject — documented as intentional but adds complexity.
6. Dependency Health
Status
Details
SPM resolution
All 18 packages resolve cleanly
Version conflicts
None
Pinned to branch
Motion (main), Garnish (main) — risk of breaking changes
Embedded deps
BigUIPaging, HTSymbolHook, MuteableWKWebView — no version management
WKProcessPool
Deprecated since macOS 12; used in Tab.swift:577 — functional but should be removed
7. Runtime Smoke Test Checklist
After building, manually verify these flows:
App launches without crash
Sidebar renders with spaces, tabs, essentials grid
New tab creation works
Tab navigation (click URL bar, load page)
Tab drag-drop reorder in sidebar
Tab drag between spaces
Space switching (horizontal paging)
Space creation/deletion
Profile switching (via Settings)
Split view (right-click → Open in Split)
Extension installation (if macOS 15.4+)
Sidebar collapse/expand
Incognito window
Keyboard shortcuts (Cmd+T, Cmd+W, Cmd+L)
Downloads (save a file)
AI chat sidebar (if configured)
8. Prioritized Roadmap
P0 — Must Fix (Build/Crash/Regression Risk)
ExtensionManager API mismatch (connectUsingMessagePort vs connectUsing) — may silently break extension messaging. Verify at runtime; if broken, rename method to match protocol.
Main actor isolation in download completions (SidebarMenuDownloadsHover:259, SidebarMenuDownloadsTab:193) — calling main-actor-isolated closure from nonisolated context could cause runtime issues.
Code signing setup — Document how local devs should configure signing (or add a Debug-Local scheme with ad-hoc signing).
P1 — Should Fix (Broken Features / Quality)
Dead boost injection code in Tab.swift:448-452 — allScripts and boostScriptSources are computed but never used, suggesting boost CSS/JS injection may be broken.
ExtensionManager Sendable violations (5 warnings) — ExtensionEntity passed across actor boundaries. Works now but will break under Swift 6.
return expression warnings in PrivacySettingsView and SettingsView — likely a missing semicolon or unintended return value that could cause subtle UI bugs.