Skip to content

feat(downloads): redesign download manager - #1313

Open
4gray wants to merge 82 commits into
masterfrom
agent/download-manager-mvp
Open

feat(downloads): redesign download manager#1313
4gray wants to merge 82 commits into
masterfrom
agent/download-manager-mvp

Conversation

@4gray

@4gray 4gray commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Summary

Redesigns the desktop Download Manager into a polished Queue + Ready to watch MVP based on the approved HTML handoff, while reusing IPTVnator’s existing theme tokens.

What changed

  • Keeps one authoritative global download store; source routes now derive scoped views without changing the workspace badge.
  • Separates queued/downloading/paused items from failed/canceled attention rows and the completed offline library.
  • Adds compact progress rows, status-specific actions, pending guards, honest remove/clear confirmations, search, and All/Movies/Series/In progress filters.
  • Groups completed episodes by playlist and series into poster cards with source navigation and a live downloaded-episodes dialog.
  • Adds responsive fixed header/filter behavior with one content scroll owner, light/dark theme support, loading skeletons, and compact empty states.
  • Adds translations for all 19 locales, architecture documentation, and a user-facing release note.

Validation

  • pnpm nx test portal-downloads-feature --runInBand — 162/162
  • pnpm nx test services --runInBand — 277/277
  • pnpm nx test workspace-shell-feature --runInBand — 124/124
  • pnpm nx run electron-backend-e2e:e2e-ci--src/downloads.e2e.ts — 5/5
  • pnpm nx run-many -t lint -p portal-downloads-feature services workspace-shell-feature electron-backend-e2e web
  • pnpm run typecheck:ci
  • pnpm nx build electron-backend
  • Prettier, git diff --check, i18n drift, release-note, coverage-policy, and max-lines checks

Electron UI was also exercised through browser automation in light and dark themes at 1280×720, 900×700, and 720×700. This covered single-scroll behavior, narrow-layout overflow, grouped-series dialog accessibility, and long error wrapping. A separate native Computer Use pass was unavailable because the macOS session was locked; the Electron/CDP validation completed successfully.

4gray added 30 commits July 30, 2026 00:14
4gray added 27 commits July 31, 2026 12:04
@4gray
4gray marked this pull request as ready for review July 31, 2026 17:14
@greptile-apps

greptile-apps Bot commented Jul 31, 2026

Copy link
Copy Markdown

Too many files changed for review. (188 files found, 100 file limit)

Bypass the limit by tagging @greptile-apps to review.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2cf0c5a13e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


try {
const stats = lstat(filePath);
return stats.isFile() && !stats.isSymbolicLink();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid synchronous file probes on every progress refresh

When completed files are stored on a slow or unavailable network volume, this synchronous lstatSync runs once per completed row inside DOWNLOADS_GET_LIST. Active transfers broadcast progress every 500 ms from download-transfer.ts, and each event reloads the global list, so these probes can repeatedly block the Electron main thread and make the UI unresponsive; use asynchronous bounded probing or cache availability outside the progress hot path.

Useful? React with 👍 / 👎.

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