Commit Graph
1393 Commits
Author SHA1 Message Date
openhands 3cc201a0ce Optimize next.config.ts with SWC minification and React strict mode 2026-08-25 22:30:35 +02:00
openhands 94b0b65ca0 Remove unused dependencies flagged by Knip
CI / check (push) Successful in 26s
CI / release (push) Skipped
CI / deploy (push) Successful in 38s
2026-08-25 22:28:02 +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 f63ca708fe Fix deploymentId in next.config.ts
CI / check (push) Failing after 26s
CI / release (push) Skipped
CI / deploy (push) Skipped
2026-08-25 22:20:41 +02:00
openhands e06596391e Fix Turbopack module resolution for lzma and restore path imports 2026-08-25 22:19:59 +02:00
openhands a5044c80d7 fix: resolve biome linter warnings and code formatting
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Successful in 46s
2026-08-25 21:54:02 +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
Simo 3f10db41db docs: plan housekeeping inventory foundation 2026-08-25 18:14:27 +02:00
Simo 601a3e746f docs: design housekeeping modernization 2026-08-25 18:14:26 +02:00
openhands 3a76dbdb97 feat: rename Nitro-V3 to Octane, add auto-setup and old Nitro cleanup
CI / check (push) Successful in 27s
CI / release (push) Skipped
CI / deploy (push) Successful in 52s
- Rename all references from Nitro-V3/Nitro_Render_V3 to Octane/Octane-Renderer
- Update default paths to /var/www/Octane and /var/www/Octane-Renderer
- Update ASCII art banner from NITRO to OCTANE
- Add GIT_REPO_CLIENT and GIT_REPO_RENDERER constants (configurable via .env)
- Add auto_setup_missing_repos() - clones, installs deps, and builds frontend
- Add cmd_setup command (menu option 22 / CLI: setup/init)
- Preflight check now auto-clones missing repos instead of dying
- Add cmd_cleanup_old_nitro() - detects old Nitro dirs and safely removes them:
  Updates symlinks, nginx configs, and systemd services before deletion
- Add cmd_cleanup_old_nitro command (menu option 23 / CLI: cleanup-nitro)
- Add translations for NL, FR, ES, DE, IT
- Update notification text to [Octane Update]
2026-08-25 15:15:17 +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
openhands 02f8ffc0bc chore: remove dead files flagged by knip
CI / check (push) Successful in 24s
CI / release (push) Skipped
CI / deploy (push) Successful in 51s
Delete two unreachable files with no importers:
- src/components/ui/dropdown-menu.tsx
- src/lib/admin/verify-interactions.ts
2026-08-24 17:20:34 +02:00
openhands c7ba04bda1 feat: relocate import tools into studio and harden catalog/furnidata integrity
CI / check (push) Failing after 26s
CI / release (push) Skipped
CI / deploy (push) Skipped
- Move /admin/import/* tools under /admin/studio/* and add studio nav, layout and tabs
- Add shared catalog maintenance panel plus a /admin/studio/maintenance tab
- Make furnidata reconciliation overwrite conflicting entries with the
  DB-authoritative items_base classname/id (surfaced via fixedConflicts)
- Add furnidata_translate_enabled setting to skip the heavy localized
  furnidata build during import (manual build-languages still forces it)
- Update staff smoke contract test for the studio hub
2026-08-24 17:13:03 +02:00
openhands c2e61dc324 fix: reduce import concurrency to prevent 100% CPU during SWF→Nitro conversion
CI / check (push) Successful in 42s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m43s
- Default batch concurrency: 3→1 (max 5→3)
- Default batch-regen concurrency: 3→1 (max 5→3)
- Default IMPORT_BATCH_CONCURRENCY: 12→3
- Added setImmediate yields between items to prevent event loop blocking

Fixes gatje and other complex furniture imports consuming 100% CPU and stalling the catalog studio.
2026-08-23 19:51:04 +02:00
openhands c043af318b Collapse catalog_items duplicates by (page_id, item_ids) so same item on a page is removed regardless of price
CI / check (push) Successful in 43s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m12s
2026-08-23 15:52:20 +02:00
openhands 2b7b445b73 Fix catalog_items_bc dedup/health: use its actual schema (no cost columns)
CI / check (push) Successful in 41s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m11s
2026-08-23 15:39:07 +02:00