Merge Main with Canary#19
Conversation
Merge Canary with Main
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 403cff8. Configure here.
| message.includes('api rate limit exceeded') || | ||
| message.includes('too many requests') | ||
| ) { | ||
| return persianGithubRateLimit(); |
There was a problem hiding this comment.
Misleading "1 second" wait displayed for rate limits
Medium Severity
When persianGithubRateLimit() is called without metadata (line 143, the string-matching path in toPersianErrorMessage), both resetUtcMs and retryAfterSec are null, so waitMs stays 0. Then secTotal becomes Math.max(1, Math.ceil(0/1000)) = 1, producing "estimated wait: 1 second" — a misleading message for GitHub rate limits that typically last minutes to hours. The old code displayed a more appropriate "wait a few minutes and try again" for this case.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 403cff8. Configure here.


Note
Medium Risk
Touches GitHub API request/error handling and download listing paths; mistakes could change retryability/classification of auth vs rate-limit failures or hide real network errors. UI changes are straightforward but widely used (replaces
alert()with a global toast mechanism).Overview
Adds a global, dismissible in-app toast (
src/lib/userToast.ts) surfaced byAppand exposed viawindow.cnsToast, replacing blockingwindow.alert()error popups in archive/parts flows.Improves GitHub rate-limit handling end-to-end: GitHub client now parses rate-limit headers, throws structured
CNSErrorwithrateLimitMeta, shows throttled toast notifications, and classifies 403/429 responses more accurately across API requests, workflow dispatch, blob downloads, and downloads listing (including a newgetDownloadFolderFiles). Persian error messages now include an estimated wait time and reset timestamp.Release/version updates: bumps app version to
1.2.2acrosspackage.json, Tauri configs, and README links, and updates macOS release workflow to build.appbundles (--bundles app).Reviewed by Cursor Bugbot for commit 403cff8. Bugbot is set up for automated code reviews on this repo. Configure here.