> AI-authored draft for review. This is the NomiApps fork roadmap, not the upstream Mixxx schedule.

# Road to Mixxx 3.0

Snapshot: 6 September 2026. NomiApps baseline: ee9d09b2cc, 19 commits after the prior snapshot. Worktree: C:/StreamDeck/src/mixxx-shared. Fork trunk: origin/main; upstream Mixxx: upstream/main. Checked worktree clean and matching its origin tracking ref.

The roadmap title refers to the New UI direction; the binary reports 2.7.0-nomi, not a 3.0 engine version.

MX-06 landed as 7268e7e262. Core surfaces are implemented; MX-07–MX-09 now track the remaining rig, restart and release evidence. Validation may uncover further fixes.

## Product scope

A dependable Windows desktop and touch DJ workflow on the upstream 2.7 engine with the New UI: decks, waveforms, stems, library, mixer, samplers, effects and controller access. Keep legacy preferences available while the new settings surface develops.

Android, a full preferences rewrite, compact/portrait expansion and AI Auto DJ are proposed later work, subject to owner priorities.

## Proposed release sequence

- Implemented: core performance surfaces, including MX-06; binary freshness verified at ee9d09b2cc.
- Next, MX-07 and MX-08: test complete sessions and restart round-trips on the actual rig; resolve reproducible faults.
- Then, MX-09: freeze scope, package and validate the same release candidate.

The initial 12-week horizon is replaced here by the current validation sequence, without setting a new release deadline.

## Status definitions

- Implemented: commit history or project notes establish implementation; hardware acceptance may remain open.
- In motion: reported work in progress; no landing or validation claim.
- To validate: a release requirement awaiting recorded evidence.
- Later: an idea or proposed deferral.

## Release checklist

- [ ] Core two- and four-deck journeys pass on the target rig.
- [ ] Library views, smart-crate definitions, sorting and settings survive restart; selected crate scope intentionally does not.
- [ ] Controllers, touch and mouse produce consistent control state.
- [ ] Complete sessions have no unresolved crashes or audible dropouts attributable to the candidate.
- [ ] A clean installation launches with documented audio and controller setup.
- [ ] Tested revision, known issues and recovery instructions accompany the release.

All checks are pending evidence. Agree hardware and session duration before validation.

## Feature documents

### MX-01 — Decks & waveforms

Status: Implemented / Reported working

**Intent**

Keep track position, timing and transport immediately available during a set.

**Current position**

The project task reports functional decks, waveforms and scratching. Recent history also records a fix for a one-semitone error in the key display.

**Scope**

- Two- and four-deck performance workflows.
- Transport, cue, loop, beatjump and waveform interaction.
- Readable key, BPM, pitch and track position.

**Acceptance criteria**

- [ ] Load, cue, play, scratch and swap tracks on each deck without losing control state.
- [ ] Confirm key display against known track metadata.
- [ ] Check waveforms remain responsive during a full mixing session.

**Evidence & dependencies**

Codex task: Inspect repository. Baseline ee9d09b2cc retains the key-display correction. Full performance acceptance remains to be recorded.

### MX-02 — Stems & mixer

Status: Implemented / Commit evidence

**Intent**

Make stem manipulation part of the normal performance workflow.

**Current position**

Per-deck stem strips, four width tiers and a visibility preference are implemented. Stem lane labels now render across the main and Edge waveforms, with per-surface visibility and follow-up rendering fixes.

**Scope**

- Stem mute, solo, level and effect controls.
- Shared mixer presentation and quick-effect preset controls.
- Optional stem strips with reclaimed waveform space.
- Stem lane labels with per-surface visibility.

**Acceptance criteria**

- [ ] Load a stem track, play and manipulate each stem without crashes.
- [ ] Verify mute, solo, volume and effect behavior on the rig.
- [ ] Resize across supported widths and restart with stem strips hidden.
- [ ] Verify labels render on both surfaces and the per-surface visibility setting survives restart using a profile seeded by the current build.

**Evidence & dependencies**

Existing commits 82f8d18ffd, 14146d8afe and 9fe5b9756e; lane labels: 188d809b0f, f5c2145bba, 29ed271286, 721f4b528f, 8917fa0e13 and d92333daa4. Rig rendering and preference round-trips remain open.

### MX-03 — Library & saved views

Status: Implemented / Commit evidence

**Intent**

Find and prepare the next track without leaving the performance workflow.

**Current position**

Smart crates now apply a named scope rather than replacing the search text. There is an explicit way out, and focusing search drops the scope. Definitions remain saved; the selected smart crate is deliberately not persisted. Scopes re-run after library and track changes. Column order, widths and sort remain persistent.

**Scope**

- Named smart-crate definitions and scoped library results.
- Explicit scope exit and clearing the scope when search gains focus.
- Automatic scope refresh after library and track changes.
- Library feature navigation, crate actions and persistent column layout.

**Acceptance criteria**

- [ ] Find and load tracks from the required library sources.
- [ ] Save a named smart-crate definition, restart and verify the definition remains; reapply it to verify results. Do not expect the selected crate to be restored.
- [ ] Apply a smart-crate scope, clear it through its explicit exit, then reapply it and confirm focusing search drops the scope.
- [ ] Change a matching track or rescan the library and verify scoped results refresh.
- [ ] Change columns and sorting, restart and verify the restored view.
- [ ] Confirm crate actions affect the intended tracks.

**Evidence & dependencies**

Smart-crate scope changes: 7805a1b228, 5bfd340d74, 04039af67f, 065b673a61 and df6b8bf59b. Existing view persistence: 222c86bf2b; live sidebar: 291e1b0a51. These commits supersede the earlier library port notes.

### MX-04 — Edge touch surface

Status: Implemented / Commit evidence

**Intent**

Use a dedicated touch display alongside the main library and a hardware controller.

**Current position**

The Edge second-window surface is implemented in the New UI. Fork control primitives now live in their own Edge.Controls module, avoiding collisions with upstream Mixxx.Controls. Edge has stem lane labels and honors the per-surface setting; the InfoBar separator evaluation error is fixed.

**Scope**

- A second QML surface sharing the Mixxx engine.
- Layout selection and deck-pair switching.
- Theme consistency between the main window and Edge.
- Independent Edge.Controls primitives and per-surface stem lane labels.

**Acceptance criteria**

- [ ] Open and close Edge without interrupting playback.
- [ ] Switch layouts and deck pairs, confirming every control targets the intended deck.
- [ ] Check the target 2560×720 display at its actual scaling.
- [ ] Confirm Edge.Controls loads without unresolved imports and Edge stem labels follow the selected visibility scope.

**Evidence & dependencies**

Surface: 6f1ec83a49 and 8b744c42b6. Dedicated controls module: b3bafbb2db. InfoBar: 93ac0dc8ba. Edge labels and visibility: f5c2145bba and 721f4b528f. Fresh binary checked at ee9d09b2cc; rig acceptance remains open.

### MX-05 — Settings & interface

Status: Implemented / Commit evidence

**Intent**

Make configuration reachable and predictable without trapping the user in a popup.

**Current position**

Preferences and Ctrl+P route to the 3.0 settings page, with a separate legacy entry. Recent commits add close behavior, Escape handling and vector chrome. Commit 29ed271286 adds a stem lane label preference with per-surface scope.

**Scope**

- New UI and legacy preferences entry points.
- Stem-strip and library-icon preferences.
- Consistent window, deck and library styling.
- Stem lane label visibility with per-surface scope.

**Acceptance criteria**

- [ ] Open settings from both menu and shortcut; close by button and Escape.
- [ ] Reach legacy audio and controller configuration when needed.
- [ ] Using a current-build profile, save stem-strip visibility, library-icon visibility and per-surface stem lane label settings; verify each after restart.

**Evidence & dependencies**

Existing settings and chrome commits: 0a251fdaba, d9aaac9467, 96bdeb7a2e, b16898fa9e and fc48a34f5b. Stem label setting: 29ed271286. Restart acceptance remains open. Historical preferences notes live outside the worktrees at C:/StreamDeck/mixxx-pr-kit/PREFERENCES.md.

### MX-06 — Samplers & effects

Status: Implemented / Commit evidence

**Intent**

Complete sampler and effect access from the performance surface.

**Current position**

Grok’s patch landed on the fork trunk, origin/main, as 7268e7e262. It re-enables sampler and effect rows under the mixer. The binary at ee9d09b2cc passes check-build-fresh.ps1 against all 2005 compiled-in sources. The landed-revision/build criterion is met; loop audio, timing and live triggering still need rig acceptance.

**Scope**

- The Loop panel Sample button loads the same track into the first empty sampler, or sampler 1 if none is empty.
- Copy loop in/out, set a cue at loop start and enable the engine loop; no WAV file is created.
- Sampler and effect rows under the mixer, integrated with the player-manager changes.

**Acceptance criteria**

- [x] Record the landed revision and successful build. — Met, 6 September 2026.
- [ ] Capture a loop to a sampler and verify the intended audio and timing.
- [ ] Trigger, stop and adjust samples and effects during deck playback.

**Evidence & dependencies**

7268e7e262 — Copy a deck loop onto a sampler and show the sampler row (Made-with: Grok). Exactly four files: res/qml/Deck/Loop.qml, res/qml/main.qml and src/qml/qmlplayermanagerproxy.{cpp,h}. At ee9d09b2cc, check-build-fresh.ps1 reports mixxx.exe 23:47:30 newer than all 2005 compiled-in sources. Rechecked on 6 September 2026. This is build freshness evidence, not an audio test.

### MX-07 — Daily-driver sessions

Status: To validate / Evidence needed

**Intent**

Establish that the candidate is dependable for an actual set.

**Current position**

The baseline is now verified fresh and samplers/effects were the last missing performance surface. The complete session script is testable end to end. No hardware acceptance session is recorded in this snapshot.

**Scope**

- Agree the supported audio device, controller and displays.
- Two- and four-deck sessions with stems, samplers and effects.
- Responsiveness, frame pacing and any audible dropouts.

**Acceptance criteria**

- [ ] Record the exact revision, profile, hardware and session duration.
- [ ] Complete the agreed session script and capture reproducible faults.
- [ ] Resolve release-blocking faults and repeat the affected journeys.

**Evidence & dependencies**

Sampler/effects implementation: 7268e7e262. Fresh binary at ee9d09b2cc. Historical C:/StreamDeck/mixxx-pr-kit/TESTING.md covers individual upstream fixes, not a full fork acceptance pass. Agree the session duration and supported hardware.

### MX-08 — Persistence & recovery

Status: To validate / Evidence needed

**Intent**

Return to a familiar working setup and recover cleanly from display or startup changes.

**Current position**

Library view and preference persistence are implemented. Smart-crate definitions are saved, but the selected smart crate is intentionally not restored. Commit 53eabd0046 changed the version string to 2.7.0-nomi; the profile version gate compares that string, so an older profile can produce a mismatch unrelated to persistence. Run round-trips using a profile seeded by the current build.

**Scope**

- Library columns, sort and saved smart-crate definitions; exclude active crate selection from persistence expectations.
- Fork preferences, per-surface stem lane labels and supported window configurations.
- Profile backup and recovery, including version-gate behavior.

**Acceptance criteria**

- [ ] Seed a test profile with the current 2.7.0-nomi build, change supported settings, then restart the same build and verify persistence.
- [ ] Verify smart-crate definitions persist while the selected scope does not; reapply the scope to check its results.
- [ ] Reopen after disconnecting the secondary display and confirm controls remain reachable.
- [ ] Verify the documented backup and restore procedure with a test profile; distinguish expected version-gate messages from persistence faults.

**Evidence & dependencies**

Version identification: 53eabd0046; intentional scope non-persistence: 5bfd340d74. Existing view/window work: 222c86bf2b, 09177a9fc1 and 93ca6e0083. Historical preferences notes: C:/StreamDeck/mixxx-pr-kit/PREFERENCES.md. Recovery and round-trip acceptance remain open.

### MX-09 — Build & release

Status: To validate / Release gate

**Intent**

Make the finished fork installable and understandable outside the development checkout.

**Current position**

The fork identifies itself as 2.7.0-nomi. check-build-fresh.ps1 verifies binary freshness against compiled-in sources; the check passes at ee9d09b2cc. run-shared.ps1 runs a copy. QML lint/format tooling is implemented. Packaging and clean-install acceptance remain untested.

**Scope**

- Repeatable build and package procedure with exact fork version and revision.
- Binary freshness checks before testing or launching the current sources.
- QML lint/format tooling, release notes and known issues.
- Audio, controller and touch-display setup documentation.

**Acceptance criteria**

- [ ] Build the candidate from its recorded source revision.
- [ ] Install and launch in a clean test environment.
- [ ] Run the core workflow checklist on the packaged candidate.
- [ ] Include setup, known issues and recovery guidance.

**Evidence & dependencies**

53eabd0046 identifies the fork. d41ea04bb6 adds the freshness check; ee9d09b2cc points it at mixxx-shared. 334cc2a58b fixes qmllint/qmlformat hooks; 7568794fe1 formats fork-only Edge QML. The 6 September check passes for 2005 compiled-in sources. Packaging and clean-install tests are still open.

### MX-10 — Compact & portrait

Status: Later / Proposed deferral

**Intent**

Extend the main interface to small and portrait displays without sacrificing control access.

**Current position**

Older responsive-reflow notes are a scope document for an earlier UI state. Newer stem width tiers are implemented, but they do not establish a complete compact or portrait interface.

**Scope**

- Reassess current constraints in logical pixels.
- Compact deck arrangement, library access and touch targets.
- A dedicated portrait information layout if prioritized.

**Acceptance criteria**

- [ ] Agree supported display sizes and scaling.
- [ ] Verify all essential controls remain reachable at those sizes.
- [ ] Run the main performance journeys by touch.

**Evidence & dependencies**

C:/StreamDeck/mixxx-pr-kit/RESPONSIVE-REFLOW-SCOPE.md is historical planning input; commit 14146d8afe establishes stem-strip width tiers. Deferral is proposed, not a locked decision.

### MX-11 — AI Auto DJ

Status: Later / Idea only

**Intent**

Explore musically useful track suggestions after the core DJ workflow is dependable.

**Current position**

The existing scope document labels this an idea, not started. No implementation or release commitment is claimed.

**Scope**

- Define assisted versus autonomous behavior.
- Evaluate deterministic shortlisting and local-model selection.
- Keep selection failures from interrupting playback.

**Acceptance criteria**

- [ ] Agree the intended user control and fallback behavior.
- [ ] Evaluate suggestions against a documented listening test.
- [ ] Validate a supported integration path before implementing queue changes.

**Evidence & dependencies**

C:/StreamDeck/mixxx-pr-kit/AUTODJ-AI-SCOPE.md dated 4 September 2026. Its architectural proposals require fresh technical review; they are not adopted as implementation instructions here.

## Evidence and maintenance

Sources: road-to-mixxx-update-2026-09-06.md, local mixxx-shared commit history and check-build-fresh.ps1 (fresh against 2005 compiled-in sources). Historical PREFERENCES.md, TESTING.md, RESPONSIVE-REFLOW-SCOPE.md and AUTODJ-AI-SCOPE.md live outside source worktrees at C:/StreamDeck/mixxx-pr-kit. Current commit evidence supersedes older planning notes. This is a curated snapshot, not a live monitor.

For each change, record the worktree, revision, implementation evidence and rig-test outcome. No hardware tests were run as part of this documentation task.

> End of AI-authored draft.
