August 19, 2026

v0.11.577
  • Device rack. Every track now has an Ableton-style chain in the bottom dock: a source box at the head, built-in plugins drawing their real editors inline, a level meter after each device, a MIDI meter at the chain's input, and an output strip with gain, pan, solo and mute pinned at the right edge. Devices can be dragged between tracks, copied, pasted, duplicated and deleted, and a click on the grid brings that track's rack forward.
  • Rebuilt piano roll. It lives in the bottom dock now, works clip-relative like Ableton, and edits notes across several clips at once. It has a playable keyboard that lights up with what's sounding, a resizable velocity lane with lollipop handles, live overlap resolution while you drag, alt-drag to duplicate, ruler-drag zoom, note-name labels, and a playhead that follows the transport.
  • Loop sections. Named, clip-styled section bars sit in a pinned lane under the bar ruler — create them from empty lane space, rename with ⌘R, and toggle looping from the transport.
  • Looping audio clips. A Loop switch in the source box unbinds both clip edges, so dragging one out repeats the sample instead of stopping at the end of the file.
  • Audio output is far more reliable: device switching actually takes effect, a Bluetooth headset used as both input and output no longer wedges CoreAudio at launch, pressing play with no working output reports the problem, and MP3 export really encodes MP3.
  • Opening a project no longer freezes the interface while VST3 plugins load, saving during playback no longer glitches audio, and a save that hits an error is reported as a failure instead of a success.
  • Various bug fixes and stability improvements across the grid, piano roll, popups and rendering.
  • Clips read as one consistent object across the grid: Logic-style bodies with rounded selection, header strips with editable titles on text notes, standard chrome on automation clips, default titles on MIDI clips, ghosting when something is dropped on top, and ⌘J to consolidate.
  • Selection and keyboard work the way you'd expect — shift-click for ranges, cmd-click to toggle, arrow keys to move and extend the selection line, and the same clipboard shortcuts on the grid, in the piano roll and in the layers panel.
  • Interface polish throughout: the UI now ships its own typeface so text renders identically on every machine, plus draggable scrollbars with wheel inertia, numeric value boxes with carets, and a reworked welcome and recent-projects screen.

May 6, 2026

v0.10.339
  • Multi-file drag from Finder — drop several audio files at once and they stack on consecutive free lanes; the first lands exactly where you released the cursor, and a live waveform preview follows the cursor as you drag.
  • Right-click → Export on any audio track bounces the clip with track FX, parent groups, and master applied. Works from the browser or the timeline.
  • Windows release pipeline — signed NSIS installer + portable zip via Azure Trusted Signing, with auto-update parity.
  • Complex warp keeps the clip end in sync when you change sample BPM or warp settings.
  • Settings load failures now show a toast instead of silently defaulting to factory values.
  • Browser sample preview now lives inside the right column instead of overlaying the sidebar; the transport pill recenters as you resize the browser or window.
  • Samples browser sort — clickable Name/Modified header; right-click the secondary cell to swap metric (Date / Size / Type); preference persists across restarts. Default panel width widened to 560px.
  • Browser drag preview shows true clip length, fills the waveform progressively while analyzing, fades semi-transparent until drop, and the new clip is auto-selected once placed.
  • Window — double-click the title bar toggles macOS zoom; resize now extends the grid and viewport into the new area instead of leaving a stale region.
  • Layers panel scrolling — chevron, freeze, group/MIDI icons, and Tempo/Time-Sig labels clip cleanly at the search-bar separator instead of disappearing early.

April 22, 2026

v0.9.298
  • Automatic tempo detection for samples. Drop any audio in and Layers detects its BPM, shown in the right panel with ÷2/×2 buttons for octave correction (with undo). No tempo? You get a clear "—" and a hint instead of a wrong guess.
  • In-app update prompts. A new bottom-left "New Version Available" card lets you Update or Skip the current version; skipped versions are remembered so you won't be nagged again.
  • Split macOS builds. Separate Apple Silicon and Intel DMGs/zips — smaller downloads and native performance on each architecture.
  • Browser footer with profile menu. New bottom-left profile button opens a dropdown with Settings and Command Palette.
  • Freeze/Unfreeze button in the right panel now renders its background.
  • Various stability improvements to the DMG installer (Applications icon on macOS 14+) and auto-updater.
  • Unified Warp control. The Warp toggle and mode selector now share a single pill in the right panel; Layers remembers your last-used mode when you re-enable Warp.
  • Inspector layout polish. Solo / Mute / Monitor now tile the inspector width as a neat grid with a full-width Reverse below; consistent gray palette matches the rest of the DAW.
  • Dashed drop area around Add Effect. You can now drop plugins directly onto the inspector to add them.
  • Right panel shows target name. Selected item's name (filename, instrument, group, or "N clips") replaces the old uppercase category bar.
  • Samples browser empty state. "Nothing here yet" + Add Folder button matches the layers/plugins panels.
  • First-launch browser defaults to a 50/50 split and default color intensity is now 100%.

April 22, 2026

v0.7.298

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 syncaudioclips 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
  • beatsx/sizebeats sync bugs — MIDI note creation, overlap trim, text note/component instance moves, automation splitat, group sizebeats field added
  • audio clips now start at exact beat-derived times — store canonical beatsx:f64 on all entities, audio engine uses beats*60/bpm instead of px/PIXELSPER_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 — lastinsttime 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 partialcmp unwrap panics, add updatecursor on automation drag, add serialization roundtrip test, remove dead autolaneclose_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 handlemouseinput 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 defaultuifamily() helper
  • extract shared button component (togglecolor, actioncolor, 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 beatsx/sizebeats/startbeats/durationbeats in sync on all resize, move, overlap-resolution, and MIDI recording mutations across cursor.rs, main.rs, overlap.rs
  • add beatsx/sizebeats/startbeats/durationbeats 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