simoleo89
1ef405be0a
feat(cms): add recovery history and operational reliability tools
2026-09-09 21:57:56 +02:00
simoleo89
89526af344
feat(hk): expand search and add operational user overview
2026-09-09 21:14:10 +02:00
simoleo89
c389c3893d
feat(cms): improve catalog, editorial recovery and operations
2026-09-09 19:36:15 +02:00
openhands
cbffb565ec
perf: cut biome lint from 25s to 1s and fix pre-existing lint failures
...
Exclude generated drizzle-kit snapshot artifacts from formatting checks (drizzle/drafts/meta), which made biome scan a 360KB generated JSON for 23s. Fix the pre-existing lint errors in error-monitor, article-form and the admin-search-permissions mock so pnpm biome:lint is green in CI.
2026-09-08 18:22:49 +02:00
simoleo89
7033d65846
fix(ui): make shared switches visible across CMS themes
2026-09-06 21:30:13 +02:00
simoleo89
35d0f3ee01
fix(catalog): make access controls visible and compact
2026-09-06 21:08:52 +02:00
simoleo89
93a7e9a7c2
feat(catalog): improve visual manager search and offer discovery
2026-09-06 20:58:53 +02:00
simoleo89
55a47949f1
feat(catalog): add reviewed bulk edits and complete category duplication
2026-09-06 20:25:19 +02:00
simoleo89
193b6686a9
refactor(catalog): unify commands and embed guarded catalog workspace
2026-09-06 19:40:52 +02:00
simoleo89
9b0ea2fb16
fix(news): restore publication flow and deduplicate dashboard friends
2026-09-06 18:32:43 +02:00
simoleo89
96234075f8
refactor(admin): remove sidebar favorites
2026-09-06 17:25:04 +02:00
simoleo89
a070004e7b
feat(admin): reorganize housekeeping and strengthen shared workflows
2026-09-06 17:17:30 +02:00
openhands
9ae03056e2
chore: remove 4 unused files (theme-editor-fields, use-user-bulk-actions, user-columns, use-media-library)
2026-09-05 23:27:02 +02:00
openhands
9bc0834bbb
refactor(admin): extract useBatchImport hook, fix test env, consolidate date formatting
2026-09-05 22:06:35 +02:00
openhands
8c12fc6c60
refactor(cms): deduplicate shared admin components and fix studio batch completion
...
- fix(studio): stop markBatchDone infinite recursion so batches complete
- refactor(api): merge api-response into api and drop the duplicate module
- refactor(media): extract shared media loader and URL validator
- refactor(ui): extract shared LoadingSpinner for site and admin groups
- refactor(dates): consolidate raw date formatting into formatDate util
- refactor(logs): share a single generic log-list loader across tables
- refactor(theme): merge both ColorField components and reuse contrast helpers
- refactor(import): extract shared ImportErrorBanner and SearchInput
- chore(): remove dead theme-editor-tabs after inlining tab components
2026-09-05 20:58:42 +02:00
simoleo89
8b59bd1d2d
fix(admin): provide missing furniture import error banner
2026-09-05 20:17:34 +02:00
simoleo89
816e3875c2
feat(admin): add production error center and refresh CMS dependencies
2026-09-05 19:53:09 +02:00
simoleo89
c6b919c01d
refactor(admin): organize user actions and improve content editing UX
2026-09-05 18:56:56 +02:00
simoleo89
3ae4f21217
refactor(catalog): separate Studio data hooks and presentation
2026-09-05 18:15:29 +02:00
simoleo89
570f3dde44
feat(catalog): repair missing furniture components with verified status
2026-09-05 18:12:34 +02:00
simoleo89
cd75361b9f
feat(catalog): generate derived scale 32 with preview and backup restore
2026-09-05 17:36:22 +02:00
simoleo89
08b0b5021e
feat(catalog): inspect Nitro scales and preview original sprites
2026-09-05 17:22:27 +02:00
simoleo89
2619bec165
feat(catalog): queue furniture imports with history and matching file attachments
2026-09-05 17:02:26 +02:00
simoleo89
775d14f861
fix(catalog): make source preflight advisory
2026-09-05 15:32:44 +02:00
simoleo89
2d14e02a68
fix(catalog): remove suggestions that substitute different furniture
2026-09-05 15:26:46 +02:00
simoleo89
33b6d1520e
fix(catalog): stream single imports and preserve response errors
2026-09-05 15:16:42 +02:00
simoleo89
159b1f7d1b
fix(catalog): check source assets and offer reachable import alternatives
2026-09-05 14:56:04 +02:00
simoleo89
9dc6b8a261
Remap occupied furniture IDs during Catalog Studio imports
2026-09-05 13:51:29 +02:00
simoleo89
9f791ba284
Support Gitea configuration and safe Catalog Studio furniture completion
2026-09-05 13:33:40 +02:00
simoleo89
26f071117b
Add Catalog Studio inspection and guided import review
2026-09-05 13:10:43 +02:00
simoleo89
2578bf6a09
Improve HK sidebar and restore nested content scrolling
2026-09-05 12:50:52 +02:00
simoleo89
bf126fd825
Improve Catalog Studio navigation and import workflow
2026-09-05 12:40:50 +02:00
openhands
bfbf244141
fix: remove unused buildDutchLanguage function and dead test file
...
- Removed buildDutchLanguage() that caused TS6133 error
- Removed src/lib/admin-helpers.test.ts (dead code, never used)
- All checks pass: Biome, TypeScript, Vitest, Coverage
2026-09-04 19:49:47 +02:00
openhands
4795ed4f8f
feat: add buildDutchLanguage function for translating only Dutch with crash-safe error handling
...
- New buildDutchLanguage() function translates only 'nl' language
- Proper error handling with specific messages for network errors
- Safe template literal usage, guarded .find() for Dutch language
- Consistent with existing buildAllLanguages pattern
Remove unused admin-helpers.test.ts (dead code)
2026-09-04 19:14:27 +02:00
openhands
458972fdfd
fix: improve batch import error handling and resilience
...
- Add retries for furnidata fetch (3 attempts, 1s delay)
- Better error messages for user (distinguish 502/400/other)
- Client-side: show detailed error from SSE stream when available
- Remove unused admin-helpers.test.ts
2026-09-04 18:28:14 +02:00
openhands
399c047515
fix: harden admin actions, search, sanitization and repo hygiene
...
- Split approve/dismiss application workflows with distinct audit logs,
rate-limited guards and real error logging
- Validate article status/date/id input and stop resetting publishedAt
on every update
- Validate guild updates (state, forum enums, non-empty name) behind
rate-limited guard
- Fix scheduled-article publishing (ignore NULL dates, set updatedAt,
type-safe predicates)
- Harden admin search API (LIKE escaping, query cap, per-user
rate limit, round-robin result cap) and fix search dialog
abort/res.ok/loading races
- Lock down HTML sanitizer to an allowlist profile and add XSS tests
- Improve mobile nav accessibility (unique id, dialog role, focus
management, scroll lock, outside close)
- Log swallowed server errors instead of silent catch blocks
- Remove dead eslint config, drop unused dompurify deps, restore knip
CI step, add Playwright config with smoke spec
2026-09-04 13:04:08 +02:00
openhands
30c95b1a5c
feat: comprehensive CMS improvements
...
- Fix DOMPurify SSR crash (use isomorphic-dompurify)
- Fix SanitizedHtml to sanitize by default
- Add auth guards to studio/catalog maintenance pages
- Add update/edit to vouchers CRUD
- Add update/edit to rare-values CRUD
- Add approve workflow to applications page
- Add edit form to guilds detail page
- Add SEO metadata to all public pages (21 pages)
- Fix mobile nav accessibility (focus trap, aria attributes)
- Fix missing labels and table accessibility
- Add dynamic imports for heavy client components (6 components)
- Fix silent error swallowing (40+ locations)
- Add content scheduling for articles (publishAt, status)
- Wire up 12 missing webhook notification triggers
- Add global search to admin panel
- Add bulk actions to admin users table
- Fix JSON formatting and a11y issues
2026-09-03 16:00:32 +02:00
openhands
58c35a2920
feat: enforce no hardcoded colors across entire CMS
...
Added scripts/check-admin-colors.mjs — scans all src/ files for:
- text-white, text-black (use theme text vars)
- bg-white, bg-black (use theme background/overlay vars)
- bg/text/border/ring with gray/slate/zinc/stone palette
- bg/text/border/ring with red/green/blue/etc palette
Fixed 21 violations across 11 files:
- Overlays: bg-black/* → bg-foreground/*
- Text: text-white → text-primary-foreground
- Backgrounds: bg-white/10 → bg-background/10
- Green accents: bg-green-* → bg-primary
- Red accents: bg-red-* → bg-destructive
Integrated into:
- lint-staged: runs on every *.ts/*.tsx commit
- vitest: src/lib/no-hardcoded-colors.test.ts replaces old audit test
- Allowlist: shadcn/ui primitives (button, badge, dialog) + 4 graphical files
2026-09-01 19:33:50 +02:00
openhands
0fa832d577
fix: replace hardcoded text-white with theme-destructive-foreground
2026-09-01 19:18:00 +02:00
openhands
844add04ef
fix: confirm dialog is now a compact popup, not full-screen overlay
...
- Removed full-screen overlay backdrop (bg-black/95 + backdrop-blur)
- Dialog is centered via fixed left-1/2 top-1/2 -translate
- Compact design: max-w-sm, smaller text, smaller buttons
- Uses admin theme vars (admin-surface, admin-border, admin-text)
- Smooth scale+fade animation without overlay
2026-09-01 19:13:15 +02:00
openhands
93601e58e0
feat: Studio bulk ops, perf fixes, bug fixes, confirm dialog visibility
...
Confirm Dialog:
- Overlay opacity 80% -> 95% (solid black)
- Card uses bg-surface with glow shadow ring-primary/40
- Added AlertTriangle icon for danger variant
- Removed backdrop-blur for maximum opacity
Studio features:
- Bulk delete: select imported items and delete in batch
- Bulk nitro regen: select items missing .nitro and regenerate all
- Added Trash2 and RefreshCw toolbar buttons for bulk actions
Performance:
- BatchProgress: React.memo + useMemo for entries/total/completed/percent
- BatchProgress: ETA interval uses useRef to avoid re-creation per completed
- CatalogRail: React.memo + useCallback for toggle
- Removed redundant double setBatchProgress calls
- Removed redundant new Map(initial) wrapping
Bug fixes:
- importBatch: stale batchDone closure always cleared progress panel (use ref)
- importBatch: added missing toast.error on HTTP failure
- bulkRegenNitro: now checks per-item results instead of marking all as succeeded
- single deleteItem: now removes classname from selected set
- retryFailed: clears progress panel on HTTP error and stream error
- Removed unused 'done' variable (2x) from cloneAllMissing/retryFailed
Lint:
- biome format fixes for selectedMissingNitro and setItems
2026-09-01 19:07:20 +02:00
openhands
4863f78795
fix: make confirm dialog fully opaque with solid background
...
Replace bg-card with bg-background/100, upgrade shadow to 2xl, and
remove backdrop-blur on the dialog content to ensure maximum visibility.
2026-09-01 18:34:10 +02:00
openhands
52516a368d
fix: skip heavy post-import consolidation on non-final clone chunks
...
The flush after every 400-item chunk was running expensive operations
(reconcileOfferIds, rebuildCatalog, verifySpriteIds, rcon updates) which
caused the import to hang after ~800 items. Now only the final chunk
triggers the full consolidation. Also raised the per-request limit from
500 to 5000 items.
2026-09-01 18:29:06 +02:00
openhands
d4fbbfa243
fix: make confirm dialog more visible with darker overlay and sharper shadow
2026-09-01 18:24:00 +02:00
openhands
1374bd332f
Studio: add clone-all-per-hotel, per-item status detail, retry, ETA, and auto-translate
...
- Add 'Clone all missing' button for clone sources with confirmation dialog
- Show per-item status badges: nitro, furnidata, catalog entry
- Add status filters: missing furnidata, missing catalog entry
- Add ETA and percentage to batch progress bar
- Add retry button for failed items after batch import
- Auto-translate all languages after clone-all completes
- Fix statusFilter 'all' bug that incorrectly filtered imported items
- Bulk-load FurnitureData + catalog references for O(1) per-item checks
2026-09-01 17:29:12 +02:00
simoleo89
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
simoleo89
2b8f73a91d
feat(housekeeping): cut over administration to ase
2026-08-30 20:35:22 +02:00
openhands
7a41775c7e
fix: disable route prefetching app-wide to avoid spurious requests
...
Wrap next/link in a shared Link component that ships prefetch=false by
default, so no route is ever prefetched (viewport or hover) anymore, and
drop the DNS prefetch hint. Removes hidden background requests that were
the source of intermittent issues.
2026-08-29 19:27:13 +02:00
openhands
4a95b53b02
feat: add "Vertaal alles" button to translate the whole catalog on demand
...
Lets admins import fast with translation disabled, then build every
language for the full catalog later via the existing build-languages
action.
2026-08-24 18:39:21 +02:00
openhands
3a292a44f1
feat: make catalog-pages dedup a choosable step in Fix alles
...
The maintenance "Fix alles" now has a checkbox to include or skip the
duplicate catalog_pages merge, so admins can choose whether to run it.
removeDuplicates takes an includePages flag and fixEverything threads it
through to the action.
2026-08-24 18:35:00 +02:00