Commit e8995e2f by PLN (Algolia)

docs(tasks): queue the launcher consolidation — two gig-ups, one truth

parent d902a8ff
[
{
"date": "2026-09-17",
"task": "GUI launcher did not spawn the MIDI lens or the tray",
"learning": "The launcher (gig-up.sh) and the unit converger (rig_units.py --ensure) disagreed on SuperDirt topology \u2014 raw sclang vs parvagues-sc.service \u2014 so the launcher never called ensure; the fix is ensure()'s proof-process skip, not another hand-copied unit list."
},
{
"date": "2026-09-17",
"task": "perf-tray double-click mystery + menu restyle",
"learning": "The double click was the appindicator extension's, not ours: it reserves double-click for SNI Activate (instant) and delays single-click 400 ms. The menu got the Ship's Bridge QSS with measured contrast, and '&' in Qt labels exports as '_' over DBusMenu, so mnemonics survive into the shell-drawn twin; literal & does not survive, so the copy avoids it."
},
{
"date": "2026-09-18",
"task": "tray GIG UP did nothing + midimon silent",
"learning": "The Bridge ran 'gig-up.sh --converge --quiet' but gig-up.sh's arg guard only knew --headphones/--help, so every tray GIG UP died on flag 1 (exit 2, output captured). Flags now parsed: --converge boots SuperDirt + converges units with NO app windows, --quiet mutes ok/info. midimon watches 132:0 (the lcxl3-driver's translated virtual port), not the raw surface \u2014 silence there just means the driver had no input yet."
},
{
"learning": "Two gig-up.sh exist: root (1-click, owns leds()) and tools/ (the GO/NO-GO gate the Bridge calls, where lcxl3-driver is boot=manual so nobody starts it). The v3 LCXL3 enumerates as 'LCXL3 1', breaking every v2 'Launch Control XL' grep \u2014 present/LEDs/path checks all silently misread. lcxl-path must match the driver's virtual PORT name 'ParVagues LCXL3' (under RtMidiOut client), never chase the PipeWire relay mesh (everything reaches everything via 143)."
}
]
\ No newline at end of file
# Launcher consolidation — one gig-up, one truth
Queued 2026-09-20, after gig prep. Full picture established that day (see
`completed_archive.json` learning line + commit 35fb6ed).
## The split-brain (today's incident)
- root `gig-up.sh` — desktop icon runs this one. Owns `leds()` (starts
lcxl3-driver), SuperDirt-first ordering, missing-source sweep, `--headphones`
fold. Recent tray-dialect commits (fa548f0) landed here.
- `tools/gig-up.sh` — the Bridge's RIG UP runs this one. GO/NO-GO gate +
converge via the one inventory (`tools/rig_units.py`), but `lcxl3-driver` is
boot-policy `manual` → **nothing starts it in this path** (tonight's dark
board), and its LCXL checks grep the v2 name (fixed in 35fb6ed).
## Plan
1. Port the root launcher's semantics into `tools/gig-up.sh --converge`:
ordered app launch (already in Bridge POST_APPS — keep there), `leds()`
generation-aware restart of the driver when an LCXL is on the bus, the
missing-source sweep + fader-restore window, `--headphones` fold-orbits mode.
2. Point `tools/parvagues.desktop` (both Exec lines) at `tools/gig-up.sh`.
3. Root `gig-up.sh` → shim to `tools/gig-up.sh` (muscle memory keeps working),
then delete once nothing references it. Grep callers first: cheat-sheet,
README, rig_units comments.
4. Verify with: `tools/gig-up.sh --converge` from a cold state, RIG UP from the
Bridge, desktop icon — all three must paint the board and end in GO.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment