Repository navigation
NOMAD Field Desk v7.0.2 — Shell Resilience & Route-Safe Guided Tour
NOMAD Field Desk v7.0.2 — Shell Resilience & Route-Safe Guided Tour
A focused stability release that hardens the single-page shell, makes
the guided tour survive route hops and reloads, and teaches every
shared form to fail soft when its DOM isn't mounted.
Highlights
Shell / runtime resilience
- Unified
aria-hidden+ visibility contract across Customize, command
palette, shortcuts overlay, setup wizard, guided tour, LAN chat,
quick actions, timer panel and shell health dialog. Hidden panels
no longer steal focus or trap tab stops, and Escape closes only the
top-most visible surface. - Shell escape closer force-stops LAN message and timer polling when
their panels collapse, so background work doesn't leak on close. - Utility + shortcut overlay templates ship hidden and
aria-hidden="true"by default to kill flash-of-content on boot. - Customize panel z-index split (overlay 9600 / panel 9601) so the
overlay no longer eats clicks meant for panel controls.
Guided tour / onboarding stability
- Tour state (current step + focus-restore target) now round-trips
through session storage and survives full page reloads and NOMAD
route changes. - Tour advancement uses
openWorkspaceRouteAware()so step targets
resolve on dedicated routes as well as the single-page shell. - Skipping or Escaping out of the tour queues a focus restore back
to the Services entry point instead of leaving focus in a
destroyed overlay. restoreGuidedTourIfNeeded()silently resumes a mid-flight tour
after reload / route change.
Radiation, ICS 213 / 309 / 214 and shared forms
- Radiation add/save and every ICS 213 / 309 / 214 helper now looks
up inputs once, guards on missing DOM (hidden / dedicated routes)
and fails soft instead of throwingReferenceErrorthe first time
they're hit from the wrong tab. - Scheduled tasks, radio schedules, skills, ammo, community and
command post forms are converted to the same "collect refs first,
bail if any are missing" pattern.
AI chat / services runtime defense
- Pull-progress poller, model-ready poller, chat send/stop controls
and chat stats now guard every required input/button before firing. - Calculator boot loop is now table-driven via a
calculatorInitializersarray withhasNodes()pre-checks, so
one missing calc can't cascade and blank the Calculators tab.
Workspaces polish
- Notes editor, templates dropdown, map regions / files, KB doc
pipeline, tour overlay, wizard skeleton, LAN overlay, AI model
cards and system-info cards all null-guard every DOM lookup in
their interactive handlers. - Workspace profile builder + system prompt presets extracted into
_app_workspace_profiles.jsand wired into the inline bundle so
the profile experience can evolve independently.
Static regression coverage
tests/test_core.pygains ~140 assertions covering the new aria
contracts, tour session keys, shell escape closer, shared-form
guards and the new split_app_workspace_profiles.jsinclude.tests/ui/shell-workflows.spec.mjsextends the Playwright shell
workflow suite for the same surfaces.
Verification before release
python -m pytest -q tests/test_core.py— 52 passedpython -m pytest -q --ignore=tests/test_crud_api.py— 836 passednpm run visual:test— 18 passednpm run build— passedpyinstaller build.spec— passed (dist/NOMADFieldDesk.exe, 126 MB)
Download
Windows portable executable: NOMADFieldDesk.exe (attached).
No data format or DB schema changes — drop the new exe in place over
v7.0.1.