-
feat(tray):
🌊 Launch Gig becomes GIG UP — one reconciler, armed not crippled · 9f8d9005Un-parks the rewire that was blocked behind the Ardour double-launch (log 041). The patch saved with that log no longer applied — perf-tray.py moved under it in 90afa239 — so this is reimplemented against the current file rather than forced; `git apply --reject` had left the file half-patched and was reset before starting. PLN, 2026-09-05: "click launch gig started pulsar, not ardour??", then "is our launch gig now autodoing?". The old button opened Pulsar and nothing else. That was deliberate — #116 says the hot path must not be able to start the sound by accident — but the name promised a gig, so it read as broken rather than as careful, and the rig's real launcher (the Bridge's RIG UP, which converges every unit and then opens the apps) had not been pressed in 6.7 days. A safety rule that makes the safe path invisible protects nothing; it just moves the launch to a hand-typed command. So the tray and the Bridge now drive the SAME reconciler, and #116 is honoured by ARMING instead of by crippling — the idiom already proven two menu entries below on Restart SuperDirt: - SuperDirt already up → the press only converges and focuses. One click. - SuperDirt down → the press would start the sound. First click arms and says so in a tray notification; a second click, which means reopening the menu, commits. Arming lapses after 10 s. - No confirmation dialog, ever: a modal stealing focus mid-set is its own hazard (#136). "Would this start the sound?" is answered from SuperDirt's unit state, not by asking the Bridge — the cheap local truth, and it keeps an HTTP round trip out of the front of a button press. The label carries all three states so the dangerous one announces itself before it is pressed. The POST runs in a worker thread and is never waited on. A cold converge takes ~100 s, and the reason PLN launched Ardour by hand mid-evening — believing RIG UP had failed — was a face that showed a spinner and no window. The Bridge answers immediately and runs the job in the background; the Bridge page opens right away. Nothing in the worker touches Qt. Verified end-to-end, with Ardour already running and SuperDirt up: POST /api/rig {"launch_apps":true} → {"ok":true,"status":"started"} journal: pulsar: SPAWNED pid 2779892 (it was down) ardour: running → focus midimon: running → focus ArdourGUI process count: 1 before, 1 after. That "ardour: running → focus" is the line this whole thread existed to produce: the last time this path ran it said "launched" while Ardour was up, and the two instances killed each other over the session lock. Tray after restart: active, NRestarts=0. Incidentally closes the suspected perf-tray memory leak — systemd's own accounting reports a 59.6M memory peak over 2h15m wall clock, so the "2.6 GB RSS" in the hand-off was a misread of virtual size, not a leak. Nothing to fix.
PLN (Algolia) authored9f8d9005
×