Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/design/ROOM_PARITY_GAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ memory demo room, first-visit state).
|---|---|---|---|
| 1 | Per-sheet header: title + filter + `DATAFRAME vNN` chip + `Room trace · N` + `Entity graph` on the artifact itself | REFINE | Version/kicker data already computed (Artifact.tsx `sheetKicker`, `dataframeMeta`); today it renders in the FOOTER as an all-caps kicker. Promote to header, quiet mono chip. |
| 2 | Footer consolidation: `N rows · double-click a cell to edit` + `N of N cols` only | REFINE | Undo stays (reference omits it but recoverability beats parity — B7). Kicker moves up (slice 1). |
| 3 | Demo seed shows the POPULATED moment: variance chips (+24% …) + notes filled, like the landing loop's end state | REFINE | The reference sells the ledger full. Check e2e/state-capture deps on empty variance cells first. |
| 4 | Variance/computed cells as semantic chips (green = reconciled+sourced success state) | REFINE | Matches landing loop's committed-value styling; green stays success-only. |
| 3 | Demo seed shows the POPULATED moment: variance chips (+24% …) + notes filled | REJECT (amended 2026-07-17) | The empty→filled arc IS the demo: the seed empties variance cells (engine/demoRoom.ts:230) so the agent reconciles them LIVE on request. Pre-filling kills the product's hero moment. `state-captures.spec.ts:148` pins the "+ add" affordance. |
| 4 | Variance/computed cells as green chips | REJECT as-drawn (amended 2026-07-17) | Existing taste ruling in `state-captures.spec.ts:148`: values use "neutral/sign-aware color, not all-green" — a green +27.5% on COGS would mark a cost increase as success. The mockup loses to semantics. |
| 5 | Binder: hierarchical categories with counts (Sheets > Financials 2 …, Docs, Notebooks, Uploads) + inline meta on pinned rows (`Sheet · v42 · agent`) | REFINE | Current: flat Pinned/Recent/Room-sheets. Needs artifact taxonomy from store; medium. |
| 6 | Tab strip: fold overflow into `+3 ∨` dropdown; move Export XLSX / Shared to a quieter right cluster | REFINE | Current `+3` chip exists but row still crowds. |
| 7 | Chat: accepted-patch EVENT LINES (`✓ Homen accepted the patch v42 → v43 · 2 cells · sourced`) + pinned-cell chips in messages | REFINE | Receipt cards + version chips already exist; event lines and cell-pin chips are missing. |
Expand Down
2 changes: 2 additions & 0 deletions src/app/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -1161,6 +1161,8 @@ button.r-offline-pill:hover, button.r-offline-pill:focus-visible { border-color:
version pill, chromeless column count. .r-vpill.next keeps its accent — it is a pending-commit
semantic, not decoration. */
.r-sheet-foot { padding: 10px 14px; border-top: 1px solid color-mix(in srgb, var(--line) 55%, transparent); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* The engine badge is provenance, not a headline — quiet mono, no uppercase shout. */
.r-dataframe-badge .kicker { text-transform: none; letter-spacing: 0; font-family: var(--font-mono); font-weight: 600; font-size: 10px; }
.r-vpill { font-family: var(--font-mono); font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 6px; background: transparent; border: 1px solid var(--line); color: var(--text-muted); }
.r-vpill.next { background: var(--accent-tint); border-color: var(--accent-border); color: var(--accent-ink); }
.r-cols-pill { display: inline-flex; align-items: center; min-height: 22px; padding: 0 7px; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--text-muted); font-family: var(--font-mono); font-size: 10.5px; font-weight: 800; white-space: nowrap; }
Expand Down
9 changes: 8 additions & 1 deletion src/ui/Landing.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,14 @@ function ProofPillView({ rooms, cells, demo }: { rooms?: LandingMetric; cells?:
/** Mounted ONLY in live mode — memory mode has no ConvexProvider and useQuery would throw. */
function LiveProofPill() {
const metrics = useQuery(landingMetricsQuery, {});
return <ProofPillView rooms={metrics?.roomsLive} cells={metrics?.cellsCommittedToday} demo={false} />;
// No placeholder ghosts (em-dashes read as a broken page), and no zero-bragging:
// a social-proof strip with nothing to prove should not render at all. Verified
// against prod: metrics:landingMetrics currently returns { roomsLive: 0, ... }.
const rooms = metrics?.roomsLive;
const cells = metrics?.cellsCommittedToday;
if (!rooms || !cells) return null;
if (rooms.value === 0 && cells.value === 0) return null;
return <ProofPillView rooms={rooms} cells={cells} demo={false} />;
}

function LandingProofPill({ live }: { live: boolean }) {
Expand Down
4 changes: 2 additions & 2 deletions src/ui/panels/Artifact.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2131,7 +2131,7 @@ export function GenericSheet({ roomId, me, art, proof, onError }: { roomId: stri
const selectedRowId = selected.rowId;
const selectedColId = selected.colId;
const dataframeMeta = art.meta?.dataframe;
const sheetKicker = dataframeMeta?.sourceFile === "blank-room" || dataframeMeta?.sourceFile === "blank-room-agent" ? "versionedSpreadsheetSync" : art.meta?.upload ? "uploadedSpreadsheet" : "dataframe";
const sheetKicker = dataframeMeta?.sourceFile === "blank-room" || dataframeMeta?.sourceFile === "blank-room-agent" ? "versionedSync" : art.meta?.upload ? "uploaded" : "dataframe";
const columnCountLabel = cols.length < columns.length ? `${cols.length} of ${columns.length} cols` : `${cols.length} cols`;
const columnCountTitle = cols.length < columns.length ? `${columns.length - cols.length} hidden columns available from the column menu` : "All columns visible";
const footerColumnLabel = `${columns.length} columns`;
Expand Down Expand Up @@ -2901,7 +2901,7 @@ function Sheet({ roomId, me, art, proof, onError }: { roomId: string; me: Actor;
<span className="r-dataframe-badge">
<Package size={12} aria-hidden="true" />
<span>
<span className="kicker">versionedSpreadsheetSync</span>
<span className="kicker">versionedSync</span>
<span className="r-vpill next">v{art.version}</span>
</span>
</span>
Expand Down
Loading