Skip to content

Bump KitsuneCommand to v2.6.3#63

Open
AdaInTheLab wants to merge 1 commit intomainfrom
chore/bump-2.6.3
Open

Bump KitsuneCommand to v2.6.3#63
AdaInTheLab wants to merge 1 commit intomainfrom
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>
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