Simo
cd75361b9f
feat(catalog): generate derived scale 32 with preview and backup restore
CI / check (push) Successful in 1m32s
CI / deploy (push) Successful in 1m12s
CI / e2e (push) Successful in 21s
2026-09-05 17:36:22 +02:00
Simo
08b0b5021e
feat(catalog): inspect Nitro scales and preview original sprites
CI / check (push) Successful in 1m47s
CI / deploy (push) Successful in 1m30s
CI / e2e (push) Successful in 22s
2026-09-05 17:22:27 +02:00
Simo
2619bec165
feat(catalog): queue furniture imports with history and matching file attachments
CI / check (push) Successful in 1m30s
CI / deploy (push) Successful in 1m26s
CI / e2e (push) Successful in 25s
2026-09-05 17:02:26 +02:00
Simo
2d14e02a68
fix(catalog): remove suggestions that substitute different furniture
CI / check (push) Successful in 1m43s
CI / deploy (push) Successful in 1m27s
CI / e2e (push) Successful in 21s
2026-09-05 15:26:46 +02:00
Simo
33b6d1520e
fix(catalog): stream single imports and preserve response errors
CI / check (push) Successful in 1m31s
CI / deploy (push) Successful in 1m13s
CI / e2e (push) Successful in 21s
2026-09-05 15:16:42 +02:00
Simo
159b1f7d1b
fix(catalog): check source assets and offer reachable import alternatives
CI / check (push) Failing after 19s
CI / deploy (push) Skipped
2026-09-05 14:56:04 +02:00
Simo
8c1efae296
Expose actionable asset download and filesystem failure details
CI / check (push) Successful in 1m36s
CI / deploy (push) Successful in 1m16s
CI / e2e (push) Successful in 21s
2026-09-05 14:38:10 +02:00
Simo
8a919f85b2
Preserve furniture revisions when downloading source assets
CI / check (push) Successful in 1m31s
CI / deploy (push) Successful in 1m21s
CI / e2e (push) Successful in 21s
2026-09-05 14:29:48 +02:00
Simo
7880d5d5df
Recover failed conversion workers and validate Nitro downloads correctly
CI / check (push) Successful in 1m36s
CI / deploy (push) Successful in 1m15s
CI / e2e (push) Successful in 21s
2026-09-05 14:18:28 +02:00
Simo
a78d8256e0
Recognize imported furniture by normalized classname and local IDs
CI / check (push) Successful in 1m30s
CI / deploy (push) Successful in 1m21s
CI / e2e (push) Successful in 22s
2026-09-05 14:04:52 +02:00
Simo
9dc6b8a261
Remap occupied furniture IDs during Catalog Studio imports
CI / check (push) Successful in 1m39s
CI / deploy (push) Successful in 1m19s
CI / e2e (push) Successful in 21s
2026-09-05 13:51:29 +02:00
Simo
9f791ba284
Support Gitea configuration and safe Catalog Studio furniture completion
CI / check (push) Successful in 1m31s
CI / deploy (push) Successful in 1m18s
CI / e2e (push) Successful in 21s
2026-09-05 13:33:40 +02:00
Simo
26f071117b
Add Catalog Studio inspection and guided import review
CI / check (push) Successful in 1m39s
CI / deploy (push) Successful in 1m18s
CI / e2e (push) Successful in 25s
2026-09-05 13:10:43 +02:00
Simo
b6d866b087
test: allow Git integration checks enough time on CI
CI / check (pull_request) Successful in 1m29s
CI / deploy (pull_request) Skipped
CI / e2e (pull_request) Skipped
2026-09-05 11:55:36 +02:00
Simo
9ec9ab31ad
feat: export Catalog Studio assets and SQL to catalog repository
CI / check (pull_request) Failing after 1m21s
CI / deploy (pull_request) Skipped
CI / e2e (pull_request) Skipped
2026-09-05 11:49:00 +02:00
openhands
bfbf244141
fix: remove unused buildDutchLanguage function and dead test file
...
CI / check (push) Successful in 1m47s
CI / deploy (push) Successful in 2m6s
CI / e2e (push) Successful in 22s
- 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
4007b01da9
ci: run e2e smoke against deployed app and ignore playwright artifacts
...
CI / check (push) Successful in 1m10s
CI / deploy (push) Successful in 1m25s
CI / e2e (push) Successful in 22s
- Add e2e job (needs deploy, main/master only) that installs the
Playwright browser and smoke-tests the live container on :3002
- Keep deploy-job contract slice from bleeding into the e2e job
- Cover the e2e job in the CI workflow contract test
- Ignore Playwright output dirs (test-results, playwright-report,
blob-report)
2026-09-04 13:32:51 +02:00
openhands
399c047515
fix: harden admin actions, search, sanitization and repo hygiene
...
CI / check (push) Successful in 1m21s
CI / deploy (push) Successful in 1m25s
- 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
61769e355b
fix(ci): draai DB-migraties in deploy voor het vervangen van de container
...
CI / check (push) Successful in 1m4s
CI / deploy (push) Successful in 1m29s
Zonder dit loopt nieuwe code tegen een oud schema aan zodra een push
migraties bevat. Idempotent (toegepaste migraties worden overgeslagen),
draait op de host met de productie-.env, vóór de container-replace.
2026-09-04 12:34:49 +02:00
openhands
3fdcf028e8
fix(ci): geef runtime-env door via -e i.p.v. --env-file
...
CI / check (push) Successful in 1m6s
CI / deploy (push) Successful in 1m22s
docker run --env-file behoudt letterlijke quotes (bewezen test),
waardoor DATABASE_URL ongeldig was en de container crashte. Nu wordt
.env gesourced en elke sleutel met -e doorgegeven: exact dezelfde
waarden als bij de build. Contract-test verbiedt --env-file.
2026-09-04 12:29:06 +02:00
openhands
10da44ee56
fix(ci): bouw met productie-.env, deploy met env+volumes en rollback
...
CI / check (push) Successful in 1m14s
CI / deploy (push) Failing after 3m10s
- Deploy kopieert de productie-.env van de host in de build-context:
Next.js bakt NEXT_PUBLIC_* in en valideert DATABASE_URL/HOTEL_NAME
(SKIP_ENV_VALIDATION is verboden voor productie, zie src/env.ts).
- Dockerfile builder installeert git (next.config.ts deploymentId).
- Deploy-container krijgt --env-file + dezelfde volumes als compose,
stopt ook de oude compose-container (poort 3002) en rolt terug via
compose bij een falende health check.
2026-09-04 12:22:02 +02:00
openhands
43ecdaee19
fix(ci): docker build met --network=host tegen hangende registry-stappen
...
CI / check (push) Successful in 1m4s
CI / deploy (push) Failing after 59s
De host heeft Docker iptables uitgeschakeld, dus build-containers op
bridge hebben geen outbound internet; 'npm install -g pnpm' in de
builder-stage hing daardoor. Met --network=host krijgt de build wel
registry-toegang. Contract-test vergrendelt de flag.
2026-09-04 12:16:26 +02:00
openhands
cdb0fef6c9
fix(ci): remove invalid --jobs flag from pnpm install
...
CI / check (push) Successful in 1m3s
CI / deploy (push) Failing after 2m52s
pnpm 11 has no --jobs option for install; the stray positional '1'
flipped the command into 'add' mode, which then rejected both
--frozen-lockfile and --jobs ('Unknown options', 'pnpm help add').
Reproduced locally, fixed, verified install succeeds. Add contract
regression test.
2026-09-04 12:11:35 +02:00
openhands
4139aa79ff
fix(ci): draai alle jobs op self-hosted voor 100% betrouwbaarheid
...
CI / check (push) Failing after 3m0s
CI / deploy (push) Skipped
Root cause: de job-container (docker mode) heeft GEEN outbound
internet naar GitHub, waardoor actions/checkout@v4 faalde met
'Unable to clone ... i/o timeout'.
Oplossing: zowel check als deploy draaien nu op self-hosted (host)
waar Node 26.8.1 + pnpm 11.25.0 geïnstalleerd zijn en internet
beschikbaar is. Dit is de enige betrouwbare setup in deze omgeving.
Runner is tevens hernoemd naar 'Epic runner'.
2026-09-04 11:35:22 +02:00
openhands
3c0acc3fcf
refactor(ci): volledig opnieuw geschreven CI workflow
...
CI / check (push) Canceled after 1m56s
CI / deploy (push) Skipped
- Check job: lint, typecheck, test in node:26 container
- Deploy job: Docker build + deploy + health check op host
- Corepack pnpm installatie
- BuildKit caching
- Contract tests herschreven (18 tests)
2026-09-04 11:26:25 +02:00
openhands
a52cbead8a
perf(ci): snellere workflow + Epic runner naam
...
CI / check (push) Failing after 3m1s
CI / deploy (push) Skipped
- Runner hernoemd naar 'Epic runner'
- Env variabelen als global env (niet per step)
- fetch-depth: 1 voor snellere checkout
- Knip verwijderd (traag, niet kritiek)
- Docker BuildKit caching
- Health check opgeschoond
2026-09-04 11:22:28 +02:00
openhands
c949319332
fix(tests): update contract tests voor Docker-based CI workflow
CI / check (push) Failing after 3m4s
CI / deploy (push) Skipped
2026-09-04 11:16:07 +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
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
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
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
9af1e62655
feat: allow rank-gated housekeeping preview in production
CI / check (push) Successful in 29s
CI / deploy (push) Successful in 56s
CI / release (push) Skipped
2026-08-31 20:29:38 +02:00
openhands
7556b1f3fa
perf: prevent import hanging with timeouts and batching
...
CI / check (push) Successful in 31s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
- verifyAndFixInteractionModesCount: paginated DB queries (500/batch)
instead of loading all items into memory at once
- withFurniDataLock: add 60s chain timeout to prevent deadlocks
when a lock holder stalls or crashes
- withGamedataLock: same timeout protection for gamedata locks
- conversion-pool: add 60s per-job timeout, fall back to main thread
- furni/batch: abort signal + post_import progress events + skip
post-import steps when client disconnects
- furni/batch-regen: abort signal + early exit when disconnected
- clone/sync-all: pre-fetch furnidata once per source instead of
per item (eliminates 2000+ redundant fetches)
- sse-client: add 60s idle timeout to prevent infinite hangs
2026-08-31 18:25:32 +02:00
openhands
f70d96b81c
fix: prevent import hanging by adding abort signals and idle timeouts
...
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 59s
- Furni batch: wire request.signal to abort controller, send post_import
progress events, skip post-import steps when aborted
- Clone sync-all: pre-fetch furnidata once per source instead of per item
(eliminates 2000+ redundant DB reads + HTTP requests)
- SSE client: add 60s idle timeout to prevent infinite hangs when server
stops responding
2026-08-31 18:11:54 +02:00
openhands
96c33efced
fix: remove unused site-resolver.ts
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 54s
2026-08-31 17:50:12 +02:00
openhands
a7ccc98f84
fix: resolve pre-existing lint warnings
...
CI / check (push) Failing after 28s
CI / release (push) Skipped
CI / deploy (push) Skipped
- Remove unused siteSettings import in auth-precheck.test.ts
- Replace non-null assertions with proper null checks in furni-data-i18n.ts
- Replace non-null assertions with proper null checks in conversion-pool.ts
2026-08-31 17:48:36 +02:00
openhands
adf0658916
feat: extend theme builder with block visibility, layout, effects, media, and custom CSS tabs
...
CI / check (push) Failing after 29s
CI / release (push) Skipped
CI / deploy (push) Skipped
- Add theme-blocks.ts registry with 24 themeable blocks across 4 categories
- Extend resolver to resolve blocks, layout, effects, media, and custom CSS per scope
- Add data-theme-block attributes to all site layout blocks
- Extend ScopedThemeVars to generate CSS for block visibility, layout vars, effect vars, media vars, and custom CSS
- Rewrite admin UI with 6 tabs: Colors, Blocks, Layout, Effects, Media, Custom
- Extend server actions to save/load all new setting types
- No database migration needed - uses existing theme_scope_values table with prefixed keys
2026-08-31 17:44:29 +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
openhands
c17ef0e7ab
Fix flaky TTL cache test timing
...
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 55s
Use a 20ms TTL with a 40ms wait so the expiry window is long enough
for the immediate second read to hit the in-memory cache reliably.
2026-08-31 11:47:43 +02:00
Simo
b1ddda66ff
Revert "Merge pull request 'Complete Housekeeping migration and /ase cutover' ( #52 ) from codex/housekeeping-complete into main"
...
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 43s
This reverts commit 488b6e57c4 , reversing
changes made to b506b4499a .
2026-08-30 21:31:34 +02:00
Simo
cdfae0b967
fix(ci): stabilize post-cutover checks
CI / check (pull_request) Successful in 35s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-30 21:13:07 +02:00
Simo
222535e116
fix(housekeeping): close final authorization gaps
2026-08-30 21:01:32 +02:00
Simo
2b8f73a91d
feat(housekeeping): cut over administration to ase
2026-08-30 20:35:22 +02:00
Simo
5574e601bb
feat(housekeeping): personalize command deck
CI / check (pull_request) Successful in 36s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-30 16:55:10 +02:00
Simo
2e95a106e0
feat(housekeeping): integrate studio operations
CI / check (pull_request) Successful in 38s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-30 15:29:58 +02:00
Simo
d09eaa33d6
fix(housekeeping): address task 14 review round 1
2026-08-30 10:53:50 +02:00
Simo
fd68819d9b
feat(housekeeping): deliver content vertical
2026-08-30 01:54:43 +02:00
Simo
3fa1119f5a
fix(housekeeping): address people moderation review
CI / check (pull_request) Failing after 9s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-29 23:53:38 +02:00