What's Changed
Features
- feat: draft releases, credits section, and Discord webhook on publish (a51b732)
- feat: EULA and Java version alert dialogs on server console (#20) (472ffb9)
- feat: allow users to extend server subscription before expiry (#19) (82bde38)
- feat(nodes): location edit as modal on desktop, bottom sheet on mobile (f23253e)
- feat(nodes): merge locations into nodes page with collapsible categorized table (67d12e1)
- feat(nests): rework egg import UI and table (cb11458)
- feat(auth): redesign auth pages with two-column layout and add SMTP-gated password reset (#17) (0518d73)
- feat(billing): egg switching on reinstall, admin user billing tab & token decrypt fixes (902279f)
- feat(billing): plan-node filtering, capacity stock check & sold-out UI (d4111f1)
- feat(billing): wallet, shop, referral program & admin billing settings (0b29255)
Bug Fixes
- fix: add with_components=true query param to Discord webhook (92fa380)
- fix: fallback changelog text when no commits in range (f42d02f)
- fix: remove accent color from Discord webhook container (9f3f1c9)
- fix: address second round of code-review findings (df2391a)
- fix: address code-review findings in nests and nodes admin pages (6c4150c)
- fix(nodes): widen create dropdown to min-w-56 (cf27310)
- fix(nodes): add min-width to create dropdown so items don't wrap (389769e)
- fix(i18n): add missing nests keys to all locale files, remove duplicate nameColumn (d68153b)
- fix(nests): clean table header, page numbers, remove unused translation key (56f4283)
- fix(security): sanitize user data in error constructors to close log-injection chain (e8ca63a)
- fix(security): resolve code-scanning alerts (b3b8ad3)
- fix(docker): copy watchkeeper package.json for bun workspace resolution (a27cba6)
- fix(docker): add payments package to Dockerfile (97a03ab)
- fix: validate referral percents, amountCents, savePlan inputs; i18n currency labels and hardcoded strings (54ebfe6)
- fix: pin @better-auth/api-key to 1.6.9 to match better-auth core version (24c10bc)
- fix: validate Infinity in adjustment, coerce referral percents to int, restore state on save error, replace local useIsMobile with shared hook (a2d088b)
- fix: apply code review findings across billing, watchkeeper, and web (312281d)
- fix: resolve build errors from evlog and TanStack Query type mismatch (f67e179)
- fix: new bun.lock (e1a60de)
- fix: resolve all bot review comments on billing PR (203d8fd)
Other Changes
- docs: move Discord badge inline with stack badges (41f710d)
- docs: add Discord badge to README (a680035)
- chore: update company name to Disaster Limited (9182beb)
- chore: fix README footer copyright notice (1a0ec10)
- chore: update README footer to The Hosting Company Ltd (343a906)
- chore: update license holder to The Hosting Company Ltd (0c991b4)
Credits
@stripsior
Docker Images
docker pull ghcr.io/struxadotcloud/dashboard:1.1.0
docker pull ghcr.io/struxadotcloud/watchkeeper:1.1.0
docker pull ghcr.io/struxadotcloud/migrate:1.1.0
Deploy
Install
bash <(curl -fsSL https://install.struxa.cloud)
Update
bash <(curl -fsSL https://install.struxa.cloud) update