feat(midi): qualify routed startup and refresh workflow screenshots (phase 105)

This commit is contained in:
Johannes Findeisen 2026-11-06 02:35:48 +01:00
commit 25d4ad5d3b
73 changed files with 208 additions and 37 deletions

View file

@ -1006,7 +1006,8 @@ Persist application preferences in `~/.xtc.conf` and provide selectable sequence
### Implementation status
Implemented without dependencies or a project format change. Application settings
are saved only with Apply; audio connection options take effect on Reconnect and
were initially saved only with Apply; Phase 100 also saves on clean exit.
Audio connection options take effect on Reconnect and
project defaults on New. Existing projects retain their musical data. Loop ranges
are global preferences, not project data. Enabled loops require at least 64 samples.
See [PREFERENCES.md](PREFERENCES.md) for configuration, workflow and limitations.
@ -2301,15 +2302,38 @@ Implemented: bounded C99 type 0/1 PPQN notes import with running status, channel
Capture current MIDI preferences, file workflows and imported notes, refresh the gallery, and qualify configuration, MIDI I/O and file workflows together.
### Tasks and acceptance criteria
- [ ] Implement and document the workflow with bounded validation and safe ownership.
- [ ] Pass meaningful core and GUI checks, including errors and persistence or undo.
- [ ] Commit this phase separately after validation.
- [x] Implement and document the workflow with bounded validation and safe ownership.
- [x] Pass meaningful core and GUI checks, including errors and persistence or undo.
- [x] Commit this phase separately after validation.
### Implementation status
Planned.
Implemented: all 66 gallery PNGs were refreshed, including five new MIDI preferences/help/file-menu/import captures through real C/GUI workflows. A real-process isolated-home test proves ~/.xtc.conf creation, startup reload and malformed-file preservation. Final routing qualification adds bounded PipeWire publication retry and holds transport until chosen routes exist, preserving notes at position zero; deterministic callback and real receiver checks pass. Full core/reliability, GUI/plugin/JACK, optional-backend builds, ASan/UBSan, static analysis and staged installation checks passed.
---
## Integrated Validation for Phases 100–105
Completed on 2026-11-06. Normal builds use `BUILD_DIR=build/audio-editor`:
`all gui test-reliability`, `test-gui-midi-workflows`, `test-gui-creative`,
`test-gui-track-fx`, full `test-gui`, modern-plugin/instrument/LADSPA GUI fixtures,
`test-gui-jack`, `test-jack-midi`, and `test-configuration-startup` passed.
The final routed-start change was rechecked with core/reliability, full/focused
GUI, live MIDI first-note receipt and real-process configuration startup tests.
`BUILD_DIR=build/midi-minimal PKG_CONFIG=false FLTK_CONFIG=false all test` passed.
Clang ASan/UBSan full core/reliability and focused/full GUI checks passed using
only the existing Fontconfig leak suppression. The existing Clang/FLTK redundant
instrumentation warning remains; normal warning-enabled builds are clean.
Clang static analysis (including a final backend recheck), default/custom staged
install layouts and C/C++ pkg-config consumers passed.
The full gallery and host VST3/creative/MIDI capture modes regenerated 66 PNGs.
File import is notes-only type 0/1 PPQN and retains project tempo. MIDI devices
are JACK/PipeWire ports; physical hardware/bridge compatibility is not claimed
from software-port tests. No dependencies or project-format change were added.
See [MIDI_WORKFLOWS.md](MIDI_WORKFLOWS.md), [PREFERENCES.md](PREFERENCES.md) and
[the gallery](../screenshots/README.md) for reproduction and exact limits.
## Recommended Execution Order
Reorder the phases when the audit reveals a blocking dependency. Do not mark a phase complete merely because code exists: its acceptance criteria must be demonstrated by builds, tests, or documented manual verification.