> ## Documentation Index
> Fetch the complete documentation index at: https://songbird.studiocollective.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# WIP — Manual Testing

# Songbird DAW — Work In Progress

Items that need manual testing and verification. Updated March 26, 2026.

## Bug Fixes

* [ ] **Stock plugins UI not loading in release build** — May be fixed (see release build investigation). Needs manual verification in a release build with `./utils/build.sh`.
* [x] **Loop position resets** — Fixed: `processTrackNotes()` in `store.ts` now only updates transport state when values actually change, preventing unnecessary overwrites.
* [x] **MIDI editor drag selection square not visible** — Fixed: Canvas redraws immediately during selection drag via `requestAnimationFrame` in `MidiEditor.tsx`.
* [x] **Duplicate MIDI notes** — Added: Press **Cmd+D** (Mac) / **Ctrl+D** (Windows) to duplicate selected notes. Duplicated notes placed immediately after the selection.
* [x] **Arrangement clip selection bubble missing** — Fixed: MIDI clips in arrangement view now show a selection outline when Shift+clicked.
* [x] **Track header hover buttons not hiding** — Fixed: Wrapper container correctly manages hover states and pointer events for Expand/Mute/Solo buttons.
* [x] **Plugin order reversed** — Fixed: Stock plugins (reverb, channel strip) now open in the correct order from the mixer.

## New Features to Test

### Collaboration

* [ ] **Create a collab room** — Start server with `./utils/collab-server.sh`, create room in the Collaboration panel, verify invite code is generated.
* [ ] **Join a collab room** — Second instance joins with invite code, verify project files are received.
* [ ] **Push/pull sync** — Edit notes on one instance, verify changes appear on the other after auto-sync.
* [ ] **Bird file merge** — Two users edit different tracks in the same section, verify auto-merge works.
* [ ] **JSON state merge** — Two users adjust different mixer controls, verify both changes are applied.
* [ ] **Presence** — Verify peer join/leave notifications appear in the activity feed.

### Plugin Compatibility

* [ ] **Missing plugin detection** — Load a project referencing a plugin you don't have, verify the PluginCompatibilityModal appears.
* [ ] **Best Match substitution** — Click "Best Match" for a missing plugin, verify category-based fallback selects an appropriate substitute.
* [ ] **Runtime-only substitutions** — Verify substitutions are not saved to the `.bird` file (close and reopen should re-trigger the modal).

### Application Lifecycle

* [ ] **CrashGuard** — Force-quit during plugin loading, verify sandbox mode auto-enables on next launch.
* [ ] **Recent projects** — Open several projects, verify the project picker shows them ordered by last-opened, capped at 10.
* [ ] **Settings centralization** — Verify all settings (API key, MIDI device, theme, Middle C reference) persist in `~/.songbird/settings.json`.

### MIDI Editor

* [ ] **Ghost notes** — Open a track in the piano roll, verify notes from other tracks appear as translucent "ghost" notes.
* [ ] **Section editing** — Click the edit button on an arrangement section, verify name and length can be modified.

### Build & Validation

* [ ] **`./utils/validate.sh`** — Run full validation suite, verify all 4 steps pass (C++ tests, TypeScript, ESLint, Vitest).
* [ ] **`./utils/build.sh`** — Run release build script, verify it produces a codesigned `.app`.
* [ ] **`./utils/validate.sh cpp`** — Run only C++ integration tests, verify they pass headlessly.
* [ ] **`./utils/validate.sh vitest`** — Run only Vitest tests, verify all store/slice tests pass.

### AI Copilot

* [ ] **Improved intent routing** — Test EQ and channel strip operations, verify AI routes to correct tools.
* [ ] **Granular commit messages** — Make an AI-driven edit, verify the commit message describes the specific changes (not generic "LLM edit").

### Sentry (Needs Setup)

* [ ] **React Sentry** — Uncomment `sentry.ts`, provide DSN, verify errors are reported from the WebView.
* [ ] **C++ Sentry** — Uncomment `sentry-native` in `CMakeLists.txt` and `Main.cpp`, verify native crash reports.

### Sample Editor

* [ ] **Enhanced sample editor** — Load an audio track, verify waveform display and editing improvements work correctly.
