Skip to content

feat: add desktop auto-update polling, pill status button, manual check for updates, move updater to AppShell#1235

Merged
7w1 merged 21 commits into
devfrom
hazre/feat/desktop-update-pill
Jul 25, 2026
Merged

feat: add desktop auto-update polling, pill status button, manual check for updates, move updater to AppShell#1235
7w1 merged 21 commits into
devfrom
hazre/feat/desktop-update-pill

Conversation

@hazre

@hazre hazre commented Jul 23, 2026

Copy link
Copy Markdown
Member

Stack of PRs (2 of 3):

Description

  • Adds a pill button on tauri desktop app that uses custom titlebar, I made SyncConnectionStatus.tsx component more generic, so it can be reused and so im using the same styling as SyncStatus pill.
  • Adds auto-update polling (every 5 minutes), previously only updates were checked at startup.
  • Updates are now auto downloaded in the background (in-memory), to be more instant.
  • Added a manual check for updates button in Settings > About > Check for Updates
  • Moved DesktopUpdater, WebUpdater and GlobalBannerRenderer all into Appshell.tsx so it runs and shows up on all pages, including auth. To avoid deadlocks if we break anything on some of the pages. previously if we broke auth for example, you could not push a update to auto updating apps to patch it. Now you can.
  • update.body is now shown in the update Banner, it would be good for changelogs and such, depends if we populate it in the manifest.

Current auto-update flow is now:

  • Custom Titlebar: Check for update on startup or via polling > show pill update downloading > show pill update available > click on pill > show update banner
  • Native: Check for update on startup or via polling > show update banner
  • Manual check: Click on check button > show no update available with timestamp of last checked OR show update banner if update available

Screenshots

Cap.2026-07-23.at.07.57.07.mp4

Old video, pill has been updated to look like below

Cap 2026-07-23 at 09 26 32

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings

AI disclosure:

  • Partially AI assisted (clarify which code was AI assisted and briefly explain what it does).
  • Fully AI generated (explain what all the generated code does in moderate detail).

@hazre
hazre requested a review from 7w1 as a code owner July 23, 2026 07:52
@hazre

hazre commented Jul 23, 2026

Copy link
Copy Markdown
Member Author

Oh forgot to mention MacOS Titlebar is untested as I dont have an apple machine. so I think it should be good? but I'm not sure, the offset was a guess.

@eleboucher

Copy link
Copy Markdown
Contributor

Oh forgot to mention MacOS Titlebar is untested as I dont have an apple machine. so I think it should be good? but I'm not sure, the offset was a guess.

yes i tested on my macbook

@hazre
hazre force-pushed the hazre/feat/desktop-update-pill branch 2 times, most recently from fc8a248 to 6f89caf Compare July 23, 2026 10:11
@hazre
hazre changed the base branch from dev to hazre/feat/add-mise-support July 23, 2026 10:16
@hazre
hazre force-pushed the hazre/feat/desktop-update-pill branch from 6f89caf to 30296c3 Compare July 23, 2026 10:21
@hazre
hazre force-pushed the hazre/feat/add-mise-support branch from 2d3b972 to eb27198 Compare July 23, 2026 17:51
@hazre
hazre force-pushed the hazre/feat/desktop-update-pill branch 2 times, most recently from 4c7c38e to b4ee6a6 Compare July 23, 2026 18:08
@7w1
7w1 force-pushed the hazre/feat/add-mise-support branch from eb27198 to f6c5fec Compare July 24, 2026 02:53
@hazre
hazre force-pushed the hazre/feat/desktop-update-pill branch from b4ee6a6 to 5e30622 Compare July 24, 2026 03:16
@7w1
7w1 force-pushed the hazre/feat/add-mise-support branch from f6c5fec to 43a1e4c Compare July 25, 2026 00:52
hazre added 14 commits July 24, 2026 20:05
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
- Add nfpm.yaml declarative config with contents, deps, per-packager overrides
- Replace fpm CLI invocations in package.sh with nfpm pkg
- Manage appimagetool and nfpm via mise file task tools
- Remove manual appimagetool download + sha256 verification
- Fix stale paths from scripts/cef/ move (ROOT, copy-libs reference, usage)
- Add version extraction guard and appimagetool availability check

Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
Signed-off-by: hazre <mail@haz.re>
@7w1
7w1 force-pushed the hazre/feat/desktop-update-pill branch from 5e30622 to 1c0950f Compare July 25, 2026 01:08
@github-actions

Copy link
Copy Markdown
Contributor

Deploying with  Cloudflare Workers  Cloudflare Workers

Status Preview URL Commit Alias Updated (UTC)
✅ Deployment successful! https://pr-1235-sable.raspy-dream-bb1d.workers.dev 71983bd pr-1235 Sat, 25 Jul 2026 01:11:39 GMT

@github-actions

Copy link
Copy Markdown
Contributor

OpenTofu plan for production

Plan: 2 to add, 0 to change, 2 to destroy.
OpenTofu used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement

OpenTofu will perform the following actions:

  # cloudflare_worker_version.site must be replaced
-/+ resource "cloudflare_worker_version" "site" {
!~      annotations         = {
+           workers_message      = (known after apply)
+           workers_tag          = (known after apply)
!~          workers_triggered_by = "create_version_api" -> (known after apply)
        } -> (known after apply)
!~      assets              = { # forces replacement
!~          asset_manifest_sha256 = "0d77329279e54c9584f2ea13c8f6f8c63fb7314c36297bd93964d3fe18b6d3d3" -> "db524c05573f2866397931a48e29216f8a7554e59f4d50cb89deebf43b47e982" # forces replacement
!~          directory             = "/home/runner/work/Sable/Sable/dist" -> "/github/workspace/dist"
#            (1 unchanged attribute hidden)
        }
+       compatibility_flags = (known after apply)
!~      created_on          = "2026-07-17T20:34:47Z" -> (known after apply)
!~      id                  = "************************************" -> (known after apply)
+       limits              = (known after apply)
+       main_script_base64  = (known after apply)
!~      number              = 1528 -> (known after apply)
!~      source              = "terraform" -> (known after apply)
+       startup_time_ms     = (known after apply)
#        (4 unchanged attributes hidden)
    }

  # cloudflare_workers_deployment.site must be replaced
-/+ resource "cloudflare_workers_deployment" "site" {
!~      annotations  = { # forces replacement
!~          workers_message      = "v1.20.0" -> "feat: add desktop auto-update polling, pill status button, manual check for updates, move updater to AppShell"
!~          workers_triggered_by = "deployment" -> (known after apply)
        }
!~      author_email = "cloudflare@sl.sable.moe" -> (known after apply)
!~      created_on   = "2026-07-17T20:34:47Z" -> (known after apply)
!~      id           = "************************************" -> (known after apply)
!~      source       = "terraform" -> (known after apply)
!~      versions     = [ # forces replacement
!~          {
!~              version_id = "************************************" -> (known after apply)
#                (1 unchanged attribute hidden)
            },
        ]
#        (3 unchanged attributes hidden)
    }

Plan: 2 to add, 0 to change, 2 to destroy.

Warning: Attribute Deprecated

  with cloudflare_workers_custom_domain.site,
  on main.tf line 41, in resource "cloudflare_workers_custom_domain" "site":
  41:   environment = "production"

This attribute is deprecated.

(and one more similar warning elsewhere)

📝 Plan generated in Cloudflare Infra #250

Base automatically changed from hazre/feat/add-mise-support to dev July 25, 2026 01:14
@7w1
7w1 added this pull request to the merge queue Jul 25, 2026
Merged via the queue into dev with commit 0e32727 Jul 25, 2026
18 checks passed
charm-cloudhub-social Bot pushed a commit to CloudHub-Social/Charm-1.0 that referenced this pull request Jul 25, 2026
<!-- VISUALJJ_STACK_V1 START -->
Stack of PRs (1 of 3):
- SableClient#1268
- SableClient#1235
- ▶ SableClient#1202 [(19 commits)](1202/files) ◀
<!-- VISUALJJ_STACK_V1 END -->

### Description

Adds [mise](https://mise.jdx.dev/) tooling to the repo for easy
installation of other tooling like node, pnpm, rust and etc. as well as
a unified task runner for the project.

I also converted some of the bash scripts to js and added relevant mise
metadata, so it its well integrated with mise.

Swapped fpm for [nfpm](https://github.com/goreleaser/nfpm) so there is
less dependencies and we can use a config file for linux packaging.

<img width="657" height="465" alt="image"
src="https://github.com/user-attachments/assets/e13f2f45-584d-4112-9955-8ad5f4b2fae5"
/>

#### Type of change

- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] This change requires a documentation update

### Checklist:

- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings

### AI disclosure:

- [x] Partially AI assisted (clarify which code was AI assisted and
briefly explain what it does).
- [ ] Fully AI generated (explain what all the generated code does in
moderate detail).
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.

3 participants