openhands
17847545dd
Improvements: remove dead config, fix ESM, add URL validation, unify types, add missing logging
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m52s
- 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
...
Deploy / release (push) Skipped
Deploy / deploy (push) Failing after 8s
- 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
Deploy / release (push) Successful in 8s
Deploy / deploy (push) Skipped
2026-07-24 14:49:07 +02:00
openhands
7f8d083763
Remove Discord and Google OAuth verification from CMS
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m58s
- 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
Simo and Cursor
ce6e8235cc
fix(admin): housekeeping TS returns + clearer permissions UX
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m50s
Co-authored-by: Cursor <[email protected] >
2026-07-22 21:39:01 +02:00
Simo and Cursor
75cace41ea
feat(mod): tickets+team tabs; retire HK writes for live ACL
...
Deploy / release (push) Skipped
Deploy / deploy (push) Failing after 30s
Co-authored-by: Cursor <[email protected] >
2026-07-22 21:35:35 +02:00
Simo and Cursor
084cca6ea4
feat(mod): lite /mod panel + clarify ACL vs housekeeping legacy
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m31s
Co-authored-by: Cursor <[email protected] >
2026-07-22 21:29:32 +02:00
Simo and Cursor
a384c9a8bb
feat(admin): guilds console + user sanctions timeline
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m44s
Co-authored-by: Cursor <[email protected] >
2026-07-22 21:19:16 +02:00
Simo and Cursor
025af147cd
feat(admin): marketplace console + analytics degraded banners
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m40s
Co-authored-by: Cursor <[email protected] >
2026-07-22 19:06:54 +02:00
Simo and Cursor
f150aea8b9
feat(admin): P1 — clearer tickets labels, pagination, min_staff_rank, analytics errors
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m37s
Co-authored-by: Cursor <[email protected] >
2026-07-22 19:04:45 +02:00
openhands
11004626c7
Add newest registered users section to index, register, login pages
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m49s
2026-07-22 18:56:46 +02:00
Simo and Cursor
8d28739ca6
feat(admin): expand/collapse all sidebar groups with scrollable nav
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 2m6s
Co-authored-by: Cursor <[email protected] >
2026-07-22 18:49:49 +02:00
openhands
1ffd46713a
Redesign login, register, me pages with premium layout and i18n
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 2m7s
2026-07-22 14:42:01 +02:00
Simo and Cursor
968ca15c27
feat: jwt cache, redis health, help-ticket admin, and write rate limits
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m33s
Cut Auth.js DB load with cached jwtVersion checks, surface Redis in /api/health and deploy warnings, add admin help-center ticket reply UI, rate-limit API tickets/reactions/referral claims, and revoke PATs on sign-out-everywhere.
Co-authored-by: Cursor <[email protected] >
2026-07-21 21:58:48 +02:00
Simo and Cursor
803e8f36c1
feat: shop buy, forum replies, tickets, messages, sessions, and UX hardening
...
Deploy / release (push) Skipped
Deploy / deploy (push) Failing after 4m23s
Complete remaining product gaps: credit-based shop purchases, guild thread replies, help ticket detail/reply/close, offline message compose, sign-out-everywhere via JWT version, ads delete confirm, soft-fail feedback, rate limits, loading states, and single auth() in site layout.
Co-authored-by: Cursor <[email protected] >
2026-07-21 21:21:02 +02:00
Simo and Cursor
ed7db6e048
feat: public events/polls, friends graph, captcha, SSE hardening, and admin UX
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 2m55s
Ship product gaps: register/vote pages, friend add/accept/decline/remove, email verify TTL, captcha on login/forgot, soft-fail user actions, SSE abort/shared client, Commando Centrum error toasts, admin delete for events/polls, and IT/NL i18n fills.
Co-authored-by: Cursor <[email protected] >
2026-07-21 21:08:33 +02:00
openhands
19e4e10b1d
feat: add catalog audit page
...
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m56s
Checks for:
- items_base entries without catalog_items (not purchasable)
- catalog_items referencing non-existent items_base
- Items without .nitro or icon files on disk
- Duplicate classnames
- Items missing from all configured clone sources
2026-07-21 15:24:58 +02:00
openhands
804daeffca
feat: add .nitro upload + sync-all + repair-icons features
...
Deploy / release (push) Skipped
Deploy / deploy (push) Failing after 32s
- Upload .nitro bundles directly with full DB, catalog, and furnidata integration
- Generate SQL migration files on upload (optional)
- Auto-sync missing furniture from all configured clone sources (SSE batch)
- Repair missing icons by extracting from local .nitro or downloading from sources
- All behind ASSETS_IMPORT permission
2026-07-21 14:53:26 +02:00
Simo and Cursor
dd806d2527
Reorganize admin nav by feature and soften light mode.
...
Sidebar lists one entry per feature; keep hub tabs only for sibling views (events, tickets, ranks/permissions, moderation, radio, analytics, devops). Soft cool-gray light canvas/surface replaces harsh white.
Co-authored-by: Cursor <[email protected] >
2026-07-18 22:06:41 +02:00
Simo and Cursor
bcbdca841b
i18n observability hub: analytics pages and log tables.
...
Translate analytics overview/activity/economy plus peak-hours/revenue charts, and audit/chat/commands/trades DataTables (en/nl/it). Includes prior events/polls detail i18n.
Co-authored-by: Cursor <[email protected] >
2026-07-18 21:51:55 +02:00
Simo and Cursor
a25008deb5
i18n events/polls detail pages, forms, and empty sections.
...
Align detail headers with admin chrome, translate stats/forms/breadcrumbs, and use admin-empty for prizes, winners, registrations, and questions.
Co-authored-by: Cursor <[email protected] >
2026-07-18 21:46:52 +02:00
Simo and Cursor
8009491245
i18n events and polls admin DataTable columns.
...
Wire column headers, search placeholders, and status/type labels through pages.admin.events/polls (en/nl/it), matching tickets-table.
Co-authored-by: Cursor <[email protected] >
2026-07-18 21:43:27 +02:00
Simo and Cursor
3cb8b92cb3
Polish admin hub pages: drop duplicate headers, align CTAs and empties.
...
Remove redundant titles under AdminHubChrome, style events/polls create flows with admin chrome + i18n, and standardize empty states / teams form classes.
Co-authored-by: Cursor <[email protected] >
2026-07-18 21:28:15 +02:00
Simo and Cursor
1f552c2822
Polish public error and 404 screens with brand atmosphere.
...
Local Build and Deploy / deploy (push) Successful in 1m31s
Shared ErrorScreen composition, i18n for en/nl/it, Sentry on route errors, and a self-contained global-error fallback that matches the hotel gold theme.
Co-authored-by: Cursor <[email protected] >
2026-07-18 20:00:04 +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
Simo and Cursor
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
Simo and Cursor
cbdea70f83
Improve shop hub: CurrencyIcon on packages/vouchers, DataTable for transactions.
...
Local Build and Deploy / deploy (push) Successful in 1m3s
Co-authored-by: Cursor <[email protected] >
2026-07-17 20:32:45 +02:00
Simo and Cursor
a2ca9b3c23
Add shared ConfirmDialog; upgrade wordfilter with client actions and toasts.
...
Local Build and Deploy / deploy (push) Successful in 1m6s
Co-authored-by: Cursor <[email protected] >
2026-07-17 20:28:43 +02:00
Simo and Cursor
1039044e48
Improve admin UX: hub i18n, dynamic topbar, settings strings, staff logs DataTable.
...
Local Build and Deploy / deploy (push) Successful in 1m12s
Co-authored-by: Cursor <[email protected] >
2026-07-17 20:14:55 +02:00
openhands
5c58a2b469
refactor(housekeeping): sortable columns, inline edit Enter/Escape, select all matching, i18n date
...
Local Build and Deploy / deploy (push) Successful in 1m0s
- Sortable columns: click headers to sort by permission/description/group/rank
- Inline edit: click rank value to edit, Enter to save, Escape to cancel
- Select all matching button when partial selection is active
- Select-all checkbox shows all-pages selection state
- AuditSection uses Intl.DateTimeFormat with CMS locale instead of toLocaleString
- Add selectAllMatching translation key to all 22 locales
2026-07-17 20:03:42 +02:00
openhands
f1e4e32a1e
refactor(housekeeping): modal confirm, bulk delete, search debounce, audit inline, form reset
...
Local Build and Deploy / deploy (push) Successful in 1m6s
- Replace browser confirm() with custom ConfirmModal component
- Add search debounce (300ms) before syncing URL params
- Reset add-permission form after successful submit
- Add bulk select/delete with checkbox column and bulkDeletePermissions action
- AuditSection fetches logs server-side via getAuditLogs and shows inline table
- Add 10 new i18n keys (cancel, confirm, confirmDeletePermission,
confirmBulkDelete, deleteSelected, confirmClearAllDesc,
auditTime, auditUser, auditAction, auditTarget) synced to all 22 locales
2026-07-17 19:53:53 +02:00
openhands
d693d169dd
refactor(housekeeping): return result from bulkImport, remove dead server calls, sync i18n
...
Local Build and Deploy / deploy (push) Successful in 1m15s
- bulkImportPermissions now returns {count, errors} instead of void
- ImportSection shows per-entry error details in toast
- Remove testRankPermission server action (test is 100% client-side)
- Clean up unused testing state in TestSection
- Sync pages.admin.{import,translations} keys to all 20 languages
- Add importedWithErrors translation key to all locales
2026-07-17 19:44:15 +02:00
openhands
c0680d7ae5
fix(i18n): remove trailing commas in en.json and nl.json
Local Build and Deploy / deploy (push) Successful in 1m1s
2026-07-17 19:31:09 +02:00
openhands
70f5e37373
refactor(housekeeping): split client, add loading states, URL persistence, fix dead code
...
Local Build and Deploy / deploy (push) Failing after 48s
- Split ManageClient into ManageSection, PresetsSection, TestSection,
ImportSection, ExportSection - each tab only renders what it needs
- Add loading/disabled states to preset, import, export, clear buttons
- Persist search and group filter via URL searchParams (survives refresh)
- Remove dead getAuditHistory export from actions
- Fix testRankPermission - remove unnecessary revalidatePath with JSON result
- Clean up unused errors/count variables in bulkImportPermissions
- Add 'loading' translation key to housekeeping section (en/nl)
2026-07-17 19:28:19 +02:00
openhands
0a350a354e
fix(i18n): move toast/pagination keys into housekeeping section
...
Local Build and Deploy / deploy (push) Failing after 44s
- Move saved, deleted, errorOccurred, emptyInput, invalidJson, imported,
presetApplied, cleared, invalidRank, testDone, testing, prev, next
from translations section into pages.admin.housekeeping
- Remove duplicate misplaced keys
2026-07-17 19:23:21 +02:00
openhands
6ba8928791
fix(admin): add client-side search, pagination, toast feedback, confirm dialogs and test result display
...
Local Build and Deploy / deploy (push) Successful in 1m21s
- Rewrite manage/import/presets/test tabs as client component with sonner toasts
- Add client-side search filtering (no page reload)
- Add pagination (25 per page)
- Add confirm dialog before delete and clear-all
- Show test results inline after submission
- Add toast feedback for import, preset apply, save, delete
- Add prev/next pagination labels
2026-07-17 19:17:12 +02:00
openhands
98d4b715df
feat(admin): extend housekeeping permissions page with groups, presets, audit, test, import/export, rank overview and dependency tracking
...
Local Build and Deploy / deploy (push) Successful in 1m14s
- Add group_name, depends_on and updated_by columns to website_housekeeping_permissions
- Add migration 0016 for new columns
- Rewrite housekeeping page with 7 tabs: Overview, Manage, Import/Export, Rank overview, Presets, Test, Audit log
- Add permission groups/categories with filtering
- Add bulk JSON import/export
- Add rank overview grouped by permission category
- Add permission presets for Moderator (rank 5), Admin (rank 7), Super Admin (rank 8)
- Add audit logging for all permission changes via AdminAuditLog
- Add test mode to check permissions by rank
- Add dependency tracking with warnings for missing dependencies
- Add overview dashboard with statistics
- Add Dutch and English translations for all new features
2026-07-17 19:02:23 +02:00
Simo and Cursor
49d204e85c
Remove import/repair feature and related API routes.
...
Local Build and Deploy / deploy (push) Successful in 1m41s
Co-authored-by: Cursor <[email protected] >
2026-07-17 18:52:38 +02:00
Simo and Cursor
363c9b3d56
Reorganize admin into tabbed hubs with a condensed sidebar.
...
Local Build and Deploy / deploy (push) Successful in 57s
Replace the long flat nav with hub entries, shared AdminHubChrome tabs, and AdminPageShell. Existing URLs stay stable; Settings/Radio and other sections now share one chrome.
Co-authored-by: Cursor <[email protected] >
2026-07-15 21:29:36 +02:00
Simo and Cursor
3403d3b19f
Fix admin permissions bounce, prefixes APIs, and Italian UI leftovers.
...
Local Build and Deploy / deploy (push) Successful in 56s
Gate permissions on ACL manage + resolve super-admin from live user ranks, restore prefixes API routes, and anglicize hardcoded admin copy with nav i18n.
Co-authored-by: Cursor <[email protected] >
2026-07-15 20:33:00 +02:00
openhands
59b63d6e70
Fix real Biome bugs: inner declarations, dup keys, assign-in-expr, implicit any, cookie, a11y svg/keyboard, json
Local Build and Deploy / deploy (push) Successful in 51s
2026-07-14 18:58:40 +02:00
openhands
df38dccbf1
style: format code biome
Local Build and Deploy / deploy (push) Failing after 46s
2026-07-13 21:57:41 +02:00
openhands
8bf1aa2fa7
Use translations for emulator page (was hardcoded Italian)
Local Build and Deploy / deploy (push) Successful in 58s
2026-07-12 23:14:35 +02:00
openhands
5ae29e2a58
Add i18n support for import page and translations tabs
Local Build and Deploy / deploy (push) Successful in 1m7s
2026-07-12 23:11:59 +02:00
Simo
5b4228261a
Reapply "Add missing admin action files and navigation links"
...
This reverts commit 4d515bc400 .
2026-07-11 20:52:56 +02:00
Simo
4d515bc400
Revert "Add missing admin action files and navigation links"
...
This reverts commit 41be6835bf .
2026-07-11 20:37:56 +02:00
openhands
41be6835bf
Add missing admin action files and navigation links
...
- Add 11 missing server action files: badges, bulk-users, catalog, catalog-bc, catalog-items, import-badges, import-furni, multi-account-detect, permissions, rooms, soundtracks
- Add missing admin navigation links: tickets, sounds, translations, import, radio sub-pages
- Add translation keys for all new navigation items
2026-07-11 12:01:05 +02:00
openhands
b058a3827b
Fix theme consistency, i18n completeness, CSS variable naming, and hardcoded strings
2026-07-09 18:13:22 +02:00
openhands
fc57fb06d1
chore: remove dead code, unused CSS, unused components, and clean up git tracking
...
- Remove storage/logs/ and prod.log from git tracking; add to .gitignore
- Remove unused AvatarCarousel and ArticleSlider components
- Remove unused SkeletonTable export from ui.tsx
- Remove unused ChevronDown import from admin layout
- Remove 13 unused CSS classes (icon-base, nav-*, navigation-icon*, .app.dark,
text-body, transition-base, card-base, admin-info-grid, .coin.*)
- Remove duplicate translation keys (openMenu/closeMenu in en.json)
- Fix admin-bans to use Prisma-generated bans_type enum
- Create shared AdminPageHeader component and formatDate utility
- Add logger and generateRequestId for structured logging
- All 58 tests pass, typecheck clean, build succeeds
2026-07-08 13:27:01 +02:00
openhands
29f8a44f0f
Add favicon generator with color picker and text
2026-07-05 23:32:24 +02:00