openhands
6ae7c09682
CI / check (push) Successful in 41s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m0s
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
..
2026-08-24 17:20:34 +02:00
2026-08-03 18:08:57 +02:00
2026-07-13 21:57:41 +02:00
2026-08-07 18:55:02 +02:00
2026-08-21 13:39:21 +02:00
2026-07-17 23:09:57 +02:00
2026-08-24 19:29:21 +02:00
2026-07-26 20:28:11 +02:00
2026-08-01 14:15:39 +02:00
2026-07-26 20:28:11 +02:00
2026-07-26 20:28:11 +02:00
2026-08-01 15:02:21 +02:00
2026-08-02 11:46:43 +02:00
2026-08-02 11:46:43 +02:00
2026-08-07 18:53:59 +02:00
2026-07-26 20:28:11 +02:00
2026-07-31 14:11:03 +02:00
2026-07-30 21:45:53 +02:00
2026-07-30 21:45:53 +02:00
2026-08-07 18:53:59 +02:00
2026-08-24 17:13:03 +02:00
2026-07-30 20:41:31 +02:00
2026-08-24 17:13:03 +02:00
2026-07-13 21:57:41 +02:00
2026-08-01 14:15:39 +02:00
2026-08-09 11:51:26 +02:00
2026-07-21 20:27:08 +02:00
2026-08-01 15:07:54 +02:00
2026-08-01 15:07:54 +02:00
2026-07-18 20:31:18 +02:00
2026-08-01 17:38:43 +02:00
2026-08-07 18:53:59 +02:00
2026-08-01 15:07:54 +02:00
2026-07-22 18:45:59 +02:00
2026-08-17 22:02:21 +02:00
2026-08-17 22:02:21 +02:00
2026-08-14 11:20:37 +02:00
2026-08-02 14:22:05 +02:00
2026-08-02 14:22:05 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-01 15:02:21 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-01 22:09:22 +02:00
2026-08-01 22:09:22 +02:00
2026-07-31 14:11:03 +02:00
2026-07-31 14:11:03 +02:00
2026-08-14 11:20:37 +02:00
2026-08-02 17:32:32 +02:00
2026-08-01 21:52:28 +02:00
2026-07-26 20:28:11 +02:00
2026-07-13 21:57:41 +02:00
2026-07-25 17:33:06 +02:00
2026-07-20 17:41:53 +02:00
2026-08-09 21:48:43 +02:00
2026-08-09 21:48:43 +02:00
2026-07-17 22:28:18 +02:00
2026-08-02 14:22:05 +02:00
2026-07-26 20:28:11 +02:00
2026-08-09 20:03:26 +02:00
2026-08-09 21:48:43 +02:00
2026-08-09 11:51:26 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-07-26 20:28:11 +02:00
2026-07-18 17:04:48 +02:00
2026-07-28 18:49:25 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-01 22:12:31 +02:00
2026-08-01 15:02:21 +02:00
2026-08-01 14:38:42 +02:00
2026-07-13 21:57:41 +02:00
2026-08-01 18:37:19 +02:00
2026-08-01 18:37:19 +02:00
2026-07-13 21:57:41 +02:00
2026-07-26 20:28:11 +02:00
2026-08-17 22:02:21 +02:00
2026-08-12 14:34:29 +02:00
2026-08-01 22:12:31 +02:00
2026-08-07 18:53:59 +02:00
2026-07-26 20:28:11 +02:00
2026-07-13 21:57:41 +02:00
2026-08-05 11:10:16 +02:00
2026-07-13 21:57:41 +02:00
2026-07-25 17:33:06 +02:00
2026-08-05 11:10:16 +02:00
2026-08-24 17:13:03 +02:00
2026-08-08 21:49:24 +02:00
2026-08-08 21:46:40 +02:00
2026-07-16 15:53:53 +02:00
2026-08-01 14:15:43 +02:00
2026-07-26 20:28:11 +02:00
2026-07-13 21:57:41 +02:00
2026-07-13 21:57:41 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-08-07 18:53:59 +02:00
2026-07-13 21:57:41 +02:00
2026-07-21 21:08:33 +02:00
2026-07-13 21:57:41 +02:00