feat(web): improve session list grouping and mode badges#188
feat(web): improve session list grouping and mode badges#188gaius-codius wants to merge 6 commits intotiann:mainfrom
Conversation
Add permissionMode to SessionSummary, show permission mode and flavor badges in session header and list with theme-aware colors.
| export const PERMISSION_TONE_BADGE: Record<PermissionModeTone, string> = { | ||
| neutral: 'text-[var(--app-fg)] bg-[var(--app-subtle-bg)] border-[var(--app-border)]', | ||
| info: 'text-[var(--app-badge-info-text)] bg-[var(--app-badge-info-bg)] border-[var(--app-badge-info-border)]', | ||
| warning: 'text-[var(--app-perm-warning)] bg-[var(--app-badge-warning-bg)] border-[var(--app-badge-warning-border)]', |
There was a problem hiding this comment.
[MINOR] [THEME] New badge/flavor CSS vars undefined
Why this is a problem: PERMISSION_TONE_* and FLAVOR_COLORS now depend on --app-badge-info-*, --app-perm-warning, and --app-flavor-* tokens, but they are not defined in web/src/index.css (Not found in repo/docs). Badge colors will fall back to inherited/default values, losing visual cues.
Suggested fix:
export const PERMISSION_TONE_BADGE: Record<PermissionModeTone, string> = {
neutral: 'text-[var(--app-fg)] bg-[var(--app-subtle-bg)] border-[var(--app-border)]',
info: 'text-[var(--app-badge-info-text,var(--app-link))] bg-[var(--app-badge-info-bg,var(--app-subtle-bg))] border-[var(--app-badge-info-border,var(--app-border))]',
warning: 'text-[var(--app-perm-warning,var(--app-badge-warning-text))] bg-[var(--app-badge-warning-bg)] border-[var(--app-badge-warning-border)]',
danger: 'text-[var(--app-badge-error-text)] bg-[var(--app-badge-error-bg)] border-[var(--app-badge-error-border)]'
}
const FLAVOR_COLORS: Record<string, FlavorColors> = {
claude: {
text: 'text-[var(--app-flavor-claude,var(--app-link))]',
bg: 'bg-[var(--app-flavor-claude-bg,var(--app-subtle-bg))]',
border: 'border-[var(--app-flavor-claude-border,var(--app-border))]'
},
// repeat fallback pattern for codex/gemini/opencode
}There was a problem hiding this comment.
Findings
- [Minor] Undefined badge/flavor CSS tokens — new
PERMISSION_TONE_*/FLAVOR_COLORSclasses rely on--app-badge-info-*,--app-perm-warning,--app-flavor-*but these tokens are not defined in theme (Not found in repo/docs). Badge colors fall back to inherited/default values. Evidence:web/src/lib/agentFlavorUtils.ts:3.
Suggested fix:export const PERMISSION_TONE_BADGE: Record<PermissionModeTone, string> = { neutral: 'text-[var(--app-fg)] bg-[var(--app-subtle-bg)] border-[var(--app-border)]', info: 'text-[var(--app-badge-info-text,var(--app-link))] bg-[var(--app-badge-info-bg,var(--app-subtle-bg))] border-[var(--app-badge-info-border,var(--app-border))]', warning: 'text-[var(--app-perm-warning,var(--app-badge-warning-text))] bg-[var(--app-badge-warning-bg)] border-[var(--app-badge-warning-border)]', danger: 'text-[var(--app-badge-error-text)] bg-[var(--app-badge-error-bg)] border-[var(--app-badge-error-border)]' } const FLAVOR_COLORS: Record<string, FlavorColors> = { claude: { text: 'text-[var(--app-flavor-claude,var(--app-link))]', bg: 'bg-[var(--app-flavor-claude-bg,var(--app-subtle-bg))]', border: 'border-[var(--app-flavor-claude-border,var(--app-border))]' }, // repeat fallback pattern for codex/gemini/opencode }
Summary
- 1 minor issue; color tokens missing for new badges/flavor styles.
Testing
- Not run (automation)
HAPI Bot
gaius-codius
left a comment
There was a problem hiding this comment.
Thanks for the review! This is a false positive — all the referenced CSS tokens (--app-badge-info-*, --app-perm-warning, --app-flavor-*) are defined in web/src/index.css across every theme (default light/dark, Catppuccin, Gaius light/dark).
The file reference (agentFlavorUtils.ts:3) also seems incorrect — that file only contains boolean helper functions and has no CSS token usage.
No changes needed here.
|
Follow-up scope fix: moved baseline session-UI semantic color tokens to this PR (commit Added in
This makes #188 self-contained for sidebar/header/badge styling against |
Summary
This PR isolates session list / session header UI & metadata presentation improvements from the original umbrella PR.
It improves grouping clarity, machine context visibility, and mode/flavor badge readability.
Why
Scope
Session grouping and context
Session item and group visual refresh
Flavor + permission-mode presentation
permissionModeinSessionSummarymappingShared utilities
agentFlavorUtilswith badge/text class helpersRefactor polish included
Files touched
shared/src/sessionSummary.tsweb/src/components/SessionList.tsxweb/src/components/SessionHeader.tsxweb/src/lib/agentFlavorUtils.tsweb/src/router.tsxValidation
bun run typecheckbun run test:webTest coverage added in this PR
Validation run (successful)
Both commands executed after test additions and passed.