Phase 2 references for the host-agent Dune adapter, moved out of volatile /tmp
into docs/reference-repos/ (per Commander). Three upstream projects, .git +
node_modules + compiled binaries stripped (16MB source). Nested AI-instruction
files (.claude/, CLAUDE.md) removed so they don't pollute Corrosion sessions.
- icehunter/ dune-admin (Go+React) — 4 control planes; SETUP_DOCKER.md is the
closest analog to our agent's Dune docker control plane (compose
lifecycle, docker logs, RabbitMQ-via-exec, dune Postgres schema)
- adainrivers/ Rust/Tauri desktop — SSH+k8s BattleGroup control, maintenance
daemon, in-game admin console (Rust idiom reference)
- the4rchangel/ Node web UI replacing battlegroup.bat — matches the Commander's
Hyper-V self-host path + game-config schema
See docs/reference-repos/README.md for the full index + how we use each.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
A fix-focused release. Knocks down a cluster of install-time crashes, makes the backup schedule configurable, surfaces the full ServerShutdown broadcast in the admin UI, and adds a guarded cleanup for accumulated database-operation pods.
Reinstall step
After updating the desktop app, click Install / Update on the Management Service card so the refreshed on-host service binary is pushed. If you previously workaround-started the service with sudo ./dune-server-service &, kill that process first so the new systemd / OpenRC unit owns the only running copy.
Fixed
- Management service silently failed to start on install (issues #5, #6). The install flow now pre-creates every directory the systemd / OpenRC unit references (
~/.dune,~/.dune/state,~/.local,~/.steam,~/Steam) withdune:duneownership, plus the supervisor log file. Previously the unit started, immediately tripped on mount-namespace setup, and exited withstatus=226/NAMESPACEonly visible injournalctl. - Service now always runs as the
duneuser, regardless of which account you SSH in as (issue #3). The installer no longer rewrites the systemd unit with the SSH user's home; it pinsUser=dune Group=duneand paths under/home/dune. Operators logging in asrootorubuntuno longer get a unit pointing at/root/.steamthat fails to mount. - Battlegroup start / stop / restart / update use the registered SSH user for vendor-wrapper impersonation instead of hardcoding
dune. Fixes a half-broken state from v0.3.6 where status reads worked but lifecycle actions silently misbehaved. - Manual ServerShutdown broadcast no longer no-ops. Previously sent an empty payload that the game discarded; now sends the full countdown shape with
ShutdownType,ShutdownTimestamp,BroadcastFrequency, andBroadcastDuration. - OpenRC unit self-heals on every start.
start_prenow also creates the parent.dunedirectory and the supervisor log file viacheckpath. - Install verify step shows why the service is not active by tailing
journalctl(systemd) or the supervisor log (OpenRC). No more empty-parenthesis "not active ()" message.
Added
- Configurable backup schedule via 5-field cron expression, with live validation and a preview of the next 5 fire times in your configured timezone. Default is disabled — vendor backups block server I/O for the full dump, so the manager no longer schedules them automatically. Set your own cadence under Management -> Automated Tasks -> Configure.
- Full ServerShutdown broadcast surface in Admin -> Broadcast: ShutdownType selector (Restart / Maintenance / Update), lead time, repeat frequency, display duration, and a "Cancel pending shutdown" toggle that short-circuits the payload (per the protocol parser). The scheduled
restart-noticetask ships the same shape so manual and automatic flows are now consistent. - "Clean up database operations" button on Management -> Automated Tasks. Lists every terminal
DatabaseOperationCR (Succeeded or Failed, dump or import) with phase badges, lets you tick which to delete, then deletes them viakubectl delete databaseoperation. The.backupfiles on disk are never touched, in-progress operations are never listed, and the server re-validates every item server-side before deleting. - Static musl service binary ships in every release, so the daemon runs on Alpine images without a glibc loader.
Changed
- The
publish_server_shutdownhelper that backs the scheduled restart-notice broadcast now emitsBroadcastDurationso its payload matches the manual Admin form and the protocol spec. - The on-install account discovery no longer follows the SSH login user — it resolves the canonical
duneuser viagetent passwd duneand errors loudly if the vendor setup has not provisioned that account yet. - Bundled systemd unit marks
/funcom/artifacts/database-dumpsas optional (-prefix onReadWritePaths), so a fresh host without k3s + vendor setup no longer namespace-faults on first start.