Skip to content

feat(deps): rework first-run overlay with step list, bytes, speed, and ETA#317

Open
Radexito wants to merge 13 commits into
devfrom
feat/270-rework-deps-overlay
Open

feat(deps): rework first-run overlay with step list, bytes, speed, and ETA#317
Radexito wants to merge 13 commits into
devfrom
feat/270-rework-deps-overlay

Conversation

@Radexito

@Radexito Radexito commented May 1, 2026

Copy link
Copy Markdown
Owner

Reworks the first-run dependency download overlay and folds in the fixes from #237 (now closed).

  • Step list shows each required dep (FFmpeg, mixxx-analyzer, yt-dlp) with live status icons
  • Download speed and ETA displayed per step
  • Byte progress shown during download
  • tidal-dl-ng excluded from required step count — shown as [optional] after required deps finish
  • getInstalledVersions() probes real binaries instead of cached .version files — Settings shows correct version after "Clear all data"
  • Final message: "Setup complete." when deps were downloaded, "Dependencies up to date." when all already present
  • getTidalBinPath() / uvToolEnv() manage tidal install in DjManager's own userData/bin

Closes #270
Closes #200

🤖 Generated with Claude Code

Radexito and others added 11 commits April 14, 2026 00:47
Tidal-dl-ng is a non-fatal optional dep — excluding it from totalSteps
stops the "[1/1]" display bug that affected users who already had FFmpeg,
analyzer, and yt-dlp installed (upgrade path).

- Required steps: FFmpeg, analyzer, yt-dlp — counted and displayed as [N/M]
- Optional step: tidal-dl-ng — displayed as [optional] prefix, not counted
- When only optional dep is missing: no [N/M] prefix, just the message
- Final message adapts: "Setup complete." vs "Dependencies up to date."

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hed version files

Settings showed "not installed" for deps that were present on disk because
getInstalledVersions() read from internal .version JSON files that get
wiped on "clear all data". Now each dep is probed by actually running the
binary (ffmpeg -version, yt-dlp --version, analysis --version, tdn via
findTidalDlPath), so the displayed status always reflects reality.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…local/bin

uv tool install now runs with UV_TOOL_DIR and UV_TOOL_BIN_DIR pinned to
userData/bin/ so tdn lands alongside ffmpeg and the analyzer. This makes
"Clear all data" actually remove tidal-dl-ng, and keeps all managed
binaries self-contained under DjManager's own folder.

findTidalDlPath() probes the managed path first, then falls back to
legacy system locations for pre-existing installs. Breaks the circular
import between deps.js and tidalDlManager.js — deps.js now uses
getTidalBinPath() directly; tidalDlManager.js computes the managed path
via electron app.getPath().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
tidal-dl-ng is optional. ensureDeps no longer downloads uv or installs
tdn at startup. Installation happens on demand when the user first opens
the Tidal tab (tidal-check IPC already calls ensureTidalDlNg).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nalysis

Back-calculated from native Rekordbox capture 20 (track with +2.6 dB
loudness analysis):
  Unnamed7 = 0x4975 = 18805 → ref7 = 18805 / 10^(2.6/20) = 13940
  Unnamed8 = 0x5DC9 = 24009 → ref8 = 24009 / 10^(2.6/20) = 17802

Previous values (19048 / 30967) were community-RE estimates that did not
match observed native output. Refs #299.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Radexito and others added 2 commits May 1, 2026 22:10
… message

- Early return was firing before tidal check, so tidal was never installed
- 'Dependencies up to date.' was unreachable (totalSteps always > 0 at that point)
- Restore tidal install block with [optional] prefix after required deps
- New early return: only when totalSteps=0 AND tidalReady (true all-clear)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rlay

- Remove tidal from STEP_DEFS — excluded from required step count so it
  never shows a misleading [1/N] counter
- Restore tidal optional install after required deps with [optional] prefix
  using structured object payload (stepId: null so overlay shows simple view)
- Early return emits object payload when all deps already present
- Final message: 'Setup complete.' vs 'Dependencies up to date.' depending
  on whether any required deps were downloaded
- Bring in getTidalBinPath() and uvToolEnv() from fix/200
- getInstalledVersions() now probes real binaries instead of cached files

Closes #237

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant