Skip to content

v2.6.4 — Modpack feature

Choose a tag to compare

@AdaInTheLab AdaInTheLab released this 13 May 00:33
40d2277

What's new since v2.6.2

A marquee feature + a slate of UX, ops, and i18n improvements. v2.6.3 was bumped on main but never tagged — this release folds it into v2.6.4 so the public history stays clean.

🎯 Modpack — Bundle installed mods for player download

Like Minecraft modpacks. Admin picks installed mods, names + versions a "pack," builds a zip, publishes. Once published, a top-right download CTA appears on the login page so players can grab matching client-side mods without needing a panel account.

  • Mods → new Modpack tab with mod picker, name + version + description
  • Three-state workflow: draft → published → archived
  • Anonymous metadata + download endpoints (no auth required)
  • Atomic temp-file zip build so public downloaders can't grab a half-written archive mid-rebuild
  • Bundle target is <game-root>/KitsuneModpacks/ (parallel to KitsuneBackups)

(PR #64)

🛠 Graceful Restart — Daily restarts with player warnings

Schedule daily restarts with a player-friendly in-game countdown.

  • Configurable warning ladder (default: 10 min / 5 min / 1 min / 0 min, escalating colors)
  • IANA-timezone schedule (DST-aware) — e.g. 04:00 America/Los_Angeles follows the actual wall clock through PDT/PST transitions
  • krestart [minutes] console command for on-demand restarts
  • Manual "Restart Now" button in the Settings → Server Restart tab
  • Re-entrancy guard prevents overlapping countdowns

Replaces the systemd-timer-plus-shell-script stopgap from v2.6.1.

(PRs #57, #58)

🐛 Backups silent write loss

BackupService had a redundant conn.Open() call on every method — six call sites total. The custom System.Data.SQLite build that ships with KC silently dropped INSERT/UPDATE statements after a double-Open (no exception, just no row written). Reads worked, so the bug went unnoticed until the first hands-on test of the backup feature, where ZIPs appeared on disk but the audit table stayed empty.

(PR #56)

🌍 German, French, Spanish locales

Polite-form translations across ~250 keys / 30 namespaces in each. Browser auto-detect now picks the right one for de-* / fr-* / es-* visitors. Tooltip on the language switcher notes that in-game broadcast messages don't auto-translate.

8 supported locales total: English, German, French, Spanish, Chinese Simplified, Chinese Traditional, Japanese, Korean.

(PRs #59, #61, #62)

✨ Favicon refresh

Regenerated all four favicon variants (favicon.svg, favicon-16x16.png, favicon-32x32.png, favicon.ico) from kitsune-command-logo-transparent.png so the browser tab matches the panel's sidebar logo. Tooling: tools/regen-favicons.py (Pillow only, single source-of-truth).

(PR #60)

📝 README updates

Features list now reflects Vote Rewards (was missed in v2.6.2's README pass), Graceful Restart, Trader Zone Toggle, and Modpack.

(PRs #63, #65)

Installation

Server (KitsuneCommand)

Download KitsuneCommand-v2.6.4.zip, extract, drop KitsuneCommand/ into your server's Mods/ directory.

Client (optional — KitsuneTraderUnlock)

Unchanged from v2.6.1. Only needed for V2's locked-down client if you want to interact with trader-area blocks when an admin opens them up via ktrader off.

Operators upgrading from v2.6.2

Drop the new ZIP in place and restart. No migration steps needed beyond letting the new 010_modpack.sql migration apply on first boot. If you were using the systemd timer + shell script stopgap for graceful restarts (set up earlier this cycle), disable it before deploying — KC's GracefulRestart feature now handles that natively and the two would fire at the same time otherwise.

🤖 Release notes generated with Claude Code