Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/release-notes-1.5.23.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
## Highlights

### Ceiling tells you when you're going to run out

Ceiling already predicted whether a quota would outlast its window. It just never said so anywhere you'd see it: the expected-vs-actual breakdown is too tall for the tray, so it was hidden there, which is exactly where people look.

The tray now carries a verdict. It names the outcome (on track, ahead of pace, plenty left, or running out early), says what that means for you, and draws one slim bar with a tick showing where your usage *should* be by this point in the window. If you're burning through it, it tells you roughly how long you have left. The detailed breakdown is still there in the main window.

### Predictive pace warnings are back, if you want them

There is a warning that fires when a window is on course to be exhausted before it resets. It had been switched off on every launch with no way to turn it on, and even then it only ever applied to Claude and Codex.

It is available again under **Settings > Notifications**, off by default. Any provider that reports a reset can raise one, and the warning now names the window by its real cadence instead of calling a monthly quota a "session".

### Cursor on-demand spend is visible in dollars

If you hit 100% of your Cursor plan, on-demand is where the real money goes, and it was easy to miss. It could vanish entirely on some account shapes, and anyone running on-demand without a spend cap saw nothing at all, because a meter needs a cap to draw a percentage against.

On-demand now shows its dollars beside its bar, uncapped spend is reported as a plain figure rather than dropped, and it takes the cost slot ahead of plan usage. Only on-demand bills real money on Cursor, so it should be the number you see.

### A Cursor meter that could only ever say 0% is gone

The Cursor card carried a "Promotional" bar that was pinned at 0% by its own arithmetic, and a badge claiming the bonus expired at the end of the billing cycle when Cursor credits expire on their own schedule. Both numbers were wrong, and neither can be worked out from what the Cursor API actually reports, so the lane has been removed rather than guessed at.

## Installers

- **Ceiling-1.5.23-Setup.exe** - standard installer
- **Ceiling-1.5.23-portable.exe** - portable
- **Ceiling-1.5.23-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.22...v1.5.23
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Changelog

## [Ceiling] 1.5.23 - 2026-08-05

Adds a pace verdict and Cursor on-demand spend, both from user feature requests.

### Added
- The tray now answers "am I going to run out before this resets?" directly. A verdict line names the outcome (on track, ahead of pace, plenty left, or running out early), states the consequence, and draws one slim bar with a tick showing where usage should be by this point in the window. The detailed expected-vs-actual breakdown was hidden in the tray because it was too tall, so the prediction Ceiling already computed was invisible exactly where people look for it. The taller breakdown still appears in the main window.
- Predictive pace warnings are available again, as an opt-in under Settings > Notifications. They alert when a window is on course to be exhausted before it resets. The setting had been pinned off on every load with no way to enable it, and was additionally restricted to Claude and Codex; any provider that reports a reset can raise one now. Warnings are named by the window's real cadence, so a monthly quota is no longer announced as a "Session" limit.
- A metered window can carry the money behind it. Cursor's on-demand lane now shows its dollars beside its bar, which is what makes the overdraft readable at 100% of plan.

### Fixed
- Cursor on-demand usage could disappear entirely. It was only read when the account reported a `plan` object, so accounts reporting `overall` lost the overdraft meter; and deriving a percentage needs a cap, so anyone running on-demand uncapped got no meter and their spend was dropped. Uncapped spend is now reported as an explicit non-metering line rather than being discarded for want of a denominator.
- Cursor on-demand is the only lane on that provider that bills real money, so it now takes the cost slot ahead of plan and pooled-team usage, and is labelled "On-demand" instead of being folded into a generic "Monthly".
- Removed the Cursor "Promotional" meter and its badge. The percentage was computed as plan usage minus the included allotment, and the included lane is its own closed set, so the subtraction was always zero and the meter read 0% permanently. The badge alongside it claimed the bonus expired at the end of the billing cycle, while Cursor credits expire on their own schedule. Both numbers were wrong and neither can be derived from what the API reports, so the lane is gone rather than guessed at.

### Internal
- Cost-scanner tests no longer mutate `CODEX_HOME`, `CLAUDE_CONFIG_DIR`, or `GROK_HOME`. Changing process environment while another thread reads it is undefined behaviour, and nine other modules read those variables constantly, so unrelated scans intermittently resolved the wrong home. One failure also poisoned the shared mutex and cascaded into three more, which disguised a single fault as four. The scanner now accepts an injected ambient home; the suite went from failing roughly one run in five to twelve clean runs.

## [Ceiling] 1.5.22 - 2026-08-03

### Fixed
Expand Down
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion apps/desktop-tauri/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "desktop-tauri",
"private": true,
"version": "1.5.22",
"version": "1.5.23",
"packageManager": "pnpm@10.18.1",
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion apps/desktop-tauri/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "codexbar-desktop-tauri"
version = "1.5.22"
version = "1.5.23"
edition = "2024"
publish = false

Expand Down
2 changes: 1 addition & 1 deletion apps/desktop-tauri/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "Ceiling",
"version": "1.5.22",
"version": "1.5.23",
"identifier": "io.github.tsouth89.ceiling",
"build": {
"beforeDevCommand": "pnpm run dev",
Expand Down
2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "codexbar"
version = "1.5.22"
version = "1.5.23"
edition = "2024"
authors = ["Ceiling Contributors"]
description = "Local-first Windows companion for monitoring AI capacity and reset times"
Expand Down
Loading
Loading