Simo
11ddf6cf0b
fix(housekeeping): preserve form state and accurate access details
2026-09-03 20:39:10 +02:00
openhands
5e598a08b4
fix: remove ssr:false from dynamic imports in server components
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Failing after 0s
CI / deploy (push) Skipped
CI / release (push) Skipped
Turbopack rejects ssr:false in Server Components.
Removed from 4 dynamic imports in:
- src/app/(site)/layout.tsx (RadioPlayerGate)
- src/app/admin/analytics/economy/page.tsx (RevenueChart)
- src/app/admin/analytics/page.tsx (DashboardChart, PeakHoursHeatmap)
- src/app/admin/media/page.tsx (AdminMediaGrid)
2026-09-03 16:04:48 +02:00
openhands
30c95b1a5c
feat: comprehensive CMS improvements
...
CI / runtime-diagnostics (push) Skipped
CI / release (push) Skipped
CI / check (push) Failing after 0s
CI / deploy (push) Skipped
- 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
Simo
93367a239f
fix(housekeeping): require reasons for destructive changes
2026-09-02 22:12:58 +02:00
Simo
50598472ad
fix(polls): enforce shared persistence invariants
2026-09-02 22:03:26 +02:00
openhands
b810b16672
fix: show/hide arrow always visible and null-safe
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m2s
- Show arrow (›) appears when toolbar is hidden, regardless of pos state
- Null-safe pos top/left (?. ?? 8) to prevent TS errors
- Arrow positioned fixed top-right instead of depending on balk-positie
2026-09-02 22:02:31 +02:00
Simo
c841595458
fix(housekeeping): canonicalize live cutover links
2026-09-02 21:53:19 +02:00
openhands
a30e4af32e
feat: polish toolbar, live online count via SSE + emulator 3-state
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 30s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m5s
- 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
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m27s
- 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
Simo
1f10e15c1c
test(housekeeping): verify polls vertical
CI / runtime-diagnostics (pull_request) Skipped
CI / check (pull_request) Successful in 45s
CI / deploy (pull_request) Skipped
CI / release (pull_request) Skipped
2026-09-02 20:48:35 +02:00
Simo
766e7e20c8
fix(housekeeping): clear poll question options
2026-09-02 20:17:28 +02:00
Simo
51eecd0e72
feat(housekeeping): add dedicated polls workflow
2026-09-02 20:06:26 +02:00
Simo
5edaa0254c
fix(housekeeping): retain unchecked command fields
2026-09-02 19:46:19 +02:00
Simo
3b2012e704
feat(housekeeping): retain invalid command input
2026-09-02 19:38:38 +02:00
Simo
f64b4d67b4
fix(housekeeping): isolate poll question mutations
2026-09-02 19:24:03 +02:00
Simo
de7cc42ddf
fix(polls): canonicalize transaction lock order
2026-09-02 19:09:50 +02:00
Simo
e9680775f9
fix(housekeeping): lock poll questions by primary key
2026-09-02 18:54:58 +02:00
Simo
6e16b948e6
fix(housekeeping): align poll deletion lock order
2026-09-02 18:45:50 +02:00
Simo
b4193bea6c
fix(housekeeping): lock poll mutation snapshots
2026-09-02 18:38:25 +02:00
Simo
3e52965292
fix(housekeeping): protect poll destructive actions
2026-09-02 18:30:35 +02:00
Simo
dba58cad4f
feat(housekeeping): load complete poll operator data
2026-09-02 18:16:25 +02:00
Simo
de94b47cae
fix(housekeeping): harden poll response paging
2026-09-02 18:02:54 +02:00
Simo
cbc3075e5a
feat(housekeeping): define typed poll query contract
2026-09-02 17:52:41 +02:00
openhands
c1cc1fdc1c
fix(home): counter counts exactly once, no restart on value refresh
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 38s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m40s
AnimatedCounter restarted from 0 on every online-count cache refresh (~10s)
because the effect depended on value. Rewrote it as a single requestAnimationFrame
animation with ease-out; changes to value after the animation only update the
display statically.
2026-09-02 12:47:58 +02:00
Simo
e69633b753
test(polls): cover merged partial updates
2026-09-01 22:29:16 +02:00
Simo
abb04f8362
refactor(polls): centralize question semantics
2026-09-01 22:15:44 +02:00
Simo
5ca15d3f81
Merge remote-tracking branch 'origin/main' into codex/housekeeping-rebuild-stepwise
...
# Conflicts:
# src/lib/admin-theme-source-audit.test.ts
2026-09-01 21:10:17 +02:00
Simo
d6235c37a1
feat(housekeeping): complete content events workflow
2026-09-01 21:08:26 +02:00
openhands
58c35a2920
feat: enforce no hardcoded colors across entire CMS
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 32s
CI / release (push) Skipped
CI / deploy (push) Successful in 58s
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
Simo
f2e67ebace
fix(studio): synchronize batch completion state
CI / runtime-diagnostics (pull_request) Skipped
CI / check (pull_request) Successful in 54s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-09-01 19:24:15 +02:00
Simo
9f349c3343
Merge remote-tracking branch 'origin/main' into codex/housekeeping-rebuild-stepwise
2026-09-01 19:18:58 +02:00
openhands
0fa832d577
fix: replace hardcoded text-white with theme-destructive-foreground
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 38s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m9s
2026-09-01 19:18:00 +02:00
Simo
b413e62085
chore: satisfy upgraded biome checks
CI / runtime-diagnostics (pull_request) Skipped
CI / check (pull_request) Successful in 58s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-09-01 19:14:09 +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
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 34s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m3s
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
Simo
c7891b60c3
feat(housekeeping): adapt catalog studio workflow
CI / runtime-diagnostics (pull_request) Skipped
CI / check (pull_request) Failing after 11s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-09-01 19:04:48 +02:00
openhands
4863f78795
fix: make confirm dialog fully opaque with solid background
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 50s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m6s
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
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 38s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m2s
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
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 33s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m18s
2026-09-01 18:24:00 +02:00
Simo
52e00854a2
Merge remote-tracking branch 'origin/main' into codex/housekeeping-rebuild-stepwise
...
# Conflicts:
# .env.example
# src/features/housekeeping/foundation/preview-route-contract.test.ts
2026-09-01 18:19:36 +02:00
openhands
1374bd332f
Studio: add clone-all-per-hotel, per-item status detail, retry, ETA, and auto-translate
...
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 36s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m14s
- 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
Simo
fa33b4498e
feat(housekeeping): complete article workflow
CI / check (pull_request) Failing after 11s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-31 21:42:57 +02:00
Simo
1610aa1008
fix: keep server env out of avatar client bundle
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 33s
CI / release (push) Skipped
CI / deploy (push) Successful in 49s
2026-08-31 21:41:40 +02:00
Simo
5b190cb929
chore: expose rank editor error details
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 43s
2026-08-31 21:32:25 +02:00
Simo
5f7875ff18
chore: log server rendering failures
CI / runtime-diagnostics (push) Skipped
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 44s
2026-08-31 21:26:29 +02:00
Simo
fc050bd3f8
feat(housekeeping): localize content route headings
CI / check (pull_request) Failing after 9s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-31 21:07:17 +02:00
Simo
37ad27c5f3
fix: support legacy rank permission schema
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 43s
2026-08-31 21:01:13 +02:00
Simo
384ede19c4
style: format rank permission regression test
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 42s
2026-08-31 20:51:47 +02:00
Simo
edfe878b2a
fix: repair missing rank permission columns
CI / check (push) Failing after 8s
CI / release (push) Skipped
CI / deploy (push) Skipped
2026-08-31 20:49:51 +02:00
Simo
43470ebf82
feat(housekeeping): unify complete rebuild in gated preview
CI / check (pull_request) Failing after 10s
CI / deploy (pull_request) Skipped
CI / release (pull_request) Skipped
2026-08-31 20:37:51 +02:00