Commit Graph
89 Commits
Author SHA1 Message Date
openhands f832479e52 feat(catalog): add auto-category wizard with live preview and smart suggestions
- Add AutoCategoryDialog: pick furni (or empty page), suggest caption/icon/layout, live preview
- Add createAutoCategory server action (page + offers in one export) with CatalogKind
- Extend furni search API with interactionType
- Share ShopTile and refactor inline-editor/items-shop-preview to use it
- Add suggestion heuristics (suggestCategoryName/dIcon/layout) with tests
- Add autoCategory translations (en/nl)
2026-09-11 18:47:31 +02:00
simoleo c5a2b44807 feat(catalog): undo bulk offer edits with guarded history restoration 2026-09-11 10:47:46 +02:00
simoleo 13bd3695cb feat(studio): recover matching Nitro sources and persist import phases 2026-09-11 10:22:06 +02:00
simoleo 00e33623f7 feat(devops): diagnose slow HK requests and dependency timings 2026-09-11 09:48:19 +02:00
simoleo 88790d1a0d feat(cms): recover drafts and failed imports with verified UI workflows 2026-09-11 08:58:10 +02:00
simoleo db4acbb46e feat(editorial): validate publications and preserve partial event updates 2026-09-11 00:36:55 +02:00
simoleo 96d3e3f602 feat(events): add weekly browsing and personal registrations 2026-09-11 00:27:41 +02:00
simoleo a537c55793 feat(me): show actionable personal tasks with unavailable states 2026-09-11 00:15:46 +02:00
simoleo 1ef405be0a feat(cms): add recovery history and operational reliability tools 2026-09-09 21:57:56 +02:00
simoleo 89526af344 feat(hk): expand search and add operational user overview 2026-09-09 21:14:10 +02:00
simoleo 047cd9f3dd feat(catalog): add saved packages, preview and bulk price editing 2026-09-09 20:04:10 +02:00
simoleo c389c3893d feat(cms): improve catalog, editorial recovery and operations 2026-09-09 19:36:15 +02:00
simoleo 35d0f3ee01 fix(catalog): make access controls visible and compact 2026-09-06 21:08:52 +02:00
simoleo 93a7e9a7c2 feat(catalog): improve visual manager search and offer discovery 2026-09-06 20:58:53 +02:00
simoleo 55a47949f1 feat(catalog): add reviewed bulk edits and complete category duplication 2026-09-06 20:25:19 +02:00
simoleo 193b6686a9 refactor(catalog): unify commands and embed guarded catalog workspace 2026-09-06 19:40:52 +02:00
simoleo 9b0ea2fb16 fix(news): restore publication flow and deduplicate dashboard friends 2026-09-06 18:32:43 +02:00
simoleo ef94646d60 fix(i18n): persist CMS translations and validate message catalogs 2026-09-06 17:55:11 +02:00
simoleo 2578bf6a09 Improve HK sidebar and restore nested content scrolling 2026-09-05 12:50:52 +02:00
openhands a30e4af32e feat: polish toolbar, live online count via SSE + emulator 3-state
- Add emulator status 3-state (unknown/green/red) with tooltip
- Extract shared primary button style/constants for DRY toolbar code
- Add emulatorUnknown translations to all 25 locales
- Bump Next.js to 16.3.4
- Fix RCON delivery timeout caching (15s TTL / shared across clients)
- Who's-online tooltip throttled to max 1 request per 30s
2026-09-02 21:34:30 +02:00
openhands 67b67798b9 feat(client): polished toolbar, live online count via SSE
- Redesign in-game client toolbar with refined glass styling and buttons
- Live online count + emulator status streamed over SSE multicast
- Who's-online tooltip throttled to reduce repeated requests
- Fix show button so it always returns the hidden toolbar
- Use theme CSS variables instead of hardcoded colors
- Add toolbar translations across all 25 locales
2026-09-02 21:14:42 +02:00
openhands a98b194386 feat: add scoped theme builder system with per-route, per-module, and multi-site support
- Add theme_scopes and theme_scope_values database tables for scoped themes
- Implement theme resolver engine with inheritance: global > site > module > route
- Add module detection for 20+ routes (shop, guilds, radio, news, etc.)
- Create admin UI at /admin/theme-builder with scope tree and color editor
- Add ScopedThemeVars component for injecting scoped CSS via data-attributes
- Add ThemeScopeDetector client component for runtime module/route detection
- Add site-resolver for multi-site domain detection
- Add /api/themes/export endpoint (JSON, CSS, variables formats)
- Add /api/themes/export/embed.js for external integration widget
- Add server actions for full CRUD on scopes and theme values
- Add admin nav link and EN/NL translations
2026-08-31 17:15:42 +02:00
simoleo b1ddda66ff Revert "Merge pull request 'Complete Housekeeping migration and /ase cutover' (#52) from codex/housekeeping-complete into main"
This reverts commit 488b6e57c4, reversing
changes made to b506b4499a.
2026-08-30 21:31:34 +02:00
simoleo a113e48880 feat(housekeeping): finish accessible command deck 2026-08-30 18:49:10 +02:00
openhands f2ac4745d4 feat: redesign home and register pages for cleaner overview
Rebuild the home landing layout into a streamlined, more scannable
design: a centered focused hero, feature cards, a compact stats row,
and clearer news/users sections. Rework the register page into a
balanced two-column layout with a tidier intro panel and sticky form.
Add statsArticles translation key across locale files; verified with
tsc and biome.
2026-08-29 21:56:52 +02:00
openhands f25a26a93e Register: auto sign-in to /me and speed/cleanup improvements
- Send the verification email after the response via after() so it
  never blocks sign-up
- Invalidate the cached login lookup right after account creation so
  the automatic sign-in always finds the fresh row
- Auto sign in with the submitted credentials and go straight to /me,
  with a fallback to /login?registered=1 if sign-in is refused (e.g.
  email verification required)
- Cache the register page's online/latest user queries to cut DB load
  under traffic
- Fix terms checkbox label double-toggle cancelling the selection
- Add pages.register.redirecting translation to all locales
2026-08-26 14:57:51 +02:00
openhands 1a0d20fae5 i18n: add pages.admin.studio namespace to all 22 locale files (EN placeholders + Dutch) 2026-08-24 20:48:13 +02:00
openhands 536b61c7e7 Add catalog maintenance page with sprite-id, dedup and FurnitureData id-alignment repairs 2026-08-23 15:05:49 +02:00
openhands 8174ffa6af feat: add studio translation to all 13 admin nav language files 2026-08-21 20:22:16 +02:00
openhands 5b09179404 Add all-in-one Studio merging furni import and catalog management
Add a full-viewport /admin/studio workspace that unifies the import and
catalog systems into a single automated flow:

- Furni library browser against official Habbo furnidata with search,
  type/status filters, live previews and pagination
- Catalog structure rail showing where imported furniture lands
- Detail drawer with automatic placement preview (category + price via
  classifyFurni/autoPriceFurni) and one-click import that downloads
  assets, converts SWF to nitro, writes items_base, updates
  FurnitureData.json and creates an auto-priced catalog entry
- Batch auto-import with SSE progress and RCON cache refresh
- Nitro editor integration and imported-item deletion

Extract pure auto-catalog helpers (CATEGORY_PAGE, CLASSNAME_RULES,
classifyFurni, autoPriceFurni) into a client-safe module shared by the
server pipeline and the Studio UI so the preview always matches what the
emulator import applies.
2026-08-15 15:34:07 +02:00
openhands e76c530e4f Fix TypeScript errors and implement furniture import ID integrity with 18+ age verification
- Add termsAccepted and ageVerified columns to User table
- Update register schema with new boolean fields
- Fix register form age verification checkbox (th -> t)
- Fix furni-import spriteId declaration order
- Fix batch route variable naming (id -> spriteId)
- Fix catalog-audit import path and ensure correct types
- Hardened import with per-item id conflict checks
- Added audit option for FurnitureData.json spriteId conflicts
- Updated tagline to include Leeftijdsvereiste: 18+
2026-08-14 16:37:00 +02:00
openhands 11e8b06bf8 feat: add missing translations across all locales
Add 692 translation keys across 21 locale files, covering admin actions, moderation, radio, catalog, and public UI strings.
2026-08-07 18:53:39 +02:00
openhands 366fb7e538 fix: add missing Dutch translations for import hub tabs and subtitle 2026-08-05 18:11:26 +02:00
simoleoandCursor d8199ea1e4 feat(admin): unified ticket inbox over CMS and help-center queues
Merged read-model inbox at /admin/tickets and /mod/tickets with type badges and deep links; CMS-only lists moved to /desk. No DB schema merge.

Co-authored-by: Cursor <[email protected]>
2026-08-01 14:49:19 +02:00
simoleoandCursor 98613af875 feat(admin): items_base browser and AdminPageShell on core pages
Co-authored-by: Cursor <[email protected]>
2026-07-30 20:41:31 +02:00
simoleoandCursor 3ad3f9512c feat(admin): ban appeals, photos polish, economy adjust, staff smoke
Co-authored-by: Cursor <[email protected]>
2026-07-30 20:23:03 +02:00
simoleoandCursor 58fae1f90f feat(admin): analytics redis cache, shared ops health, ticket queue clarity
Co-authored-by: Cursor <[email protected]>
2026-07-30 19:57:00 +02:00
simoleoandCursor 6eab5e5343 feat(admin): ACL repair, mod users, ticket clarity, ops online hub
Add Repair nav grants on permissions, /mod/users without email/IP, shared ticket queue banners, and shared online roster on CommandoCentrum.

Co-authored-by: Cursor <[email protected]>
2026-07-30 19:37:01 +02:00
simoleoandCursor b6b8625246 feat(mod): help-center tickets queue with reduced PII
Co-authored-by: Cursor <[email protected]>
2026-07-28 20:26:57 +02:00
simoleoandCursor 01126207dc fix(admin): live online widget, ticket queue clarity, i18n+contract coverage
Co-authored-by: Cursor <[email protected]>
2026-07-28 20:22:50 +02:00
openhands 17847545dd Improvements: remove dead config, fix ESM, add URL validation, unify types, add missing logging
- Remove .prettierrc (dead config, Biome replaces Prettier)
- Rename lighthouserc.json to lighthouserc.cjs with module.exports for ESM compat
- Add logger.warn to empty catch blocks in auth, register, site-settings, prisma-cache, redis, security, rate-limit
- Unify ActionResult type: action-helper.ts uses 'ok' consistent with safe-action-shared.ts
- Add noUnusedLocals + noUnusedParameters to tsconfig + fix 25 pre-existing unused vars
- Replace barrel export src/types/index.ts with direct @/types/common imports
- Make trustHost conditional (development only) in auth.ts
- Add pre-flight URL validation to update-Nitrov3.sh to catch image.library.url misconfigurations
- Improve NITRO_IMAGE_LIBRARY_URL content validation in pre-flight & post-compute checks
2026-07-26 20:28:11 +02:00
openhands 1acace49d0 refactor: full codebase overhaul — dead code removal, env validation, logger migration, date consolidation, Prisma schema cleanup, button consistency, useEffect deps, test coverage
- env.ts: added 10 missing Zod-validated env vars (imager, paypal currency, argon2/bcrypt params)
- Migrated 6 modules from process.env to validated env.* (auth, proxy-auth, paypal, password, redis, imager, moderation, alert, logger)
- Replaced console.warn/error with pino logger in 9 server-side modules
- Removed 50+ dead exports (SWF wrappers, coalesceHotelName, signIn, isStaff re-export, formatTimestamp, Skeleton/SkeletonCard, 4 unused housekeeping sections)
- Consolidated date formatting: 28 files migrated to shared formatDate() from @/lib/format-date
- Wired 4 radio/settings API routes through cached siteSettings service instead of raw Prisma queries
- Added getMany()/getAll() helpers to SiteSettings service
- Removed 88 dead Prisma model definitions (schema 2763→1846 lines)
- Created admin action-helper.ts with wrapAction() for standardized error handling
- Fixed useEffect dependency arrays in 4 data-heavy components
- Replaced raw btn CSS classes with shadcn Button component across admin pages
- Stripped dead i18n namespaces (common, pages.client) from all 22 translation files
- Removed 2 dead scripts (create-release.sh, check-local-imports.ts)
- Fixed knip.json configuration
- Added 7 new test suites: format-date, paypal, moderation, alert, webhook, action-helper, and fixed password.test.ts for env mocking
- All 358 tests passing across 72 test files
- TypeScript: 0 errors
2026-07-25 17:33:06 +02:00
openhands 12e4a07e48 polish: typewriter SSR fix, Community link label, verify premium cards, loading skeleton 2026-07-24 14:49:07 +02:00
openhands 7f8d083763 Remove Discord and Google OAuth verification from CMS
- Remove Discord + Google OAuth providers from NextAuth config
- Remove social login buttons (Discord/Google) from login form
- Delete link-discord.ts action and discord-verify-form.tsx component
- Simplify verify page to email-only verification flow
- Remove connections settings page and its link from settings
- Clean env.ts, .env, .env.example of Discord/Google client vars
- Remove discordUrl social icon from register, login, and homepage
- Clean translation files: remove continueWithDiscord, continueWithGoogle, connections keys
2026-07-24 11:49:16 +02:00
simoleoandCursor ce6e8235cc fix(admin): housekeeping TS returns + clearer permissions UX
Co-authored-by: Cursor <[email protected]>
2026-07-22 21:39:01 +02:00
simoleoandCursor 75cace41ea feat(mod): tickets+team tabs; retire HK writes for live ACL
Co-authored-by: Cursor <[email protected]>
2026-07-22 21:35:35 +02:00
simoleoandCursor 084cca6ea4 feat(mod): lite /mod panel + clarify ACL vs housekeeping legacy
Co-authored-by: Cursor <[email protected]>
2026-07-22 21:29:32 +02:00
simoleoandCursor a384c9a8bb feat(admin): guilds console + user sanctions timeline
Co-authored-by: Cursor <[email protected]>
2026-07-22 21:19:16 +02:00
openhands dfc768c232 Add missing Dutch translations for stats/features keys on index 2026-07-22 20:35:17 +02:00
openhands 6a16029839 Add missing Dutch translations for register/login/home keys 2026-07-22 19:44:34 +02:00