Commit Graph
472 Commits
Author SHA1 Message Date
remco 4e58da9a7a Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 43s
2026-07-18 16:14:36 +02:00
remco 0ea2e400bd Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 42s
2026-07-18 16:13:05 +02:00
remco 61b774ce62 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 47s
2026-07-18 16:10:42 +02:00
remco 933060208f Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 45s
2026-07-18 16:07:02 +02:00
remco 2b766bfd13 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Failing after 48s
2026-07-18 16:05:15 +02:00
remco d488162bec Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Failing after 48s
2026-07-18 16:03:40 +02:00
remco 641a60fb74 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Failing after 49s
2026-07-18 16:02:07 +02:00
remco f018f85dec Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 50s
2026-07-18 15:59:52 +02:00
remco dc90d6ec36 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 54s
2026-07-18 15:57:25 +02:00
remco 60515393f5 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 49s
2026-07-18 15:50:25 +02:00
remco c73f41dc70 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 48s
2026-07-18 15:49:11 +02:00
remco dc627cf1db Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 2m22s
2026-07-18 15:44:07 +02:00
openhands 43305ef600 Fix notifications API returning object instead of array
Local Build and Deploy / deploy (push) Successful in 2m12s
getNotifications() returns { notifications, total }, but the API route
wrapped that whole object as data.notifications. The client then called
.slice() on an object, throwing 's.slice is not a function' and crashing
every page via the global NotificationBell. Extract the array before
returning.
2026-07-18 15:40:37 +02:00
remco 087a015f6e Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 46s
2026-07-18 14:53:29 +02:00
openhands 38d19194ef Fix next.config.ts: remove deprecated eslint and invalid sentry hideSourceMaps
Local Build and Deploy / deploy (push) Successful in 42s
2026-07-18 14:47:32 +02:00
openhands c6a6653803 Fix build: move store import from admin-nav to layout only
Local Build and Deploy / deploy (push) Successful in 51s
admin-nav.ts was importing from store.ts (server-only), which caused
build errors when admin-topbar.tsx (client component) pulled in admin-nav.
Now layout.tsx directly imports from store and passes enabled state to
allNavGroups().
2026-07-18 14:44:45 +02:00
openhands 127d5dcfa6 Upgrade plugin system: lifecycle hooks, dependency checks, enabled gating
Local Build and Deploy / deploy (push) Failing after 48s
- PluginDefinition: add license, homepage, dependencies, onEnable, onDisable
- store.ts: call onEnable/onDisable hooks on toggle, fix circular dependency
- admin-nav.ts: async allEnabledHubs/allEnabledNavGroups filters by enabled state
- layout.tsx: pass filtered nav groups to sidebar
- client.tsx: show Disabled/Missing deps badges, dim disabled plugins
- API: return dependency info, lifecycle hooks on PATCH
- Radio depends on API, Events depends on Notifications
2026-07-18 14:38:56 +02:00
openhands d56c48a0b3 Clean up plugins: keep only optional extensions, remove core features
Local Build and Deploy / deploy (push) Successful in 1m10s
Removed plugins that were core CMS features (News, Shop, Catalog, Social,
Moderation, Security, Permissions, Bans, Teams, RCON, Audit, Email,
Maintenance, Rooms). Kept only toggleable optional extensions:

- Games, Radio, Notifications, Analytics, SEO, API & Integrations
- Events & Polls, Support Tickets, VPN Detection, Translation Tools
2026-07-18 14:29:37 +02:00
remco e7beae1ca0 Update .gitea/workflows/deploy.yaml
Local Build and Deploy / deploy (push) Successful in 1m19s
2026-07-18 14:27:00 +02:00
openhands bbdc94870a Add 12 more plugins (Events, Tickets, Bans, VPN, Permissions, Teams, RCON, Audit, Email, Maintenance, Rooms, Translations)
Local Build and Deploy / deploy (push) Successful in 1m10s
Total: 24 plugins now registered and visible in the Plugins hub admin panel.
2026-07-18 14:26:03 +02:00
openhands b40cac775c Fix plugins not showing in admin panel
Local Build and Deploy / deploy (push) Successful in 1m7s
API route at /api/admin/plugins imports pluginRegistry from @/lib/plugins
but the loader (which registers all plugins) was only imported in admin-nav.ts.
Import loader in index.ts so it runs for any consumer of the plugins module.
2026-07-18 14:22:26 +02:00
openhands 2b9bd1773a Move plugins from Settings tab to own hub with sidebar entry
Local Build and Deploy / deploy (push) Successful in 1m9s
- Remove /admin/plugins from Settings hub prefixes and tabs
- Add dedicated Plugins hub with Puzzle icon
- Add sidebar nav group entry for Plugins in ADMIN_NAV_GROUPS
- Add i18n keys: hub plugins, pluginsSubtitle, pluginsGroup, hubPlugins
2026-07-18 14:18:50 +02:00
openhands be5d2bfec4 Add 8 more built-in plugins (News, Shop, Catalog, Analytics, Social, SEO, Security, API)
Local Build and Deploy / deploy (push) Successful in 1m14s
All 12 plugins now show in Admin > Settings > Plugins with toggle switches and
per-plugin configuration forms.
2026-07-18 14:12:34 +02:00
openhands 90cebad68d Add Radio, Notifications, Moderation plugins with config UI
Local Build and Deploy / deploy (push) Successful in 1m15s
Plugins page now shows 4 toggleable plugins with config forms:
- Games: in-game mini-game management
- Radio: stream, DJ, song requests with auto-approve/song-limit config
- Notifications: in-app/push/email with retention config
- Moderation Tools: CFH, chat log, ticket config
2026-07-18 14:10:21 +02:00
openhands 83f4585167 Feature: Plugin UI, event hooks, DB notifications, web push, webhook retry, games pages, rate limiting, tests
Local Build and Deploy / deploy (push) Successful in 1m5s
- Plugin admin UI: enable/disable per plugin with config forms
- Event hooks system: HookManager with on/off/emit for plugin events
- Database notifications: persistent via WebsiteNotification table + Redis pub/sub
- Notification preferences: per-user settings with API endpoints
- Web Push API: browser push notification subscription
- Webhook retry: 3 attempts with exponential backoff (1s/3s/9s) + delivery logs
- Webhook test button + paginated delivery log viewer
- Games: rank/challenge/reward admin pages
- Games: public frontend leaderboard
- Rate limiting: search API (30/min), notification stream dedup
- Unit tests: 28 new tests (registry, notifications, webhooks)
- Prisma migration 0017: website_notifications, website_notification_preferences, website_webhook_logs
2026-07-18 14:04:41 +02:00
openhands 8bf48f46e7 Fix: Plugin loader import + games model name + loading state
Local Build and Deploy / deploy (push) Successful in 1m31s
- Import plugin loader in admin-nav.ts so plugins actually register
- Fix Prisma model name from 'gameRoom' to 'gameRooms'
- Add loading skeleton for games admin page
2026-07-18 13:46:46 +02:00
openhands 27a7b8404b Fix: Add missing game translations to en.json for HK visibility
Local Build and Deploy / deploy (push) Successful in 1m19s
Games plugin nav labels, hub titles, and page translations now
properly included in the main message file so the admin sidebar
and hub tabs render correctly in the housekeeping panel.
2026-07-18 13:42:57 +02:00
openhands 98d2b92218 Feature: Plugin system, site search, notifications, webhooks, caching & loading states
Local Build and Deploy / deploy (push) Successful in 1m2s
- Plugin/module system with registry, hooks for admin nav/permissions/i18n
- Example Games plugin demonstrating the plugin system
- Site-wide search with Cmd+K command palette (cmdk-based)
- Real-time notification system (SSE + Redis pub/sub)
- Extensible webhook system with admin management UI
- Caching strategy: tiered data cache (unstable_cache + Redis)
- Theme import/export as JSON
- Loading states (spinner/skeleton) for all public pages
- Mobile responsive fixes (admin dashboard, guilds page)
- Webhooks admin page under Settings hub
2026-07-18 13:37:19 +02:00
SimoandCursor 09f1bc2bd6 Add production observability: Sentry, pino, and sharp badge encoding.
Local Build and Deploy / deploy (push) Successful in 1m9s
Sentry is opt-in via DSN env vars; logger uses structured pino JSON in prod; badge uploads are normalized to GIF with sharp.

Co-authored-by: Cursor <[email protected]>
2026-07-17 23:09:57 +02:00
SimoandCursor 6c81af69ea Remove half-installed sentry/pino/sharp from the lockfile.
Local Build and Deploy / deploy (push) Successful in 1m2s
Keeps frozen-lockfile installs aligned with package.json after an interrupted dependency add.

Co-authored-by: Cursor <[email protected]>
2026-07-17 23:03:36 +02:00
SimoandCursor 6a830e7c5e Fix pnpm frozen-lockfile mismatch for postcss.
Local Build and Deploy / deploy (push) Failing after 16s
Align workspace override and lockfile specifier with package.json ^8.5.19.

Co-authored-by: Cursor <[email protected]>
2026-07-17 23:01:31 +02:00
SimoandCursor ef2c3324b4 Prune unused deps, bump safe minors, add server-only guards.
Local Build and Deploy / deploy (push) Failing after 15s
Remove unused translate/jpeg types packages; refresh patch updates; mark Redis/site-settings/gamedata hotel as server-only with a Vitest stub.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:53:56 +02:00
SimoandCursor a798999440 Refresh Suggest hotel label from live CMS setting.
Local Build and Deploy / deploy (push) Successful in 56s
Avoid stale SSR/Redis cache keeping Suggest IT after habbo_gamedata_hotel changes.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:36:10 +02:00
SimoandCursor 785c1b6976 Fix client bundle pulling Redis/Prisma via habbo gamedata hotel.
Local Build and Deploy / deploy (push) Successful in 54s
Keep hotel list helpers client-safe; load CMS setting only from a server module.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:30:46 +02:00
SimoandCursor d1baaf798a Add multi-hotel Habbo gamedata locale in CMS settings.
Local Build and Deploy / deploy (push) Failing after 33s
Furni name suggestions, import enrichment, and badge texts now follow habbo_gamedata_hotel instead of hardcoded habbo.it.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:28:18 +02:00
SimoandCursor 7bc0845932 Fix catalog items missing due to page_id VARCHAR mismatch.
Local Build and Deploy / deploy (push) Successful in 56s
Use raw SQL for counts/loads/creates/moves so Habbo DBs with VARCHAR page_id and no AUTO_INCREMENT still show and persist furni.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:21:49 +02:00
SimoandCursor 33a8a19820 Fix Visual Manager opacity and load categories like CatalogTree.
Local Build and Deploy / deploy (push) Successful in 55s
Use an opaque admin-canvas portal and lazy parentId fetches instead of mode=full, which fails on large catalogs. Search no longer loads the entire tree.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:09:01 +02:00
SimoandCursor 1d8efefce4 Fix Visual Manager empty categories: seed roots, harden tree API.
Local Build and Deploy / deploy (push) Successful in 56s
Seed root tabs from SSR, load the full tree without CLEAR_TREE races, coerce parent ids, and tolerate catalog_items page_id type mismatches so category pages actually appear.

Co-authored-by: Cursor <[email protected]>
2026-07-17 22:02:53 +02:00
openhands 385cefd0fa fix: move dynamic import with ssr:false to client component wrapper
Local Build and Deploy / deploy (push) Successful in 52s
2026-07-17 21:36:47 +02:00
SimoandCursor 8083012445 Remove unused tooltip imports from catalog root tabs.
Local Build and Deploy / deploy (push) Failing after 41s
Co-authored-by: Cursor <[email protected]>
2026-07-17 21:26:48 +02:00
SimoandCursor b668ab3547 Rebuild Visual Manager as portal overlay matching habbo-next UX.
Local Build and Deploy / deploy (push) Failing after 44s
Base UI Dialog broke the Radix-era full-viewport manager. Use a body portal shell like habbo-next behavior, without DialogTitle/Popup, so tree + editor mount and nested pickers stay usable.

Co-authored-by: Cursor <[email protected]>
2026-07-17 21:26:35 +02:00
Simo e7a6587b7f Delete directory 'docs/superpowers'
Local Build and Deploy / deploy (push) Successful in 1m11s
2026-07-17 21:26:05 +02:00
SimoandCursor f6871807c9 Fix Visual Manager for Base UI: layout, tree load, no nested dialogs.
Local Build and Deploy / deploy (push) Successful in 1m9s
Move trigger outside Dialog.Root, use portal confirms and inline create forms, and load the catalog tree atomically so the manager matches the designed full-viewport UX.

Co-authored-by: Cursor <[email protected]>
2026-07-17 21:21:40 +02:00
SimoandCursor 2ff5b47104 Harden catalog writes: bulk import batch + field allowlists.
Local Build and Deploy / deploy (push) Successful in 1m16s
Bulk import resolves names from items_base and refreshes RCON once. Page/item updates only accept an allowlisted field set.

Co-authored-by: Cursor <[email protected]>
2026-07-17 21:14:35 +02:00
SimoandCursor b52e25578d Harden catalog admin: fix translate/quick-add, RCON sync, and confirm UX.
Local Build and Deploy / deploy (push) Successful in 1m18s
Restore broken Quick Add search, correct Translate saves to items_base and FurnitureData, reparent page deletes, sync RCON on create/toggle/BC mutations, and replace native confirms/prompts with dialogs.

Co-authored-by: Cursor <[email protected]>
2026-07-17 21:12:58 +02:00
openhands de9f837da1 fix(i18n/nl): add missing hubs/tickets/cfh sections to Dutch translations
Local Build and Deploy / deploy (push) Successful in 1m14s
2026-07-17 21:05:45 +02:00
SimoandCursor 11d3cf31cc Restore missing catalog admin API routes so Visual Manager works.
Local Build and Deploy / deploy (push) Successful in 1m10s
Co-authored-by: Cursor <[email protected]>
2026-07-17 20:57:55 +02:00
SimoandCursor ce8c3503e9 Fix language menu position by portaling out of sidebar overflow.
Local Build and Deploy / deploy (push) Successful in 1m16s
Co-authored-by: Cursor <[email protected]>
2026-07-17 20:50:41 +02:00
openhands b78d691281 fix(i18n): add missing save/importTitle keys, sync admin keys across all languages
Local Build and Deploy / deploy (push) Successful in 1m6s
2026-07-17 20:46:58 +02:00
SimoandCursor 06610e9ae3 Migrate tickets and CFH lists to DataTable; confirm destructive mod actions.
Local Build and Deploy / deploy (push) Successful in 1m9s
Co-authored-by: Cursor <[email protected]>
2026-07-17 20:37:50 +02:00