April 17, 2026

v0.7.267
  • New squircle app icon with silver sparkle and cool/warm gradient tails — replaces the text logo for a more native macOS feel.
  • VST3 plugin scanning is now non-blocking at first launch: the UI appears immediately while scans run in a cancellable background overlay. Subsequent launches use the cache as before.
  • VST3 plugin scan runs each module in a subprocess, so iLok dialogs, license prompts, and plugin `exit()` calls no longer crash the DAW.
  • Signed and notarized `.dmg` is now shipped alongside `.zip` for first-install, bringing a familiar drag-to-Applications flow.
  • Auto-updater now refuses to install unless running from a real `.app` bundle, preventing accidental overwrites when launched from a dev checkout.
  • Progress overlay gains a fading-arc spinner plus title/subtitle rows (e.g. "Scanning VST Plug-Ins" / plugin name) — the same spinner is now shared with the update pill.
  • Default grid for new users is now 1/8 notes; the empty Effects/Instruments browser shows a centered Rescan button so you're never stuck.
  • Transport icons (pointer, play/pause, scissors) now render from the shared SVG pipeline — consistent look and correct sizing.

April 16, 2026

v0.6.259
  • Built-in plugin system with Pro-Q-style parametric EQ, compressor, and text-to-speech generator — all work on native and web
  • Generic plugin panel framework with click-to-front z-ordering, shared UI widgets (knobs, buttons, faders), and standalone harness for plugin development
  • WASM audio parity — drag-and-drop files, stereo playback, recording, offline export, fade envelopes, automation, and metering now work in the browser
  • Stereo fader meters with independent L/R peak-hold in the right panel
  • Background VST3 plugin scanning with progress overlay
  • Fixed WASM rendering appearing too dark due to sRGB color space mismatch
  • Fixed pinch-to-zoom over plugin panels no longer zooming the canvas
  • Fixed palette fader mixing up gain and position domains
  • Subtle macOS window vibrancy effect with darkened tint for a polished look
  • Shared SVG icon pipeline and redesigned transport pill with larger controls
  • New UI sandbox (`make ui <widget>`) for rapid widget iteration in isolation
  • App is now signed with Developer ID certificate and notarized by Apple

April 10, 2026

v0.5.175
  • Standalone automation clips — fully redesigned automation system with editable breakpoints, VST parameter automation, and collapsible effect slots
  • Freeze tracks with automatic reverb/delay tail detection and non-blocking progress overlay
  • Web embeddable player configurable via postMessage and URL parameters
  • Bar ruler and timeline ruler with click-to-seek navigation
  • Welcome window with recent projects on startup
  • AIFF audio file support
  • Piano keyboard sidebar on MIDI clips with note highlighting and click-to-play
  • Audio clips now use beat-derived timing for sample-accurate playback
  • Fixed stereo WAV and frozen group playback
  • Various bug fixes and stability improvements
  • Rotary knob controls and inline RMS level meters on layer rows
  • Time signature control with drag-to-change and grid integration
  • UI zoom (Cmd+=/Cmd+-/Cmd+0)
  • Pointer/scissors tool switcher with keyboard shortcuts
  • Theme tone presets (Cool/Neutral/Warm) for gray temperature
  • Progress overlays for exports, project loading, and freeze operations
  • Draggable sidebar separator in browser panel

April 10, 2026

v0.4.174
  • bar ruler at top of grid with adaptive bar numbers, tick marks, playhead indicator, and click-to-seek
  • timeline ruler at bottom of grid with adaptive M:SS labels, tick marks, playhead indicator, and click-to-seek
  • VS Code-style UI zoom with Cmd+=/Cmd+-/Cmd+0, scales entire UI
  • add search icon to browser search bar
  • welcome window on startup — shows recent projects, New Project & Open buttons, scroll, Escape to dismiss
  • VST param rows with drag-to-change, label+value layout, stable ordering, fix click closing right window
  • input monitoring "I" button on Main layer — direct-to-master monitoring with mutual exclusion
  • MIDI clip right window with instrument dropdown selector and "Open Instrument" button
  • add reusable "Project" section header in sidebar before Layers, matching "Places" style
  • VST instrument parameter automation — touch knobs to see params, right-click to create automation lanes
  • time signature control in Layers panel with drag-to-change, metronome & grid integration
  • VST plugin param automation — collapsible effect slots with last-touched param display, right-click to create automation, playback support
  • move tempo from browser header to Layers panel label/value row, add ProjectParams struct
  • move metronome icon and BPM tempo from transport bar to browser header row, shrink transport bar
  • add SVG sound-file icon for audio files in browser panel
  • metronome button active state with accent background highlight, matching tool button style
  • add SVG icon rendering pipeline via resvg + tiny-skia; replace metronome timer font icon with custom SVG metronome icon
  • Ableton-style automation lane hover — ghost dot on line, value label, brighter line color when editing
  • Escape resets scissors tool back to pointer
  • add pointer/scissors tool switcher to transport panel with V/C keyboard shortcuts
  • groups movable by clicking any point inside (not just border/badge) when not in group editing mode
  • browser category labels use exact #B3B4BD color (text_secondary L=0.722), full opacity; add matching theme color test
  • piano keyboard sidebar on MIDI clips with sticky positioning, active note highlighting, and click-to-play
  • Ableton-style Tone presets (Cool/Neutral/Warm) for theme gray temperature, color intensity defaults to 0
  • automation clip point X snapping to grid when enabled
  • right-click context menu on Volume/Pan controls to create automation
  • thicker automation lines
  • automation clip edge resize — drag left/right edges to resize, with point remapping and multi-select support
  • automation dots now bigger with inner white dot; click-without-drag deletes point
  • automation dot gain value labels shown on hover/drag
  • show parameter label on automation clips — "Volume", "Pan", or "Param N"
  • wire audio engine to read from AutomationClip entities (Phase 5 of automation refactor)
  • full clip operations for AutomationClip — move, delete, copy/paste, split, create commands (Phase 4 of automation refactor)
  • hit testing + point editing for AutomationClip — select, create/drag/delete breakpoints, undo/redo (Phase 3 of automation refactor)
  • render AutomationClip on canvas — background rect, border, line triangles, dots (Phase 2 of automation refactor)
  • add AutomationClip as first-class canvas entity — struct, operations, storage, layer tree, all match arms wired up (Phase 1 of automation refactor)
  • apply middle-ellipsis truncation to layer names in browser Layers tab
  • draggable sidebar separator in browser — resize left sidebar by dragging the vertical divider, persisted in app settings
  • Ableton-style middle-ellipsis truncation for long filenames in browser
  • dim non-audio files in browser samples, disable hover/selection/drag/keyboard nav
  • add margin and border-radius to Places rows in browser sidebar
  • add margin and border-radius to browser category tabs
  • add Figma-style rounded bordered boxes around sidebar category and Places sections
  • add border-radius to active sidebar category highlight, remove left accent bar
  • reorder layer controls to RMS | knobs | label | S/M/I, S/M/I buttons hidden until hover or active
  • replace inline faders with rotary knob controls on layer rows, single-row layout
  • inline RMS level meters on layer rows with dB text label below meter, shown only when signal is active
  • inline volume and pan faders on each layer row in browser panel with horizontal drag support
  • add empty state messages for Instruments ("No instruments found") and Effects ("No effects found") browser tabs
  • join session input now auto-pastes clipboard when it contains a session URL or bare ID
  • join session from CLI by passing share URL as positional argument, e.g. `layers https://layers.audio/projects/...`
  • widen default browser width (320→340) so Time Signature label fits without ellipsis
  • Time Signature label uses ellipsis instead of wrapping text
  • add MidiClip arms to all non-exhaustive pattern matches after RightWindowTarget::MidiClip variant addition
  • automation dots always take priority over edge resize, even without editing mode
  • remove border/fill from tempo & time signature value boxes, smaller value text
  • automation dots at clip edges now take priority over resize drag
  • align Tempo/Time Sig left padding and text color to match Main entry
  • move tempo & time signature above Main in browser layers list
  • right window instrument params now appear in touch order (append to end, not front)
  • "Create Automation" focuses existing automation clip instead of creating duplicate
  • creating automation from FX param context menu no longer closes right window
  • clicking expanded VST param no longer triggers "Add Effect" button — selects matching automation clips instead
  • automation lane for MIDI clip now targets parent instrument so FX automation actually applies
  • revert instrument FX automation to original MIDI-based normalization that was working
  • 20px chevron, always-visible automation values in layers, automation name includes plugin name e.g. "Blend Dry/Wet (Rev Plate 140)"
  • instrument FX automation — extend bbox to include automation clips, fix layers panel live updates via text_dirty, bigger 16px chevron
  • plugin param automation playback — add sync_audio_clips after creation, GroupBus automation support, bigger chevron, continuous redraw during playback
  • effect slot layout bypass|chevron|name order, live param values in right panel & layers value box during playback
  • VST automation — show real param names, fix bypass index mismatch, accumulate multiple params in right panel
  • right-click effect slot header shows "Create Automation" context menu, ensure target entity in selected for groups
  • restore click-to-open-GUI on effect slots, add separate chevron for expand/collapse; fix create automation for groups
  • Cmd+L toggles loop — pressing again on overlapping range deletes loop instead of stacking
  • tempo row indented as child of Main, integer-only drag snapping, bordered value box
  • automation lane ghost dot click now creates point on the line instead of at mouse Y position
  • right window left border now uses same divider color as browser right border
  • SVG icon blinking — write instance data at distinct buffer offsets per icon group
  • automation points now created on the line (at interpolated value), not at mouse Y — drag to adjust
  • audio clip drop now snaps to track rows instead of free Y positioning
  • group volume=0 and pan=0 silently overwritten on project load — remove broken zero-check in deserialization
  • beats_x/size_beats sync bugs — MIDI note creation, overlap trim, text note/component instance moves, automation split_at, group size_beats field added
  • audio clips now start at exact beat-derived times — store canonical beats_x:f64 on all entities, audio engine uses beats*60/bpm instead of px/PIXELS_PER_SECOND, export and project load updated accordingly
  • first MIDI note at clip start not playing when instrument has latency — restore correct cursor boundary
  • browser category tab highlight now resets correctly after navigating a Places folder
  • suppress audio clip fade hover effect while dragging any selection
  • first MIDI note and note-off on stop now reliable — last_inst_time moved inside inst lock, note-off flag retries on gui lock failure
  • dragging automation point no longer retriggers VST notes — soft instrument update skips MIDI cursor reset
  • MIDI notes keep ringing after stopping playback — note-offs now reliably delivered via persistent flag
  • split Cool tone into dark(229/0.22→#333540) and light(222/0.084→#A1A5AE) params; add exact-match tests
  • volume fader mousewheel direction inverted — scroll up now increases volume
  • clicking inside automation clip to create point no longer deletes it on mouse up
  • automation clip labels in layers tab now show param name (Volume/Pan) instead of generic "Automation"
  • keep default cursor when hovering over clips instead of showing grab cursor
  • automation clip rendering now applies color_intensity setting to match waveform visual appearance
  • automation clip color syncs with parent waveform/MIDI clip on color change; layer panel shows actual clip color
  • automation inner white dots now render on top of lines, not behind them
  • arrow keys no longer move canvas clips when command palette is open
  • automation point changes now apply in real-time during playback instead of only on restart
  • automation clips overlap-resolve across params/targets — same-param: X-only, different-param: X+Y overlap required
  • automation clip creation finds free row below target instead of overlapping existing clips
  • automation clips now included in rectangular select area (multiselect)
  • automation clip overlap resolution — same-param clips now slice/crop/delete when overlapping, live preview during drag
  • automation clip now selectable and movable — removed zoom-threshold auto-edit that blocked selection
  • remove vertical gap when creating automation clip — now flush below the source clip
  • playback seeks to start of selected automation or MIDI clip
  • automation clip inherits color from its source audio/MIDI clip
  • automation clip requires edit mode to place points — zoom in or double-click to enter, click outside or Escape to exit
  • automation clip height now matches target audio clip height exactly
  • code review fixes — add div-by-zero guards in hit testing/rendering/audio, fix partial_cmp unwrap panics, add update_cursor on automation drag, add serialization roundtrip test, remove dead auto_lane_close_rects field
  • selection area stays grid-aligned when BPM changes
  • shift-click in browser Layers tab now selects range instead of toggling individual items
  • layer text not rendered on project load until scroll/click
  • show drop indicator line when reordering items within a group
  • Layers tab browser entries now scroll correctly
  • prevent canvas zoom/scroll/pinch when mouse is over browser or right window panel
  • context menu hover and click no longer trigger outside dropdown bounds
  • clicking "Join Session" / "Share Session" in command palette now works — mouse click path was closing palette before executing the command
  • increase "Project" and "Places" sidebar section header font size from 9 to 10
  • replace tempo/time-sig tooltips with button-style value box backgrounds
  • decompose large files — split handle_mouse_input into 10 methods, introduce RenderParams struct for gpu.rs, group App fields into sub-structs
  • unify all UI text to use native macOS system font (SF Pro) via platform-aware default_ui_family() helper
  • extract shared button component (toggle_color, action_color, text_color) and unify settings + right window buttons to Warp-style colors
  • extract shared test helpers into helpers.rs, remove 3 duplicate undo/redo tests
  • move metronome icon back to transport bar, keep BPM in browser header
  • move Share button from top-right corner to Settings > Developer tab
  • keep beats_x/size_beats/start_beats/duration_beats in sync on all resize, move, overlap-resolution, and MIDI recording mutations across cursor.rs, main.rs, overlap.rs
  • add beats_x/size_beats/start_beats/duration_beats fields to all entity structs; fix struct initializers in main.rs, clipboard.rs, and all test files; fix component_defs → components field ref
Features
Bug Fixes
Performance
Design & UI
Refactoring