When I first tried to use Laser, I though for a moment that there was no progress indicator because the icons are so subtle. I wanted to make sure this doesn't happen with other users, but also keeps the clean and minimal interface. This PR adds a progress bar to the top of the content area that shows overall ripping progress across all tracks.
- Slides down on rip start, hides on completion / error / cancel
- Advances by 1/n_tracks after each track completes (sequential rips → monotonic)
- No labels or percentage — just a clean bar
- Square corners via a small .rip-progress CSS rule
Test plan
- Insert a CD, click Rip → bar appears at top, fills monotonically, hides on finish
- Stop rip mid-way → bar hides immediately
- Trigger an error path → bar hides via the unified _on_ripper_finished
- In offline mode, banner + progress bar coexist cleanly
When I first tried to use Laser, I though for a moment that there was no progress indicator because the icons are so subtle. I wanted to make sure this doesn't happen with other users, but also keeps the clean and minimal interface. This PR adds a progress bar to the top of the content area that shows overall ripping progress across all tracks.
- Slides down on rip start, hides on completion / error / cancel
- Advances by 1/n_tracks after each track completes (sequential rips → monotonic)
- No labels or percentage — just a clean bar
- Square corners via a small .rip-progress CSS rule
**Test plan**
- Insert a CD, click Rip → bar appears at top, fills monotonically, hides on finish
- Stop rip mid-way → bar hides immediately
- Trigger an error path → bar hides via the unified _on_ripper_finished
- In offline mode, banner + progress bar coexist cleanly