Vision
RunCat-style menu-bar-only Swift app for reviewers: an animated pixel dog lives in the menu bar; occasionally a paid repo-review request arrives; the reviewer answers 3 prompts in the popover and earns Treats. No Dock icon, no separate window — everything in the NSPopover.
Surface split (locked)
Reviewers live ONLY in this popover. Senders (paying side) live on the web (Steemhunt/gitdog). The popover's "New Request" link opens the web dashboard in the browser.
Stack & constraints
- Swift native, NSStatusItem (frame-cycled template images) + NSPopover hosting SwiftUI (NSHostingView), LSUIElement=YES
- This repo is PUBLIC and open source: NO secrets; talks only to the server's /api/v1 with the user's token
- Latest stable Swift/Xcode; no overengineering, DRY
- Server API contract: Steemhunt/gitdog docs/api-v1.md
- Design package: ~/Projects/z-design/gitdog-design/ (local) · ~/projects/z-design/gitdog/ (VPS) — 4 popover screens at 360px (popover.html = spec incl. colors/spacing), monochrome sprite strips (sleep/arrived/wag/run), brand tokens (navy #1a2440, cream #f5ead9, orange #e8943d, green #3fae6a, Press Start 2P + DM Mono)
Gates (LAST)
Apple Developer ID signing/notarization/DMG; production API base URL.
Amendments after ticket review
- Style gate note: owner picked pixel style (design Phase 0) and approved brand tokens (Phase 3) on 2026-06-11 — proposal §12 gates are PASSED, not pending. UI body font = SF Pro Rounded; Press Start 2P for accents/badges only (matches design/app-ui/popover.html)
Engineering policy: no mock/temp/stub code (binding)
Every PR ships the production implementation of its scope. Concretely:
- BANNED in merged code: TODO/FIXME/HACK comments deferring functionality; functions returning hardcoded/sample data;
if (dev) return fakeX; commented-out "real" paths; placeholder UI text/images standing in for unimplemented features; "will be replaced by/when" comments. CI greps for TODO|FIXME|HACK|placeholder|mock outside test dirs; any hit must be justified in the PR description.
- Mocks/fakes live ONLY in test code (
__tests__, *.test.ts, Swift test targets) and the dev seed script. Application code never imports them.
- If an external dependency is unavailable locally, the ticket names the substitute (local Postgres, Base Sepolia, dev-mode auth). The substitute is reached through the SAME code path as production — only env config differs. Never a parallel fake code path.
- Dev-mode auth is NOT a mock: it is a complete, tested auth module behind the same interface real OAuth implements — real GitHub public-data fetch, real score, real session. It only skips the OAuth handshake.
- If a ticket cannot be completed for real, STOP and comment on the issue asking for a decision — do not merge a partial implementation with stubs. A smaller fully-working scope beats a full-width stubbed one.
- Acceptance criteria are executable: every AC is demonstrated by a test or a reproducible command documented in the PR description.
- Reviewers: any rule 1–4 violation = REQUEST CHANGES, regardless of how good the rest of the PR is.
Design assets on the QuadWork VPS
Design package mirror for VPS agents: ~/projects/z-design/gitdog/ (breeds/, icons/, scorecard/, app-ui/, web/, docs/ incl. both proposals + design README). Same content as this repo's design/ + docs/ (PR #17). Use local paths — do not re-download from GitHub.
Vision
RunCat-style menu-bar-only Swift app for reviewers: an animated pixel dog lives in the menu bar; occasionally a paid repo-review request arrives; the reviewer answers 3 prompts in the popover and earns Treats. No Dock icon, no separate window — everything in the NSPopover.
Surface split (locked)
Reviewers live ONLY in this popover. Senders (paying side) live on the web (Steemhunt/gitdog). The popover's "New Request" link opens the web dashboard in the browser.
Stack & constraints
Gates (LAST)
Apple Developer ID signing/notarization/DMG; production API base URL.
Amendments after ticket review
Engineering policy: no mock/temp/stub code (binding)
Every PR ships the production implementation of its scope. Concretely:
if (dev) return fakeX; commented-out "real" paths; placeholder UI text/images standing in for unimplemented features; "will be replaced by/when" comments. CI greps for TODO|FIXME|HACK|placeholder|mock outside test dirs; any hit must be justified in the PR description.__tests__,*.test.ts, Swift test targets) and the dev seed script. Application code never imports them.Design assets on the QuadWork VPS
Design package mirror for VPS agents:
~/projects/z-design/gitdog/(breeds/, icons/, scorecard/, app-ui/, web/, docs/ incl. both proposals + design README). Same content as this repo's design/ + docs/ (PR #17). Use local paths — do not re-download from GitHub.