From 1448eabe7792c46360ed09c11ef8300ca27eb5b8 Mon Sep 17 00:00:00 2001 From: tsouth89 Date: Sat, 1 Aug 2026 01:01:41 -0400 Subject: [PATCH] Prepare Ceiling 1.5.20 --- .github/release-notes-1.5.20.md | 31 ++++++++++++++++++++ CHANGELOG.md | 10 +++++++ Cargo.lock | 4 +-- apps/desktop-tauri/package.json | 2 +- apps/desktop-tauri/src-tauri/Cargo.toml | 2 +- apps/desktop-tauri/src-tauri/tauri.conf.json | 2 +- rust/Cargo.toml | 2 +- version.env | 4 +-- 8 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 .github/release-notes-1.5.20.md diff --git a/.github/release-notes-1.5.20.md b/.github/release-notes-1.5.20.md new file mode 100644 index 00000000..bf87ca9e --- /dev/null +++ b/.github/release-notes-1.5.20.md @@ -0,0 +1,31 @@ +## Highlights + +### One notification per scheduled reset + +Ceiling could send the same Copilot monthly-reset notification two or three times. One quota window confirmed its reset while another was still awaiting confirmation, so the confirmed window's old baseline survived long enough to replay the same reset. + +Each confirmed window now advances independently, and a second guard suppresses replay of the same scheduled reset cycle. + +### Safer local state + +Ceiling now replaces settings, credentials, history, geometry, and cache files atomically. If the app or Windows interrupts a save, the previous complete file remains available instead of being replaced by a partial one. + +### Account history stays with the right account + +Chart history, quota-run efficiency, and caches now consistently use the stable account ID, falling back to email or organization when needed. This prevents seats that share an email from blending data and restores history for organization-only providers. + +### Claude refresh failures stay contained + +Claude now reports HTTP client setup failures instead of panicking a background refresh task, and OAuth credential refreshes use reliable atomic replacement on Windows. + +## Installers + +- **Ceiling-1.5.20-Setup.exe** - standard installer +- **Ceiling-1.5.20-portable.exe** - portable +- **Ceiling-1.5.20-Store-Setup.exe** - Microsoft Store package (WebView2 bundled) + +Portable builds show alerts as banners but do not keep them in the notification center. That requires the Start Menu shortcut installed by the standard or Store build. + +--- + +**Full Changelog**: https://github.com/tsouth89/ceiling/compare/v1.5.19...v1.5.20 diff --git a/CHANGELOG.md b/CHANGELOG.md index 84c44739..d6539796 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## Unreleased +## [Ceiling] 1.5.20 - 2026-08-01 + +Patch release for duplicate scheduled-reset notifications and reliability hardening around local state and account-scoped history. + +### Fixed +- A confirmed monthly or weekly reset now advances its own baseline immediately, even when another quota window is still awaiting confirmation. The stale baseline could otherwise replay the same reset and send two or three identical notifications during one provider refresh cycle. +- Chart history, quota-run efficiency, and chart caches now follow the stable account ID, with email and organization fallbacks. Accounts sharing an email no longer blend history, and organization-only providers can read back the history they recorded. +- Settings, credentials, history, geometry, and cache files are replaced atomically, so an interrupted write cannot truncate the last known-good local state. +- Claude refreshes report HTTP client initialization failures instead of panicking a background task, and refreshed OAuth credentials are replaced reliably on Windows. + ### Internal - The release smoke test now asserts that the installed Start Menu shortcut carries Ceiling's AppUserModelID. That property is what lets Windows keep a notification, and 1.5.17 shipped without it: every gate checked source, while the one step that inspects the installed build never looked at it. diff --git a/Cargo.lock b/Cargo.lock index b156b1dd..a9d45824 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -664,7 +664,7 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "codexbar" -version = "1.5.19" +version = "1.5.20" dependencies = [ "aes-gcm", "anyhow", @@ -706,7 +706,7 @@ dependencies = [ [[package]] name = "codexbar-desktop-tauri" -version = "1.5.19" +version = "1.5.20" dependencies = [ "chrono", "chrono-tz", diff --git a/apps/desktop-tauri/package.json b/apps/desktop-tauri/package.json index 985b02de..9c76a568 100644 --- a/apps/desktop-tauri/package.json +++ b/apps/desktop-tauri/package.json @@ -1,7 +1,7 @@ { "name": "desktop-tauri", "private": true, - "version": "1.5.19", + "version": "1.5.20", "packageManager": "pnpm@10.18.1", "type": "module", "scripts": { diff --git a/apps/desktop-tauri/src-tauri/Cargo.toml b/apps/desktop-tauri/src-tauri/Cargo.toml index ca8d53c5..c318b0e8 100644 --- a/apps/desktop-tauri/src-tauri/Cargo.toml +++ b/apps/desktop-tauri/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codexbar-desktop-tauri" -version = "1.5.19" +version = "1.5.20" edition = "2024" publish = false diff --git a/apps/desktop-tauri/src-tauri/tauri.conf.json b/apps/desktop-tauri/src-tauri/tauri.conf.json index 8b8750c8..4561e2d3 100644 --- a/apps/desktop-tauri/src-tauri/tauri.conf.json +++ b/apps/desktop-tauri/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Ceiling", - "version": "1.5.19", + "version": "1.5.20", "identifier": "io.github.tsouth89.ceiling", "build": { "beforeDevCommand": "pnpm run dev", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 665e1d2a..25d9b57f 100755 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codexbar" -version = "1.5.19" +version = "1.5.20" edition = "2024" authors = ["Ceiling Contributors"] description = "Local-first Windows companion for monitoring AI capacity and reset times" diff --git a/version.env b/version.env index 62a08471..acf91c2f 100755 --- a/version.env +++ b/version.env @@ -1,2 +1,2 @@ -MARKETING_VERSION=1.5.19 -BUILD_NUMBER=121 +MARKETING_VERSION=1.5.20 +BUILD_NUMBER=122