graph: the MINIMAL home — the no-graph home, take two (release polish 2.2)
The chains-as-home experiment is retired (owner, 2026-10-06): dragging the table out of its overlay home caused every mess we saw — checkboxes by default, the bar/pill collision, the clearance band. The eventual plan is the DATA VIEW as home; until that is designed and built, the rendering-off home is deliberately minimal: - The SAME composer blob home already floats — teach/practice switcher and pick pill untouched. - The graph chrome's survivors in the graph view's OWN places: the top-right column — actions row (Chains + Import, the same 36px band pills) with the cost pill BELOW it. Import always renders (the entry-point law). No node search, no render gear (canvas things). - A quiet centered summary (KnowledgeSummary, a pure body — pinned by the render suite): propositions · chains, teaching · practice session counts, the imported-sources list as truncated muted rows; the empty knowledge base says so and names the import entry point. Biased up off the composer (pb-40), pointer-events-none. - NO recent sessions (the sidebar owns that, owner ruling). The chain table returns to overlay-only duty: ChainTableBody's onClose-optional and topBarExtra experiment hooks are reverted, and components/chains-home.tsx is deleted. MinimalHome renders the STANDARD ChainTableOverlay behind its Chains button — the pick flow mirrors GraphView's contract verbatim (chainSelectOpen raises the overlay in select mode; Done reports the lifted pick set down). Smoke-verified live, twice: the summary shows real counts (262 props · 160 chains, 195 teaching · 17 practice, 4 source paths); overlay open/close via button + X; pick flow — cluster check → bar "23 nodes → 17 chains · Clear · Done" → uncheck 2 props → Done → chip "21 propositions selected"; practice session starts from the composer; settings restore returns the canvas home. (First run's "select mode missing" was a tester artifact: the bar is selection-gated and prop checkboxes render only when expanded — both confirmed working.) 1417 tests (new KnowledgeSummary pins); tsc, lint, build green.
This commit is contained in:
@@ -114,7 +114,6 @@ export function ChainTableBody({
|
||||
onClear,
|
||||
onDelete,
|
||||
onClose,
|
||||
topBarExtra,
|
||||
selectMode,
|
||||
onSelect,
|
||||
}: {
|
||||
@@ -137,15 +136,7 @@ export function ChainTableBody({
|
||||
onClear: () => void;
|
||||
/** Opens the full-death confirm dialog (owner, 2026-09-29 night). */
|
||||
onDelete: () => void;
|
||||
/** Dismisses the overlay (top-bar X). ABSENT = the HOME variant
|
||||
* (graph rendering off, owner 2026-10-06): the table is the page,
|
||||
* there is nothing to close, and the X does not render. */
|
||||
onClose?: () => void;
|
||||
/** HOME VARIANT (owner, 2026-10-06 polish): extra controls injected
|
||||
* into the shared TopBar, right cluster, LEFT of the search input —
|
||||
* the chains home's Import-notes + cost pill live here instead of
|
||||
* floating over the list (covering table content read badly). */
|
||||
topBarExtra?: React.ReactNode;
|
||||
onClose: () => void;
|
||||
/** PRACTICE SELECT (2026-10-04): the floating bar's confirm becomes
|
||||
* "Practice these" — no delete fence; the caller owns what the
|
||||
* selection becomes. */
|
||||
@@ -251,17 +242,12 @@ export function ChainTableBody({
|
||||
chat surface. NO TITLE (owner round 11, 2026-10-05): the serif
|
||||
title register is RESERVED — it always names a session; the
|
||||
chain table names nothing, so its bar carries counts + search +
|
||||
close only — plus, in the home variant, the injected
|
||||
topBarExtra (import + cost, owner 2026-10-06). Search, close,
|
||||
and the extra carve out with lh-no-drag (the mask law: later
|
||||
in the DOM). */}
|
||||
close only. Search + close carve out with lh-no-drag (the mask
|
||||
law: later in the DOM). */}
|
||||
<TopBar>
|
||||
<span className="min-w-0 flex-1 truncate text-xs text-muted-foreground">
|
||||
{chains.length} {chains.length === 1 ? "chain" : "chains"} · {nodes.length} {nodes.length === 1 ? "node" : "nodes"}
|
||||
</span>
|
||||
{topBarExtra && (
|
||||
<div className="lh-no-drag flex shrink-0 items-center gap-2">{topBarExtra}</div>
|
||||
)}
|
||||
<div className="relative shrink-0">
|
||||
<SearchIcon className="absolute left-2.5 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" />
|
||||
<input
|
||||
@@ -274,8 +260,7 @@ export function ChainTableBody({
|
||||
className="lh-no-drag h-8 w-56 rounded-lg border bg-background pl-8 pr-3 text-xs outline-none placeholder:text-muted-foreground focus:border-ring"
|
||||
/>
|
||||
</div>
|
||||
{onClose && (
|
||||
<button
|
||||
<button
|
||||
type="button"
|
||||
data-testid="chain-table-close"
|
||||
onClick={onClose}
|
||||
@@ -284,7 +269,6 @@ export function ChainTableBody({
|
||||
>
|
||||
<XIcon className="size-4" />
|
||||
</button>
|
||||
)}
|
||||
</TopBar>
|
||||
|
||||
{/* The list: NO per-row lines (owner ruling) — the ONLY horizontal
|
||||
|
||||
Reference in New Issue
Block a user