feat(tui): add snapshot test infrastructure + terminal compat matrix (bd-2nfs)

- 6 deterministic snapshot tests at 120x40 with FakeClock frozen at 2026-01-15T12:00:00Z
- Buffer-to-plaintext serializer resolving chars, graphemes, and wide-char continuations
- Golden file management with UPDATE_SNAPSHOTS=1 env var for regeneration
- Snapshot diff output on mismatch for easy debugging
- Tests: dashboard, issue list, issue detail, MR list, search results, empty state
- TERMINAL_COMPAT.md template for manual QA across iTerm2/tmux/Alacritty/kitty/WezTerm
This commit is contained in:
teernisse
2026-02-19 00:30:40 -05:00
parent 04ea1f7673
commit 403800be22
10 changed files with 760 additions and 6 deletions

View File

@@ -0,0 +1,40 @@
Dashboard
Entity Counts Projects Recent Activity
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Issues: 15 open / 42 ● 5m ago infra/platform No recent activity
MRs: 7 open / 28 ● 12m ago web/frontend
Discussions: 120 ● 8m ago api/backend
Notes: 350 (18% system) ● 4m ago tools/scripts
Documents: 85
Embeddings: 200 Last sync: succeeded
NORMAL q:quit esc:back ?:help C-p:palette o:browser P:scope gh:home gi:issues gm:mrs g/:search gt:timeline

View File

@@ -0,0 +1,40 @@
Dashboard
Entity Counts Projects Recent Activity
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Issues: 0 open / 0 No projects synced No recent activity
MRs: 0 open / 0
Discussions: 0
Notes: 0 (0% system)
Documents: 0
Embeddings: 0
NORMAL q:quit esc:back ?:help C-p:palette o:browser P:scope gh:home gi:issues gm:mrs g/:search gt:timeline

View File

@@ -0,0 +1,40 @@
Dashboard > Issues > Issue
#101 Add retry logic for transient failures
opened | alice | backend, reliability | -> bob, carol
Milestone: v2.0 | Due: 2026-02-01
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## Problem
Transient network failures cause cascading errors in the ingestion pipeline. We need exponential backoff with jitter.
## Approach
1. Wrap HTTP calls in a retry decorator
2. Use exponential backoff (base 1s, max 30s)
3. Add jitter to prevent thundering herd
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Discussions (0)
Loading discussions...
NORMAL q:quit esc:back ?:help C-p:palette o:browser P:scope gh:home gi:issues gm:mrs g/:search gt:timeline

View File

@@ -0,0 +1,40 @@
Dashboard > Issues
/ type / to filter
IID v Title State Author Labels Project
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
#101 Add retry logic for transient failures opened alice backend, reliability infra/platform
#55 Dark mode toggle not persisting across sessi opened bob ui, bug web/frontend
#203 Migrate user service to async runtime closed carol backend, refactor api/backend
Showing 3 of 3 issues
NORMAL q:quit esc:back ?:help C-p:palette o:browser P:scope gh:home gi:issues gm:mrs g/:search gt:timeline

View File

@@ -0,0 +1,40 @@
Dashboard > Merge Requests
/ type / to filter
IID v Title State Author Target Labels Project
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
!42 Implement exponential backoff for HT opened bob main backend infra/platform
!88 [W WIP: Redesign settings page opened alice main ui web/frontend
Showing 2 of 2 merge requests
NORMAL q:quit esc:back ?:help C-p:palette o:browser P:scope gh:home gi:issues gm:mrs g/:search gt:timeline

View File

@@ -0,0 +1,40 @@
Dashboard > Search
[ FTS ] > Type to search...
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
No search indexes found.
Run: lore generate-docs && lore embed
NORMAL q:quit esc:back ?:help C-p:palette o:browser P:scope gh:home gi:issues gm:mrs g/:search gt:timeline