From 48f92015e4e7cafbecb7c25dc1bc7e41af0e7f1b Mon Sep 17 00:00:00 2001 From: th Date: Mon, 20 Apr 2026 14:13:33 +0200 Subject: [PATCH] 0.5.3: timeline name-col resize + playhead layering - Track-name resize strip starts below the scrub bar and sits on the name-column side of the boundary, so scrubbing at time=0 is no longer intercepted by the resize hit area. - Playhead (lane) and scrub handle get z-index 20 so they stay on top of the sticky track-name column (z-index 5) and the resize strip. The playhead stays fully visible at time=0 and when the lane is scrolled under the sticky column. Co-Authored-By: Claude Opus 4.7 (1M context) --- package.json | 2 +- src/components/Timeline.vue | 20 ++++++++++++++------ src/version.ts | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index c9dfb47..a1e7cf6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "animatr", "private": true, - "version": "0.5.2", + "version": "0.5.3", "type": "module", "scripts": { "dev": "vite", diff --git a/src/components/Timeline.vue b/src/components/Timeline.vue index 0daa201..6c19301 100644 --- a/src/components/Timeline.vue +++ b/src/components/Timeline.vue @@ -1997,12 +1997,16 @@ onBeforeUnmount(() => { .name-col-resize { position: absolute; - top: 0; + /* Start below the scrub bar so the bar's hit area (scrubber/playhead) + is never shadowed by the resize strip. */ + top: 28px; bottom: 0; - width: 8px; - transform: translateX(-4px); + width: 6px; + /* Hit area lies entirely inside the name-column side of the boundary + so the playhead sitting on the lane edge stays clickable. */ + transform: translateX(-6px); cursor: ew-resize; - z-index: 15; + z-index: 3; touch-action: none; } @@ -2011,7 +2015,7 @@ onBeforeUnmount(() => { position: absolute; top: 0; bottom: 0; - left: 4px; + right: 0; width: 1px; background: transparent; transition: background 120ms var(--ease); @@ -2178,6 +2182,7 @@ onBeforeUnmount(() => { display: flex; flex-direction: column; align-items: center; + z-index: 20; } .scrub-handle-head { @@ -2476,7 +2481,10 @@ onBeforeUnmount(() => { background: var(--accent); pointer-events: none; transform: translateX(-0.5px); - z-index: 4; + /* Must render above the sticky track-name column (z-index 5) and the + resize strip (z-index 3) so the playhead stays visible at time=0 or + when scrolled. */ + z-index: 20; } .kf-seg { diff --git a/src/version.ts b/src/version.ts index 7a96b46..238bd93 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,2 +1,2 @@ -export const APP_VERSION = '0.5.2' +export const APP_VERSION = '0.5.3' export const APP_NAME = 'RUWIO'