Skip to content

feat(web): compact library chrome, centered dialogs, and phone PWA layout - #862

Closed
pavelpikta wants to merge 102 commits into
YouROK:masterfrom
lampac-nextgen:feature/web-update
Closed

pavelpikta wants to merge 102 commits into
YouROK:masterfrom
lampac-nextgen:feature/web-update

Conversation

@pavelpikta

Copy link
Copy Markdown
Contributor

Summary

Reworks the web library chrome so the poster grid is the main surface, dialogs sit in the center of the viewport, and the phone/PWA shell no longer clips header actions, the More tab, or a third poster column.

  • Library search, Select/Cancel, smart collections, and Continue Watching move into the green header (LibraryHeaderSlot). Branding text is gone; version stays on tablet/desktop only.
  • Import / Export / All playlists live in the sidebar Library block, the phone More sheet, Settings → Storage, and the command palette.
  • Windowed AppDialogs use placement="center" plus CSS so HeroUI does not park them at the bottom. Phone stays fullscreen; More stays a bottom sheet.
  • Select / Cancel are icon-only (CheckSquare / XSquare).
  • Phone overflow: shell columns use minmax(0, 1fr), filter/All no longer inflate min-content, collections are icon-only, BottomNav keeps all four tabs in view.

Why

The previous header + sticky toolbar packed too many controls onto phone and Telegram Mini App. Centering dialogs then made the CSS grid track grow with header min-content (1fr = minmax(auto, 1fr)), so overflow-hidden clipped the right edge: Sort/⋯, More, and a fake third poster column.

Test plan

  • Phone (~390 / PWA): no version in header; Filter, Select, collections icon, Sort, appearance ⋯ all visible; 2 poster columns; BottomNav Add / Search / Category / More fully on screen; More sheet opens Settings.
  • Tablet (~768): sidebar, no BottomNav, version visible, collections still labeled, Settings is a centered card.
  • Desktop (~1440): Theme / Palette / Language in the header; Settings is a centered card, not fullscreen.
  • Select then Cancel: icon-only, no text labels.
  • Import / Export / All playlists from sidebar, More sheet, and Settings → Storage.
  • Continue chip on a poster with resume data; Continue menu in the header when entries exist.
  • yarn test:e2e in web/ (viewport overflow, dialog centering).
  • Optional: yarn screenshots:viewports → web/tmp/viewports/.

pavelpikta and others added 30 commits June 4, 2026 17:15
Signed-off-by: Pavel Pikta <pavel_pikta@epam.com>
Co-Authored-By: Pavel Pikta <devops@pavelpikta.com>
# Conflicts:
#	build-all.sh
# Conflicts:
#	.github/workflows/ts_release.yml
- Introduced a new build configuration for GStreamer (torrserver-gst) in .goreleaser.yaml and .goreleaser.local.yaml.
- Updated Makefile to include new targets for building GStreamer binaries across multiple platforms.
- Enhanced the flattening process to accommodate GStreamer artifacts.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Implemented a new CI step to verify that the Linux binary is statically linked without dynamic library dependencies.
- Updated build command in torrserver.nix to ensure CGO is disabled for static builds.
- Modified build constraints in GStreamer-related Go files to include 'gst' build tag for better control over GStreamer functionality.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
…tches

- Deleted the 00-responsive-reader.patch and 01-no-udp-panic.patch files as they are no longer needed.
- These patches contained commented-out code that has been deemed unnecessary for the current codebase.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Introduced .env.example for environment variable configuration.
- Added docker-compose.build.yml for local image build overrides.
- Created docker-compose.dlna.yml for DLNA/UPnP support with host networking.
- Updated docker-compose.yml for main service configuration and health checks.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
# Conflicts:
#	.github/workflows/ts_release.yml
#	README.md
#	build-all.sh
# Conflicts:
#	build-all.sh
#	server/version/version.go
Updated the URL construction in ffp.go, preload.go, and ffprobe.go to consistently use HTTP without SSL checks

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Replace fragmented build tooling with Makefile-driven GoReleaser workflows
and two standalone configs: `.goreleaser.local.yaml` for fast local builds
and `.goreleaser.yaml` for full CI/release (Android, optional UPX).

- Add Dockerfile.builder and USE_DOCKER_BUILDER=1 for reproducible builds
  without local Go/yarn/swag/NDK toolchains
- Fix Docker builds: compile linux static binaries, correct compose context,
  and clarify static vs GStreamer binary usage
- Split make dist (local snapshot) from make dist-full (release matrix);
  gate Android NDK and optional UPX behind Makefile guards
- Update CI to validate both GoReleaser configs; refresh `BUILD.md` and `README.md`
- Remove vendored UPX binary; use system or builder-image install instead

---
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
# Conflicts:
#	.github/workflows/ts_release.yml
#	.gitignore
#	server/web/pages/template/html.go
#	server/web/pages/template/pages/asset-manifest.json
#	server/web/pages/template/pages/static/js/2.173efca3.chunk.js.LICENSE.txt
#	server/web/pages/template/pages/static/js/2.70a31402.chunk.js.LICENSE.txt
#	server/web/pages/template/pages/static/js/2.9d2260bd.chunk.js.LICENSE.txt
#	server/web/pages/template/route.go
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
pavelpikta and others added 28 commits August 17, 2026 11:14
…Server-Go web client

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Use bool isClosed in priorityWatchdog (not atomic.Load) and prefer
jackettindexer with label fallback so the rebased tree compiles.
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Added nil check before setting the torrent in the cache to prevent potential panics.
- Updated the cache's closed state to use atomic operations for thread safety.
- Enhanced piece eviction logic to ensure pieces are only removed when appropriate.
- Introduced a snapshot mechanism for readers to minimize lock contention during piece management.
- Improved handling of edge cases in piece reading and caching to prevent unexpected behavior.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
- Eliminated unnecessary nil checks for the start and end readers in the Preload method to streamline the code.
- Ensured that the readers are always closed properly using deferred functions.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Co-authored-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Signed-off-by: dependabot[bot] <support@github.com>
…-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>
- Removed the StreamWA feature flag from the environment configuration and Docker Compose file.
- Updated the entry point script and server settings to eliminate references to StreamWA.
- Adjusted API logic to ensure proper handling of unauthorized access without StreamWA support.
- Revised documentation to reflect the removal of StreamWA functionality.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
…yout

Move library search, select, collections, and continue watching into the
header so the grid is not buried under extra toolbars. Keep import/export
and playlists in the sidebar, More sheet, and Storage settings. Center
windowed dialogs on tablet/desktop, use icon-only Select/Cancel, and stop
the phone/PWA shell column from growing past the viewport so header
actions, the More tab, and two poster columns stay on screen.

Signed-off-by: Pavel Pikta <devops@pavelpikta.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@pavelpikta pavelpikta closed this Sep 5, 2026
@pavelpikta
pavelpikta deleted the feature/web-update branch September 5, 2026 22:01
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.

7 participants