Skip to content

Tags: SysAdminDoc/project-nomad-desktop

Tags

v7.66.0

Toggle v7.66.0's commit message
ci: xvfb-run wrap for Linux pytest + resilient release-job

Linux build was failing on `import nomad` -> `_check_deps()` -> `import webview`
-> Xlib.error.DisplayNameError because the runner has no display server.
Wrap pytest in xvfb-run so pywebview's Xlib import has a virtual display.

Also make the release-job tolerate one OS matrix job failing — copy
whichever artifacts exist instead of bailing on the first missing one.
This unblocks releases when (e.g.) macOS signing or Linux deps fail.

v7.65.0

Toggle v7.65.0's commit message
release: v7.65.0

Factory-loop 3-iteration run closes H-14 (create_app thinning),
H-09 / V8-11 (lazy blueprint registration), and the latent
_broadcast SSE silent-failure bug for Emergency-mode + Family
check-in. 11 new test assertions (7 lazy-blueprint concurrency
+ 4 broadcast regression).

Boot time median drops 514 → 474 ms (~40 ms / 8%) on the 3-subprocess
sample. create_app() body shrinks 1243 → 663 lines.

v7.64.0

Toggle v7.64.0's commit message
postflight [LOW]: encodeURIComponent(packId) in dfInstall/dfUninstall…

…Pack

Postflight security sweep flagged that the H-05 delegated listener
reads packId from a DOM data-attribute and string-concatenates it into
the API URL without encodeURIComponent. Current registry schema keeps
pack_id safe (alphanum + dashes), but a future registry change (or a
server-side drift) that introduces '/', '?', or '#' into a pack_id
would silently shift the POST target to an unintended endpoint.

Add encodeURIComponent() on both paths — no-op for current pack IDs,
harden against drift. Matches the defensive encoding pattern already
used elsewhere in the codebase (api.get(…ancodeURIComponent(q))).

v7.61.0

Toggle v7.61.0's commit message
v7.61.0: test coverage + roadmap convergence (V8-10/14/16/22/23 done)

Five V8 items close in a single pass. Two (V8-10 template cache, V8-22
auto-update checksum parity) were already shipped and are verified + marked
Done with file:line evidence after this iteration's audit. Three required
real work:

- V8-14: hoisted inline allowed={} sets in emergency.py, maps.py, media.py
  to module-level frozenset constants; regression-pinned in
  tests/test_allowlists.py (committed separately).
- V8-16: new tests/test_db_integration_file.py exercises init_db() +
  create_app() against a file-backed SQLite DB and pins WAL mode,
  schema-version gate, core tables, and pool reuse (committed separately).
- V8-23: explicit seed fixtures already landed in tests/conftest.py
  (seed_upc_entry / seed_rag_scope_row / assert_*_seeded) — marked Done.

No behavior changes. Version strings synced across config.py, pyproject.toml,
README badge line, CHANGELOG entry, and ROADMAP status table.

v7.59.0

Toggle v7.59.0's commit message
v7.59.0 — V8-19 mobile prep nav + V8-20 MkDocs docs site

V8-19: Replace button sub-tab strip with <select> at <=600px viewport.
_syncMobileSubSelect() rebuilds options when lane changes; switchPrepSub()
keeps select value in sync. Scenario grid: 2-col at 480-600px, 1-col
below 420px. Workbench strip stacks vertically; resume/pin still visible.

V8-20: MkDocs Material docs site with 41-section guide extracted from
showHelp() in _app_ops_support.js. docs/guide/ has one markdown file per
section. mkdocs.yml covers all 41 sections plus schema/atlas developer
docs. GitHub Actions docs.yml deploys to GitHub Pages on master push.
scripts/extract_guide_to_docs.py is idempotent extraction helper.

v7.58.0

Toggle v7.58.0's commit message
v7.58.0: V8-12 — frontend unit tests (vitest, 48 tests)

Add vitest + jsdom test suite for core JS utility functions.
Tests cover escapeHtml, formatBytes, timeAgo, parseInventoryCommand,
and parseSearchBang — 48 tests, 0 failures.

tests/js/utils.js: pure-logic extraction of template functions
tests/js/utils.test.js: 48 tests across 5 describe blocks
vitest.config.mjs: jsdom environment, tests/js/**/*.test.js glob

v7.57.0

Toggle v7.57.0's commit message
v7.57.0: V8-06/V8-09/V8-11 — blueprint tests, middleware module, blue…

…print registry

- V8-06: 15 new test files, 131 tests covering contacts, tasks, checklists,
  notes, medical, weather, power, services, security, agriculture, evac_drills,
  readiness_goals, group_ops, health_family, daily_living

- V8-09/V8-11: extract middleware (web/middleware.py) and blueprint registration
  (web/blueprint_registry.py) from create_app(); reduce app.py by 460 lines

  setup_middleware(app): rate limiting, CSRF, host validation, LAN auth,
  security headers, DB cleanup, error handlers — all in one module.
  MUTATING_METHODS, _CSP_POLICY are module-level constants.

  register_blueprints(app): deferred imports for all 72 blueprints + alert
  engine, scheduler, plugin loader.

v7.32.0

Toggle v7.32.0's commit message
Fix build: add 30+ missing blueprint hidden imports, sync installer v…

…ersion to 7.32.0

v7.28.1

Toggle v7.28.1's commit message
Fix SSE stale-cleanup id() collision evicting fresh queues

v7.28.0

Toggle v7.28.0's commit message
v7.28.0 — Auth foundation + validation expansion

H4 require_auth decorator (desktop-default, opt-in multi-user)
+ H2 schemas for medical_phase2 + vehicles
+ M1 pagination for 4 more blueprints
+ M2 activity logging for checklists + weather

See CHANGELOG.md for full details.