docs(reference): import Dune: Awakening server-manager references
All checks were successful
CI / backend-types (push) Successful in 10s
CI / frontend-build (push) Successful in 15s
CI / agent-tests (push) Successful in 39s
CI / integration (push) Successful in 22s

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>
This commit is contained in:
Vantz Stockwell
2026-06-11 21:08:05 -04:00
parent 0715492ddf
commit 651a35d4be
1334 changed files with 238971 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
# 0.3.12
First release of the Welcome Package automation: a per-player onboarding flow that runs on the on-host management service, detects new players from the game Postgres database, inserts configured backpack items directly into the game database, and can send a separate welcome whisper through the existing MQ chat path. Includes a Visual + JSON editor in the desktop app, a SQLite-backed package ledger, and several follow-up fixes from internal review.
This is the first tagged release since v0.3.9. All 0.3.10 / 0.3.11 / 0.3.12 work ships together.
## Reinstall step
After updating the desktop app, open each server's Management Service card and click **Install / Update** so the refreshed on-host `dune-server-service` binary is pushed. The Welcome Package tab will not function until the host service is at v0.3.12.
## Added
- **Welcome Package tab** in the management view, with separate toggles for the welcome message (whisper) and the item package.
- **Package contents editor** for item rows. Each row inserts the configured `itemName` (Unreal FName / row name) and `quantity` into the player's backpack; durability defaults to `1.0`.
- **Optional raw JSON mode** on the package contents editor. Toggle the checkbox to swap the visual editor for a textarea you can paste / hand-edit, so a long package can be saved and restored without re-clicking every row. Switching back to the visual editor parses and validates first; an invalid textarea keeps you in JSON mode with an inline error so a typo cannot silently drop items.
- **Welcome whisper** support: configurable source player, message body, and a separate "Send test whisper" button that works even when the automated welcome message is disabled. Whispers publish on `chat.whispers` using the live-tested player-sourced shape.
- **Single transaction item grants**: all configured item rows are inserted into the player's backpack in one Postgres transaction. The package ledger is marked granted only after that transaction commits.
- **Full water-container grants**: known fillable containers such as `Literjon` and `Decajon` include embedded fillable stats for a full water container.
- **Recent welcome grants** table in the Welcome Package tab, backed by the daemon ledger. Failed rows show the error and a **Retry** button that clears the failed record so the next scan re-attempts the grant; granted rows are never cleared, so a retry can't duplicate a package.
- **Manual welcome scan** button in the Automated Tasks tab so a test pass does not have to wait for the next poll interval.
- **`scripts/rebuild-release.cmd`** helper for local release rebuilds: workspace tests, frontend build, musl service cross-compile, bundled binary copy, and Tauri NSIS in one shot.
## Fixed
- `welcome_package_items_json` (legacy alias) no longer clobbers `welcome_package_actions_json` when both are sent in the same `PATCH /api/config` request. The legacy field is only applied when the canonical field is absent.
- `welcome_package_version` mismatches now return `400 "currently fixed to v1 and cannot be changed"` instead of accepting the value and silently dropping it. Echoing the same `v1` value remains a no-op so the existing UI save flow still works.
- Removed the old MQ item-grant path, planned item ids, water-refill actions, and empty-backpack wait. Item packages now wait only for the player's backpack inventory row to exist.
- Dropped the inline 30-second `wait_for_item_quantity` poll inside `process_grant_item`. The direct DB transaction is the confirmation point, and missing backpacks do not create ledger rows until a later scan finds the backpack.
- Welcome automation no longer waits for the game DB `online_status` flag before running. Item grants are DB-backed, and welcome whispers are attempted from the configured chat identity without an online-grace gate.
## Changed
- Renamed the welcome automation toggles to "new players" in the UI so the wording matches the worker's actual scope.
- Split welcome message automation from welcome package grants so each can be enabled independently. Sending a manual test welcome whisper no longer overwrites unsaved tab state.
- The welcome whisper now runs on its own worker at a 60-second cadence instead of riding the 2-second package scan. A cheap local check skips accounts whose whisper is already confirmed before any Postgres chat lookup, so the fast item-grant loop no longer pays for a per-account chat query every tick.
## Notes
- Welcome Package timing on a fresh player: the service scans every 2 seconds while welcome automation is enabled. Once the service sees the account and its backpack inventory row exists, item insertion can happen on that scan.
- The package ledger is keyed by `(player_id, package_version, account_id)`. Recreating a character under the same FLS id creates a new `account_id`, so the welcome package can be granted again to the new character. Editing the item list while keeping the same `welcome_package_version` will not re-grant rows already marked granted for that account. The `welcome_package_version` field is currently pinned to `v1` server-side; "re-grant everyone" via a version bump is not yet wired up.
- This experiment only grants backpack items. Progression unlocks should stay out of direct DB writes until the game-owned tables and side effects are fully mapped.