feat: the frictionless card -- calm page, two-beat create, minimap, sibling breadcrumbs (goal 0106 slice B) - #230
Merged
Merged
Conversation
…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
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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