4 Commits
Author SHA1 Message Date
Mike-Solar 3325521a85 feat(effect_stack,timeline,node_graph): library drag-drop, params view caching, clip click select
- effect_stack: the params view is cached per effect (recreation per
  render killed in-progress slider drags and clicks); new
  LibraryEffectDrag payload + AddTypeRequested event let an effect
  dragged from the app's effect library drop onto the stack at the
  indicator position
- timeline: left-press selects clips (plain press selects an
  unselected clip, keeps multi-selection on a selected one for group
  drags, Ctrl/Cmd toggles membership)
- node_graph: graph_position_at() converts a window-space point (drop
  position) to graph space
2026-08-20 23:45:22 +08:00
Mike-Solar 3870d6da06 feat(node_graph,effect_stack): programmatic selection and card selection events
NodeGraphView::set_selection selects nodes programmatically (emitting
SelectionChanged); EffectStackDataSource::selected_effect highlights
the chosen card and EffectStackEvent::CardSelected reports card clicks
— the two-way clip/node selection sync between the timeline, node
editor and inspector.
2026-08-20 17:08:25 +08:00
Mike-Solar af5482d774 style: cargo fmt with the workspace tab policy (hard_tabs)
Whitespace only; the fork has no own rustfmt.toml so the Oak root
policy applies.
2026-08-11 23:06:13 +08:00
Mike-Solar ad7c965c5a feat(gpui): add dock, effect stack, node graph, and timeline widgets
Implements four workspace widget modules with accompanying learn examples:

- dock: dockable panel layout system (tabs, splits, drag-to-dock) with
  serde-based persistence via PanelRegistry / DockLayoutState
- effect_stack: linear effect-stack inspector widget
- node_graph: node-graph editor (nodes, ports, wires, pan/zoom canvas)
- timeline: video-editing timeline (tracks, clips, ruler, playhead)

Timeline snapping prefers the earlier frame when two snap points are
equally close, with SnapKind priority breaking same-frame ties.
2026-08-09 03:31:06 +08:00