feat!: HeroUI web client, StreamWA, and GoReleaser releases - #859
Closed
pavelpikta wants to merge 136 commits into
Closed
feat!: HeroUI web client, StreamWA, and GoReleaser releases#859pavelpikta wants to merge 136 commits into
pavelpikta wants to merge 136 commits into
Conversation
Bumps [axios](https://github.com/axios/axios) from 1.16.0 to 1.18.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](axios/axios@v1.16.0...v1.18.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.18.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Trim each line in GetTrackerFromFile before the http/udp prefix check so leading spaces and trailing CR (from CRLF-saved files) no longer drop valid trackers or leave a stray \r inside the announce URL. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix: trim whitespace/CR when reading trackers.txt
…/axios-1.18.0 chore(deps): bump axios from 1.16.0 to 1.18.0 in /web
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.4 to 1.20.6. - [Release notes](https://github.com/expressjs/body-parser/releases) - [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md) - [Commits](expressjs/body-parser@1.20.4...1.20.6) --- updated-dependencies: - dependency-name: body-parser dependency-version: 1.20.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
feat(docker): actualize environment variables with server args
…rPriority clearPriority is started as a goroutine from CloseReader and slept for one second before resetting piece priorities. Players that issue many short Range requests open a new reader every couple of seconds (the stream handler forces Connection: close), so a reader routinely appears inside that window. When the sleeping goroutine woke up and observed no registered reader, it reset every piece to PiecePriorityNone, discarding the priorities setLoadPriority had just assigned to the new reader. Nothing recovers from that state on its own: setLoadPriority is only reached through the cache cleanup path, which is driven by piece reads and writes, and with all priorities at None no piece is ever downloaded. The torrent then sits at zero download speed with peers connected until it is re-added. Replace the sleep with a mutex shared by clearPriority and setLoadPriority. The ordering guarantee is the same and the race window is gone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Piece priorities are only (re)assigned from the cache cleanup path, and that path is triggered by piece reads and writes. This makes priority loss self-sustaining: with every piece at PiecePriorityNone nothing downloads, so no piece I/O occurs, so cleanup never runs and the priorities stay cleared. The torrent reports connected peers and zero download speed until it is dropped and re-added. The preceding commit removes the known way to reach that state. This adds a cheap safety net so the cycle cannot persist even if priorities are lost some other way: a per-cache ticker re-arms priorities every five seconds while at least one reader is in use, and exits once the cache is closed. The work it does is the same as what already runs on every reader close. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Update playlist generation to use torrent file IDs in stream URLs, improving compatibility with media players and external clients using indexed playback.
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.5. - [Release notes](https://github.com/fastify/fast-uri/releases) - [Commits](fastify/fast-uri@v3.1.2...v3.1.5) --- updated-dependencies: - dependency-name: fast-uri dependency-version: 3.1.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.13 to 1.1.18. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](juliangruber/brace-expansion@v1.1.13...v1.1.18) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.18 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
- Changed package-ecosystem for web dependencies to "npm" and specified directory. - Added ignore rule for TypeScript major version updates to maintain compatibility. - Updated GitHub Actions configuration to include a commit message prefix for better clarity. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: dependabot[bot] <support@github.com>
…updates (#19) Signed-off-by: dependabot[bot] <support@github.com>
- Added a new utility function `findCaptionSrc` to locate sidecar subtitle files (.srt, .vtt) based on the video file's basename. - Updated tests to reflect the new implementation and ensure correct functionality. - Refactored imports in `usePlayLauncher` to utilize the new `findCaptionSrc` function. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
…fer state (#22) - Make torrent details and cache map more reliable on mobile and desktop: edge-to-edge / fullscreen dialogs, compact confirm modals, iOS Safari viewport fixes, and clearer details/actions layout. - Fix cache snake and buffer reporting end-to-end: expose `ReaderState.Active`, keep idle playheads frozen, restore focus window across dialog reopens, and clarify preload vs playable-ahead buffer labels (i18n included). - Correct server cache piece length/completion (`pieceByteLength`, byte-based `Completed`) and reader idle handling so UI metrics match what is actually cached. - Improve torrent list freshness after add/drop/delete, refine cache/detail polling, and add editable cache size in settings. ----- Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.15.0 to 3.15.1. - [Changelog](https://github.com/nodeca/js-yaml/blob/3.15.1/CHANGELOG.md) - [Commits](nodeca/js-yaml@3.15.0...3.15.1) --- updated-dependencies: - dependency-name: js-yaml dependency-version: 3.15.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.8 to 3.3.18. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/3.3.18/CHANGELOG.md) - [Commits](ai/nanoid@3.3.8...3.3.18) --- updated-dependencies: - dependency-name: nanoid dependency-version: 3.3.18 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Fix TrackTimecode API reset when marking files as viewed
…/nanoid-3.3.18 chore(deps): bump nanoid from 3.3.8 to 3.3.18 in /web
…/js-yaml-3.15.1 chore(deps): bump js-yaml from 3.15.0 to 3.15.1 in /web
fix(torznab): populate Tracker field from <jackettindexer>
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.5 to 3.1.7. - [Release notes](https://github.com/fastify/fast-uri/releases) - [Commits](fastify/fast-uri@v3.1.5...v3.1.7) --- updated-dependencies: - dependency-name: fast-uri dependency-version: 3.1.7 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Enhanced the TrackersListURL functionality to allow an optional custom remote list URL, which is tried first before falling back to built-in mirrors. - Updated related documentation in README.md, Swagger files, and translations to reflect the new behavior. - Adjusted tests to ensure correct handling of custom and default tracker URLs. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Introduced a new settings.CategoryType definition with enum values for 'default', 'manual', and 'all'. - Updated the TorznabConfig to reference the new CategoryType for the catType property, enhancing the configuration options. - Adjusted related documentation in Go, Swagger JSON, and YAML files to reflect these changes. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
…rshalling Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
…gs.json - Added functionality to import legacy `wip.txt` (whitelist) and `bip.txt` (blacklist) files into the `waf` object in `settings.json` if the `waf` key does not exist. - Renamed legacy files to `wip.txt.bak` and `bip.txt.bak` after successful migration. - Introduced tests to ensure correct migration behavior and handling of various scenarios, including read-only mode and existing WAF configurations. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
chore(Dockerfile): update Go version from 1.27.0 to 1.27.1
feat: update TrackersListURL handling
chore(deps): update go-ffprobe dependency to v2.3.0
feat(waf): add HTTP access WAF with settings UI and API
…/fast-uri-3.1.7 chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /web
…-minor-patch group (#26) Signed-off-by: dependabot[bot] <support@github.com>
- Updated the `formatFfpBytes` function to round sizes to whole units for GB and MB. - Enhanced tests for `formatFfpBytes` to ensure accurate formatting. - Added new tests for `humanizeSize` and `formatSizeToClassicUnits` to validate size rounding. - Updated localization files to change "DownloadSpeed" and "UploadSpeed" to simpler terms across multiple languages. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Updated the GO_VERSION in the versions.env file to align with the latest release. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
…ster Keep the HeroUI web and GoReleaser pipeline. Take upstream WAF, MCP, tracker prefetch, torrent 1.2.29, and fold Torznab CatType/Prowlarr into origin search. Co-authored-by: Cursor <cursoragent@cursor.com>
- Introduced a post-build hook in GoReleaser to create AppImages for amd64, arm64, and arm7 architectures. - Added necessary scripts and desktop entry for AppImage packaging. - Updated documentation to reflect new AppImage capabilities and installation requirements. - Enhanced CI workflow to install AppImage dependencies. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Updated TorrServer build process to simplify swag initialization. - Added nil check in ListTorrent function to prevent potential crashes. - Introduced a new test for Prowlarr indexer fallback logic. - Enhanced the IntegrationsStatusSection to include MCP URL functionality. - Updated localization files to support MCP status and related messages in multiple languages. - Added mcpHost function to construct MCP URL. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Introduced a new script for live torrent checks, validating TorrServer functionality. - Added end-to-end tests for live torrents and settings using Playwright. - Enhanced CI workflow to include internationalization checks and Playwright Chromium installation. - Updated package.json to include new test commands for end-to-end testing. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Added JacRed indexer support with corresponding tests for popular search queries. - Updated live torrent check script to include JacRed indexer functionality. - Enhanced end-to-end tests to validate JacRed integration and search results. - Refactored settings to utilize JacRed constants for improved maintainability. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Integrated a new versioning system to set a canonical User-Agent for HTTP requests. - Updated the Telegram HTTP client to use the custom User-Agent. - Modified Torznab requests to include the User-Agent from the versioning system. - Added tests to validate User-Agent functionality and ensure proper request headers. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Modified search queries to include "matrix 1999" for improved accuracy in tests. - Refactored test cases to utilize the updated search queries. - Enhanced end-to-end tests to reflect changes in search query structure. Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Merge upstream master to master
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.
Summary
--streamwaso stream/play/m3u can run without HTTP auth for external players; Telegram Mini App SDK is gone in favor of SPA login (401withoutWWW-Authenticate) plusserver/web/auth/telegram.go.build-all.sh): host/snapshot builds, GHCR, Docker Compose and CLI-alignedTS_*env vars, static Linux CI check, Windows GStreamer-embed build, and Linux AppImages from a GoReleaser post-hook.Trackerfrom Jackett/Prowlarr XML; outbound app HTTP usesTorrServer/<version>.Important
This is the origin product delta vs YouROK
master. MCP, WAF, tracker lists, and TorznabCatTypebackends are already on YouROK; this PR brings the HeroUI surfaces for those features, plus StreamWA, Telegram SPA auth, and the GoReleaser/AppImage pipeline.Important
InitSetsstays 3-arg (readOnly,searchWA,streamWA). Reverting it to YouROK’s 2-arg form drops StreamWA. CORS must keepX-Telegram-Init-Dataand MCP headers (Mcp-Session-Id,Mcp-Protocol-Version, …) or/mcpand Telegram login preflight break.Warning
--streamwaexposes/streamplay and M3U without HTTP auth (and will auto-add torrents for external players). Keep it off on untrusted networks, or bind with-i/ put the server behind a reverse proxy. Other API routes still require auth when-ais set.Warning
SPA
401is withoutWWW-Authenticateso the browser does not pop native basic-auth over the custom login form. Restoring YouROK’sWWW-Authenticateheader will break that UI.Caution
build-all.sh/ the old per-file web embed path are replaced bymake binary/make distandgen_web.goembed.FS. Release scripts and docs that still callbuild-all.shwill break.Caution
Docker/Alpine images must use
id=binary(staticCGO_ENABLED=0).id=binary-gstloads GStreamer viadlopenand is not for Docker. GHCR names must be lowercase (lampac-nextgen/TorrServer→ghcr.io/lampac-nextgen/torrserver).Note
Upstream Material UI Quick-VLC on torrent cards is not ported. Poster play and overflow VLC already cover that flow in the HeroUI client.
Note
Outbound app HTTP (Torznab,
.torrentfetch, tracker lists, images) sendsTorrServer/<version>. BitTorrent tracker/peer HTTP still usesqBittorrent/4.3.9on purpose.Note
i18n:
Searchis a nested object;nav.Searchis the label. FlatteningSearchto a string (old MUI web) failsyarn i18n:check.Note
AppImage post-hook is a no-op on macOS and when FUSE/
appimagetoolis missing. Linux amd64/arm64/arm7 artifacts aredist/TorrServer-linux-*.AppImage. UPX is off formake binary/make distand on formake dockerunlessSKIP_UPX=1.Tip
Local build:
make binarythenmake install/make start. Fast config check:make check. Web:cd web && yarn verify. Live indexer/stream:./scripts/live-torrent-check.sh(gitignoreddata/). CI Playwright is mocked only (yarn test:e2e).Tip
PWA can open
magnet:and.torrentfiles. Docker Compose setsTS_STREAMWA/ otherTS_*to match CLI flags — seedocker-entrypoint.sh.