Conversation
feat: auto-normalize on import setting
…123) When a yt-dlp download is in progress, sidebar navigation items other than the YT-DLP tab are greyed out and clicks are ignored. A tooltip explains why. The YT-DLP tab shows a ⏳ indicator while downloading. Changes: - DownloadView: accepts onDownloadingChange callback, calls it true on download start and false on completion (both async resolve and the progress-event null signal) - App.jsx: tracks isDownloading state, passes onDownloadingChange to DownloadView and isDownloading to Sidebar - Sidebar.jsx: accepts isDownloading prop; disables non-download menu items and applies .menu-item--disabled style when active - Sidebar.css: styles for disabled menu item and downloading indicator Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Create DownloadContext.jsx with DownloadProvider + useDownload hook (mirrors PlayerContext pattern) - Move all DownloadView state into context so it survives tab switches - Move IPC subscriptions (onYtDlpProgress, onYtDlpTrackUpdate) into provider so events are captured even when the tab is not visible - Always render <DownloadView> in App.jsx (toggled via display:none) so component state is never reset when navigating away - Sidebar reads ytDlpSidebarProgress from context and shows a progress bar matching the normalize bar style - Remove isDownloading prop / navigation-blocking from Sidebar - Wrap DownloadView.test and Sidebar.test in DownloadProvider Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- DownloadContext: compute sidebar total from trackStatuses.length (pre-populated from selection) rather than trusting overallTotal from early IPC events which arrive as 1 before yt-dlp outputs the playlist item counter line - MusicLibrary: add descriptive hover title to grayed-out rows (analyzed=0) explaining the track is being analyzed/processed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix handleItemsRendered destructuring: was { visibleStopIndex } but
List fires { startIndex, stopIndex } — scroll-to-load never triggered
- Remove pointer-events: none from .row--analyzing so browser can show
the title tooltip on hover for grayed-out tracks
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pass --ignore-errors to yt-dlp so deleted/restricted/private videos are skipped rather than causing the entire download to fail. - Exit code 1 is now treated as partial success if any files downloaded - Parse stderr for 'ERROR: [youtube] <id>: ...' lines and fire onTrackUnavailable callback per failed video - main.js sends 'unavailable' track update to renderer - DownloadView marks matching tracks as failed with the error reason Closes #152 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Resolve (not reject) when all tracks fail with unavailability errors since onTrackUnavailable callbacks already reported each failure - Add title attribute to track status icons so hovering shows the error reason (e.g. 'Video unavailable. This video is not available') - Show friendly message 'All tracks were unavailable' instead of raw yt-dlp stderr when every track in the table is marked failed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…list metadata - Add isEntryUnavailable() / describeUnavailability() helpers in ytDlpManager to detect private/deleted/restricted videos from availability field and placeholder titles ([Private video], [Deleted video], etc.) - Flag entries with unavailable:true + unavailableReason in fetchPlaylistInfo - In selection screen: unavailable tracks show strikethrough title + red badge with reason, checkbox disabled, item grayed out and non-interactive - Track count shows '· N unavailable' in red next to available count - Subtitle updated: '12 tracks found (4 unavailable) — select what to download' - select-all / selected counter only count available entries - Pre-selection on load excludes both duplicates and unavailable entries - playlist-items arg comparison uses available count not total count Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…display - Update unavailablePattern regex to match both ERROR: and WARNING: lines (yt-dlp with --ignore-errors may downgrade ERROR to WARNING) - Add keyword-based fallback: if stderr contains 'Video unavailable', 'Private video', etc. and regex found nothing, still treat as unavailable - Pass unavailableCount through resolve() → main.js → renderer result - Result banner: 0-track ok result shows red '✗ All N tracks were unavailable' instead of confusing '✓ 0 tracks added' - Partial success shows '✓ X tracks added · N unavailable (skipped)' in red - Remove now-redundant all-failed special case from error block Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…on screen - After fetchPlaylistInfo, run parallel oEmbed availability checks for all YouTube playlist entries (6 concurrent, 6s timeout per request) GET https://www.youtube.com/oembed?url=...&format=json 200=available, 401=private, 403=restricted, 404=deleted/unavailable - Mutates entries in-place with unavailable:true + unavailableReason - Network errors are ignored — entry stays available, yt-dlp handles it - Selection screen: unavailable entries are filtered out entirely (not shown) - A note at the bottom of the list shows '4 videos unavailable — not shown' - CSS: .dl-select-unavailable-note for the footer note Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…hen unavailable entries exist - Auto-normalise URL on load: prepend https:// if no protocol present so bare URLs like 'www.youtube.com/...' are accepted; input updates to show the normalised form - Critical bug: when user selects all available tracks and unavailable entries exist, playlistItems was null → yt-dlp downloaded the full playlist including unavailable ones. Now always pass --playlist-items when unavailableCount > 0, regardless of selection ratio. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Change URL input type from 'url' to 'text' to prevent HTML5 validation blocking www.* URLs before JS normalization can run - Add native right-click context menu (cut/copy/paste/undo/redo/ select all) for editable inputs and copy for text selections via mainWindow.webContents context-menu event Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
oEmbed returns HTTP 200 for geo-restricted and content-match-removed videos, causing them to appear as selectable in the playlist UI even though they fail during download. Replace with YouTube's InnerTube player API (ANDROID client) which returns playabilityStatus.status for all unavailability types: - UNPLAYABLE: geo-restricted, content match removed - LOGIN_REQUIRED: private, age-gated - ERROR: deleted / non-existent Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ANDROID client bypasses YouTube's geo/content restrictions so videos that are unavailable for normal users returned OK. Switch to two conservative clients: - WEB: matches yt-dlp primary scraper behavior - TVHTML5_SIMPLY_EMBEDDED_PLAYER: catches restricted-on-web videos Any non-OK status from either client marks the track as unavailable. Added per-video status logging for easier debugging. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
TVHTML5_SIMPLY_EMBEDDED_PLAYER returns UNPLAYABLE for any video that has embedding disabled (most videos) — causing all 77 to be flagged. Use only the WEB client with the correct yt-dlp version string. HTTP non-200 responses (auth/quota) are treated as 'assume available' rather than falling through to another client. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
InnerTube without auth cookies is unreliable — WEB client returns UNPLAYABLE for all videos, ANDROID client returns OK for all. Use yt-dlp --print availability per video (4 concurrent) — the exact same mechanism as the actual download, so no false positives/negatives. Timeout 15s per video; on error/timeout assumes available (safe default). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Each check is network-bound (waiting for YouTube), not CPU-bound, so 16 parallel yt-dlp processes reduces 77-video check time by ~4x. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Subscribe to onYtDlpProgress in Sidebar and display a progress bar in the fixed-bottom-section alongside import/normalize/export progress. Blue bar (#5865f2) with track message and overall count (N/M). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- checkYouTubeAvailability now accepts onProgress callback - fetchPlaylistInfo forwards onCheckProgress option - main.js sends 'ytdlp-check-progress' IPC events during check; sends null when done - preload.js exposes onYtDlpCheckProgress - DownloadView shows 'Checking N/M...' in Load button during availability check - renderer test setup mocks onYtDlpCheckProgress Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove --progress-template (it outputs 'Unknown' for unknown-size audio streams, breaking the [\d.]+% regex and stalling the sidebar at 'Starting download...') - Add --no-colors to prevent ANSI escape codes in output - Handle unknown-size progress lines: '[download] 5.20MiB at 1.20MiB/s' - Throttle IPC progress events to max 1 per 200ms to prevent React from dropping rapid updates - Clean up msg formatting: strip '[download]' prefix from displayed text Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Native yt-dlp progress output uses carriage returns (\r) to overwrite the terminal line. Splitting by \n alone means all progress updates arrive as one unparsed chunk — the sidebar stays at 'Starting download'. Split on /[\r\n]+/ so each progress line is processed individually. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When yt-dlp (Python) stdout/stderr is piped, Python uses fully-buffered I/O — all progress lines arrive as one batch after the track finishes. PYTHONUNBUFFERED=1 forces line-buffered output so progress events arrive in real-time. Also reduce throttle from 200ms to 100ms. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
For playlists, fold the progress message (e.g. '42.5% of 3.81MiB at 1.20MiB/s') as a subtitle under the Overall bar instead of a redundant second bar. For single-track downloads, keep the Download percentage bar. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Parsing [download] X% from stderr is unreliable when piped (non-TTY). Instead, add a second --print hook that fires before each track download starts and outputs a controlled TRACK_MARKER:<idx>/<total>:<title> line to stdout. This updates overallCurrent/Total and the track title in the sidebar reliably, independent of percentage buffering issues. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…status
- check-duplicate-urls now returns [{url, trackId}] instead of just [url]
- New IPC: get-playlist-source-urls(playlistId) returns tracks in a playlist
for 'already in playlist' detection
- handleTargetPlaylistChange updates playlistMemberUrls when user picks a
different target playlist (live re-check)
- Selection screen 3-state checkboxes:
- ☑ checked = download (not in library)
- ⊟ indeterminate = link to playlist (in library, not yet in target playlist)
- ☐ unchecked = skip
- disabled (greyed) = already in the target playlist (badge: '✓ in playlist')
- handleDownload splits entries into downloadEntries and linkEntries;
link entries are added via add-tracks-to-playlist IPC after download
- Sidebar shows 'Checking tracks N/M…' progress bar during ytdlp-fetch-info
availability pre-check phase (subscribes to ytdlp-check-progress)
- Fix TRACK_MARKER format: removed %(playlist_index)s (gave original playlist
position instead of sequential order); now uses own trackStartCount counter
so sidebar always shows '1/4, 2/4…' not '70/4'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add ✕ Cancel button next to Load when fetching=true so user can abort - Auto-reset fetching state when user switches away from the tab (detected via style.display='none' change on the view) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
fix: prevent navigating away from YT-DLP tab during active download
Resolved conflicts in DownloadView.jsx: - Block 1: moved all state/IPC to DownloadContext; kept view-local refs, handleCancelFetch, and style-watch useEffect - Block 2: kept linkEntries/allDisplayEntries split logic - Block 3: kept link-to-playlist post-download logic; renamed setHistory → setDownloadHistory to match PR #144 Added useEffect to DownloadView imports (missing after merge). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…able - Remove style-watch useEffect from DownloadView that was resetting fetching/checkProgress state on tab switch (breaks DownloadContext fix) - Remove unused useEffect import from DownloadView - Wrap YT-DLP check-progress and download-progress sidebar bars in <button> so clicking them navigates to the YT-DLP tab - Add .ytdlp-progress-clickable CSS for button reset + hover highlight Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bumps the electron group with 1 update: [electron](https://github.com/electron/electron). Updates `electron` from 41.2.1 to 41.3.0 - [Release notes](https://github.com/electron/electron/releases) - [Commits](electron/electron@v41.2.1...v41.3.0) --- updated-dependencies: - dependency-name: electron dependency-version: 41.3.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: electron ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.0 to 4.1.5. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/coverage-v8) --- updated-dependencies: - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.5 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the build-tools group with 1 update: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest). Updates `vitest` from 4.1.4 to 4.1.5 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-version: 4.1.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: build-tools ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.4 to 4.1.5. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/coverage-v8) --- updated-dependencies: - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.5 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.2 to 4.1.5. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-version: 4.1.5 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.0.1 to 29.1.0. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Commits](jsdom/jsdom@v29.0.1...v29.1.0) --- updated-dependencies: - dependency-name: jsdom dependency-version: 29.1.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…d ETA - Extract DepsOverlay component with per-step status icons (pending/active/done) - Show bytes downloaded / total, live download speed, and ETA per step - ensureDeps emits rich payload: stepId, stepIndex, stepTotal, bytesPerSec, etaSec - Add retry-deps IPC handler so the overlay Retry button re-runs ensureDeps - Move sendDepsProgress to module scope in main.js for retry handler access - Remove inline overlay from App.jsx/App.css; now fully in DepsOverlay.jsx/css Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(deps): rework first-run setup overlay with step list, speed, and ETA
Full schema reverse-engineered from native Rekordbox exports via Frida hook on sqlite3_key (reverse-engineering/capture_key.py). Covers all tables: content, artist, album, genre, label, key, color, playlist, cue, history, hotCueBankList, menuItem, category, sort, myTag. Key finding: per-track manual gain slider is NOT in exportLibrary.db — it lives only in master.db on the PC. CDJ auto-gain comes entirely from Unnamed7/Unnamed8 in export.pdb. Refs #299, #300 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docs(protocol): document exportLibrary.db schema and SQLCipher key
Full schema reverse-engineered from native Rekordbox exports via Frida hook on sqlite3_key (reverse-engineering/capture_key.py). Covers all tables: content, artist, album, genre, label, key, color, playlist, cue, history, hotCueBankList, menuItem, category, sort, myTag. Key finding: per-track manual gain slider is NOT in exportLibrary.db — it lives only in master.db on the PC. CDJ auto-gain comes entirely from Unnamed7/Unnamed8 in export.pdb. Refs #299, #300 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docs(protocol): document exportLibrary.db schema and SQLCipher key
…ing-captures feat(re): add Rekordbox binary capture guide and analysis scripts
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.5 to 4.1.6. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/coverage-v8) --- updated-dependencies: - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.6 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… updates (#330) Bumps the build-tools group with 3 updates in the / directory: [eslint](https://github.com/eslint/eslint), [lint-staged](https://github.com/lint-staged/lint-staged) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest). Updates `eslint` from 10.2.1 to 10.3.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v10.2.1...v10.3.0) Updates `lint-staged` from 16.4.0 to 17.0.4 - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](lint-staged/lint-staged@v16.4.0...v17.0.4) Updates `vitest` from 4.1.5 to 4.1.6 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/vitest) --- updated-dependencies: - dependency-name: eslint dependency-version: 10.3.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: build-tools - dependency-name: lint-staged dependency-version: 17.0.4 dependency-type: direct:development update-type: version-update:semver-major dependency-group: build-tools - dependency-name: vitest dependency-version: 4.1.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: build-tools ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.5 to 4.1.6. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/coverage-v8) --- updated-dependencies: - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.6 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the react group in /renderer with 2 updates: [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom). Updates `react` from 19.2.5 to 19.2.6 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.6/packages/react) Updates `react-dom` from 19.2.5 to 19.2.6 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.6/packages/react-dom) --- updated-dependencies: - dependency-name: react dependency-version: 19.2.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react - dependency-name: react-dom dependency-version: 19.2.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [jsdom](https://github.com/jsdom/jsdom) from 29.1.0 to 29.1.1. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Commits](jsdom/jsdom@v29.1.0...v29.1.1) --- updated-dependencies: - dependency-name: jsdom dependency-version: 29.1.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the electron group with 1 update: [electron](https://github.com/electron/electron). Updates `electron` from 41.3.0 to 41.5.0 - [Release notes](https://github.com/electron/electron/releases) - [Commits](electron/electron@v41.3.0...v41.5.0) --- updated-dependencies: - dependency-name: electron dependency-version: 41.5.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: electron ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [wait-on](https://github.com/jeffbski/wait-on) from 9.0.4 to 9.0.10. - [Release notes](https://github.com/jeffbski/wait-on/releases) - [Commits](jeffbski/wait-on@v9.0.4...v9.0.10) --- updated-dependencies: - dependency-name: wait-on dependency-version: 9.0.10 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [globals](https://github.com/sindresorhus/globals) from 17.4.0 to 17.6.0. - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](sindresorhus/globals@v17.4.0...v17.6.0) --- updated-dependencies: - dependency-name: globals dependency-version: 17.6.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [eslint](https://github.com/eslint/eslint) from 10.2.1 to 10.4.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v10.2.1...v10.4.0) --- updated-dependencies: - dependency-name: eslint dependency-version: 10.3.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [globals](https://github.com/sindresorhus/globals) from 17.5.0 to 17.6.0. - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](sindresorhus/globals@v17.5.0...v17.6.0) --- updated-dependencies: - dependency-name: globals dependency-version: 17.6.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v6...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… updates (#348) Bumps the build-tools group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [concurrently](https://github.com/open-cli-tools/concurrently) | `9.2.1` | `10.0.3` | | [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.5.0` | | [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.4` | `17.0.7` | | [prettier](https://github.com/prettier/prettier) | `3.8.3` | `3.8.4` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.6` | `4.1.9` | Updates `concurrently` from 9.2.1 to 10.0.3 - [Release notes](https://github.com/open-cli-tools/concurrently/releases) - [Commits](open-cli-tools/concurrently@v9.2.1...v10.0.3) Updates `eslint` from 10.3.0 to 10.5.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v10.3.0...v10.5.0) Updates `lint-staged` from 17.0.4 to 17.0.7 - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](lint-staged/lint-staged@v17.0.4...v17.0.7) Updates `prettier` from 3.8.3 to 3.8.4 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.8.3...3.8.4) Updates `vitest` from 4.1.6 to 4.1.9 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/HEAD/packages/vitest) --- updated-dependencies: - dependency-name: concurrently dependency-version: 10.0.3 dependency-type: direct:development update-type: version-update:semver-major dependency-group: build-tools - dependency-name: eslint dependency-version: 10.5.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: build-tools - dependency-name: lint-staged dependency-version: 17.0.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: build-tools - dependency-name: prettier dependency-version: 3.8.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: build-tools - dependency-name: vitest dependency-version: 4.1.9 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: build-tools ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…345) Bumps the react group with 3 updates in the /renderer directory: [react](https://github.com/facebook/react/tree/HEAD/packages/react), [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) and [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom). Updates `react` from 19.2.6 to 19.2.7 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react) Updates `@types/react` from 19.2.14 to 19.2.16 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `react-dom` from 19.2.6 to 19.2.7 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react-dom) Updates `@types/react` from 19.2.14 to 19.2.16 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: react dependency-version: 19.2.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react - dependency-name: "@types/react" dependency-version: 19.2.16 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: react - dependency-name: react-dom dependency-version: 19.2.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: react - dependency-name: "@types/react" dependency-version: 19.2.16 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: react ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.10 to 8.0.14. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v8.0.14/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 8.0.14 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.6 to 4.1.7. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/coverage-v8) --- updated-dependencies: - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.7 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) from 12.9.0 to 12.10.0. - [Release notes](https://github.com/WiseLibs/better-sqlite3/releases) - [Commits](WiseLibs/better-sqlite3@v12.9.0...v12.10.0) --- updated-dependencies: - dependency-name: better-sqlite3 dependency-version: 12.10.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.58.2 to 1.60.0. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.58.2...v1.60.0) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-version: 1.60.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge order
Before merging this PR, the following must be merged into
devfirst:fix/200-deps-progress) — tidal optional step counterfix/232-memory-cue-export) — after PR fix(anlz): EXT PCOB2 must stay empty — memory cues belong in PCO2 slot 2 #319 (fix/232-memory-cue-export_test) is hardware-verified and merged into itfix/299-auto-gain-constants) — corrected CDJ auto-gain reference constantsSummary
volumefilter, preserving source bitrateref7=13940/ref8=17802(back-calculated from native capture, previous values19048/30967were wrong)mem_countsentinel in DAT PCOB2; fixes regression where EXT PCOB2 was incorrectly populated — native captures confirm EXT PCOB2 must always be an empty stub (non-empty causes CDJ to reject EXT file, dropping waveform and beatgrid)[optional]not counted in required stepsUV_TOOL_DIRroutes install to DjManager's ownuserData/bin/Test Flight Checklist
Normalization — Playback
Normalization — USB Export
CDJ Auto-Gain (PDB) — requires PR #320 merged first
fix/299-auto-gain-constants; load on CDJ-3000ANLZ Memory Cues — requires PR #319 hardware-verified and PR #234 merged first
First-Run Overlay (PR #317)
[1/3]→[2/3]→[3/3]for FFmpeg, analyzer, yt-dlp[optional], not[4/4]"Dependencies up to date."File Explorer
Player Pipeline
PIPELINE_ERROR_READin consoleSettings — Dependency Versions
tdnbinary is truly absentTidal — Deferred Install
tdnbinary lives under DjManager'suserData/bin/, not~/.local/bin/Dependency Bumps
🤖 Generated with Claude Code