Skip to content

Commit e2f4e60

Browse files
committed
Navigation: condense the pane CLAUDE.md navigate + snapshot must-knows
Trims the two bullets the Location refactor expanded back toward the 600-word push-tier budget (single-sourcing the drop-foreign-listings guardrail to file-explorer/CLAUDE.md rather than restating it).
1 parent 0d189b2 commit e2f4e60

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

  • apps/desktop/src/lib/file-explorer/pane

apps/desktop/src/lib/file-explorer/pane/CLAUDE.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ tinting, navigation. Up: [`../CLAUDE.md`](../CLAUDE.md). Full file table and con
3232
`firstSelectedIndex(idxs, hasParent)`, which skips the `..` row. Don't use raw `idxs[0]`; it can be `..`.
3333
- **Snapshot pane (`volumeId === 'search-results'`) couples two points**: `computeHasParent` returns `false` (no `..`
3434
row, via `hasParentRow`) AND opening a real entry must LEAVE the snapshot volume — `FilePane.handleNavigate` (gated on
35-
the `isSearchResultsView` capability) resolves the entry's `Location` and bubbles it via `onGoToLocation` → the
36-
`{ location }` switch arm. Skip either → off-by-one selection, or `search-results` stuck on a real path.
35+
`isSearchResultsView`) resolves the entry's `Location` and bubbles it via `onGoToLocation` → the switch arm. Skip
36+
either → off-by-one selection, or `search-results` stuck on a real path.
3737
- **The MTP clipboard refusal gate keys on `caps.kind === 'mtp'`, not `!supportsSystemClipboard`** (network and
3838
search-results lack one too, so the MTP-worded toast would misfire).
3939
- **The focus guard (`DualPaneExplorer.handleFocusGuard`) must keep its `[role="dialog"], [role="alertdialog"]`
@@ -42,11 +42,10 @@ tinting, navigation. Up: [`../CLAUDE.md`](../CLAUDE.md). Full file table and con
4242
- **Nav-state persistence fires from ONE subscriber** (`persistence-subscriber.svelte.ts`, invariant A5). Don't scatter
4343
`saveAppStatus` / `saveTabsForPaneSide` calls across nav paths: mutate the store and the subscriber reacts (exceptions
4444
in DETAILS).
45-
- **`navigate(intent, deps)` is the single coordinator-level pane-nav entry.** `{ location }` self-routes by volume;
46-
`{ volumeId, path }` always switches; resolve bare paths to a `Location` at the edge
47-
(`navigation/resolve-location.ts`), never feed a bare path in. Refusal `message` strings are byte-pinned contract (the
48-
MCP adapter forwards them verbatim); don't make the in-place arm commit immediately; don't add `cd`-style heuristics
49-
in `commitPathFromListing` (extend the explicit prefix branch for a new virtual namespace). DETAILS § "The navigate()
45+
- **`navigate(intent, deps)` is the single coordinator-level pane-nav entry.** `{ location }` self-routes by volume
46+
(same → in-place, different → switch); `{ volumeId, path }` always switches; resolve bare paths to a `Location` at the
47+
edge (`navigation/resolve-location.ts`), never feed a bare path in. Refusal `message` strings are byte-pinned (the MCP
48+
adapter forwards them verbatim); don't make the in-place arm commit immediately. DETAILS § "The navigate()
5049
transaction".
5150
- **Self-drag drop builds from recorded app state, not the pasteboard** (`handleDrop` consumes
5251
`consumableSelfDragIdentity` only for an active self-drag from a registered backend-real volume). See

0 commit comments

Comments
 (0)