Skip to content

Fix video lookup stalling Add; tool versions and install progress (2.7.0) - #3

Merged
Linuxuser67 merged 2 commits into
mainfrom
video-lookup-fix
Sep 16, 2026
Merged

Linuxuser67 merged 2 commits into
mainfrom
video-lookup-fix

Conversation

@Linuxuser67

Copy link
Copy Markdown
Owner

Fixes the v2.6.0 field report (Add stuck on 'still looking up', no preview) plus the two preferences UX gaps.

Fixes

  • Submit gate aligned with the resolve skip via preview_fresh: canonicalized page URLs (youtu.be → youtube.com/watch) no longer trap Add in a re-resolve loop
  • 60s ceiling on metadata extraction → clean error + Retry instead of a spinner without end
  • Preferences probe yt-dlp --version / ffmpeg --version off-thread: Checking → Ready with versions (or Not installed)
  • Indeterminate spinner during tool installation (the installer exposes no progress API)
  • Version 2.7.0 metadata; translation template regenerated (3 new strings, full coverage verified)

Validation note: per repo policy this branch was never built locally — CI (fmt/clippy/serial tests + full pristine Flatpak build) is the gate. Manual acceptance still needed from the test-bundle artifact: paste a YouTube URL → preview or clean error within 60s; prefs shows versions; install shows spinner.

houssemko added 2 commits September 16, 2026 10:07
…s (2.7.0)

- Dialog submit uses the same preview-freshness round-trip key as the
  resolve skip, so canonicalized page URLs no longer trap Add in a
  re-resolve loop (youtu.be vs youtube.com/watch)
- Metadata extraction times out after 60s with Retry instead of
  spinning forever
- Video preferences probe both tool versions off-thread (Checking,
  then Ready with versions) and show a spinner during installation
- Version 2.7.0 metadata and translation template
@Linuxuser67
Linuxuser67 merged commit bf5580b into main Sep 16, 2026
3 checks passed
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
#3: parse_netscape_line now respects the subdomain flag (host-only
cookies omit Domain so they don't leak to sibling subdomains),
preserves Path, and formats Expires. Previously always emitted
Domain=, broadening every cookie.

#4: Cookie dumps move from shared /tmp/grab-video to
$XDG_RUNTIME_DIR/grab-cookies (0700, uid-verified, symlink-rejected).
Startup sweeps stale grab-cookies-*.txt left by crashes.

#1 (binary hash pins) not implemented: conflicts with Mia's explicit
2026-09-30 decision (TLS-to-GitHub root of trust, pins dropped).
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
…ing guards

Required #1: FailedVersion clears etag/last_modified so retry starts fresh
instead of failing permanently on a dead If-Range.

Required #2: The range probe now captures the validator (ETag/Last-Modified)
before any worker starts. All segmented piece requests send it as If-Range
from the first byte. A 206 with a mismatched validator is treated as Changed,
closing the first-session splice hole.

Required #3: Staging claim skips existing base files (Title-1.mp4) and the
pre-flight branch no longer deletes the base. Regression test verifies
Title-1.mp4 survives and Title-2.mp4 is chosen.
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
…ing guards

Required #1: FailedVersion clears etag/last_modified so retry starts fresh
instead of failing permanently on a dead If-Range.

Required #2: The range probe now captures the validator (ETag/Last-Modified)
before any worker starts. All segmented piece requests send it as If-Range
from the first byte. A 206 with a mismatched validator is treated as Changed,
closing the first-session splice hole.

Required #3: Staging claim skips existing base files (Title-1.mp4) and the
pre-flight branch no longer deletes the base. Regression test verifies
Title-1.mp4 survives and Title-2.mp4 is chosen.
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
…ing guards

Required #1: FailedVersion clears etag/last_modified so retry starts fresh
instead of failing permanently on a dead If-Range.

Required #2: The range probe now captures the validator (ETag/Last-Modified)
before any worker starts. All segmented piece requests send it as If-Range
from the first byte. A 206 with a mismatched validator is treated as Changed,
closing the first-session splice hole.

Required #3: Staging claim skips existing base files (Title-1.mp4) and the
pre-flight branch no longer deletes the base. Regression test verifies
Title-1.mp4 survives and Title-2.mp4 is chosen.
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
…ing guards

Required #1: FailedVersion clears etag/last_modified so retry starts fresh
instead of failing permanently on a dead If-Range.

Required #2: The range probe now captures the validator (ETag/Last-Modified)
before any worker starts. All segmented piece requests send it as If-Range
from the first byte. A 206 with a mismatched validator is treated as Changed,
closing the first-session splice hole.

Required #3: Staging claim skips existing base files (Title-1.mp4) and the
pre-flight branch no longer deletes the base. Regression test verifies
Title-1.mp4 survives and Title-2.mp4 is chosen.
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fixture server logs If-Range header and supports if-range-strict mode
  (returns 200 on validator mismatch) plus configurable ETag.
- piece_sends_if_range_when_validator_set: verifies If-Range header is sent
  with the session validator.
- piece_rejects_200_after_if_range_mismatch: verifies 200 after If-Range
  yields Changed (not silent acceptance).
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
Linuxuser67 added a commit that referenced this pull request Oct 4, 2026
- Fix if-range-strict fixture arg order (was passing MODE as DISPOSITION)
- Add 206-validator-mismatch test (non-strict mode, different ETag)
- Add probe EngineMsg::Validator persistence test
- Add StoredItem validator roundtrip and old-queue compatibility tests
- Clean orphaned .part on live retry (read old manifest before overwrite)
- Extract digest_for_asset for unit testing; add digest tests
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