Skip to content

时间线交互批:I/O 标记范围 + 选间隙 + Cmd 拖放 ripple 插入 + 键盘移片段#186

Merged
appergb merged 1 commit into
mainfrom
feat/timeline-interactions
Jul 2, 2026
Merged

时间线交互批:I/O 标记范围 + 选间隙 + Cmd 拖放 ripple 插入 + 键盘移片段#186
appergb merged 1 commit into
mainfrom
feat/timeline-interactions

Conversation

@appergb

@appergb appergb commented Jul 2, 2026

Copy link
Copy Markdown
Owner

四项交互(纯前端,后端 InsertClips/RippleDeleteRanges 早已就绪无人调用):①I/O 标入/出点 1:1 上游(无修饰键、单端点折叠、规范化交换、半开区间、Esc 清除、轨道 0.06+标尺 0.10+边线 0.80 绘制)②选间隙+⇧⌫ 闭合(上游 hitTestGap 语义、开放尾部不可选、与片段选择互斥、路由 gap→标记范围→选区)③Cmd/Ctrl 拖放=ripple 插入(上游 performDragOperation 修饰键+黄色指示)④键盘移片段 ,/. ±1(⇧±5)——OpenTake 扩展(用户指定),链接组前端展开(实证后端不自动展开)。42 新测试。门禁:workspace 1518 + web 378 全绿。

…ip nudge

Four timeline interactions, frontend-only (InsertClips / RippleDeleteRanges
backends already existed unreached):

- Marked range (upstream 1:1): I/O mark start/end at the playhead (modifierless
  only, EditorWindowController.swift:104-113); single-endpoint collapses to a
  point, normalized swaps inverted ends, valid iff end>start (half-open),
  Escape clears range + selection. Drawn as the upstream track fill (0.06) +
  ruler band (0.10) + timecode-accent edge lines (0.80). Pure timelineRange.ts,
  12 tests.
- Gap selection + ripple close: clicking empty track space between clips
  selects the gap ([prevEnd, nextStart), open tail not selectable — upstream
  hitTestGap TimelineInputController.swift:730-746); dashed white box drawing;
  mutually exclusive with clip selection both ways. Shift+Delete routes gap ->
  marked-range (anchor clip's track, upstream :88) -> selected clips, exactly
  upstream EditorWindowController.swift:77-83. timelineGap.ts, 7 tests.
- Ripple-insert drop: Cmd/Ctrl held during a media drop routes to InsertClips
  instead of AddClips (upstream performDragOperation TimelineView.swift:996)
  with the yellow insert indicator during dragover (:213-215). timelineInsert.ts
  plan builder, 8 tests; minimal browser-fallback case so vite dev demos it.
- Clip nudge (OpenTake extension, user-requested; NOT upstream — documented):
  , / . move selected clips ±1 frame (±5 with Shift), arrows stay playhead
  (upstream-correct). Link groups expanded before moveClips (backend move_clips
  does NOT auto-expand — verified; matches the drag path), group floor at 0.
  timelineNudge.ts, 7 tests.

+8 canvas render-path tests (colors/coords). Gates: fmt/clippy clean; cargo
test --workspace 1518; pnpm build clean; pnpm test 378 (+42).
@appergb appergb merged commit 13362ec into main Jul 2, 2026
2 checks passed
@appergb appergb deleted the feat/timeline-interactions branch July 2, 2026 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant