Skip to content

Setup never tells the user which models failed to download #604

Description

@thcp

What happens

warmup_models returns a per-model ModelWarmupStatus saying exactly which of the four models came down and which did not. desktop/ui/setup.js throws the value away.

So a user whose beat model never arrived sees a clean, successful setup, and then a permanently worse beat grid, with nothing at any point connecting the two. There is no message, no log line, and nothing in the UI.

Why it matters more than it looks

The degraded state is genuinely invisible from the outside. Beat detection falls back to librosa, which looks exactly like a machine that never had the model. The karaoke split just reports itself unavailable. Neither says why, and neither points at setup.

This is the piece that turns #603 from a bug into a bug nobody can report, because the user has no reason to suspect their models at all.

Constraints

  • The setup wizard is the wrong place for the visible message. The step that follows overwrites the status line immediately and then navigates away to the backend, so anything written there cannot be read.
  • The right home is the main UI, next to the feature that is actually degraded, which is a larger piece of work than the one line that reads the status.
  • desktop/ui/setup.js has no i18n layer at all (no import, all strings hardcoded), unlike the web UI in static/. Anything added there does not go through the language tables.

Activity

  1. thcp commented on Sep 9, 2026

    @thcp
    CollaboratorAuthor

    Partly fixed in #606, landed on main as 53a6c04.

    setup.js now reads the warmup result and names anything that did not download, in the log that gets attached to bug reports.

    Worth recording why this was nearly worthless: the first version read the Rust field names, but ModelWarmupStatus is #[serde(rename_all = "camelCase")], so all four were undefined and the warning could never fire. It was a no-op that looked correct, and it was verified by reading the struct rather than its wire format. Review caught it.

    The visible half is deliberately not done here. The setup wizard's status line is overwritten by the next step and then the window navigates away, so nothing written there can be read. Telling the user properly belongs in the main UI next to the feature that is actually degraded, and that is its own piece of work. Closing this as the reporting gap it described; reopen or file fresh if the in-app surface is wanted.

  2. self-assigned this
    on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions