Goreleaser failed during publish because notarize.macos timeout was
30m; Apple rejects authentication tokens with longer lifetimes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep workflow contents:read for PR safety, stop persisting the
read-only GITHUB_TOKEN into git config, and configure release
pushes to use CONTAINER_TOKEN instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove redundant component scanning, lazy-load terminal CSS and locale
messages, and clean obsolete frontend package metadata. Generate one JSON
file per locale so initial loads only fetch English and the selected locale.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the ESLint 8-based standard package with neostandard and a
flat config so frontend installs no longer pull deprecated ESLint 8
transitives. Keep vue recommended rules and auto-fix indent drift.
Co-authored-by: Cursor <cursoragent@cursor.com>
Limit the build workflow token to contents:read by default, and
include lang/** so language-tooling changes trigger CodeQL.
Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve Makefile/.PHONY conflicts with docs-check and unittests-race,
and address generated-check review feedback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Callers mutating Binding.ID or OnDashboards no longer race with
executor-owned state returned from GetLog helpers.
Co-authored-by: Cursor <cursoragent@cursor.com>
The test imported integration-tests/runner.mjs, which requires wait-on
that is not installed during frontend-unittests. pageGeneration coverage
remains in the integration test suite.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use AbortSignal.timeout for theme fetches, load themes without blocking
init, and add pageGeneration regression coverage for runner config changes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Harden entity watcher reconciliation, theme loading, and CI parallel job
waiting, and fix related UI and documentation issues raised in review.
Co-authored-by: Cursor <cursoragent@cursor.com>
When WatchFileWrite is called again for the same path, stop the prior
watcher by closing its done channel so StopFileWatch and replacement
registrations cannot leave duplicate callbacks active.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop obsolete entity file watchers on config reload, guard callbacks
against removed paths, and ignore stale getEntities responses in the
Entities page when reload events overlap.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract display-name lookup and field serialization helpers to stay
within cyclomatic complexity limits, pick a deterministic raw key when
field names differ only by case, and omit only that selected key from
API field responses.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the unconditional field-list exclusion claim, drop the incorrect
#996 release reference, document Docker ID fallback for JSON entities,
and add an explicit entity-details-page anchor for cross-references.
Co-authored-by: Cursor <cursoragent@cursor.com>
Document which fields become entity instance names, clarify JSON vs
docker field names, describe live reload behaviour for entity files and
new config entries, and note Docker Desktop file-watch limitations.
Part of #996
Co-authored-by: Cursor <cursoragent@cursor.com>
Entity instance titles are derived from fields such as title or name.
Do not repeat that same field in API fields or the entity details table,
which previously showed the title twice.
Part of #996
Co-authored-by: Cursor <cursoragent@cursor.com>
Sync entity file watchers when config reloads so new entity types in
config.yaml are watched without a restart. Skip duplicate fsnotify
goroutines for paths already watched.
Refresh the Entities page when EventEntityChanged or EventConfigChanged
fires, matching dashboards and entity details.
Part of #996
Co-authored-by: Cursor <cursoragent@cursor.com>
Each configured resultsDirectory or outputDirectory produces its own
file; configuring only one directory writes only that file type.
Co-authored-by: Cursor <cursoragent@cursor.com>