Add DeArrow across all apps with shared core support and Tor routing #4

Merged
salix merged 4 commits from t3code/add-dearrow-support into main 2026-10-03 11:58:28 +02:00
Owner

Adds optional DeArrow titles and thumbnails to Android/TV, macOS, Linux, and the web app through the shared Rust core. Replacements apply to the display while library and history data keep the original metadata. Missing submissions, failed requests, and unavailable thumbnails fall back to the originals.

The core owns enablement, video and timestamp validation, title and thumbnail selection, hash-prefix lookups, batch limits and deduplication, bounded caching, request concurrency, thumbnail URL construction and fetching, and image signature validation. Native image loaders use a core helper to identify DeArrow thumbnails. The apps handle rendering and their platform lifecycle; the web server supplies authentication and HTTP responses, and the browser batches HTTP requests without maintaining a separate branding cache.

Adds an independent DeArrow switch in Tor settings on every platform. Both branding and thumbnail requests follow that route through the core. The web app uses authenticated server endpoints, including a thumbnail proxy. The core reports Connecting as soon as Tor routing is prepared, and the web settings page keeps polling until bootstrap finishes.

Validation:

  • DeArrow core and Tor routing tests: 16 passed, including disabled-service behavior with a warm cache, batch validation, thumbnail validation, and routing.
  • Server suite: 114 passed, 2 existing tests ignored.
  • Web JavaScript tests: 26 passed.
  • Live service checks: the core returned real replacement titles and WebP thumbnails through the authenticated server, both directly and over embedded Tor. Selected requests stayed blocked before Tor was ready.
  • Browser checks: replacement titles, mini-player titles, original metadata storage, thumbnail fallback, disabling DeArrow, independent Tor settings, original metadata in queue actions, queue navigation from the mini player, repeated Tor status polling, and automatic Ready status without a reload.
  • Linux: cargo check passed.
  • Android: Kotlin compilation and 215 unit tests passed with the regenerated bindings.
  • Kotlin and Swift bindings generated and checked. The macOS app was not compiled in this Linux environment.
Adds optional DeArrow titles and thumbnails to Android/TV, macOS, Linux, and the web app through the shared Rust core. Replacements apply to the display while library and history data keep the original metadata. Missing submissions, failed requests, and unavailable thumbnails fall back to the originals. The core owns enablement, video and timestamp validation, title and thumbnail selection, hash-prefix lookups, batch limits and deduplication, bounded caching, request concurrency, thumbnail URL construction and fetching, and image signature validation. Native image loaders use a core helper to identify DeArrow thumbnails. The apps handle rendering and their platform lifecycle; the web server supplies authentication and HTTP responses, and the browser batches HTTP requests without maintaining a separate branding cache. Adds an independent DeArrow switch in Tor settings on every platform. Both branding and thumbnail requests follow that route through the core. The web app uses authenticated server endpoints, including a thumbnail proxy. The core reports Connecting as soon as Tor routing is prepared, and the web settings page keeps polling until bootstrap finishes. Validation: - DeArrow core and Tor routing tests: 16 passed, including disabled-service behavior with a warm cache, batch validation, thumbnail validation, and routing. - Server suite: 114 passed, 2 existing tests ignored. - Web JavaScript tests: 26 passed. - Live service checks: the core returned real replacement titles and WebP thumbnails through the authenticated server, both directly and over embedded Tor. Selected requests stayed blocked before Tor was ready. - Browser checks: replacement titles, mini-player titles, original metadata storage, thumbnail fallback, disabling DeArrow, independent Tor settings, original metadata in queue actions, queue navigation from the mini player, repeated Tor status polling, and automatic Ready status without a reload. - Linux: cargo check passed. - Android: Kotlin compilation and 215 unit tests passed with the regenerated bindings. - Kotlin and Swift bindings generated and checked. The macOS app was not compiled in this Linux environment.
Add DeArrow across native apps and web with independent Tor routing
All checks were successful
Build x86_64 Flatpak / flatpak (pull_request) Successful in 4m16s
4bc57a8e2e
Centralize shared DeArrow policy and thumbnail handling in core
All checks were successful
Build x86_64 Flatpak / flatpak (pull_request) Successful in 3m28s
27f7f89b85
salix changed title from Add DeArrow to all apps with independent Tor routing to Add DeArrow across all apps with shared core support and Tor routing 2026-10-02 14:16:06 +02:00
Merge main and preserve DeArrow display with play queues
All checks were successful
Build x86_64 Flatpak / flatpak (pull_request) Successful in 6m5s
d38856a1a0
Report pending Tor startup and keep web status polling until ready
All checks were successful
Build x86_64 Flatpak / flatpak (pull_request) Successful in 6m28s
8ad973ba4f
salix merged commit eca2d7bbe2 into main 2026-10-03 11:58:28 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
salix/invio!4
No description provided.