burnbar 0.0.0-dev.37.1 → 0.0.0-dev.41.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,17 +10,16 @@
10
10
  [![Platform](https://img.shields.io/badge/platform-Windows%2010%20%7C%2011-0078D4)](#installation)
11
11
  [![License](https://img.shields.io/github/license/nooblk-98/burnbar)](LICENSE)
12
12
 
13
- **Claude and Codex usage meter for the Windows taskbar.**<br>
13
+ **Claude and Codex usage at a glance, beside your Windows tray.**<br>
14
14
  See how fast you're burning through your plan limits without leaving what you're doing.
15
15
 
16
16
  [Features](#features) • [See it in action](#see-it-in-action) • [Installation](#installation) • [Build from source](#build-from-source)
17
17
 
18
- <img src="assets/social-preview.png" alt="BurnBar, Claude and Codex on your Windows taskbar, with quotas, history, and alerts" width="848">
18
+ <img src="docs/images/milestone-popup-dark.png" alt="BurnBar brief usage milestone notification" width="410">
19
19
 
20
20
  </div>
21
21
 
22
- Claude and Codex have session and longer-term plan limits. BurnBar keeps both providers on your
23
- taskbar, warns you before you run out, and shows whether you're using them faster than the time
22
+ Claude and Codex have session and longer-term plan limits. BurnBar keeps both providers in a tray-anchored card when you need it, warns you before you run out, and shows whether you're using them faster than the time
24
23
  window allows. Use both together, or select one from **Usage providers** in the right-click menu.
25
24
  Codex window lengths come from your account rather than assuming every plan uses the same limits.
26
25
 
@@ -30,38 +29,60 @@ Codex window lengths come from your account rather than assuming every plan uses
30
29
 
31
30
  ## Features
32
31
 
33
- - **Claude + Codex**: one compact meter rotates between providers every 8 seconds with a downward
34
- flip animation. The provider name stays visible above its two quota bars. Rotation pauses on
35
- hover and while details are open, and respects Windows' animation setting.
36
- Select Claude only or Codex only to keep one provider visible. Bars turn red at 90%.
37
- - **Pace marker**: a tick on each bar shows how much of the window's time has passed. A bar past its
38
- tick means you'll hit the limit before it resets.
39
- - **Stays out of the way**: finds free space on the taskbar so it never covers app icons, follows the
40
- light/dark theme and display scaling, and hides during fullscreen apps and games.
41
- The meter narrows when taskbar buttons need more room. If no safe gap fits, it hides
42
- until space opens; the tray icon and details remain available. It never floats over desktop
43
- content. Vertical or too-short taskbars also use the tray icon. Search, Start and ordinary
44
- window clicks keep it visible when space is available.
32
+ - **Brief milestone popups**: by default, a small framed card appears when either
33
+ provider's primary/session or secondary/weekly quota crosses **10%, 20%, … 100%**.
34
+ It shows the affected provider, takes no focus, and closes after **6 seconds**.
35
+ More updates do not keep extending it. Jumps show only the highest new milestone,
36
+ not a burst of every skipped threshold.
37
+ - **Quiet by default**: first readings establish a baseline instead of replaying
38
+ old milestones. Saved per-window state avoids duplicates on refresh or restart;
39
+ quota resets rearm the tracker. Crossings are detected on the next successful
40
+ refresh, not continuously between API reads.
41
+ - **Your choice**: click the tray icon any time to inspect usage; click an automatic
42
+ notice to keep it open and show details. Right-click → **Milestone popups (10% steps,
43
+ 6 sec)** disables automatic cards for click-only use. **Always show popup (optional)**
44
+ restores a persistent overview if preferred. Esc or clicking elsewhere closes
45
+ manual views unless always-show is enabled.
46
+ - **Fullscreen-aware**: no automatic popup appears over a fullscreen app, and missed
47
+ milestones are not queued to interrupt you afterwards. Cards follow light/dark
48
+ theme, DPI and the notification icon, and remain inside the monitor's work area.
49
+ - **Optional taskbar meter**: enable **Show taskbar meter (optional)** for the rotating
50
+ compact bars. Existing taskbar preferences are preserved when updating; new profiles
51
+ use the tray and brief notices instead. Bars turn red at 90%.
52
+ - **Pace marker**: a tick on each bar shows how much of the window's time has passed.
53
+ A bar past its tick means you'll hit the limit before it resets.
45
54
  - **Details panel**: separate provider panels, reported quota windows, reset times, and independent
46
55
  24-hour and 7-day history charts. Claude also shows this week's usage by product when available.
47
56
  - **Alerts**: Windows notifications at 80% and 95%, and when a limit you'd been close to resets.
48
57
  - **Fresh numbers**: refreshes on a schedule, within a minute of Claude Code or Codex activity, and right after
49
58
  a limit resets, backing off automatically if the API rate-limits.
50
- - **Multi-monitor**: a meter on every taskbar, plus a tray icon with tooltip and menu.
51
- - **Lightweight**: a single executable with no installer. Codex usage uses your existing Codex CLI.
59
+ - **Multi-monitor**: the popup follows the primary notification icon; optional meters can appear on every taskbar.
60
+ - **Lightweight**: one native executable, installed or updated with npx. Codex usage uses your existing Codex CLI.
52
61
  - **Start with Windows**: enabled on first launch for new users; turn it off from the
53
62
  right-click menu at any time. Existing startup preferences are preserved.
54
63
  - **About**: right-click the meter or tray icon for the app version, developer credits,
55
64
  and a link to this repository.
56
65
 
66
+ Existing installations using the previous always-visible default switch to the
67
+ quieter milestone mode once on upgrade. You can opt back into always-show after
68
+ updating; that explicit choice is retained. See [popup behavior](docs/POPUP_BEHAVIOR.md).
69
+
57
70
  ## See it in action
58
71
 
59
72
  <div align="center">
60
- <img src="docs/images/burnbar-demo.gif" alt="BurnBar on Windows, showing the rotating taskbar meter and Claude and Codex usage details" width="848">
73
+ <img src="docs/images/milestone-popup-light.png" alt="BurnBar milestone popup, light theme" width="400">
74
+ <img src="docs/images/milestone-popup-dark.png" alt="BurnBar milestone popup, dark theme" width="400">
61
75
  <br>
62
- <sub>BurnBar in action: Claude and Codex usage on the taskbar, with details a click away.</sub>
76
+ <sub>Rendered demo previews: a milestone notice that closes automatically. Click to inspect details.</sub>
63
77
  </div>
64
78
 
79
+ <details>
80
+ <summary>Optional taskbar meter demo</summary>
81
+
82
+ <img src="docs/images/burnbar-demo.gif" alt="The optional rotating taskbar meter and usage details" width="848">
83
+
84
+ </details>
85
+
65
86
  ## Installation
66
87
 
67
88
  You need Windows 10 or 11 and a signed-in provider:
@@ -71,89 +92,52 @@ You need Windows 10 or 11 and a signed-in provider:
71
92
  (`codex login`). API-key-only accounts do not provide these subscription usage limits.
72
93
  BurnBar also detects the CLI bundled with the Windows Codex desktop app when available.
73
94
 
74
- Both providers rotate through the meter by default. A missing login affects only that provider. Select
95
+ Both providers are available from the tray; automatic notices show the affected provider. A missing login affects only that provider. Select
75
96
  **Usage providers** from the right-click menu to hide a provider you don't use.
76
97
 
77
98
  ### Install or update with npx
78
99
 
79
- Requires Windows, [Node.js 22+](https://nodejs.org/) (includes npm/npx), and
80
- Windows PowerShell 5.1. BurnBar itself does not need Node.js after installation.
81
-
82
- Install or update using these npm channels (the stable `latest` tag is created
83
- by the first stable release after this workflow reaches main):
100
+ Requires [Node.js 22+](https://nodejs.org/) (includes npm/npx) and Windows PowerShell
101
+ 5.1. BurnBar itself does not need Node.js after installation. No administrator
102
+ access or npm login is required.
84
103
 
85
104
  ```powershell
86
- # Latest stable release (same command for first install and updates)
87
- npx --yes burnbar@latest install
88
-
89
- # Latest development build (may contain bugs)
105
+ # Install or update to the latest development build
90
106
  npx --yes burnbar@development install
91
107
 
92
- # Switch back to stable
93
- npx --yes burnbar@latest update --channel stable
94
- ```
95
-
96
- `latest` and `development` are **npm installer channels**. The installer selects
97
- the matching **GitHub binary channel** by default; `--channel` overrides it.
98
- The installer package version is not a pin to a particular executable version:
99
- each invocation checks GitHub for the latest published build of that channel.
100
- Updates are explicit, not an always-running automatic updater.
101
-
102
- **Before the first stable npm publish**, use the development installer to install
103
- the stable executable:
104
-
105
- ```powershell
108
+ # Install or update to the latest stable executable
106
109
  npx --yes burnbar@development install --channel stable
107
110
  ```
108
111
 
109
- Alternatively, use the GitHub-backed package (also
110
- requires Git). These commands do not require an npm account or npm publication:
112
+ `burnbar@development` is published and verified. Use the explicit stable-channel
113
+ command above until the first stable npm package is released from main. npm's
114
+ initial `latest` alias currently also points to a development installer; do not
115
+ use that alias to select stable software yet.
111
116
 
112
- ```powershell
113
- npx --yes github:nooblk-98/burnbar#development install --channel stable
114
- npx --yes github:nooblk-98/burnbar#development install --channel development
115
- ```
116
-
117
- Both channels use `%LOCALAPPDATA%\Programs\BurnBar` and preserve existing settings,
118
- history and startup preferences when switching. The CLI delegates to its bundled
119
- PowerShell installer, verifies SHA-256 before replacing anything, and creates a
120
- Start menu shortcut. A development push publishes an immutable prerelease build;
121
- stable installs never select those prereleases.
117
+ After the first stable version tag publishes the stable npm channel, this will
118
+ become the stable shortcut:
122
119
 
123
120
  ```powershell
124
- # Optional flags work with either package source
125
- npx --yes burnbar@latest update --install-dir 'D:\Apps\BurnBar' --no-start
126
- npx --yes burnbar@development install --dry-run
121
+ npx --yes burnbar@latest install
127
122
  ```
128
123
 
129
- `--dry-run` reads release metadata only: no binary download, file replacement,
130
- process shutdown or launch. See [release setup](docs/RELEASING.md) for npm publishing.
131
-
132
- ### Install or update with PowerShell (no Node.js required)
133
-
134
-
135
- Run this in a regular PowerShell window; administrator access is not needed:
124
+ `install` and `update` perform the same verified process. Running the command
125
+ again updates the executable; there is no background auto-updater. Switching
126
+ channels preserves settings, history and startup preferences.
136
127
 
137
128
  ```powershell
138
- & ([scriptblock]::Create((irm https://raw.githubusercontent.com/nooblk-98/burnbar/main/install.ps1)))
139
- ```
140
-
141
- The same command installs or updates the **latest stable release** in
142
- `%LOCALAPPDATA%\Programs\BurnBar`, verifies its SHA-256 checksum, adds a Start menu
143
- shortcut, and launches BurnBar. Existing settings and history are kept. A running
144
- BurnBar instance in your session is closed after the download is verified.
129
+ # Optional: another folder, without launching
130
+ npx --yes burnbar@development update --channel stable --install-dir 'D:\Apps\BurnBar' --no-start
145
131
 
146
- You can [review the installer](install.ps1) before running it. To choose a folder
147
- or install without launching:
148
-
149
- ```powershell
150
- $installer = irm https://raw.githubusercontent.com/nooblk-98/burnbar/main/install.ps1
151
- & ([scriptblock]::Create($installer)) -InstallDir 'D:\Apps\BurnBar' -NoStart
132
+ # Check release metadata without installing
133
+ npx --yes burnbar@development install --dry-run
152
134
  ```
153
135
 
154
- For a manual install, download `burnbar.exe` from the
155
- [releases page](https://github.com/nooblk-98/burnbar/releases), put it anywhere,
156
- and run it.
136
+ Both channels install into `%LOCALAPPDATA%\Programs\BurnBar` by default, verify
137
+ SHA-256 before replacement, and create a Start menu shortcut. The reviewed Windows
138
+ helper is bundled inside the npm package; no remote script is fetched and executed.
139
+ `--dry-run` changes no files or running processes. Development builds may contain
140
+ bugs; stable installs exclude prereleases. See [release setup](docs/RELEASING.md).
157
141
 
158
142
  On its first normal launch, BurnBar enables **Start with Windows** for a new profile.
159
143
  You can disable it from the right-click menu. Demo and diagnostic modes do not enable it.
@@ -174,8 +158,7 @@ You can disable it from the right-click menu. Demo and diagnostic modes do not e
174
158
  2. Open **Windows Security > App & browser control > Smart App Control settings**.
175
159
  3. If you trust the download and choose to proceed, select **Off** before running
176
160
  BurnBar. Read the confirmation carefully.
177
- 4. Download `burnbar.exe` from this repository's releases, place it in your preferred
178
- folder, and run it. BurnBar is portable and has no installer.
161
+ 4. Run the npx install command above again, then launch BurnBar.
179
162
  5. Afterwards, return to **Smart App Control settings** and select **On**, if
180
163
  available. Restart if Windows asks, and confirm protection is on.
181
164
 
@@ -222,6 +205,7 @@ internal/usage/ Claude usage client and Codex app-server account client
222
205
  internal/render/ drawing the meter, details panel, charts and tray icon
223
206
  internal/layout/ choosing a free spot on the taskbar
224
207
  internal/config/ settings and alert state
208
+ internal/alerts/ milestone deduplication and popup lifetime
225
209
  internal/history/ usage history for the charts
226
210
  tools/genres/ icon and Windows resource generator
227
211
  assets/ app icon
@@ -59,7 +59,7 @@ function invocation(options, env = process.env) {
59
59
  // script or interpolate user input into a PowerShell command string.
60
60
  const executable = path.win32.join(env.SystemRoot, 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe');
61
61
  const args = ['-NoLogo', '-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass',
62
- '-File', path.resolve(__dirname, '../../install.ps1'), '-Channel', options.channel];
62
+ '-File', path.resolve(__dirname, '../windows/install.ps1'), '-Channel', options.channel];
63
63
  if (options.installDir) args.push('-InstallDir', options.installDir);
64
64
  if (options.noStart) args.push('-NoStart');
65
65
  if (options.dryRun) args.push('-WhatIf');
@@ -2,10 +2,8 @@
2
2
  <#
3
3
  .SYNOPSIS
4
4
  Installs or updates a stable or development BurnBar release for the current user.
5
- .EXAMPLE
6
- & .\install.ps1
7
- .EXAMPLE
8
- & .\install.ps1 -InstallDir 'D:\Apps\BurnBar' -NoStart
5
+ .NOTES
6
+ Internal npx helper. Run `npx --yes burnbar@development install` instead.
9
7
  #>
10
8
  [CmdletBinding(SupportsShouldProcess = $true)]
11
9
  param(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "burnbar",
3
- "version": "0.0.0-dev.37.1",
3
+ "version": "0.0.0-dev.41.1",
4
4
  "description": "Install or update the BurnBar Windows taskbar usage meter",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "files": [
18
18
  "npm/bin/burnbar.cjs",
19
- "install.ps1"
19
+ "npm/windows/install.ps1"
20
20
  ],
21
21
  "engines": {
22
22
  "node": ">=22"