Make preview updates reliable and non-disruptive - #379
Merged
Conversation
|
The UI renders differently than the committed baselines — 3 of 54 screens changed (before ⟶ after below). options-behavior —
|
Preview installs are self-hosted (update_url feeds -> GitHub release artifacts), but peerd's offscreen keepalive holds the MV3 SW alive, which is exactly the state where Chrome parks a downloaded extension update forever. background/update-check.js closes that gap: Chrome forces the update_url poll at boot and reloads when a downloaded update can apply with nothing live (no turn or goal run, no UI port, no engine tab, no other extension page), re-attempting when a surface closes; Firefox (no requestUpdateCheck API) reads the gecko feed and offers the XPI in a notice, persisted in storage.session so it survives event-page respawns. The onUpdateAvailable listener registers ONLY on self-hosted manifests: on Firefox a listener's mere presence defers every add-on update until reload()/browser restart, so a listener on the store package would break AMO's automatic updates; a disabled toggle there restores the no-listener default (apply immediately). Feed update_links are pinned to github.com/peerd.ai and version strings shape-checked before they reach the notice. Setting: autoUpdateEnabled, a preview-only channel key (absent from store CHANNEL_DEFAULTS, patch-gated on key presence), default ON, with an Auto-update toggle in Settings -> Behavior. Dev (load-unpacked) has no update_url so every path is a structural no-op there. The side panel's NoticeBar gains a generic https-only open-url action. Signed-off-by: Jonathan Bursztyn <jobur93@gmail.com>
The options-behavior captures moved 0.32% - the new Auto-update row in the Behavior band. Reseeded on the CI authority via the update_visual_baselines dispatch and eyeballed per PNG; goal-running (0.01%, a tool-card ms flap) and multi-turn-transcript.dark (0.0000% within tolerance) rode along from the fresh capture. Signed-off-by: Jonathan Bursztyn <jobur93@gmail.com>
Keep Firefox on its native update lifecycle, close Chrome quiet-state races, bound deferred retries, and validate install offers against the exact release asset. Add narrow and full-page notice coverage.
Visual regression✅ No visual drift. Every state renders identically to the committed baselines. 📸 Browse the visual gallery — 54 baseline screens (light + dark) as of this commit. |
NotASithLord
force-pushed
the
preview-auto-update
branch
from
August 10, 2026 00:26
10e1d26 to
2c12d58
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
This extracts the preview-update work from #374 onto current
main. Jonathan Bursztyn authored the original implementation and visual baseline work. The unrelated UI and confirmation redesign from that branch is intentionally excluded.Review fixes
Verification