Skip to content

Feat/aa failure tracking#1907

Open
chrisuthe wants to merge 4 commits into
music-assistant:mainfrom
chrisuthe:feat/aa-failure-tracking
Open

Feat/aa failure tracking#1907
chrisuthe wants to merge 4 commits into
music-assistant:mainfrom
chrisuthe:feat/aa-failure-tracking

Conversation

@chrisuthe

@chrisuthe chrisuthe commented Jun 11, 2026

Copy link
Copy Markdown
Member

Implements frontend of Sonic Analysis failure table, showing "Failures" and re-scan date, and ability to clear table and force rescan of rows.

image

depends on music-assistant/server#4167

chrisuthe added 2 commits June 7, 2026 15:36
Add a card on Settings > System > Audio Analysis, below the coverage frame,
listing tracks that failed audio analysis (audio_analysis/failures) with their
reason and next-retry state. Each row can be deleted to clear the failure and
let the track be analyzed again on the next scan, plus a confirmed 'Clear all'.

- New composable useAudioAnalysisFailures: fetches the failures list, resolves
  track names lazily per visible page (so large failure lists stay cheap),
  paginates, and clears failures by row or in bulk per AA domain.
- New component AudioAnalysisFailures: reuses the shared table primitives and
  TablePagination; AlertDialog confirm on 'Clear all'; toast feedback.
- Degrades to an empty list when the server lacks the command (version skew).

Companion server branch: feat/aa-failure-tracking
- Key failure rows by the (item_id, provider, aa_domain) triple via a new
  rowId helper, so a track that failed under multiple AA providers is treated
  as distinct rows. Previously clearOne could over-remove and Vue list keys
  could collide. The name-resolution cache stays keyed by provider+item_id
  since the resolved track name is domain-independent.
- clearAll now uses Promise.allSettled and always refreshes from the server,
  so a partial failure across domains re-syncs the table instead of leaving
  stale rows; it throws when any domain fails so the UI surfaces the error.
- refresh now binds and logs the error before degrading to an empty list,
  leaving a diagnostic trail for genuine (non-version-skew) failures.
- Add tests for multi-domain clearOne, provider-scoped name resolution,
  name-cache dedup and negative-cache reuse, last-row page clamp, and
  clearAll partial-failure re-sync.
Distinguish version skew (Invalid command rejection from older servers,
which still degrades to an empty list) from genuine load failures, which
now keep previously loaded rows, expose an error ref rendered as a
distinct error state instead of the misleading empty message, and log to
the console. Also log the domain and reason of each rejected clearAll
call and the errors swallowed by the component toast handlers.
…cking

# Conflicts:
#	src/translations/en.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant