Go to file
type-two 45003db31a [ui] REMOVE mode: X arms it, click demolishes, Esc stands down
A misplaced machine is finally undoable by mouse. The REMOVE button sits
with the tabs rather than on a page, because it's a mode, not a machine, and
it has to be reachable from any page. It stays armed between clicks —
demolition is usually plural — and clicking open ground does nothing, so a
stray click never reads as a broken tool. Toast: "UNIT RECLAIMED. THE FLOOR
REMEMBERS."

LANE-RENDER: the hover hook is the __remove ghost sentinel. The UI has no
Renderer reference and the only channel to the ghost is selectedBuild(),
which main.ts feeds to setGhost — so while remove is armed, bus._sel reads
{def: '__remove', dir: 0}. Key the demolition tint off that def id. It's safe
because sim's place handler ignores unknown defs, so main.ts's click-to-place
fires a place for __remove and nothing happens; the UI dispatches the real
remove itself. Exported as REMOVE_DEF and pinned by a test.

A magic string shared between two lanes via a NOTES file is not a design;
contract request filed for UIBus.setGhostMode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 18:34:05 +10:00
docs Baseline: GLYTCH prototype, FKTRY lore codex, scaffold + 5-lane orchestration docs 2026-07-17 15:51:12 +10:00
fktry [ui] REMOVE mode: X arms it, click demolishes, Esc stands down 2026-07-17 18:34:05 +10:00
.gitignore Baseline: GLYTCH prototype, FKTRY lore codex, scaffold + 5-lane orchestration docs 2026-07-17 15:51:12 +10:00
index.html Baseline: GLYTCH prototype, FKTRY lore codex, scaffold + 5-lane orchestration docs 2026-07-17 15:51:12 +10:00
package-lock.json [orchestrator] round 1 review + contracts v2 + round 2 orders 2026-07-17 16:42:58 +10:00
package.json [orchestrator] round 1 review + contracts v2 + round 2 orders 2026-07-17 16:42:58 +10:00