Skip to content

NOMAD Field Desk v7.0.2 — Shell Resilience & Route-Safe Guided Tour

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 11 Apr 22:00
· 794 commits to master since this release

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 throwing ReferenceError the 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
    calculatorInitializers array with hasNodes() 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.js and wired into the inline bundle so
    the profile experience can evolve independently.

Static regression coverage

  • tests/test_core.py gains ~140 assertions covering the new aria
    contracts, tour session keys, shell escape closer, shared-form
    guards and the new split _app_workspace_profiles.js include.
  • tests/ui/shell-workflows.spec.mjs extends the Playwright shell
    workflow suite for the same surfaces.

Verification before release

  • python -m pytest -q tests/test_core.py — 52 passed
  • python -m pytest -q --ignore=tests/test_crud_api.py — 836 passed
  • npm run visual:test — 18 passed
  • npm run build — passed
  • pyinstaller 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.