mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-24 18:50:15 +00:00
12becd1f4b
Closes #2771. v0.51.117 (PR #2766) introduced a top-level function _inflightStateLimits() in static/ui.js that collided with the window._inflightStateLimits config object set in static/boot.js. Because top-level function declarations in classic (non-module) scripts attach to window, boot.js's assignment overwrote the function reference, and every later _inflightStateLimits() call threw TypeError. _compactInflightState() runs on every send(), so no new chat session could be created — v0.51.117 is effectively unusable. Reported by @jahilldev, with multiple users (@isma3iloiso, @theDanielJLewis, @JHVenn) confirming the bug or reverting to v0.51.116. Fix: rename the function to _getInflightStateLimits() — the window-attached config key stays under its original name (unchanged for any downstream code that reads it). Updates all 4 call sites in static/ui.js. Tests: - Update tests/test_inflight_storage_quota.py — the existing test asserted 'function _inflightStateLimits()' in UI_JS as a positive presence check, which certified the bug. Now asserts the renamed function name is present AND the old colliding name is absent AND no stale call sites remain. - Add tests/test_window_function_collision.py — generalized regression that scans every static JS file for top-level function declarations whose name also appears as the target of 'window.X = {...}' or 'window.X = <number>'. This is the exact shape that broke #2715 (_pinnedSessionsLimit in v0.51.106) and #2771. Test fails with a precise diagnostic naming the file and symbol if the bug class returns. Confirmed test FAILS on current master (unfixed) and PASSES on this branch. Verified end-to-end against the live browser before commit: - typeof window._inflightStateLimits === 'object' (config preserved) - typeof window._getInflightStateLimits === 'function' - _getInflightStateLimits() returns the limits object - saveInflightState() persists to localStorage without throwing Full pytest suite: 6308 passed, 6 skipped, 3 xpassed, 8 subtests passed. Opus advisor: SHIP.