Miguel Angel Simon Sierra
324b00a9f6
perf(studio): virtualize timeline thumbnail media
2026-07-19 00:53:21 +02:00
Miguel Angel Simon Sierra
84c58a314f
feat(studio): default to adaptive thumbnails
2026-07-19 00:53:20 +02:00
Miguel Angel Simon Sierra
16b7c0be4d
perf(cli): abort stale studio thumbnails
2026-07-19 00:53:20 +02:00
Miguel Angel Simon Sierra
93c86c8dfb
perf(studio): bound thumbnail decoding resources
2026-07-19 00:53:20 +02:00
Miguel Angel Simon Sierra
332e581309
perf(studio): schedule timeline thumbnail work
2026-07-19 00:53:20 +02:00
Miguel Angel Simon Sierra
b59ff82d59
feat(studio): add timeline keyboard controls
2026-07-19 00:53:19 +02:00
Miguel Angel Simon Sierra
db53d35d67
feat(studio): coordinate logical timeline focus
2026-07-19 00:53:19 +02:00
Miguel Angel Simon Sierra
325f04afa5
feat(studio): expose timeline treegrid semantics
2026-07-19 00:53:19 +02:00
Miguel Angel Simon Sierra
b9eb93eca8
feat(studio): model logical timeline navigation
2026-07-19 00:53:18 +02:00
Miguel Angel Simon Sierra
c78771fb5b
fix(studio): scope timeline ease focus requests
2026-07-19 00:53:18 +02:00
Miguel Angel Simon Sierra
ea0a035c62
perf(studio): stabilize virtualized beat gestures
2026-07-19 00:53:18 +02:00
Miguel Angel Simon Sierra
293f309cf7
fix(studio): scope timeline context targets
2026-07-19 00:53:18 +02:00
Miguel Angel Simon Sierra
8ece40f3ba
perf(studio): virtualize timeline marquee selection
2026-07-19 00:16:01 +02:00
Miguel Angel Simon Sierra
ed3927fc4b
perf(studio): stabilize virtualized timeline drops
2026-07-19 00:16:01 +02:00
Miguel Angel Simon Sierra
5a51a8a81f
perf(studio): stabilize virtualized keyframe retiming
2026-07-19 00:16:01 +02:00
Miguel Angel Simon Sierra
1fe84b7f4b
perf(studio): stabilize virtualized clip gestures
2026-07-19 00:16:01 +02:00
Miguel Angel Simon Sierra
804cdced4f
perf(studio): virtualize timeline clip windows
2026-07-19 00:16:00 +02:00
Miguel Angel Simon Sierra
5c0922bf65
perf(studio): index timeline clip windows
2026-07-19 00:16:00 +02:00
Miguel Angel Simon Sierra
d0eb2b2104
perf(studio): virtualize timeline rows
2026-07-19 00:16:00 +02:00
Miguel Angel Simon Sierra
38ea7ffa93
perf(studio): centralize timeline viewport geometry
2026-07-19 00:16:00 +02:00
Miguel Angel Simon Sierra
5f0c6de79a
refactor(studio): decompose timeline orchestration
2026-07-19 00:06:22 +02:00
Miguel Angel Simon Sierra
128c1a9ad2
refactor(studio): extract timeline render contracts
2026-07-19 00:05:13 +02:00
Miguel Angel Simon Sierra
860b7fddba
refactor(studio): isolate clip drag lifecycle
2026-07-19 00:03:59 +02:00
Miguel Angel Simon Sierra
46b8692c5d
test(studio): add timeline browser performance gate
2026-07-19 00:02:51 +02:00
Miguel Angel Simon Sierra
046aa7339a
test(studio): add timeline performance fixtures
2026-07-19 00:01:42 +02:00
Miguel Angel Simon Sierra
a03f772700
perf(studio): define timeline viewport budgets
2026-07-19 00:00:48 +02:00
Miguel Angel Simon Sierra
09a5e14f2e
fix(studio): preserve exact keyframe edit intent
2026-07-16 21:19:32 -04:00
Miguel Angel Simon Sierra
49ed3450e0
fix(studio): harden keyframe edit identity
2026-07-16 18:12:14 -04:00
Miguel Angel Simon Sierra
d36c4f9308
fix(parsers): preserve authored keyframe intent
2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra
b807d95a6c
fix(studio): update ease mode optimistically
2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra
9e5966ba0a
fix(studio): publish keyframe cache refresh atomically
2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra
c1fd7ba5b9
fix(studio): resolve safe keyframe review findings
2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra
63342fc3c3
test(studio): restore hold ease seek coverage
2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra
556e0975c5
chore(studio): keep edited modules within size gate
2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra
2158ba08a5
feat(studio): bulk-edit easing for merged keyframes
2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra
3c17c9a8d8
test(studio): cover expanded keyframe timeline
2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra
f385e111f0
feat(studio): wire expanded keyframe timeline lanes
2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra
4e80941969
refactor(studio): consolidate animation inspector callbacks
2026-07-16 18:12:11 -04:00
Miguel Angel Simon Sierra
179f4c10af
feat(studio): add timeline keyframe callbacks
2026-07-16 18:12:11 -04:00
Miguel Angel Simon Sierra
f284fb41d5
feat(studio): add keyframe track headers
2026-07-16 18:12:10 -04:00
Miguel Angel Simon Sierra
dba0a517d3
feat(studio): add timeline property lanes
2026-07-16 18:12:10 -04:00
Miguel Angel Simon Sierra
84799219e7
feat(studio): add timeline keyframe interactions
2026-07-16 18:12:10 -04:00
Miguel Angel Simon Sierra
ff47c390e8
feat(studio): add variable timeline row geometry
2026-07-16 18:12:09 -04:00
Miguel Angel Simon Sierra
050bd2042a
feat(studio): add keyframe timeline state
2026-07-16 18:12:09 -04:00
Miguel Angel Simon Sierra
ee9141d04d
feat(studio): add keyframe ease inspector
2026-07-16 18:11:37 -04:00
Miguel Angel Simon Sierra
0e07d599d7
feat(studio): add keyframe ease controls
2026-07-16 18:09:30 -04:00
Miguel Angel Simon Sierra
3a59b01f6f
feat(core): add deterministic keyframe ease runtime
2026-07-16 16:37:26 -04:00
Miguel Angel Simon Sierra
5304a03c4e
chore(studio): keep thumbnail store under size limit
2026-07-16 16:37:12 -04:00
Miguel Angel Simon Sierra
1d59e84b23
test(studio): enable thumbnails in the empty-label test (fixes pre-existing failure)
...
The thumbnails-off-by-default toggle (6b5ea8257) left this test asserting
thumbnail content without enabling thumbnails, so it produced no thumbnail
content and failed. Enable thumbnailsEnabled for the case and reset it in
afterEach; the label ownership assertion is unchanged (TimelineClip owns names).
2026-07-16 16:37:11 -04:00
Miguel Angel Simon Sierra
5274e4d19f
fix(studio): resolve Chrome for dev thumbnails via env + puppeteer cache
...
Dev-server thumbnail generation only probed three hardcoded system Chrome paths,
so on a machine with no system Chrome install (but a Puppeteer-cached
Chrome-for-Testing) it found no browser and every thumbnail request 500'd.
Resolve the executable from PUPPETEER_EXECUTABLE_PATH / CHROME_PATH / CHROME_BIN,
then a broader set of system browsers, then the Puppeteer cache (highest
version).
2026-07-16 16:37:11 -04:00