feat: Atlas perspectives frontend -- switcher, board filtering, membership (goal 0095 slice 2, ADR-0041) - #229
Merged
Merged
Conversation
…rship editing (goal 0095 slice 2, ADR-0041) The perspective switcher absorbs the Lens popover's slot in the board toolbar: All cards / named perspectives / New perspective, with the kind-hide filter demoted into its own Hide kinds section. Board rendering filters to the active perspective's own member cards (closed under ancestry by the already-shipped Go service) and member links (hidden when either endpoint isn't a member too); Auto-arrange disables while a perspective is active. Membership adds/removes from both the card context menu (single + multi-select) and a new self-contained card-page component, each with a quiet toast. Authoring-adds-to-active turned out to be fully server-side (slice 1's own hook) -- the missing piece was the frontend actually persisting the active perspective into session state instead of hardcoding "". Covered by a dedicated-server e2e spec (global session state, per testing.md's shared-vs-dedicated rule) plus a unit test for the client-side FilterByPerspective mirror.
alicoding
enabled auto-merge (squash)
August 18, 2026 07:36
…nd rename Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
alicoding
added a commit
that referenced
this pull request
Aug 18, 2026
…ibling breadcrumbs (goal 0106 slice B) (#230) * feat: the calm card page -- create-loop audit, minimap, sibling breadcrumbs (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 * feat: relocate perspective membership into the calm page's property strip (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 * test: mirror-path projection spec expands the calm page's quiet-add before filling Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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 views half of the O(1) reference-architecture property, on the board:
Dedicated-server e2e (own ports, global-session reasoning in the header): create/switch/rename; filtering + closure + link rule + arrange-disabled; authoring-adds-to-active + the O(1) edit-reflects-everywhere property; membership remove + delete. 19/19 e2e, 551/551 vitest, full local gates green. Screenshot-reviewed against ADR-0041's contract.
Goal: docs/goals/0095-atlas-perspectives.md (slice 2 of 3).
🤖 Generated with Claude Code
https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd