HydraIssues

Omarchy marketplace plugin: Sunshine streaming bar widget (Hydra upsell channel)
open bug Project: hydraheadflatscreen Reporter: 20 Aug 2026 11:11

Description

REBRAND 2026-08-27 (83e6320): the plugin is now "Hydra ExperienceNet"

Owner decision: renamed and rebranded, and the timing is right because the plugin is head AND body now, so "HydraHead" no longer described it. New plugin id experiencenet.hydra, display name "Hydra ExperienceNet", repo renamed to github.com/cederikdotcom/omarchy-hydra-experiencenet (old URL redirects), state dir ~/.local/state/hydra-experiencenet with automatic migration in setup-body.sh, footer tightened to "Managed fleets: experiencenet.com". v0.5.0. VM reinstalled under the new id with state migrated and pairing intact; the Air went offline mid-reinstall (battery) and will be finished when it returns.

Current state (2026-08-26)

HydraHead v0.3.0 is the finished submission candidate. The ONLY remaining step is the marketplace submission, which is ON HOLD until the owner green-lights it. Do not submit before that.

  • Repo: https://github.com/cederikdotcom/omarchy-hydrahead (public, id experiencenet.hydrahead, display name "HydraHead")
  • All development, testing, and publishing know-how: docs/runbook.md in the repo (Quattro shell idioms, pairing rationale, Air test-rig quirks, mark asset recipes, publishing procedure)
  • Installed and validated live on the Air (omarchy v4 Quattro); omarchy plugin validate passes on the synced copy

Submission checklist (when green-lit)

  1. Confirm master is the intended commit and manifest.json version is current.
  2. File the marketplace GitHub issue form: repo link, category streaming/media, tags sunshine, moonlight, game-streaming, bar-widget.
  3. Automated validation runs against the current commit, then maintainer review.
  4. Close this issue when the listing is live.

What shipped (condensed)

  • v0.1.0: pure-QML standalone plugin over stock moonlight-qt (discover via avahi, add by IP, pair, list apps, stream). Two-mode product framing: standalone Sunshine helper first, Hydra ExperienceNet mode ("Set up your ExperienceNet") as the plug-and-play upsell. Starter Hydra mode = link-out; guided flow later (cluster URL + enrollment token, then agent install behind explicit opt-in).
  • v0.2.0: real Quattro shell integration (BarWidget base + BarIconButton + KeyboardPanel idiom), IPC scripting surface, parser hardening. Validated end to end on the Air including a live stream from a test body.
  • Pairing rework: plugin generates the PIN (moonlight pair --pin), completion detected by outcome (poll moonlight list), lingering pair process reaped. Fresh-pair flow validated against chunky (bxl1-test-2). Stop ends both sides (moonlight quit), after a test left a stale session on a production body.
  • Branding per owner: bar icon is the Hydra mark with widened serpent gaps for bar size, spins while streaming; panel has the full mark as a top-right watermark, counter-clockwise, fully inside the panel; panel sized to content; preview.png refreshed.
  • Test rule (owner): test only against bodies in test districts (bxl1-test*), never production bodies.

Decisions and history in detail live in this issue's edit history and the repo's git log. Related: #549 (proactive pairing reconcile for the cluster; standalone plugin unaffected), #534 (omarchy head/agent leftovers), #499 (release artifact naming, still open; the PLUGIN display name "HydraHead" is decided).

Air side effects (done during this work)

  • The Air was upgraded to omarchy v4 Quattro (omarchy-upgrade-to-quattro); HandleLidSwitch=ignore set after a closed-lid reboot stranded it; the Quattro upgrade blanked the agent's server_url in ~/.hydraheadflatscreen/config.yaml (restored, agent healthy).

Comments (1)

api 27 Aug 2026 20:39

2026-08-27: v0.5.1-0.5.8 shipped and owner-validated at home (Air body -> phone Moonlight). Root cause of clients-discover-but-cannot-connect: ufw default-deny with mDNS allowed; setup-body.sh now opens the Sunshine ports with consent and records the outcome in a ufw-ports-open marker that gates the panel warning. Also: start/stop transition spinner with live notes and error capture (packaged unit has ExecStartPre=sleep 5), Model.dropSelf drops self-discovery from the head view, Remove body setup only in the stopped state, counter-clockwise marks, README safety list corrected, new testbook docs/testbooks/body-mode-e2e.md. Air runs v0.5.8. Marketplace submission still ON HOLD.