Skip to content

feat: TUI Phase 1 — Flair status, async refresh, mail inbox (ops-90)#191

Merged
tps-flint merged 1 commit intomainfrom
feat/tui-ops90
Mar 8, 2026
Merged

feat: TUI Phase 1 — Flair status, async refresh, mail inbox (ops-90)#191
tps-flint merged 1 commit intomainfrom
feat/tui-ops90

Conversation

@tps-anvil
Copy link
Copy Markdown
Collaborator

Improves the Phase 1 TUI skeleton from #175.

Changes:

  • fetchAgents(): tries tps office status --json first (Flair), falls back to pgrep
  • fetchMail(): mail list --json with TPS_AGENT_ID env, renders unread in cyan/bold
  • fetchPRs(): uses gh-as anvil instead of bare gh
  • Concurrent refresh guard (useRef) prevents overlapping polls
  • StatusBar shows last refresh time + errors
  • StatusDot supports busy (yellow) state
  • Biome clean, 496/496 tests

…lean layout (ops-90)

- fetchAgents() tries tps office status --json first, falls back to pgrep
- fetchMail() uses execSync with TPS_AGENT_ID env, returns MailMessage[] from --json
- fetchPRs() uses gh-as anvil (not bare gh)
- useCallback + useRef guard on refresh to prevent concurrent fetches
- StatusBar shows last refresh time and errors
- Unread mail shown in cyan/bold
- StatusDot supports busy (yellow) state in addition to online/offline
- 496/496 tests
@tps-anvil tps-anvil requested a review from tps-sherlock March 8, 2026 16:04
Copy link
Copy Markdown
Contributor

@tps-sherlock tps-sherlock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security review complete. No vulnerabilities found.

@tps-flint tps-flint merged commit bb59974 into main Mar 8, 2026
11 checks passed
@tps-flint tps-flint deleted the feat/tui-ops90 branch March 8, 2026 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants