Commit Graph
746 Commits
Author SHA1 Message Date
Simo cc6bb9a9a3 fix(housekeeping): preserve error correlation IDs 2026-08-26 21:09:18 +02:00
Simo b7edbca043 refactor(housekeeping): stabilize service contracts 2026-08-26 21:04:42 +02:00
Simo 67cb4b488d fix(housekeeping): satisfy ase route types 2026-08-26 20:52:13 +02:00
Simo a9bdd6bd5d fix(housekeeping): avoid ase preview self-redirect 2026-08-26 20:50:09 +02:00
Simo f72a2b6c74 refactor(housekeeping): adopt ase route namespace 2026-08-26 20:44:38 +02:00
Simo 2a36ba1956 Merge branch 'main' into codex/housekeeping-foundation
CI / check (pull_request) Successful in 28s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-26 19:50:26 +02:00
Simo 08f8d54888 fix: close housekeeping foundation review findings
CI / check (pull_request) Successful in 28s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
2026-08-26 19:16:34 +02:00
Simo ebc263da35 test: harden housekeeping foundation boundaries 2026-08-26 18:00:35 +02:00
Simo a158c78a7c test: verify housekeeping foundation boundaries 2026-08-26 17:44:03 +02:00
openhands 9d0da5d65a Perf: cache Nitro client assets and parallelize client page
CI / check (push) Successful in 31s
CI / release (push) Skipped
CI / deploy (push) Successful in 59s
- Serve /swf and /nitro-assets (~2.8GB) with 7-day Cache-Control plus
  stale-while-revalidate so client opens stop re-fetching hundreds of
  files while asset updates still propagate in the background
- Issue the SSO ticket and the online count query in parallel on the
  client page to shave a round-trip off the critical render path
2026-08-26 15:06:16 +02:00
openhands f25a26a93e Register: auto sign-in to /me and speed/cleanup improvements
CI / check (push) Failing after 30s
CI / release (push) Skipped
CI / deploy (push) Skipped
- Send the verification email after the response via after() so it
  never blocks sign-up
- Invalidate the cached login lookup right after account creation so
  the automatic sign-in always finds the fresh row
- Auto sign in with the submitted credentials and go straight to /me,
  with a fallback to /login?registered=1 if sign-in is refused (e.g.
  email verification required)
- Cache the register page's online/latest user queries to cut DB load
  under traffic
- Fix terms checkbox label double-toggle cancelling the selection
- Add pages.register.redirecting translation to all locales
2026-08-26 14:57:51 +02:00
openhands 2d09a4a92c Add missing migrations
CI / check (push) Failing after 26s
CI / deploy (push) Skipped
CI / release (push) Skipped
2026-08-26 14:28:28 +02:00
openhands 4eded4ec61 Apply Biome lint fixes
CI / check (push) Failing after 26s
CI / release (push) Skipped
CI / deploy (push) Skipped
2026-08-25 22:26:05 +02:00
openhands e06596391e Fix Turbopack module resolution for lzma and restore path imports 2026-08-25 22:19:59 +02:00
openhands 416c31643b perf: optimize dashboard database queries and remove unused imports
CI / check (push) Failing after 10s
CI / deploy (push) Skipped
CI / release (push) Skipped
2026-08-25 21:52:18 +02:00
Simo a47b4eb195 test: canonicalize housekeeping module boundaries 2026-08-25 21:35:10 +02:00
Simo b6bf5e69ca test: parse housekeeping import boundaries 2026-08-25 21:23:58 +02:00
Simo 0b46a94d57 test: close housekeeping import-policy escapes 2026-08-25 21:11:37 +02:00
Simo ff2b2af6d4 test: harden housekeeping preview boundaries 2026-08-25 21:00:22 +02:00
Simo d19ba88005 feat: add gated housekeeping foundation preview 2026-08-25 20:45:40 +02:00
Simo cc241f0b7e test: cover housekeeping palette utilities 2026-08-25 20:29:08 +02:00
Simo 8bf4663336 test: complete housekeeping shell boundary guard 2026-08-25 20:25:11 +02:00
Simo 52ec48ffe4 test: harden housekeeping shell contracts 2026-08-25 20:17:45 +02:00
Simo addc9c7b1a feat: build housekeeping command deck shell 2026-08-25 20:05:56 +02:00
Simo cfeb0f19b8 fix: refine housekeeping Italian copy 2026-08-25 19:54:58 +02:00
Simo 14cfad4029 test: harden housekeeping registry contracts 2026-08-25 19:49:31 +02:00
Simo 2d5f03048a feat: add housekeeping domain registry 2026-08-25 19:39:08 +02:00
Simo 7edca410fa test: harden housekeeping capability context 2026-08-25 19:25:27 +02:00
Simo c63c9830b2 feat: add housekeeping capability context 2026-08-25 19:16:29 +02:00
Simo 7d62a04f0e feat: define housekeeping foundation contracts 2026-08-25 19:06:23 +02:00
Simo 3b3d7780c9 docs: complete housekeeping migration matrix 2026-08-25 18:49:58 +02:00
Simo 9b7d5de12f fix: classify Studio audit repairs as mutations 2026-08-25 18:34:15 +02:00
Simo 949e14c109 docs: audit housekeeping hotel workflows 2026-08-25 18:26:25 +02:00
Simo 4d9845b52f fix: complete housekeeping economy audit 2026-08-25 18:14:30 +02:00
Simo 3a03a3db15 docs: audit housekeeping economy workflows 2026-08-25 18:14:30 +02:00
Simo 09850c807c docs: audit housekeeping content workflows 2026-08-25 18:14:29 +02:00
Simo eb9f01d6fe docs: audit housekeeping people workflows 2026-08-25 18:14:28 +02:00
Simo a619f89106 fix: normalize housekeeping root routes 2026-08-25 18:14:28 +02:00
Simo dee4031421 test: define housekeeping migration inventory 2026-08-25 18:14:27 +02:00
openhands 1a0d20fae5 i18n: add pages.admin.studio namespace to all 22 locale files (EN placeholders + Dutch)
CI / check (push) Successful in 26s
CI / release (push) Skipped
CI / deploy (push) Successful in 42s
2026-08-24 20:48:13 +02:00
openhands 6ae7c09682 perf: offload per-import localized patch to worker + cache FurnitureData parse
CI / check (push) Successful in 41s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
Per single furni import, patchLocalizedFurniDataEntries ran for every
language and did a full 100k-entry JSON.parse + scan + JSON.stringify on the
main thread. That CPU spike is now offloaded to the translation worker
(init/prepare/finalize reuses the same pure core helpers), so importing
never blocks the event loop. The main thread only does async file I/O and the
network LibreTranslate calls. Falls back to the same helpers on the main
thread if no worker is available.

Also cache readFurniData() by file mtime+size so the 100k-entry JSON is
parsed once per change instead of on every import/fix/reconcile read
(invalidated on write).
2026-08-24 19:29:21 +02:00
Simo 6ed1b03e24 chore: align Node 26.7.0 toolchain
CI / check (push) Successful in 35s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
2026-08-24 19:12:11 +02:00
openhands f94246e067 perf: offload FurnitureData translation build to a worker thread
CI / check (push) Successful in 33s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
The translation build's CPU-heavy work (deep clone of the 100k+ entry
master, the two full scans and JSON.stringify per language) now runs in a
worker thread, so "Alles vertalen" no longer blocks the main event loop.
Network/DB parts (official Habbo fetch, LibreTranslate, file writes) stay
on the main thread. The pure helpers were extracted to furni-data-i18n-core
(no server-only deps) so the worker can import them. Falls back to the same
helpers on the main thread when no worker is available or in tests.
2026-08-24 19:10:33 +02:00
openhands 8d1b09f151 perf: offload SWF→Nitro conversion to a worker-thread pool
CI / check (push) Successful in 34s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
The synchronous convertSwfToNitro / extractIconFromSwf calls (pure CPU,
no DB/network) now run in a small worker pool so the main Node event
loop stays free during imports — the dominant import-time CPU spike is
moved off the request thread. The pool degrades gracefully to a
synchronous fallback if workers can't be created, and is skipped in the
test environment.
2026-08-24 19:02:19 +02:00
openhands 7116f49e2b perf: eliminate lag spikes and redundant work in furnidata i18n
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m1s
- patchLocalizedFurniDataEntries now only touches the wanted classnames
  instead of scanning the whole 100k file, reads the master once (was
  twice), and uses the batched translator instead of one HTTP call per
  text.
- Remove the now-unused serial translateWithLibre.
- buildLocalizedFurniDataFiles yields between the two section scans and
  before stringify so a single language no longer blocks the event loop
  for the whole pass at once.
2026-08-24 18:52:55 +02:00
openhands 5efd004533 perf: throttle localized furnidata build to avoid 100% CPU spikes
CI / check (push) Successful in 32s
CI / release (push) Skipped
CI / deploy (push) Successful in 56s
Lower LibreTranslate concurrency to 2 and yield the event loop between
languages so the 13x deep-clone + stringify loop no longer pins a core
continuously. The build is also already opt-in (off by default on import).
2026-08-24 18:43:07 +02:00
openhands 4a95b53b02 feat: add "Vertaal alles" button to translate the whole catalog on demand
CI / check (push) Successful in 32s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
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
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m3s
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
openhands 6dced0fb54 feat: per-import translation toggle and language picker in studio
CI / check (push) Successful in 28s
CI / release (push) Skipped
CI / deploy (push) Successful in 53s
Furni imports can now choose whether to translate (per import) and which
languages to build, instead of always rebuilding all 13 FurnitureData_<lang>
files. The studio header also has a global switch that persists the
furnidata_translate_enabled setting, seeding the per-import default.
2026-08-24 18:16:42 +02:00
openhands d6af754211 feat: dedupe duplicate catalog_pages to prevent double links
The maintenance "Fix alles" now collapses catalog_pages that share the same
caption_save + parent_id into a single survivor (moving catalog_items and
reparenting child pages before deleting duplicates), so the catalog tree
never renders double links. The duplicate-page count is also surfaced in the
health panel.
2026-08-24 18:16:28 +02:00