Repository navigation
Conversation
|
Important Review skippedToo many files! This PR contains 196 files, which is 96 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.
|
Codex Review Summary: ❌ FailedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Classified as ambiguous. Contract is current. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 628060ae9f
ℹ️ 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".
| if (_pathTracker?.IsHashAlreadyScanned(torrent.ClientInstanceId, torrent.Hash) == true) | ||
| { | ||
| await TryFinalizeImportedTorrentAsync(torrent, ct); | ||
| return; |
There was a problem hiding this comment.
Let finalized imports reach routine seeding cleanup
Once an import is submitted successfully, ImportPathTracker.MarkScanned retains its hash, so this unconditional return prevents the torrent from ever reaching the ratio/time-limit removal branch on subsequent scans. TryFinalizeImportedTorrentAsync does not compensate: it immediately returns for an already-imported database row, and its initial AutoDelete attempt is not retried if seeding protection blocks it. Consequently, torrents imported before their seeding obligations clear remain indefinitely even after their removal limits are met, until the tracker is cleared or the worker restarts. Restrict this early exit to pending imports, or otherwise allow confirmed imports to continue through routine cleanup.
Useful? React with 👍 / 👎.
| <TransferHistory | ||
| instance={ | ||
| selection && selection !== "aggregate" ? selection : undefined | ||
| } | ||
| active={active && instancesLoaded && instances.length > 0} |
There was a problem hiding this comment.
Wire the client-page Refresh button to transfer history
When Live is disabled, the new transfer chart remains stale even after the user presses Refresh on the torrent-client page. TransferHistory refreshes through the torrentarr:statistics-refresh event, but this page's handleRefresh only calls loadInstances and loadOverview; neither changes the chart's effect dependencies or emits that event. Unlike the process and catalog pages, the client page therefore cannot manually refresh its statistics without changing the selected range/client or leaving the page. Dispatch the statistics-refresh event from this page's refresh handler as well.
Useful? React with 👍 / 👎.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Includes persistent transfer and Arr activity statistics, maintenance and worker visibility, configuration docs, and navigation/theme polish.
Keep scan deadlines after a torrent client outage, log deferred qBit-only processing at information level, and rate-limit deferred allowlist cleanup retries to once per 15 minutes.
Keep scan deadlines after a torrent client outage, log deferred qBit-only processing at information level, and rate-limit deferred allowlist cleanup retries to once per 15 minutes.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Summary
Testing
Validation: all pre-commit hooks passed, including dotnet format, Release build and frontend production build. Combined-tree focused checks passed: 162 Infrastructure tests, 12 statistics endpoint tests, 40 WebUI tests and 26 OpenAPI script tests. Frontend lint passed with 14 warnings in unchanged files. The processing fixes also passed the Core, Infrastructure and Host suites before integration.
Manual test notes:
Checklist
dotnet formatandnpm run lintAdditional Notes
Scope was approved by the repository owner, including the existing console/statistics work. Authentication settings are unchanged. Statistics accumulate after deployment without historical backfill; missing observations remain explicit. No destructive live tests were forced. Existing external client HTTP 404 responses during tracker maintenance remain reported as failures. Local rollback backup:
.config/deployment-backups/webui-console-20261105T080317Z/; rollback image:torrentarr:before-webui-console-20261105.