Skip to content

Bump KitsuneCommand to v2.6.3#63

Merged
AdaInTheLab merged 1 commit into
mainfrom
chore/bump-2.6.3
May 13, 2026
Merged

Bump KitsuneCommand to v2.6.3#63
AdaInTheLab merged 1 commit into
mainfrom
chore/bump-2.6.3

Conversation

@AdaInTheLab
Copy link
Copy Markdown
Collaborator

Summary

Version bump for v2.6.3 + README catch-up. Tag the release after this merges.

What's in v2.6.3

Marquee feature: Graceful Restart

Schedule a daily server restart with player-friendly in-game countdown warnings. Configurable warning ladder (default 10/5/1/0 min with escalating colors), IANA-timezone schedule that handles DST automatically, manual `krestart` console command, REST API at `/api/restart/*`, dedicated Settings tab. Replaces the brittle "systemctl restart at 4am with no warning" pattern most admins were stuck with. (#57, #58)

3 new locales: German, French, Spanish

Full polite-form translations alongside the existing English / 简体中文 / 繁體中文 / 日本語 / 한국어. Browser auto-detect now matches `de-` / `fr-` / `es-*` visitors directly to their language. New tooltip on the language switcher flags that in-game broadcast strings (vote thanks, restart warnings) stay in their saved language — they don't auto-translate when the panel UI does. (#59, #61, #62)

Backups: silent write loss fix

`BackupService` had six redundant `conn.Open()` calls inside `using (var conn = _db.CreateConnection())` blocks. The factory already returns an opened connection, so this was opening twice — and the custom-built System.Data.SQLite that ships with the mod has a quirk where this silently drops subsequent INSERT/UPDATE statements without throwing. Result: clicking Create Backup made the ZIP on disk but the audit row never persisted, the schedule scheduler's settings save silently dropped, and the panel reported "No backups yet" forever. Fix: remove the double-Opens. Self-explanatory. (#56)

Vote Rewards: correct player-id resolution

Dispatch was naively returning `Steam_<76digit>` as the player_id, which doesn't match the actual cross-platform id 7D2D V2 uses (`EOS_<32hex>` for everyone, including Steam-platform players). Result: every vote-grant created an orphan `points_info` row keyed by Steam_-form instead of merging with the player's real EOS-keyed row. Fix: resolve via LivePlayerManager when the voter is online; document the offline-fallback edge case in code. (#54)

Favicon refresh

Browser-tab favicon was the original orange cartoon-fox silhouette from v2.6.1. The actual panel logo (sidebar, login) is the green geometric circuit-kitsune in a ring. They didn't read as the same brand. Regenerated all four favicon variants (`favicon.svg` / `favicon-{16,32}x{16,32}.png` / `favicon.ico`) from the canonical `kitsune-command-logo-transparent.png` so the tab matches the panel. `tools/regen-favicons.py` keeps them in lockstep if the logo ever changes. (#60)

README catch-up

The features list missed:

  • Vote-for-Rewards — shipped in v2.6.2 but never made it into the readme
  • Graceful Restart — new in v2.6.3
  • Trader Zone Toggle — shipped in v2.6.0 but never made it into the readme

Added all three. Localization bumped from "5 Languages" to "8 Languages" with auto-detect note.

Files

File What
`src/KitsuneCommand/ModInfo.xml` `Version value="2.6.2" → "2.6.3"`
`README.md` Features list + localization update

Test plan

  • Merge this
  • Tag `v2.6.3` from the merge commit
  • Build + zip the dist as `KitsuneCommand-v2.6.3.zip`
  • Create the GitHub release with prose notes (I'll draft them post-merge)
  • Deploy to prod, verify boot log shows V 2.6.3 in the ModInfo and the new tab/locales render in the panel

🤖 Generated with Claude Code

Marquee additions since v2.6.2:

- Graceful Restart feature: scheduled daily restarts with player-friendly
  in-game countdown warnings. Configurable warning ladder, IANA-timezone
  schedule (DST-aware), krestart console command, REST endpoints, panel
  Settings tab.
- Backups bug fix: BackupService had a redundant conn.Open() call that
  silently dropped writes (custom System.Data.SQLite quirk). Reads kept
  working so the bug wasn't caught until the first hands-on test.
- Vote Rewards player-id resolution: dispatch now resolves the voter via
  LivePlayerManager so points land on the player's real EOS-keyed row
  instead of orphaning a Steam_-keyed sibling row.
- 3 new locales: German, French, Spanish. Polite-form translations
  throughout. Browser auto-detect now matches de-* / fr-* / es-* visitors
  to their locale. Plus a tooltip on the language switcher explaining
  that in-game broadcast strings stay in their saved language.
- Favicon refresh: regenerated from the canonical kitsune-command-logo
  PNG so browser-tab and panel-sidebar branding match.

README:
- Vote Rewards added to the Economy & Rewards features list (was
  missing — the feature shipped in v2.6.2 but the README missed it)
- Graceful Restart added to Server Management features
- Trader Zone Toggle added to Server Management (was missing too)
- Localization bumped 5 -> 8 languages, with auto-detect note

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AdaInTheLab AdaInTheLab merged commit 2eb6131 into main May 13, 2026
2 checks passed
@AdaInTheLab AdaInTheLab deleted the chore/bump-2.6.3 branch May 13, 2026 00:10
AdaInTheLab added a commit that referenced this pull request May 13, 2026
Rolls up everything since v2.6.2 into a single release tag. v2.6.3
was bumped on main (#63) but never tagged or released — folding it
into v2.6.4 keeps the public release history clean.

Marquee additions since v2.6.2:

- Modpack (#64) — Bundle installed mods into a single zip players can
  download from the login page. No panel account required. Three-state
  workflow (draft → published → archived), top-right CTA on the login
  page, anonymous metadata + download endpoints. Atomic temp-file zip
  build so public downloaders can't grab a half-written archive.

- Graceful Restart (#57, #58) — Scheduled daily restarts with
  player-friendly in-game countdown warnings. Configurable warning
  ladder, IANA-timezone schedule (DST-aware), krestart console command,
  REST endpoints, panel Settings tab.

- Backups bug fix (#56) — BackupService had a redundant conn.Open()
  call that silently dropped writes due to a custom System.Data.SQLite
  quirk. Reads worked, so the bug went unnoticed until first hands-on
  test. Six call sites fixed, class doc comment added so future-me
  doesn't reintroduce it.

- German / French / Spanish locales (#59, #61, #62) — Full polite-form
  translations across ~250 keys / 30 namespaces. Browser auto-detect
  picks the right one for de-* / fr-* / es-* visitors. Tooltip on the
  language switcher noting that in-game broadcast messages don't
  auto-translate.

- Favicon (#60) — Regenerated all four favicon variants (svg / 16 /
  32 / ico) from kitsune-command-logo-transparent.png so the browser
  tab matches the panel's sidebar logo.

- README updates: features list now reflects all the above.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant