Refinement round: ring popover down, menu order, tok unit, list indent, lowercase levels
Five small fixes (owner refinement round, 2026-09-24):
1. RING POPOVER OPENS DOWN: the ring lives in the chat top bar —
the window's top edge is right above it, so the upward popover was
clipped. top-full mt-1.5 now: it drops below the ring.
2. SESSION MENU ORDER FLIPPED: Rename/Delete first, hairline, then
the extraction coverage block + Extract at the bottom — the info
reads after the actions (was the reverse, the block on top).
3. UNIT TYPED OUT: the sidebar block reads "2k tok uncovered" now —
the tokens unit is explicit (owner: "tok").
4. MARKDOWN LIST INDENT: streamdown ships list-inside with no
container padding — top-level markers sat ON the text edge (only
nested lists got their pl-6 via [li_&]). .lh-prose :where(ul, ol)
{ padding-left: 1.5rem } indents both list kinds as blocks, 24px —
the same measure as the nested-case pl-6. Unlayered CSS beats the
utility layer; :where keeps specificity zero.
5. THINKING LEVELS LOWERCASE EVERYWHERE: the composer pill and setup
dialog rendered THINKING_LABEL (Off/Minimal/…/Max) while every
menu body renders the raw lowercase level — the map is now
lowercase, the level string IS the display form, everywhere.
Live-verified on :3001: list content inset 24px vs paragraphs
(padding-left computed 24px, nested fine); the composer pill reads
"low" with options low/high/max; menu order Rename → Delete… →
hairline → block. 901/901.
This commit is contained in:
@@ -97,7 +97,7 @@ async function requestExtract(chatId: string): Promise<boolean> {
|
||||
// ─── The sidebar context menu's coverage block ──────────────────────────────
|
||||
|
||||
/**
|
||||
* The info block at the top of the session context menu (owner-locked
|
||||
* The info block at the bottom of the session context menu (owner-locked
|
||||
* redesign): what the extractor hasn't covered yet, plus the manual Extract
|
||||
* affordance — visually separated from Rename/Delete below (those stay the
|
||||
* two session-management actions). Fetched ON MENU OPEN (the block mounts
|
||||
@@ -191,7 +191,7 @@ export function CoverageMenuBody({
|
||||
) : (
|
||||
<span className="flex flex-col">
|
||||
<span className="tabular-nums text-foreground">
|
||||
{formatTokens(coverage.uncoveredTokens)} uncovered
|
||||
{formatTokens(coverage.uncoveredTokens)} tok uncovered
|
||||
</span>
|
||||
<span className="tabular-nums text-muted-foreground">
|
||||
{coverage.uncoveredCount} message{coverage.uncoveredCount === 1 ? "" : "s"} unextracted
|
||||
@@ -305,7 +305,7 @@ export function CoverageRing({ chatId, refreshKey = 0 }: { chatId: string; refre
|
||||
{open && (
|
||||
<div
|
||||
data-testid="coverage-ring-popover"
|
||||
className="absolute bottom-full right-0 z-40 mb-1.5 w-64 rounded-xl border bg-card p-3 text-xs shadow-xl"
|
||||
className="absolute top-full right-0 z-40 mt-1.5 w-64 rounded-xl border bg-card p-3 text-xs shadow-xl"
|
||||
>
|
||||
<CoverageRingDetail coverage={coverage} chunkTokens={graph.chunkTokens} />
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user