Skip to content

feat: the frictionless card -- calm page, two-beat create, minimap, sibling breadcrumbs (goal 0106 slice B) - #230

Merged
alicoding merged 3 commits into
mainfrom
frictionless-card-b
Aug 18, 2026
Merged

feat: the frictionless card -- calm page, two-beat create, minimap, sibling breadcrumbs (goal 0106 slice B)#230
alicoding merged 3 commits into
mainfrom
frictionless-card-b

Conversation

@alicoding

Copy link
Copy Markdown
Owner

The calm page (contract item 3): title, one compact property strip (kind · status chip · freshness · perspective membership), a borderless "Write anything…" note area, and every absent field as a one-line "+ Add …" invitation that expands focused on click. Contents mounts only when children exist. A title-only card's page is title + strip + invitation, nothing else — e2e-pinned.

Create loop (item 4) audited to two beats: form labels and the Submit/Cancel row removed (Enter/Escape already did the job), and a real pre-existing bug fixed — the popover's focus trap stole initial focus from the title input.

Drill context (item 5): React Flow's MiniMap adopted (token-styled, bottom-right, control-strip toggle + palette command, persisted, default on) and breadcrumb segments now drop down their level's siblings (name + card count) for one-click lateral jumps.

0104 residuals closed: the slice-A keyboard bindings registered as advertised commands (Shortcuts Help/palette), plus e2e for arrow-nudge persistence and Tab-cycling; arrows-pan-with-no-selection verified already-implemented with a pinning test.

Two live-found bugs fixed with the tests moved off them: the minimap occupied a region three e2e flows treated as empty canvas; the popover focus trap above. Rebased over #228/#229 (perspective membership row relocated into the property strip). Full local gates + touched-spec Playwright runs green; screenshot-reviewed against the contract, including a post-rebase live pass.

Goal: docs/goals/0106-frictionless-card.md (slice B completes the goal).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd

alicoding and others added 2 commits August 18, 2026 04:11
…crumbs (goal 0106 slice B)

The card page reads as a document, not a form: a compact property
strip (kind label, a Kind-declared "status" field as a chip, freshness
dot), a borderless type-to-write note, and every other optional field
(kind fields, source/mirror path, typed-link slot rows, Actions)
collapses to a one-line "+ Add" invitation when empty and expands
focused on click -- a title-only card's page now shows title + strip +
write-invitation and nothing else, including Contents, which mounts
only when the card has children or a mirror.

The placement popover's 'create'-mode resting view drops its Kind/
Title labels and Submit/Cancel row (kind chip + title input only,
Enter commits, Escape cancels) and its title input is now genuinely
autofocused (AnchoredOverlay's own focus trap was grabbing the kind
chip first); 'promote'/'area' modes keep their existing form.

The board gains React Flow's own MiniMap (bottom-right, styled to
tokens, moved to shared/ since composition/ and atlas/ both need it
now), a control-strip toggle button + palette command (localStorage-
persisted, default on), and every breadcrumb segment becomes a
sibling-dropdown trigger (name + card count, current one selected,
clicking any entry navigates).

0104's keyboard-nav key table (Tab/Shift-Tab, Option-arrows, Enter,
arrows, Escape) is now advertised in the command registry and
Shortcuts Help overlay, hintOnly + paletteHidden since the real
handling stays in useAtlasKeyboardNav.ts.

Fixes two real bugs the new minimap surfaced: three e2e flows placed
cards/notes/clicks in the board's bottom-right corner, which the
minimap now occupies -- moved to corners it doesn't cover, and
clickCorner's own 'bottom-right' option (now unsafe) is removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
…trip (goal 0106 slice B)

Goal 0095 slice 2 (PR #229) landed AtlasPerspectiveMembership as its
own mid-body row; moved it into AtlasCardPropertyStrip.tsx instead,
alongside kind/status/freshness -- one compact row, same quiet style,
still rendering nothing when the space has adopted no perspective.

Also migrates atlas-perspectives.spec.ts's one breadcrumb click (still
written against the pre-slice-B direct-navigate behavior) to the new
sibling-dropdown two-step interaction.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
@alicoding
alicoding enabled auto-merge (squash) August 18, 2026 08:22
…efore filling

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
@alicoding
alicoding merged commit b615a97 into main Aug 18, 2026
26 of 27 checks passed
@alicoding
alicoding deleted the frictionless-card-b branch August 18, 2026 09:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant