Repository navigation
fix(update): a failed check is not "you're on the latest version" - #3
Conversation
check_update turned a GitHub error into None, which Settings → About reads as up to date and which also cleared an update already offered in the sidebar. The command now rejects on failure, and the sidebar keeps the offer it was already showing. Co-Authored-By: grok-4.7 <noreply@x.ai>
Codex Review SummaryThis 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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3a45e2b680
ℹ️ 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 let Some(fixed) = repaired_entry(&text, &exe, |p| Path::new(p).exists()) { | ||
| let (Ok(text), Ok(exec)) = (std::fs::read_to_string(&path), exec_line()) else { return }; | ||
| let flatpak = crate::update::in_flatpak(); | ||
| if let Some(fixed) = repaired_entry(&text, &exec, |p| !flatpak && Path::new(p).exists()) { |
There was a problem hiding this comment.
Restrict Flatpak autostart takeover to AppImage entries
When a user has enabled autostart from a source build or another still-existing DealDrop copy and then launches the Flatpak, this predicate makes every recorded executable look missing, so repaired_entry replaces its Exec= line with flatpak run .... The old copy will no longer start at login even though it still exists; limit this takeover to the legacy AppImage entry.
AGENTS.md reference: AGENTS.md:L13-L13
Useful? React with 👍 / 👎.
| use futures::StreamExt; | ||
| let got: Vec<(String, R<Option<String>>)> = futures::stream::iter(stale) | ||
| .map(|id| async move { let tier = protondb_tier(&id).await; (id, tier) }) | ||
| .buffer_unordered(4).collect().await; |
There was a problem hiding this comment.
Keep ProtonDB lookups from blocking the poll
On Linux, if ProtonDB is slow or unreachable and a poll has 60 missing or stale app IDs, this await waits for all of them in groups of four. Each request inherits the 25-second client timeout, so this optional enrichment can hold the entire poll and its snapshot for about six minutes; a separate wishlist batch can add more time. Bound the total lookup time or avoid gating the poll on these requests.
Useful? React with 👍 / 👎.
check_updateturned any GitHub error intoNone. The UI readsNoneas "up to date", so:Changes
check_updatenow returnsResult<Option<Update>, String>, so a failure rejects the command. Thecan_installmapping moved into a small pureoffered_update()with a unit test.checkUpdate()inrenderer/app.jskeeps the offer it already showed when the check didn't reach GitHub (updateAfterCheck, covered intools/preview/selfcheck.mjs).Validation:
cargo test --offline: 156 passed (13 ignored live tests not run).node tools/preview/selfcheck.mjspasses.Prepared overnight by a Grok worker (grok-4.7) and reviewed by Claude.
🤖 Generated with Claude Code