Commit Graph
1199 Commits
Author SHA1 Message Date
simoleo 7c93d3e766 feat(housekeeping): add audit and preference storage 2026-08-26 21:42:14 +02:00
simoleo bdb8f0b02b test(housekeeping): isolate request capability contexts 2026-08-26 21:28:26 +02:00
simoleo edc165ba8d refactor(housekeeping): reuse request capability context 2026-08-26 21:20:12 +02:00
simoleo cc6bb9a9a3 fix(housekeeping): preserve error correlation IDs 2026-08-26 21:09:18 +02:00
simoleo b7edbca043 refactor(housekeeping): stabilize service contracts 2026-08-26 21:04:42 +02:00
simoleo 67cb4b488d fix(housekeeping): satisfy ase route types 2026-08-26 20:52:13 +02:00
simoleo a9bdd6bd5d fix(housekeeping): avoid ase preview self-redirect 2026-08-26 20:50:09 +02:00
simoleo f72a2b6c74 refactor(housekeeping): adopt ase route namespace 2026-08-26 20:44:38 +02:00
simoleo 2a36ba1956 Merge branch 'main' into codex/housekeeping-foundation 2026-08-26 19:50:26 +02:00
simoleo 08f8d54888 fix: close housekeeping foundation review findings 2026-08-26 19:16:34 +02:00
simoleo ebc263da35 test: harden housekeeping foundation boundaries 2026-08-26 18:00:35 +02:00
simoleo 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
- 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
- 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 2026-08-26 14:28:28 +02:00
openhands 4eded4ec61 Apply Biome lint fixes 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 2026-08-25 21:52:18 +02:00
simoleo a47b4eb195 test: canonicalize housekeeping module boundaries 2026-08-25 21:35:10 +02:00
simoleo b6bf5e69ca test: parse housekeeping import boundaries 2026-08-25 21:23:58 +02:00
simoleo 0b46a94d57 test: close housekeeping import-policy escapes 2026-08-25 21:11:37 +02:00
simoleo ff2b2af6d4 test: harden housekeeping preview boundaries 2026-08-25 21:00:22 +02:00
simoleo d19ba88005 feat: add gated housekeeping foundation preview 2026-08-25 20:45:40 +02:00
simoleo cc241f0b7e test: cover housekeeping palette utilities 2026-08-25 20:29:08 +02:00
simoleo 8bf4663336 test: complete housekeeping shell boundary guard 2026-08-25 20:25:11 +02:00
simoleo 52ec48ffe4 test: harden housekeeping shell contracts 2026-08-25 20:17:45 +02:00
simoleo addc9c7b1a feat: build housekeeping command deck shell 2026-08-25 20:05:56 +02:00
simoleo cfeb0f19b8 fix: refine housekeeping Italian copy 2026-08-25 19:54:58 +02:00
simoleo 14cfad4029 test: harden housekeeping registry contracts 2026-08-25 19:49:31 +02:00
simoleo 2d5f03048a feat: add housekeeping domain registry 2026-08-25 19:39:08 +02:00
simoleo 7edca410fa test: harden housekeeping capability context 2026-08-25 19:25:27 +02:00
simoleo c63c9830b2 feat: add housekeeping capability context 2026-08-25 19:16:29 +02:00
simoleo 7d62a04f0e feat: define housekeeping foundation contracts 2026-08-25 19:06:23 +02:00
simoleo 3b3d7780c9 docs: complete housekeeping migration matrix 2026-08-25 18:49:58 +02:00
simoleo 9b7d5de12f fix: classify Studio audit repairs as mutations 2026-08-25 18:34:15 +02:00
simoleo 949e14c109 docs: audit housekeeping hotel workflows 2026-08-25 18:26:25 +02:00
simoleo 4d9845b52f fix: complete housekeeping economy audit 2026-08-25 18:14:30 +02:00
simoleo 3a03a3db15 docs: audit housekeeping economy workflows 2026-08-25 18:14:30 +02:00
simoleo 09850c807c docs: audit housekeeping content workflows 2026-08-25 18:14:29 +02:00
simoleo eb9f01d6fe docs: audit housekeeping people workflows 2026-08-25 18:14:28 +02:00
simoleo a619f89106 fix: normalize housekeeping root routes 2026-08-25 18:14:28 +02:00
simoleo 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) 2026-08-24 20:48:13 +02:00
openhands 6ae7c09682 perf: offload per-import localized patch to worker + cache FurnitureData parse
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
simoleo 6ed1b03e24 chore: align Node 26.7.0 toolchain 2026-08-24 19:12:11 +02:00
openhands f94246e067 perf: offload FurnitureData translation build to a worker thread
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
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
- 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
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
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