[laneB] log: M2 session 3
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
6200f945b0
commit
65b7757fd2
@ -103,3 +103,34 @@ BLOCKED/REQUESTS:
|
|||||||
NEXT: Hold at M2. Remaining M2 polish if a session 3 is granted: undo already
|
NEXT: Hold at M2. Remaining M2 polish if a session 3 is granted: undo already
|
||||||
wired to Ctrl+Z; could add snapping increment config + keyable-param add UI
|
wired to Ctrl+Z; could add snapping increment config + keyable-param add UI
|
||||||
(currently params keys come from Lane A capture/inspector). Await SYNC 2.
|
(currently params keys come from Lane A capture/inspector). Await SYNC 2.
|
||||||
|
|
||||||
|
## 2026-07-18 session 3 (M2 polish)
|
||||||
|
DONE: All three orchestrator session-3 items.
|
||||||
|
1. Absorbed `_mirror` (orchestrator's seam) — reviewed; it upserts dock-added
|
||||||
|
stage entities into `scene.entities` with empty tracks and drops them when
|
||||||
|
`stage.getEntity(id)===null`. Fixed the STUB to make removal testable:
|
||||||
|
`removeEntity` now fires `onChange` WITH the removed entity object (was
|
||||||
|
firing `null`, so `_mirror(null)` early-returned and never removed).
|
||||||
|
Added timeline_test.mjs lifecycle case: dock-add → keyframe → remove,
|
||||||
|
asserting entity+empty-tracks appear then vanish.
|
||||||
|
2. `setDuration(x)` mutator: clamps the playhead into range, KEEPS keys past
|
||||||
|
the new end (lossless), notifies the UI (reuses onLoad → syncRows +
|
||||||
|
refreshBar). Wired the dur field to it — plain `scene.duration = x` skipped
|
||||||
|
the bar refresh. Test asserts clamp + key retention + notify.
|
||||||
|
3. Snap-increment select (frame / 0.1 / 0.25 / 1s) in the scene bar; `_snap`
|
||||||
|
rounds to the chosen step (Alt still = free). Keyable-param add: dblclick a
|
||||||
|
params lane captures the entity's current param values as keys (skips
|
||||||
|
`type`/boolean descriptors) — mirrors the transform-capture dblclick.
|
||||||
|
DECISIONS:
|
||||||
|
- params lane now shows only when the entity has ≥1 param key OR kind is
|
||||||
|
camera/light. `_mirror` seeds `tracks.params=[]` (truthy), which was
|
||||||
|
giving every mirrored character an empty params lane; tightened to
|
||||||
|
`tracks?.params?.length > 0 || camera|light`.
|
||||||
|
- setDuration reuses the onLoad callback list as its "refresh UI chrome" hook
|
||||||
|
rather than adding a second callback channel (lazy; onLoad handler already
|
||||||
|
does syncRows+refreshBar+draw).
|
||||||
|
BLOCKED/REQUESTS: none. Verified with a throwaway harness (`_check.html`,
|
||||||
|
served :8099, deleted, NOT committed). timeline_test.mjs green.
|
||||||
|
NEXT: M2 polish complete. Undo already wired (Ctrl+Z). Open for M4 timeline
|
||||||
|
work when unlocked (audio tracks on the timeline UI + Web Audio sync, per
|
||||||
|
PLAN §5 M4) or any SYNC 3 fixes. Holding until orchestrator flips M4.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user