Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1431 commits
Select commit Hold shift + click to select a range
2567fc5
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 19, 2026
88728ae
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 19, 2026
d5d9c3a
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 19, 2026
84baad5
chore(sdd): add planning artifacts for session-hibernation
tstapler May 18, 2026
821ec61
chore(sdd): update session-hibernation plan with TransitionDef archit…
tstapler May 18, 2026
8a714f4
chore(sdd): add interface redesign story to session-hibernation plan
tstapler May 18, 2026
8e8b638
refactor(session): replace 7-state status enum with 5-state model
tstapler May 18, 2026
876d6a5
fix(session): eliminate all remaining deprecated Running/Ready alias …
tstapler May 18, 2026
e72f742
feat(session): make CreateSession return immediately with Creating st…
tstapler May 18, 2026
c3db8d6
feat(proto): add creation_progress field to Session message
tstapler May 18, 2026
c758dbc
feat(session): add HibernateSession and ResumeHibernatedSession RPCs
tstapler May 18, 2026
2384dbd
feat(ai-rules): Epic 2 — useGenerateRule hook + SuggestedRuleCard com…
tstapler May 19, 2026
a330f34
chore(main): release 1.30.0 (#105)
TylerStaplerAtFanatics May 20, 2026
23e467a
chore(demos): update E2E feature GIFs [skip ci]
github-actions[bot] May 20, 2026
9d43582
feat(analytics): program detail panel with subcommand drill-down (#85)
tstapler May 21, 2026
52dac39
chore(plans): add analytics-drill-down SDD planning artifacts
tstapler May 21, 2026
73f8444
Merge remote-tracking branch 'origin/main'
tstapler May 21, 2026
1767317
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 21, 2026
3ee0b41
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 21, 2026
735e7f9
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 21, 2026
3231d75
perf: debounce omnibar Fuse searches and pre-sort sessions selector
tstapler May 18, 2026
fcafaed
feat(backlog): automated triage pipeline with review panel
tstapler May 19, 2026
e3191bc
feat(mcp): tag MCP-created sessions with source:mcp
tstapler May 20, 2026
874c1e6
feat(session): session steering — supervised driver for all automated…
tstapler May 20, 2026
dc99f6d
perf: eliminate LoadInstances per-request in WorkspaceService and sta…
tstapler May 20, 2026
3ec93c4
fix(session): re-detect conversation UUID after /clear
tstapler May 20, 2026
e80cb2a
fix: address code review findings from history-linker and workspace-s…
tstapler May 21, 2026
aad9914
chore(mux): rename claude-mux → ssq-mux throughout
tstapler May 21, 2026
7458bcb
feat(backlog): workflow engine and status event audit log
tstapler May 21, 2026
5b528f1
feat(session): WriteToSession RPC for sending raw input to a PTY
tstapler May 21, 2026
80d3f3b
feat(backlog): session monitor panel and backlog detail improvements
tstapler May 21, 2026
820d080
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 21, 2026
dd86790
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 21, 2026
18e4c92
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 21, 2026
8b3b0db
Merge remote-tracking branch 'origin/main'
tstapler May 21, 2026
0eae9e6
fix(ui): show pane header tab strip on mobile (remove display:none at…
tstapler May 21, 2026
a37eeb5
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 21, 2026
bb8323e
Merge remote-tracking branch 'upstream-fanatics/main' into merge/upst…
tstapler May 21, 2026
df70b99
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 21, 2026
8b18c68
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 21, 2026
df56305
fix(session): replace undefined NeedsApproval with detection layer check
tstapler May 21, 2026
a99d967
fix(lint): use LiveInstancesProvider and Active instead of deprecated…
tstapler May 21, 2026
f8a4303
Merge remote-tracking branch 'origin/main' into merge/upstream-20260521
tstapler May 21, 2026
6b2f9d9
fix(test): use Stopped status in seedInstance to avoid tmux spawn in …
tstapler May 21, 2026
8c23e65
chore: sync personal fork → upstream (20260521) (#108)
tstapler May 21, 2026
bcc72aa
chore: sync upstream → personal fork (20260521) (#87)
tstapler May 21, 2026
7e14c40
perf: eliminate hot-path allocs and reduce JS bundle size (#107)
TylerStaplerAtFanatics May 21, 2026
f4c475f
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 21, 2026
59c4f48
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 21, 2026
7238ae9
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 21, 2026
2927de7
feat(memory): surface memory pressure and fix hibernation sweeper
tstapler May 22, 2026
417ac0a
feat(upload): multi-file + Android camera/gallery/file picker in term…
tstapler May 22, 2026
5632d7e
feat(memory): surface memory pressure and fix hibernation sweeper
tstapler May 22, 2026
b4b43e4
feat(upload): multi-file + Android camera/gallery/file picker in term…
tstapler May 22, 2026
7b437d8
fix(lint): remove redundant embedded field selector in sweeper test
tstapler May 22, 2026
8337490
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 22, 2026
108435c
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 22, 2026
c0346c9
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 22, 2026
a23a124
fix(ui): rename Gallery button to Images in terminal upload toolbar
tstapler May 22, 2026
d1e396e
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 22, 2026
62c446e
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 22, 2026
9b47eaa
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 22, 2026
14cc562
perf: hot-path alloc elimination, go-git low-alloc index scan, JS bun…
TylerStaplerAtFanatics May 22, 2026
c4b2ee3
fix(notifications): fix type mapping, approval guard, and test enum v…
TylerStaplerAtFanatics May 22, 2026
243abcf
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 22, 2026
7fd4d17
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 22, 2026
27b5584
fix(memory): fix cache population, pause guard, and error UX for hibe…
tstapler May 22, 2026
8243195
test(memory): add benchmarks for ListSessions hot-path cache operations
tstapler May 22, 2026
ebb8a1b
fix(upload): fix stale upload tests and add disconnected-state UX fal…
tstapler May 22, 2026
8cc95ba
fix(memory): address code review findings — cache I/O, RSS coverage, …
tstapler May 22, 2026
7ee3c29
chore: merge main into merge/upstream-20260521
tstapler May 22, 2026
3cc037f
fix(macos): stable TCC permission grants via self-signed codesigning …
TylerStaplerAtFanatics May 22, 2026
fe7a5a5
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 22, 2026
3fbcac9
fix(lint): remove embedded ReviewState selector in sweeper test (QF1008)
tstapler May 22, 2026
4b25830
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 22, 2026
af6ca0b
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 22, 2026
f455f3b
Merge pull request #88 from tstapler/merge/upstream-20260521
TylerStaplerAtFanatics May 22, 2026
b6990e7
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 22, 2026
b35d72f
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 22, 2026
b85607e
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 22, 2026
c2ba4aa
fix(upload): extract FileList to array before input reset to fix Andr…
tstapler May 23, 2026
6f654e3
feat(rules): modal dialog, scrollable table, analytics deep-link pre-…
tstapler May 24, 2026
d2a3eb3
refactor(rules): address code review findings — Modal reuse, z-index …
tstapler May 24, 2026
17b2a6f
feat(rules): UX improvements — toast z-index, mobile layout, form sec…
tstapler May 24, 2026
a981bcb
feat: add support for Antigravity (agy) CLI
tstapler May 24, 2026
58683b9
Merge branch 'stapler-squad-antigravity'
tstapler May 24, 2026
d349f63
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 24, 2026
862195e
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 24, 2026
e66d058
feat(agy): full Antigravity CLI support — hooks, install, UI, detection
tstapler May 26, 2026
b0cb29d
fix(tokens): use UTC in IsStale() to avoid timezone boundary false-po…
tstapler May 26, 2026
0a4e10e
feat(headless): session/headless pool — cache-optimized background LL…
tstapler May 26, 2026
6f2cb76
fix(headless): resolve all review findings — atomicity, security, con…
tstapler May 26, 2026
fb5a6d1
feat(shells): custom shell tabs — interactive PTY shells attached to …
TylerStaplerAtFanatics May 27, 2026
0f4e5af
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 27, 2026
e7f5dcc
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 27, 2026
59a7f2c
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 27, 2026
fba787e
Merge pull request #89 from tstapler/stapler-squad-backlog-headless
tstapler May 27, 2026
18f2d6b
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 27, 2026
8f622f6
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 27, 2026
28109d7
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 27, 2026
b731b6a
fix(session): replace time.Sleep with os.Chtimes in HistoryLinker tes…
tstapler May 26, 2026
2fbdb2d
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 27, 2026
4728ef2
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 27, 2026
bb6f665
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 27, 2026
a339b29
fix(detection): detect ✻ asterism prefix as Claude active state (#114)
TylerStaplerAtFanatics May 28, 2026
5cb9f82
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 28, 2026
0e1e8e0
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 28, 2026
6a174c3
feat(backlog): triage re-trigger fix, detail UI polish, backlog in mo…
tstapler May 22, 2026
cbc938b
fix(backlog): repair triage pipeline — prompt injection, session exit…
tstapler May 22, 2026
38f666f
fix(log): prevent panic on service restart; fix ESLint violations
tstapler May 28, 2026
5911d44
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 28, 2026
d36e8d1
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 28, 2026
7781b26
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 28, 2026
c568e00
chore: untrack generated files (gen/, session/ent/, web-app/src/gen/)
tstapler May 28, 2026
60bc9c6
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 28, 2026
44417ef
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 28, 2026
36415e1
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 28, 2026
0886f10
chore: sync personal fork → upstream (2026-05-28)
tstapler May 29, 2026
66b4c65
feat(session): immortal migration — ProcessManager interface + TmuxBa…
TylerStaplerAtFanatics May 29, 2026
4197f2b
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 29, 2026
4b806eb
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 29, 2026
50d1e2c
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 29, 2026
f312d22
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 29, 2026
d07584c
feat(ux): paused session clarity — overlay, visual distinction, pause…
tstapler May 29, 2026
7fbe2ee
chore: add brand assets, project plans, antigravity config, and ignor…
tstapler May 29, 2026
80dc5ab
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 29, 2026
012128e
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 29, 2026
343fd56
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 29, 2026
dea6a86
fix: post-merge build repairs for sync/upstream-20260528
tstapler May 29, 2026
81e7ebf
fix(ci): add ent ORM generation step before lint and build
tstapler May 29, 2026
3d823f1
fix(ci): include session/ent/ in build artifact for test and cross-co…
tstapler May 29, 2026
94b273c
fix(ci): allow ESLint warnings in full-scan path (push/workflow_dispa…
tstapler May 29, 2026
56fd275
style(go): gofmt all Go files (upstream merge formatting divergence)
tstapler May 29, 2026
fa4aa29
Merge remote-tracking branch 'personal/main' into merge/upstream-2026…
tstapler May 29, 2026
054c0fb
Merge remote-tracking branch 'origin/main' into merge/upstream-20260528
tstapler May 29, 2026
3651044
fix(session): replace inst.tmuxManager.GetTmuxSessionName() with inst…
tstapler May 29, 2026
263e38b
style(go): gofmt files from upstream merge (round 2)
tstapler May 29, 2026
5f3208a
fix(session): fix two data races and semaphore ordering from upstream…
tstapler May 29, 2026
fb676f7
Merge pull request #91 from tstapler/merge/upstream-20260528
TylerStaplerAtFanatics May 29, 2026
1310227
Merge pull request #121 from TylerStaplerAtFanatics/merge/upstream-20…
TylerStaplerAtFanatics May 29, 2026
4eb60a7
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 29, 2026
6246544
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 29, 2026
17fc822
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 29, 2026
6e814c2
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 29, 2026
f3dd8f8
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 29, 2026
5051886
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 29, 2026
2b306fc
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 29, 2026
4104b01
perf: reduce goroutine wakeups, lazy-load xterm.js, memoize SessionCa…
TylerStaplerAtFanatics May 29, 2026
a63f704
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 29, 2026
f3b83d2
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 29, 2026
8cd29c6
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 29, 2026
d2abed5
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 29, 2026
23d8964
docs(mcp): clarify create_session is for user-interactable sessions only
tstapler May 29, 2026
bf3f525
chore: merge personal benchmark baselines into main
tstapler May 29, 2026
4567459
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 29, 2026
186d3fb
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 29, 2026
e9e9986
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 29, 2026
c89ab7a
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 29, 2026
15b816e
chore(demos): update E2E feature GIFs [skip ci]
github-actions[bot] May 30, 2026
c9b08c5
fix(notifications): condition-change gating for health alerts + nativ…
tstapler May 30, 2026
1029731
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 30, 2026
5306e0f
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 30, 2026
a68ab56
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 30, 2026
ce1b70a
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 30, 2026
c380068
feat(shell-tabs): complete UX discovery, error states, and full test …
tstapler May 30, 2026
da7bde3
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 30, 2026
91241ad
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 30, 2026
51f4bb9
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 30, 2026
183a116
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 30, 2026
ce14e75
fix(sessions): cascade session deletion to review queue, notification…
tstapler May 30, 2026
f18916a
chore: merge origin demo GIF update
tstapler May 30, 2026
7131cb5
chore: merge personal benchmark baselines and shell-tabs feature
tstapler May 30, 2026
11291e4
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 30, 2026
6e8818c
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 30, 2026
f24bce6
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 30, 2026
d7a16f0
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 30, 2026
8b883f3
perf(session): lock-free shell registry + allocation hot-path fixes
tstapler May 30, 2026
22d1de5
perf(session): lock-free GetTimeSinceLastMeaningfulOutput via atomic …
tstapler May 30, 2026
98d503c
perf: TTL cache for DiffShortstat + zero-alloc enforcement tests
tstapler May 30, 2026
e8c150f
perf: remaining enforcement tests + CI coverage
tstapler May 31, 2026
29c52c5
fix(lint): resolve prealloc violations and remove unused shellWgWait
tstapler May 31, 2026
b68af0e
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 31, 2026
2f00f67
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 31, 2026
4b9bd30
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 31, 2026
ffe0fcb
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 31, 2026
f9d5d12
feat(ux): re-order toolbar by usage, shared handedness hook, all-tab …
tstapler May 31, 2026
9c4304a
fix(toolbar): move Resize button back to primary bar (#96)
tstapler May 31, 2026
5b7b71a
fix(terminal): eliminate 60fps re-render storm on selection, add copy…
tstapler May 31, 2026
cbcf70c
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 31, 2026
d52d1c1
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 31, 2026
a56fa4b
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] May 31, 2026
229a8b4
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 31, 2026
45a0c2c
feat(notifications): refresh toast in-place on duplicate events, skip…
tstapler May 31, 2026
2350824
feat(notifications): native notification auto-close and close-before-…
tstapler May 31, 2026
745e224
perf(vcs): cache go-git repos, per-repo mutex, bounded merge-base BFS
tstapler May 31, 2026
bed0ab7
perf(tokens): reduce per-entry json.Unmarshal allocations in token pa…
tstapler May 31, 2026
4bd04dd
perf(streaming): batch terminal output frames to reduce scheduler wak…
tstapler May 31, 2026
b605b15
perf(go:optimize): Pattern F+G — fast-path guard + capacity hints
tstapler May 31, 2026
a3486e4
feat(hibernation): auto-hibernate idle sessions after 20min, skip rev…
tstapler May 31, 2026
01cd154
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] May 31, 2026
b44c7b0
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] May 31, 2026
65a4740
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] May 31, 2026
3197e44
fix(verify): resolve sdd:6-verify findings
tstapler May 31, 2026
ca3e71c
refactor(vcs): move repo/diff caches onto GoGitVCSReader; release mut…
tstapler Jun 1, 2026
1372238
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
6c2042c
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
80e775c
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
711d5fe
feat(history): Story 1 — proto fields, git enrichment, fork dispatch
tstapler Jun 1, 2026
5626e19
fix(history): Story 2 — fix broken resume (path validation + session …
tstapler Jun 1, 2026
b959669
fix(ci): resolve pre-existing lint-css-tokens and lint-custom failures
tstapler Jun 1, 2026
a12114e
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
064e991
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
483d54c
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
b61cfac
feat(history): Stories 3–5 — rich cards, virtual scroll, fork modal
tstapler Jun 1, 2026
23f7ba0
fix(history): virtual scroll layout + mark epic complete
tstapler Jun 1, 2026
4678065
fix(headless): update argsCapturingRunner.Run to match ClaudeRunner i…
tstapler Jun 1, 2026
581a99d
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
6f0284c
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
fd95aea
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
1a74ee5
fix(lint): replace inline layout style with existing entryList class
tstapler Jun 1, 2026
32e9c7c
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
415c1db
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
c53a4fc
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
251278b
chore(fmt): gofmt search_service.go and other unformatted Go files
tstapler Jun 1, 2026
4446d6e
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
8600e16
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
57c5e5f
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
d30a2db
fix(ci): resolve Benchmarks race, Demo GIFs 403, and Release Please b…
tstapler Jun 1, 2026
614c69a
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
13fb009
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
d6e6934
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] Jun 1, 2026
5c1196a
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
25e0653
feat(insights): time range filter, session detail, cost projections, …
tstapler Jun 1, 2026
587473b
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
6f0a475
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
9a338a6
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] Jun 1, 2026
353dfef
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
35e0cd7
revert: remove unnecessary commit-search-body flag
tstapler Jun 1, 2026
902cab9
fix(lint): move useMemo above early returns in insights charts; add d…
tstapler Jun 1, 2026
d688ed4
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
3a6b8a0
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
4f1faa7
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] Jun 1, 2026
dd2fb7f
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
5a956bb
fix(lint): eslint-disable-next-line for forwardRef inside useMemo object
tstapler Jun 1, 2026
988d48b
chore(bench): update go tier1 baseline [skip ci]
github-actions[bot] Jun 1, 2026
e0d1b16
chore(bench): update go tier2 baseline [skip ci]
github-actions[bot] Jun 1, 2026
09f44fd
chore(bench): update e2e latency baseline [skip ci]
github-actions[bot] Jun 1, 2026
4eca0ed
chore(bench): update frontend throughput baseline [skip ci]
github-actions[bot] Jun 1, 2026
be46c20
fix(web-app): cap Omnibar modal height and scroll its body on short v…
tstapler Jul 29, 2026
ab75ccb
fix(web-app): contain scroll chaining on Omnibar's scrollable body
tstapler Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .antigravitycli/1da03e32-5da9-4ec4-b377-33029cda1bb1.json
Empty file added .asdf-install.stamp
Empty file.
312 changes: 312 additions & 0 deletions .claude/brand-guidelines.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,312 @@
# Seneschal Brand Guidelines

> Condensed brand guide — specific enough that a contractor who has never worked with this brand can produce on-brand work from this document alone.
>
> For foundational strategy, positioning, and the estate metaphor vocabulary, see `product-marketing-context.md`.

---

## 1. Color System

### Semantic Palette

All color decisions should reference semantic roles, not raw hex. Match these tokens to the CSS variables in `globals.css`.

#### Foundation (Backgrounds)

| Role | Token | Hex | Usage |
|------|-------|-----|-------|
| Canvas | `--background` | `#0f1117` | Page background, deepest layer |
| Surface | `--card-background` | `#161b22` | Cards, panels, drawers |
| Surface raised | `--hover-background` | `#1e2530` | Hover states on surfaces |
| Border | `--border-color` | `#1e293b` | Dividers, input borders |

#### Terminal Layer

| Role | Token | Hex | Usage |
|------|-------|-----|-------|
| Terminal canvas | `--terminal-background` | `#1e1e1e` | xterm.js background |
| Terminal chrome | `--terminal-surface-header` | `#252526` | Terminal header/tab bar |
| Terminal text | `--terminal-foreground` | `#d4d4d4` | Terminal output text |
| Terminal accent | `--terminal-accent` | `#4d8bf7` | Highlights, cursor |

#### Text

| Role | Token | Hex | Usage |
|------|-------|-----|-------|
| Primary | `--text-primary` | `#e2e8f0` | Body text, headings |
| Secondary | `--text-secondary` | `#94a3b8` | Labels, metadata, captions |
| Muted | `--text-muted` | `#7d8ea8` | Placeholders, disabled labels |
| Disabled | `--text-disabled` | `#9a9a9a` | Inactive controls |

#### Action

| Role | Token | Hex | Usage |
|------|-------|-----|-------|
| Primary | `--primary` | `#8B1A3B` | Buttons, icons, active indicators — deep burgundy |
| Primary hover | `--primary-hover` | `#A82248` | Button hover |
| Primary active | `--primary-active` | `#6D1530` | Button pressed |
| Gold accent | `--gold` | `#C9A84C` | Taglines, decorative accents, blade bits, seal rim |
| Gold hover | `--gold-hover` | `#D4B866` | Gold element hover states |
| Purple whisper | `--purple` | `#5B3678` | Used sparingly — one accent per composition |
| Primary text | `--primary-text` | `#EDE0D0` | Text on dark — warm cream, not pure white |

#### Status

| Role | Token | Hex | Usage |
|------|-------|-----|-------|
| Success | `--success` | `#22c55e` | Completed, approved, healthy |
| Warning | `--warning` | `#f59e0b` | Attention needed, uncommitted changes |
| Error | `--error` | `#ef4444` | Failed, denied, critical |
| Processing | `--processing` | `#4338ca` | In-progress, running |

#### Session Status Badges

These are the inline status chips on session cards. Use the full bg + fg pair — never mix them.

| Status | Background | Foreground | When |
|--------|-----------|-----------|------|
| Approval pending | `#fecaca` | `#991b1b` | Agent has a petition awaiting assent — highest urgency |
| Input needed | `#dbeafe` | `#1e40af` | Agent is waiting on user input |
| Complete | `#dcfce7` | `#166534` | Task finished cleanly |
| Uncommitted | `#fef3c7` | `#92400e` | Worktree has unmerged changes |
| Idle | `#f3f4f6` | `#374151` | Running, no action needed |

### Usage Rules

- **Never use raw hex in component code.** Always reference the CSS variable. This makes theme changes propagate correctly.
- **Dark-first.** There is no light theme. Do not design for it.
- **Indigo is authority, not decoration.** Use `--primary` for interactive elements and the active state of selected items only. Do not use it for decorative highlights.
- **Red means stop.** `--error` and the approval-pending badge are the only red elements in the UI. Do not use red for anything non-critical.
- **Terminal surfaces are their own world.** Do not mix terminal surface colors (`#1e1e1e`) with UI surface colors (`#161b22`). They are intentionally distinct layers.

---

## 2. Typography

### Typeface Stack

The project uses four fonts loaded via `next/font`. Each has a defined role — do not substitute.

| Typeface | Variable | Role | Why |
|----------|----------|------|-----|
| **Cinzel** | `--font-cinzel` | Display / Logo / Estate headings | Modeled on classical Roman monumental inscriptions — directly evokes the Seneschal name's historical roots. Authority without ornamentation. |
| **Inter** | `--font-inter` | UI body / labels / descriptions | The standard for legible, dense information UI. Neutral enough to carry any content. |
| **Rajdhani** | `--font-rajdhani` | Technical section headings | Geometric sans with a slightly industrial edge — appropriate for labeling technical structures (sessions, branches, tags). |
| **JetBrains Mono** | `--font-mono` | Code / terminal / paths / commands | Best-in-class developer monospace. All code-adjacent content uses this. |

### Type Scale

| Role | Font | Size | Weight | Line-height | Usage |
|------|------|------|--------|-------------|-------|
| Display | Cinzel | 32px | 700 | 1.2 | Logo wordmark, hero headline, marketing h1 |
| Heading 1 | Cinzel | 24px | 700 | 1.3 | Page titles, modal titles |
| Heading 2 | Rajdhani | 18px | 600 | 1.4 | Section headings, panel headers |
| Heading 3 | Rajdhani | 15px | 600 | 1.4 | Subsection labels, grouped item headers |
| Body | Inter | 14px | 400 | 1.6 | All descriptive text, form labels, README body |
| Body strong | Inter | 14px | 600 | 1.6 | Emphasis within body text |
| Small | Inter | 12px | 400 | 1.5 | Captions, metadata, timestamps, tag labels |
| Small strong | Inter | 12px | 600 | 1.5 | Status labels, badge text |
| Code inline | JetBrains Mono | 13px | 400 | 1.6 | Inline `code`, paths, commands |
| Code block | JetBrains Mono | 13px | 400 | 1.7 | Code blocks, terminal output |
| Terminal | JetBrains Mono | 13px | 400 | 1.5 | Live terminal content in xterm pane |

### Typography Rules

- **Cinzel is for the estate, not the engine.** Use it for display text, brand headings, and estate-vocabulary callouts. Do not use it for form labels, error messages, or dense UI text.
- **All code-adjacent content is JetBrains Mono.** This includes: inline code, command examples, file paths, branch names, session IDs, git hashes, and terminal output.
- **Minimum body size is 12px.** Nothing smaller in production UI.
- **No italic in the UI.** Italics are reserved for marketing copy and the estate metaphor voice examples. Use weight variation (400→600) instead of italic for emphasis in the product.
- **Letter-spacing on Cinzel display**: add `letter-spacing: 0.05em` at 24px+ for proper monumental spacing.

---

## 3. Logo System

### Mark Components

**Wordmark**: `SENESCHAL` in Cinzel Bold (700), uppercase, letter-spacing 0.08em. The full caps and spacing evoke Roman inscription — intentional.

**Icon**: A skeleton key with a grid of three parallel horizontal bars in the bow (the ring at the top of the key). The bars represent parallel agent sessions under unified authority. The key represents the seneschal's literal role — keeper of the keys to the estate.

**Combination mark**: Icon to the left of wordmark, separated by 1× the icon height in space. Icon and wordmark optically centered on the horizontal axis.

### Sizing & Clear Space

- **Minimum size**: 120px wide for the combination mark; 24px for icon-only
- **Clear space**: Equal to the cap-height of the `S` on all four sides of the full mark
- **Don't place the logo on a background lighter than `#1e293b`** — the mark is designed for dark surfaces

### Approved Variations

| Variant | When to use |
|---------|-------------|
| Full mark on dark (`#0f1117`) | Primary — README, website, presentations |
| Full mark on indigo (`#6366f1`) | Secondary — badges, social cards |
| Wordmark only (no icon) | Tight horizontal spaces, breadcrumbs |
| Icon only | Favicons, app icons, 32px and under |
| Mono white | Single-color contexts (embroidery, engraving) |

### Prohibited Uses

- No color gradients on the mark or icon
- No drop shadows, glows, or bloom effects
- No stretching or non-uniform scaling
- No placement on backgrounds with insufficient contrast
- No recoloring the icon to anything except `#6366f1`, `#818cf8`, or white
- No outlines or strokes added to the letterforms
- No AI-generated or playful variations of the icon (no robots, brains, sparkles, circuit boards)

---

## 4. Voice & Tone Matrix

### Personality Anchors

**Pragmatic** — Says exactly what is needed. No filler.
**Technically precise** — Uses the right word, not the accessible word.
**Quietly intellectual** — The estate metaphor is present but never forced.
**Unpretentious** — Expert-first without condescension.

### By Context

#### README / GitHub Hero
*Goal: Convince a developer in 60 seconds.*
- Declarative statements, not questions
- Estate metaphor is welcome here — this is the one place it gets full expression
- Numbers over adjectives ("42 built-in rules" beats "powerful approval engine")
- The aha moment is always the approval gate

> ✅ "Your agentic estate, managed. Run five AI coding agents in parallel — every petition heard, every holding visible."
>
> ❌ "Seneschal is a powerful AI agent management platform that helps developers streamline their workflow."

#### Onboarding / First Run
*Goal: Orient without hand-holding.*
- Warmer than the README, not warm
- Acknowledge the user knows what they're doing
- Frame first steps as taking possession of the estate

> ✅ "Your first holding is ready. Seneschal manages the routine — you'll only be summoned when a decision matters."
>
> ❌ "Welcome! Let's get you started with your first session! Here's how it works..."

#### Approval / Petition Interface
*Goal: Fast, unambiguous decision-making.*
- Formal and precise — this is the court
- Agent name + tool name + what it will do. Nothing more.
- The two options are always "Assent" and "Deny" (or "Approve" / "Deny" in technical labels)

> ✅ "claude-code is petitioning to delete `dist/` (3 files). Assent or deny?"
>
> ❌ "Your AI assistant would like permission to perform a file deletion operation. Would you like to allow this?"

#### Error Messages
*Goal: State what happened and what to do.*
- No apology. No "oops" or "uh oh".
- Cause first, remedy second.
- One sentence each.

> ✅ "Session failed to start. Verify tmux is installed and the path exists."
>
> ❌ "Oops! We couldn't start your session. Please make sure tmux is installed correctly and try again."

#### Empty States
*Goal: Acknowledge absence without drama.*
- Brief. Matter-of-fact. One line when possible.
- A dry hint is acceptable; never cheerful.

> ✅ "No holdings. Start a session to put your first agent to work."
>
> ❌ "You don't have any sessions yet! Click the button below to create your first one 🚀"

#### Notifications / Alerts
*Goal: Interrupt only when necessary; be scannable.*
- Session name first, status second, action third
- Never alert for informational events — only for petitions, failures, and completions that require human attention

> ✅ "Petition pending — `feat/payments` is waiting on your assent."
>
> ❌ "You have a new notification from one of your AI coding agent sessions!"

### Words to Use
`session`, `holding`, `petition`, `assent`, `deny`, `standing order`, `review queue`, `worktree`, `isolated`, `real-time`, `approval rule`, `coverage`, `estate`

### Words to Avoid
`AI-powered`, `revolutionize`, `seamlessly`, `effortlessly`, `unlock`, `supercharge`, `cutting-edge`, `empower`, `smart`, `intelligent`, `magic`, `oops`, `uh oh`, `please`

---

## 5. Imagery & Screenshot Standards

### What to Show
- **Real UI at full resolution** — screenshots of the actual Seneschal dashboard, terminal panes, approval drawer
- **Dense, active states** — show 3–5 sessions running simultaneously; empty states are not marketing material
- **The approval gate in action** — the petition interface is the product's most differentiating moment; it should appear in the README hero area
- **Terminal content** — real code output, real diffs, real agent interactions (sanitized, no credentials)

### What Not to Show
- No stock photography
- No abstract "AI" imagery (neural nets, glowing brains, circuit board patterns)
- No light-mode screenshots — the product is dark-first; always capture in dark theme
- No castle, estate, or medieval imagery — the estate metaphor lives in copy, not visuals
- No AI-generated illustrations

### Demo GIF Standards
- Maximum 30 seconds
- Show the aha moment: agent running → petition appears → user assents → agent continues
- Record at 1440×900 minimum
- Optimize to under 5MB (use `gifsicle` or equivalent)
- Caption the key moments with Rajdhani 15px labels

---

## 6. Layout & Spacing Principles

### Density Philosophy
Seneschal is a professional tool for developers who have many sessions running at once. **Information density is a feature, not a design failure.** Do not add whitespace to "breathe" — add it only to create clear visual hierarchy.

### Grid
- Base unit: 4px
- Common spacings: 4, 8, 12, 16, 24, 32, 48px
- Session cards: minimum 280px wide, no fixed maximum
- Sidebar: 240px fixed; 56px collapsed
- Terminal pane: fills available space; minimum 400px wide

### Hierarchy Rules
- Use weight (400→600) to create emphasis within a type role before changing size
- Use color (`--text-primary` → `--text-secondary` → `--text-muted`) to de-emphasize supporting content
- Status badges are the loudest element on a session card — they should be immediately scannable without reading anything else

### Borders & Radius
- Card borders: 1px `--border-color` (`#1e293b`)
- Border radius: 6px for cards, 4px for inputs, 2px for badges, 0 for terminal panes
- No rounded corners on terminal panes — the terminal is a raw surface

---

## 7. Quick Audit Checklist

Use this before shipping any external-facing asset:

- [ ] Colors reference CSS tokens, not raw hex
- [ ] No color lighter than `#1e293b` used as a background
- [ ] Cinzel is used only for display text and estate-vocabulary headings
- [ ] All code, paths, and commands are in JetBrains Mono
- [ ] No "oops", "seamlessly", "AI-powered", or emoji in UI copy
- [ ] Approval interface uses "Assent" / "Deny" language
- [ ] Empty states are one line, matter-of-fact
- [ ] Screenshots are dark-theme, real UI, active state with multiple sessions
- [ ] Logo has proper clear space; no drop shadows or gradients
- [ ] Red (`--error`, approval-pending badge) is used only for genuinely critical states

---

## Related Skills

| Skill | When to apply |
|-------|-------------|
| `pm-brand-strategy` | Source of truth for positioning, estate metaphor, and name vetting |
| `ui-frontend-design` | Executing these guidelines in React/vanilla-extract components |
| `ui-logo-designer` | Generating logo concepts from the mark description above |
| `ui-design-system` | Building or auditing the design token system |
Loading