Skip to content

Combine timeline editing from #25 and #30 - #31

Merged
wassgha merged 14 commits into
mainfrom
cursor/combine-timeline-editing-b6cb
Jul 29, 2026
Merged

wassgha merged 14 commits into
mainfrom
cursor/combine-timeline-editing-b6cb

Conversation

@wassgha

@wassgha wassgha commented Jul 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

Combines the best of #25 and #30 into one timeline editing model so we can close the duplicates.

From #25 (base)

  • Word timing — zoom in and drag word start/end (steals time from neighbors) to fix ASR bleed
  • Split at playhead — S / Split button creates selectable clip segments (no amber boundary markers; clip edges are the source of truth after trim)
  • Clip trim — indigo in/out handles on selected/hovered clips create ManualCuts and mark fully covered words as deleted in the transcript
  • Undo coalesces drag gestures; state persisted in IndexedDB; scripts/edits-test.ts

From #30

  • Draggable cut edges — grab either edge of a word-derived cut; scrub preview while dragging; double-click to reset to word boundaries (CutAdjustments)
  • Scroll to zoom / side-scroll to pan — wheel/pinch zooms at the cursor; horizontal scroll pans

How they compose

  • Word-derived cuts get optional edge overrides via cutAdjustments
  • Manual blade/trim cuts remain separate (manualCuts)
  • getCutRanges(words, duration, manualCuts, cutAdjustments) drives timeline, live preview, and export
  • Transcript / wordbar treat words fully inside effective cuts as cut (and restore clears covering manual cuts / adjustments)
  • Undo/redo snapshots include words + manual cuts + scene boundaries + cut adjustments

Also

  • Rebased onto current main (keeps mobile-friendly timeline height: h-40 sm:h-52)
  • Verified: npx tsx scripts/edits-test.ts, npm run lint, and npm run build all pass

Test plan

  • Zoom with scroll wheel (anchored under cursor); side-scroll pans
  • Delete a word; drag cut edges to refine; double-click edge to reset
  • Zoom in; drag word chip edges when ASR overlaps a neighbor
  • Press S / Split on a kept region; two clips selectable (no yellow markers)
  • Drag clip trim handles; red cut region updates; covered words show as cut in transcript
  • Restore cut words from transcript; audio/manual cuts clear too
  • Undo/redo restores a full drag as one step
  • Export includes word cuts + adjustments + manual trims
  • Reload saved project; splits, manual cuts, and cut adjustments restore
  • npx tsx scripts/edits-test.ts passes

Supersedes #25 and #30 once merged.

Open in Web Open in Cursor 

cursoragent and others added 12 commits July 29, 2026 00:23
Word-boundary drag lets users fix ASR bleed (e.g. uh overlapping hello).
Split (S) inserts scene boundaries that subdivide keep ranges into clips;
selected clips expose trim handles that create manual cuts merged into
preview and export. Undo coalesces drag gestures into a single step.

Co-authored-by: Wassim Gharbi <wassgha@gmail.com>
Bring together PR #25 (word timing, Split, clip trim, manual cuts) and
PR #30 (draggable cut edges, scroll-to-zoom/pan). CutAdjustments override
word-derived cut edges without rewriting ASR timestamps; ManualCut and
SceneBoundary still handle blade/trim and scene splits. Wheel zoom anchors
at the cursor; cut-edge drags scrub preview and double-click resets.

Co-authored-by: Wassim Gharbi <wassgha@gmail.com>
- Remove amber scene-boundary diamonds (split still works; clip edges
  are the source of truth after trim) and the playhead split-ready dot
- When clip trim covers words, mark them deleted; expanding restores them
- Transcript and wordbar treat words fully inside effective cuts as cut
- Restoring words also clears covering manual cuts / cut adjustments

Co-authored-by: Wassim Gharbi <wassgha@gmail.com>
@wassgha
wassgha force-pushed the cursor/combine-timeline-editing-b6cb branch from 8315f1a to ee50840 Compare July 29, 2026 04:11
@wassgha
wassgha marked this pull request as ready for review July 29, 2026 04:31
@wassgha
wassgha merged commit b5762c3 into main Jul 29, 2026
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.

2 participants