[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
|
||||
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.
|
||||
|
||||
## 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