mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
feat(plan): device markers are landmarks in the Plan editor
The Plan editor hid every device marker (display: none), so walls, openings and stairs were placed against devices from memory. It now shows them exactly as the Background editor does (#362): the same markers as View, at the Background editor's effective opacity, fully pointer-inert. The fade is filter: opacity(0.35) on each marker, not on .devlayer, because room labels and room settings buttons share that layer and stay opaque and interactive; filter multiplies the marker's own opacity (.unavail -> 0.35 x 0.35), as the Background layer does. Marker handlers already fail closed outside View/Devices. demo/smoke_plan_device_landmarks.mjs proves AC1/AC2: same markers as View, per-marker alpha equal to Background, core and capsule fall through, a real click on a marker reaches the Walls tool and a room settings button below, cursor and target unchanged, handlers inert, no tabindex. Three mutants guard hiding, opacity override and the pointer boundary. UX-MODES, DECOR-EDITOR, USER-GUIDE.ru mode table, changelogs. Issue: #687 User-Visible: yes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
This commit is contained in:
@@ -3955,6 +3955,51 @@ const MUTANT_DEFINITIONS = [
|
||||
replace: ' && !inEditorSecondary) {',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'plan-device-landmarks-hidden',
|
||||
guard: 'node demo/smoke_plan_device_landmarks.mjs',
|
||||
because: '#687 AC1: the Plan editor shows the same markers as View as landmarks; hiding '
|
||||
+ 'them again removes the reference the owner asked for',
|
||||
patches: [{
|
||||
file: 'src/styles/plan.styles.ts',
|
||||
find: ' .stage.markup .devlayer .dev {\n'
|
||||
+ ' filter: opacity(0.35);\n'
|
||||
+ ' }\n',
|
||||
replace: ' .stage.markup .devlayer .dev {\n'
|
||||
+ ' display: none;\n'
|
||||
+ ' }\n',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'plan-device-landmarks-override-own-opacity',
|
||||
guard: 'node demo/smoke_plan_device_landmarks.mjs',
|
||||
because: '#687 contract item 2: the fade multiplies the marker\'s own opacity as the '
|
||||
+ 'Background layer does; an opacity override shows an unavailable marker at 35% '
|
||||
+ 'instead of 35% x 35%',
|
||||
patches: [{
|
||||
file: 'src/styles/plan.styles.ts',
|
||||
find: ' .stage.markup .devlayer .dev {\n'
|
||||
+ ' filter: opacity(0.35);\n',
|
||||
replace: ' .stage.markup .devlayer .dev {\n'
|
||||
+ ' opacity: 0.35;\n',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'plan-device-landmarks-hit-target',
|
||||
guard: 'node demo/smoke_plan_device_landmarks.mjs',
|
||||
because: '#687 AC2: a visible marker must never own a Plan-editor point; without the '
|
||||
+ 'pointer boundary its 44 px hit area and capsule swallow the Walls tool click and the '
|
||||
+ 'room settings button below',
|
||||
patches: [{
|
||||
file: 'src/styles/plan.styles.ts',
|
||||
find: ' .stage.markup .devlayer .dev,\n'
|
||||
+ ' .stage.markup .devlayer .dev *,\n'
|
||||
+ ' .stage.markup .devlayer .dev::before {\n'
|
||||
+ ' pointer-events: none;\n'
|
||||
+ ' }\n',
|
||||
replace: '',
|
||||
}],
|
||||
},
|
||||
{
|
||||
id: 'opening-light-quantum-identity',
|
||||
guard: 'node --test --test-name-pattern="#366" test/logic.test.mjs',
|
||||
|
||||
Reference in New Issue
Block a user