Address inspector-peek review: stale docs + selection cleanup
Build image / build-and-push (push) Successful in 10s

Gadfly on #101:
- EditorRail's module doc still described a "fixed 20rem column / bottom
  sheet"; updated to the in-flow peek (desktop column, phone ≤50vh peek
  between canvas and mode bar).
- (correctness) A canvas-mode tap only deselected when railTab was
  'inspector', so a selection made, then routed through Journal/Assistant,
  survived a return to Fixtures/Plants — the canvas kept highlighting it
  with no inspector. Canvas modes now clear the selection unconditionally.
- Dedup: the "closing the inspector deselects" pair lived in both selectMode
  and the rail's onClose; extracted a clearSelection() helper (also used by
  exitFocus) and fixed the now-stale "leave an inspector alone" comment.

tsc + vitest + build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01H3zbym8Doka2d7D48maSgZ
This commit is contained in:
2026-07-22 09:49:28 -04:00
co-authored by Claude Opus 4.8
parent 3b9c9086b6
commit 78ee892b64
2 changed files with 24 additions and 19 deletions
+17 -15
View File
@@ -225,17 +225,25 @@ export function GardenEditorPage() {
}
}, [selectedId, selectedPlantingId, setRailTab, setMode])
const exitFocus = () => {
setFocusedObject(null)
setArmedPlant(null)
// Clearing the selection also closes the inspector via the selection effect
// above; shared by exitFocus, the mode bar, and the rail's close so the
// deselect logic lives in one place.
const clearSelection = () => {
select(null)
selectPlanting(null)
}
// The mobile mode bar. Journal/Assistant are panel modes, so they open the
// rail sheet; Fixtures/Plants are canvas modes, so they close a panel rail (but
// leave an inspector, which is about the selection, alone). Tapping Fixtures
// means going back to arranging objects, so it steps out of a focused bed.
const exitFocus = () => {
setFocusedObject(null)
setArmedPlant(null)
clearSelection()
}
// The mobile mode bar. Journal/Assistant are panel modes, so they open the rail
// as a peek; Fixtures/Plants are canvas modes — a fresh intent — so they close
// whatever's in the rail AND drop any lingering selection (which the canvas
// would otherwise keep highlighted, e.g. after routing a selection through
// Journal and back). Fixtures also steps out of a focused bed.
const selectMode = (m: EditorMode) => {
setMode(m)
if (m === 'journal') {
@@ -244,12 +252,7 @@ export function GardenEditorPage() {
} else if (m === 'assistant') {
setRailTab('chat')
} else {
// A canvas mode closes whatever's in the rail; the inspector is about the
// selection, so closing it deselects too.
if (railTab === 'inspector') {
select(null)
selectPlanting(null)
}
clearSelection()
setRailTab(null)
if (m === 'fixtures' && focusedObjectId != null) exitFocus()
}
@@ -648,8 +651,7 @@ export function GardenEditorPage() {
// deselects; dismissing a panel leaves the canvas as you had it. Any
// panel rail (journal/history/chat) drops back to a canvas mode.
if (railTab === 'inspector') {
select(null)
selectPlanting(null)
clearSelection()
} else {
// Back to a canvas mode — Plants if you're still inside a bed, else
// Fixtures. (Hardcoding Fixtures here docked the object palette inside