Implementation architecture for 6 active phases closing Pitwall's feature gaps vs. CodexBar (12.9k stars, 40+ providers). Each phase preserves Pitwall's differentiation: confidence labels, decision-first UI, privacy-first architecture, and cross-device sync via CalcLLM. Spec interview completed 2026-05-19.
Priority reordered from severity to urgency: P18 Cookie Auth fixes broken ChatGPT login (active user pain), while P16 Distribution is blocked on Apple Developer enrollment.
Opt-in browser cookie extraction for Chrome and Safari. Fixes broken ChatGPT login.
Provider-generic CookieProviderConfig maps provider to domain, cookie name, and decryption strategy.
Feeds into existing AuthHealthWarning model from auth-resilience spec.
AuthHealthWarning.expiringSoon.cookieSourced vs .manuallyEntered
Separate monorepo product at apps/pitwall-cli/ with own Package.swift.
Imports PitwallCore as local dependency. Shares Keychain credentials with the menu bar app.
pitwall status
All providers table
pitwall status --provider
Single provider detail
pitwall status --json
Machine-readable output
pitwall providers
Config + health status
pitwall suggest
Push/Conserve/Switch
WidgetKit integration with dual-write data sharing. Small widget shows single-provider decision word. Medium widget shows all-provider overview with routing suggestion.
WidgetSnapshot to both locations on each fetch.
Widget extension reads from App Group container. No migration of existing storage.
Unified badge composes 4 signals into one per-provider health indicator. Worst-case signal determines badge color. Degradation ties into confidence labels.
StatusChecker reports degradation:.delta → .estimated18 decisions made during spec interview. These represent deviations from the original roadmap or resolutions of open questions.
| Phase | Decision | Alternatives Rejected | Rationale |
|---|---|---|---|
| P18 | Direct DB read (Chrome SQLite + Safari binary) | Browser extension, AppleScript | Proven approach (CodexBar uses it), no extension install needed |
| P18 | Provider-generic CookieProviderConfig | Per-provider readers | Same code, different config — scales without new reader implementations |
| P18 | Integrates with existing AuthHealthWarning | Separate auth model | Cookie expiry feeds natural .expiringSoon warnings |
| P19 | Separate apps/pitwall-cli/ package | Target in existing Package.swift, standalone repo | Follows monorepo convention, own build cycle |
| P19 | Shared Keychain (no separate config) | Config file, read app data dir | Zero-config: works if menu bar app is configured |
| P22 | Dual-write (current storage + App Group) | App Group only, Core Data shared store | No migration risk, existing app storage unchanged |
| P21 | Unified 4-signal badge | Simple status dot (CodexBar), separate indicators | Composes signals CodexBar treats separately into one actionable view |
| All | P18 first, P16 deferred until enrollment | P16 first (critical severity) | P18 fixes active user pain; P16 blocked on external dependency |
| All | P17 deferred indefinitely | Active (6-10d effort) | 3 providers sufficient; P20 community infra enables organic growth |
New files in green, modified files in yellow.
How the 6 phases connect to existing Pitwall architecture and to each other.
Every phase closes a CodexBar gap while extending Pitwall's unique angles.
pitwall suggest gives Push/Conserve/Switch. CodexBar CLI is data-only.