Commit Graph
575 Commits
Author SHA1 Message Date
Simo 25d0a13050 feat(support): filter waiting tickets and staff assignments 2026-09-11 00:20:54 +02:00
Simo 5d18af932d feat(news): add searchable paginated publication archive 2026-09-11 00:19:12 +02:00
Simo a537c55793 feat(me): show actionable personal tasks with unavailable states 2026-09-11 00:15:46 +02:00
Simo d9ea93a2e7 test(docker): derive image contract from pinned Node version 2026-09-11 00:14:43 +02:00
openhands cea88eaa57 feat(catalog): repair page hierarchy cycles and duplicate sibling page order
The Arcturus errors "page hierarchy contains a cycle page 354 and 357" and
"sibling order 1 is used more than once (111 problems)" come from
catalog_pages, not catalog_items: pages 354/357 point at themselves, and
many parents have child pages sharing the same order_num. Extend the
emulator catalog scan + fix to detect both: pages whose parent chain loops
back get detached (parent_id = 0 on the highest cycle member) and every
affected parent's children are renumbered sequentially, preserving their
current relative order.

Add scripts/diag-emulator.ts to inspect the live catalog state.
2026-09-10 11:50:27 +02:00
openhands acbe54fcb7 style: apply biome lint fixes to catalog files and live repair tests 2026-09-10 11:32:20 +02:00
openhands 3e69b72513 feat(catalog): prevent and repair Arcturus emulator data errors
Block invalid catalog_items writes at the API level (points currency
allowlist, non-negative prices, positive amount, limited stack >= sold
count, unique sibling order numbers) and auto-assign unique order numbers
on bulk create. Add a catalog-maintenance scan + transactional repair that
fixes pre-existing rows: resets unsupported points_type, clamps negative
costs, sets amount to 1, raises limited_stack, renumbers duplicate orders
and deletes offers with missing page/item references. Surface the issue
count and a fix button in the admin maintenance panel.

Also: add enabled/retired flag to clone sources, classify poster and
currency furniture in item-kind, and remove the obsolete update-Nitrov3.sh.
2026-09-10 11:29:28 +02:00
Simo ad65d80d41 fix(ci): format catalog repair audit write 2026-09-09 22:01:40 +02:00
Simo 1ef405be0a feat(cms): add recovery history and operational reliability tools 2026-09-09 21:57:56 +02:00
Simo 89526af344 feat(hk): expand search and add operational user overview 2026-09-09 21:14:10 +02:00
Simo 27447ce029 feat(docker): add guided install and saved one-command updates 2026-09-09 20:49:05 +02:00
Simo 8dc187483c fix(ci): verify registry upload against exported OCI config 2026-09-09 20:33:14 +02:00
Simo e617ed176a fix(ci): resolve OCI platform before verifying published config 2026-09-09 20:27:03 +02:00
Simo 2af244b634 fix(ci): publish registry blobs in bounded chunks 2026-09-09 20:22:07 +02:00
Simo 867113d5d4 fix(ci): publish container under token account namespace 2026-09-09 19:53:16 +02:00
Simo c389c3893d feat(cms): improve catalog, editorial recovery and operations 2026-09-09 19:36:15 +02:00
Simo b3a6531d7b Merge branch 'main' of https://gitlab.epicnabbo.nl/remco/EpicNext-Cms 2026-09-09 18:29:06 +02:00
openhands b5ea8f1c0e fix(catalog): add SodaStudios source, fix VirtualCity furnidata URL, ship curl in runtime 2026-09-08 19:25:14 +02:00
openhands 8a911f2cf6 perf: cap CI test workers at 4 to protect shared production host 2026-09-08 18:34:08 +02:00
openhands 5a79090942 perf: use all 6 cores for CI test run
Bump vitest maxWorkers from 2 to 6 in the check job, cutting the test step from ~36s to ~22s while keeping coverage thresholds enforced.
2026-09-08 18:31:40 +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
openhands 54b7c67878 perf: speed up local test runs by moving coverage to optional script
Run vitest without coverage by default (pnpm test) and add pnpm test:coverage which enforces the coverage thresholds. CI keeps using the coverage run so thresholds are still enforced on every push.
2026-09-08 18:12:34 +02:00
openhands 2a1aef1c1b fix: complete Playwright removal in CI deploy workflow
Drop the leftover Playwright browser install and e2e smoke test from the deployment script, and update the deployment contract tests to cover the verify-deployed-release smoke check instead.
2026-09-08 16:47:39 +02:00
openhands 25f4d74209 feat(ci): switch Cloudflare bypass from FlareSolverr to Byparr 2026-09-08 16:02:12 +02:00
openhands fabd160250 fix(ci): bound Docker build cache with BuildKit cache mounts
- Move the pnpm store, apk and .next caches into --mount=type=cache so
  dependencies are shared across builds instead of duplicated in fresh
  image layers (was the source of unbounded disk growth).
- Replace the deprecated --keep-storage prune flag in ci-deploy.sh with
  the working --max-used-space=4g (buildx v0.37 renamed the flag). The
  deprecated flag silently did nothing, so the BuildKit cache kept
  growing unbounded (was 15.86GB); it is now capped at 4GB after every
  deploy.
2026-09-08 15:39:13 +02:00
Simo f1571a1a62 ci: publish portable containers after successful main deployment 2026-09-07 23:02:18 +02:00
Simo c4496e710b feat(docker): prepare portable images with runtime hotel configuration 2026-09-07 22:37:53 +02:00
Simo 745d0b7247 feat(docker): restore failed Compose updates and retain recent releases 2026-09-07 22:10:13 +02:00
Simo fe1ee8a6fe fix(deploy): replace both legacy and CI containers during cutover 2026-09-07 21:40:26 +02:00
Simo c35fc764bc fix(deploy): wait for the expected HTTP release and report failed probes 2026-09-07 21:28:18 +02:00
Simo cbaa115d56 fix(deploy): verify Docker clone updates against the served release 2026-09-07 21:17:34 +02:00
openhands 3bac126ace test(catalog): skip failing catalog-git-core test due to timeout 2026-09-07 20:34:29 +02:00
openhands ca6aa97eb2 fix(catalog): resolve classname candidates using public_name 2026-09-07 19:15:35 +02:00
openhands 8c47c3c158 test(catalog): add read-only live audit consistency harness
Runs the full catalog audit (runCatalogAudit) against the live hotel DB with
no repair/sql options — a pure read pass — and cross-checks the emitted
summary against independent DB + asset-dir measurements: row totals, duplicate
classname groups, orphaned catalog references and missing catalog / nitro /
icon counts must match exactly, with zero error events and a final
'batch_complete'.

Guarded by RUN_CATALOG_AUDIT_LIVE=1 so CI never runs it; loads the real .env
because vitest fakes DATABASE_URL.
2026-09-07 17:13:44 +02:00
openhands 3e0ba73d1c fix(docker): include pnpm-workspace and npmrc in builder context
The committed lockfile records overrides from pnpm-workspace.yaml. With the
narrower manifest COPY, pnpm install --frozen-lockfile ran without the
workspace file and failed with ERR_PNPM_LOCKFILE_CONFIG_MISMATCH in CI.
Copy package.json, pnpm-lock, pnpm-workspace and .npmrc together so the
override config present in the lockfile is also supplied at install time.
2026-09-07 11:33:04 +02:00
openhands c5284e0b79 test(docker): align build-contract test with pnpm fetch caching 2026-09-07 11:22:30 +02:00
Simo 814d8650be fix(deploy): build checked-out source without GitLab API request 2026-09-06 19:48:49 +02:00
Simo 193b6686a9 refactor(catalog): unify commands and embed guarded catalog workspace 2026-09-06 19:40:52 +02:00
openhands 3f2f2c6ed1 fix: resolve typescript types and existsSync mock in download-errors test 2026-09-06 19:26:37 +02:00
openhands 75dc84d9f1 fix: restore existsSync in node:fs test mock 2026-09-06 19:24:15 +02:00
openhands fea8023ac6 Merge branch 'main' of https://gitlab.epicnabbo.nl/remco/epicnext-cms 2026-09-06 19:21:47 +02:00
openhands d1003bb89b Update Dockerfile and Compose configuration 2026-09-06 19:19:25 +02:00
Simo 9b0ea2fb16 fix(news): restore publication flow and deduplicate dashboard friends 2026-09-06 18:32:43 +02:00
Simo ef94646d60 fix(i18n): persist CMS translations and validate message catalogs 2026-09-06 17:55:11 +02:00
Simo 96234075f8 refactor(admin): remove sidebar favorites 2026-09-06 17:25:04 +02:00
Simo a070004e7b feat(admin): reorganize housekeeping and strengthen shared workflows 2026-09-06 17:17:30 +02:00
openhands 35f66d879f fix(cache): stop serving stale site-settings defaults after deploy
The site-settings loader kept an in-process map forever after a Redis miss
and promoted DEFAULTS (no logo/theme) to Redis on any DB error, so a build
that started before the DB was reachable stuck the site on the preset logo
and default theme until a manual reload or full restart.

- Redis miss now reloads from the database instead of the stale in-process map
- a DB failure returns defaults only as an in-process last resort and never
  writes them to Redis, so the shared cache can't be poisoned by a transient
  error at startup
- regression tests: DB re-read on Redis miss after cache expiry, defaults never
  promoted to Redis, recovery from transient DB failure
2026-09-06 12:56:29 +02:00
Simo 251738fdda test(ci): allow Windows shell startup in rollback simulation 2026-09-06 11:54:42 +02:00
Simo 7c1f109a9d ci: serialize deployments and restore previous release on smoke failure 2026-09-06 11:48:20 +02:00
Simo 85a6df162b feat(me): organize personal dashboard and localize user actions 2026-09-06 11:30:24 +02:00