Aha moment, onboarding flow, mobile approval routing
research/icp.md
Read
Solo developer persona, 5–12 agents, multi-repo workflow
research/concept-brief-gblock-party-personal.md
Read
BYO-client model, PWA, managed infrastructure
Existing codebase
N/A
No code exists — greenfield project in research/planning phase
Gate 1: Is the evidence base sufficient for UI content requirements?
Assumptions Manifest
Confirmed During Interview
#
Assumption
Source
1
Solo developer managing 5–12 AI coding agents — no team/collaboration features
[from spec]
2
Three access modes: Dashboard (A), Terminal (B), IDE (C)
[from spec]
3
PWA — installable on mobile and desktop, service worker for push
[from spec]
4
BYO-client — users connect providers via OAuth (where supported) or API key, using their own subscriptions and billing
[from spec]
5
GitHub App installation is sole auth mechanism — identity via GitHub OAuth, repo access via GitHub App installation grants (user selects all or specific repos)
[from spec]
6
10 screens: S1–S10 as defined in user flow map
[from spec]
7
S3 Agent Board is home after auth — all screens reachable from it
[inferred]
8
S4 Start Agent is a modal overlay (not a separate route) — triggered from S3, tab bar "+" button on any screen, or mobile bottom nav
[interview]
9
S7 Approval appears in three contexts: standalone mobile view, inline in S5, and indicator on S3
[interview]
10
Mobile header is minimal; QR on mobile is for sharing to tablet/other phone
[interview]
11
Browser-like tab navigation on all web views (desktop + tablet): pinned tabs (Agent Board, Approvals), dynamic tabs (agent sessions, diffs), and a persistent + button to open S4 Start Agent modal from any screen — can live as sidebar or top bar
[interview]
12
Custom hotkeys for session switching (Ctrl+1..N), session switching only
[interview]
13
Open tabs persist across devices (server-tracked, not client-local)
[interview]
14
WebSocket for real-time agent status, stdout streaming, approval notifications
[from spec]
15
Server-canonical state — all devices see the same state
[from spec]
16
Mobile uses bottom nav (Agent Board, Approvals, Settings, + Start Agent) and hamburger for open tabs
[interview]
17
Provider auth is hybrid OAuth/API-key per provider: OpenAI supports "Sign in with ChatGPT" subscription passthrough (prefer OAuth, API key fallback); Anthropic bans subscription OAuth in third-party tools (always API key). Auth method is provider-determined, not user-chosen.
[interview]
Gate 2: Are the assumptions and confidence levels correct?
Global Shell
Desktop Header Revised
Element
Data / Entity
Cardinality
Notes
App name / logo
Static brand mark
One
Links to S3 Agent Board
Notification bell
Unread notification count badge
One (aggregate)
Opens notification inbox. Currently surfaces approval notifications; extensible to org/team notifications in the future. Approvals pinned tab remains the primary approval queue — bell is for cross-cutting notifications.
Running agent count
Count of agents in "running" state
One (aggregate)
At-a-glance status indicator
Settings gear
Navigation trigger
One
Opens S10 Settings
Share button
Opens share modal
One
Modal includes: share by link (short-lived pre-authenticated deep link), email teammate (future — teams/org support), and QR code for mobile/tablet handoff
User avatar / account menu
GitHub profile image, session controls
One
Logout, session info
Tab Bar (All Web Views — Desktop + Tablet) Revised
Element
Behavior
Persistence
Pinned: Agent Board
Always present, not closeable
Server-persisted
Pinned: Approvals
Always present, not closeable. Badge shows pending approval count.
Server-persisted
Dynamic: Agent session tabs
Opens when user clicks into an agent (S5/S6). Closeable.
Server-persisted across devices
Dynamic: Diff review tabs
Opens when user enters S9 for a specific agent. Closeable.
Server-persisted across devices
+ New Agent
Always present, pinned to the right end of the tab row (VS Code / Windows Terminal convention). Opens S4 Start Agent modal from any screen — user does not need to navigate to S3 first.
N/A (action trigger)
Mobile Shell Revised
Element
Location
Behavior
Notification bell
Top header (always visible)
Minimal — unread count badge on bell icon
Hamburger menu
Top header
Opens drawer listing all open dynamic tabs (agent sessions, diffs). Hidden on the Agent Board screen — the board itself already displays all sessions, and Approvals is one bottom-nav tap away, so the tab drawer adds no value there. Appears only when the user is inside a detail view (S5/S6/S9) and needs to switch between open tabs.
Agent Board
Bottom nav
Pinned — always visible
Approvals
Bottom nav
Pinned — with badge
Settings
Bottom nav
Pinned
+ Start Agent
Bottom nav
Opens S4 Start Agent modal
Custom Hotkeys
Scope: Agent session switching only (Ctrl+1 through Ctrl+N)
Configuration: Managed in S10 Settings
Persistence: Server-persisted, available on any device with keyboard
States
State
Trigger
Behavior
Unauthenticated
No valid session
No shell shown — only S1 Auth
Connection lost
WebSocket heartbeat timeout
Banner in header: "Reconnecting..." with auto-retry
Zero agents
No agents configured
Tab bar shows pinned tabs only, no dynamic tabs
S1 — GitHub Authentication Revised
Data Fields Revised
Field
Type
Source
GitHub identity
GitHub App installation + OAuth web flow for user auth
GitHub API
Permissions granted
Fine-grained: repository contents (read/write), user email (read)
GitHub App installation prompt
Repository scope
User-selected: "All repositories" or "Only select repositories"
GitHub App installation prompt
Session token
JWT or secure cookie
Generated server-side post-OAuth
User Actions
Login with GitHub: Primary action — redirects to GitHub App OAuth web flow for user auth + installation for repo access
QR code auto-auth: If arrived via QR scan, one-time token bypasses manual OAuth
States
State
Trigger
Display
Initial
First visit or session expired
"Login with GitHub" button
Redirecting
User clicked login
Brief loading indicator as browser redirects to GitHub
Callback processing
GitHub redirects back
Skeleton loading — straight-through routing to S3 or S2
Auth error
OAuth failed (denied scopes, network error)
Error message with retry option
QR token expired
One-time token from QR has expired
Falls back to standard OAuth login
Constraints Revised
Uses GitHub App (not classic OAuth App) — user selects which repositories to grant during installation
No intermediate "connecting to workspace" screen — straight through to S3/S2
Skeleton loading renders if data fetches are in flight
QR auto-auth must validate one-time token server-side before issuing session
S2 — Setup Wizard Revised
Data Fields Revised
Field
Type
Cardinality
Required?
Discovered repos
List of GitHub repos populated from GitHub App installation grants (user controls scope: all repos or selected repos during installation)
Many
Auto — populated from user's GitHub App grants
Provider credentials
Per-provider auth — OAuth ("Sign in with ChatGPT") where supported, API key entry where not
Many (one per provider)
At least one
Provider auth method indicator
Per-provider badge: "OAuth" or "API Key" — shown next to each provider so user knows what to expect
Many
System-generated
Notification preferences
Push notification opt-in, email fallback toggle
Few
Optional (defaults available)
Infrastructure status
Health check results per tool and connectivity — rendered inline as status indicators within the Setup Summary, not a standalone view
Many
System-generated
User Actions Revised
Connect provider: OAuth flow for providers that support it (e.g., "Sign in with ChatGPT" button), or API key entry for providers that require it (e.g., Anthropic). Validated on completion.
Configure notifications: Choose push notifications, email notifications, or off
Review setup summary: Confirm repos, connected providers, and notification settings. Health check runs automatically in background.
Finish setup: Click "Finish Setup" from the summary to proceed to S3.
Flow Structure Revised
Multi-step wizard with progress indicator:
Step 1 — Provider Auth: Connect model providers — OAuth where supported (e.g., "Sign in with ChatGPT"), API key entry where required (e.g., Anthropic). Auth method badge shown per provider. Validation on completion. At least one provider required.
Step 2 — Notifications: Three options: push notifications, email notifications, or off.
Step 3 — Setup Summary: Read-only confirmation of everything configured. Three groups: (1) Repos — list of GitHub repos from App installation grants, (2) Connected Providers — each provider with auth method badge (OAuth / API Key) and connectivity status, (3) Notification Setting — the preference chosen in Step 2. Health check runs automatically in the background; results appear inline as status indicators next to each provider and repo entry. "Finish Setup" CTA at the bottom.
States Revised
State
Trigger
Display
Step active
User on current wizard step
Current step form + progress indicator showing position
Validating key
User entered an API key
Inline spinner + "Validating..." on the field
Key valid
API key validated successfully
Green check on field
Key invalid
API key validation failed
Red error message inline
OAuth redirecting
User clicked provider OAuth button (e.g., "Sign in with ChatGPT")
Browser redirecting to provider — spinner or "Redirecting to [provider]..." indicator
OAuth connected
Provider OAuth succeeded — callback received
Green check with provider badge showing "OAuth" and subscription tier (e.g., "ChatGPT Plus")
Health check running
Step 3 started
Summary loaded; inline spinners next to each provider/repo while connectivity is verified
Health check failed
One or more tools unreachable
Failed items show inline warning icon + retry link within the summary. "Finish Setup" remains enabled.
Complete
All steps done
All items show final status. "Finish Setup" CTA enabled at bottom of summary.
Constraints Revised
Minimum viable setup: GitHub OAuth (already done) + one provider connected (OAuth or API key)
Repos populated from GitHub App installation grants — user controls scope during GitHub App setup (all repos vs. selected repos)
Health check is automated but non-blocking — failures display per-tool warnings but do not block setup completion. User can proceed to Agent Board; failed tools are flagged in S10 Settings for later resolution.
Running Claude Code CLI in gblock-party's managed infrastructure with the user's own Anthropic API key is within Anthropic ToS. The subscription OAuth ban targets credential passthrough, not BYOK API-key usage of the official CLI.
Provider auth method is provider-determined, not user-chosen. gblock-party shows the correct auth UX per provider automatically.
Anthropic explicitly bans subscription OAuth in third-party tools (Feb 2026 terms, enforced April 4 2026) — always API key with usage-based billing.
OpenAI supports "Sign in with ChatGPT" subscription passthrough (since April 2026) — prefer OAuth, offer API key as fallback.
Accessibility: Deferred to full /ui-interview or /ux-variations — color-blind safe, keyboard nav, screen reader labels not yet specified
Approval preset extensibility: User confirmed presets + free text; exact default preset list not defined
Recap absence threshold: Default duration (e.g., 15 min) not confirmed
Tab bar position: Top vs sidebar left as a user preference — not locked
Card customization field list: Exact ~10 fields listed but could expand
Gate 7: Is the coverage checkpoint satisfactory?
Compile Review
Use Compile Feedback to send concerns or clarification requests before answering every gate, or Compile Answers for final approval once all required gate questions are answered. The compiled YAML always includes any optional section feedback you set.