Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • perf-tray.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(tray): 🌊 Launch Gig becomes GIG UP — one reconciler, armed not crippled · 9f8d9005
    Un-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) authored Sep 05, 2026
    9f8d9005
perf-tray.py 32.8 KB
EditWeb IDE
×

Replace perf-tray.py

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.