Problem
The Database Sync Status modal shows one stage label per chain (e.g. "Decoding raindex logs", "Running bootstrap", "Fetching raindex logs"). Each chain advances through a fixed pipeline of stages, but the UI surfaces only the current label without the surrounding sequence — so the user can't tell:
- which stages have completed
- which stages remain
- roughly how far through the sync each chain is
When chains spend minutes in a particular stage, the modal looks identical to a hung sync.
Proposal
Render each chain's row as a stepper / progress bar through the canonical pipeline. Concretely:
- Show all stages of the runner pipeline in order with the current one highlighted, prior ones marked complete, future ones dimmed.
- Pipeline stages from `crates/common/src/local_db/pipeline/runner/mod.rs` `TargetStage`:
- `ManifestFetch`
- `DumpDownload` (incl. bootstrap)
- `EngineBuild`
- `EngineRun` (where current sub-stages like "Fetching raindex logs" / "Decoding raindex logs" live)
- `Export`
- Optionally percentage = (completed-stage count + fraction-of-current-stage) / total.
The current sub-stage labels ("Fetching", "Decoding", "Running bootstrap") should appear under the active step rather than as the only thing shown.
Acceptance
- For an in-progress sync, the modal shows the full pipeline ordering for each chain with the current stage visually distinct.
- A user glancing at the modal can answer "which stages remain?" and "is this stuck or progressing?" without reading source.
- Failed syncs continue to display the underlying error text in addition to the stage indicator.
Problem
The Database Sync Status modal shows one stage label per chain (e.g. "Decoding raindex logs", "Running bootstrap", "Fetching raindex logs"). Each chain advances through a fixed pipeline of stages, but the UI surfaces only the current label without the surrounding sequence — so the user can't tell:
When chains spend minutes in a particular stage, the modal looks identical to a hung sync.
Proposal
Render each chain's row as a stepper / progress bar through the canonical pipeline. Concretely:
The current sub-stage labels ("Fetching", "Decoding", "Running bootstrap") should appear under the active step rather than as the only thing shown.
Acceptance