gh-glance 0.13.2 → 0.13.3

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/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.13.3] - 2026-09-07
11
+
12
+ ### Changed
13
+
14
+ - **An upgrade hold now says whether it will clear or is stuck.** Two different
15
+ states shared the message `Upgrade waiting for legacy quota reset`: one has a
16
+ deadline and ends by itself, the other holds unsettled spend with no reset
17
+ recorded to wait for and never clears. The second now reads `Upgrade blocked:
18
+ older spend cannot be settled or waited out`, and the troubleshooting table
19
+ gives its recovery -- quit every pane and delete the leftover
20
+ `rate-governor-v1-*.json` files. Sharing one message meant a permanently
21
+ blocked pane looked like a temporary wait.
22
+
10
23
  ## [0.13.2] - 2026-09-07
11
24
 
12
25
  ### Fixed
@@ -940,7 +953,8 @@ engineering, security, QA and UX. What follows is what changed as a result.
940
953
  - The `main` field from `package.json`. It advertised the file as importable,
941
954
  but importing it took over the terminal or exited the host process.
942
955
 
943
- [Unreleased]: https://github.com/juan294/gh-glance/compare/v0.13.2...HEAD
956
+ [Unreleased]: https://github.com/juan294/gh-glance/compare/v0.13.3...HEAD
957
+ [0.13.3]: https://github.com/juan294/gh-glance/compare/v0.13.2...v0.13.3
944
958
  [0.13.2]: https://github.com/juan294/gh-glance/compare/v0.13.1...v0.13.2
945
959
  [0.13.1]: https://github.com/juan294/gh-glance/compare/v0.13.0...v0.13.1
946
960
  [0.13.0]: https://github.com/juan294/gh-glance/compare/v0.12.0...v0.13.0
package/README.md CHANGED
@@ -711,7 +711,8 @@ GH_GLANCE_ICONS=ascii gh-glance
711
711
  | Repeated GitHub rate-limit messages | A classified rate-limit response is published as one shared resource block. Local panes make no data retry before that block's probe/reset deadline. Use `--doctor` to inspect the resource and reset; repeated manual refresh cannot override it. |
712
712
  | It exits immediately when piped | Intentional. It is a full-screen dashboard, not a reporting command. |
713
713
  | `Restart required: close older gh-glance panes` | A pane from an older release still holds a live lease in the previous coordination format, which this version cannot join. Quit those panes; this one resumes on its own. Nothing is killed for you, and no state needs deleting. |
714
- | `Upgrade waiting for legacy quota reset` | The older panes are gone, but left spend that cannot be proven settled. It waits for the affected rate-limit window to reset rather than assume the quota is free. |
714
+ | `Upgrade waiting for legacy quota reset` | The older panes are gone, but left spend that cannot be proven settled. It waits for the affected rate-limit window to reset rather than assume the quota is free. This one has a deadline and clears itself. |
715
+ | `Upgrade blocked: older spend cannot be settled or waited out` | The same unsettled spend, but the older file records no reset to wait for, so there is no deadline and it will not clear on its own. Quit every pane, then delete the `rate-governor-v1-*.json` files in the configuration directory -- they are the leftover evidence, and with no reset recorded there is nothing further to learn from them. Coordination starts clean on the next launch. |
715
716
  | `Coordination state unavailable; evidence preserved` | Coordination state could not be read and was deliberately not overwritten, so nothing is lost. Run `gh-glance --doctor` and check the config directory's permissions. |
716
717
  | `Shared HTTP request or cooldown in progress` | Panes share one outbound request slot and one cooldown. Another pane holds it, or a server-sent `Retry-After` is still running. Normal pacing, not an error. |
717
718
  | `Verified identity unavailable; waiting to retry` | The account behind your credential has not been confirmed yet -- not signed in, a denied or malformed proof, or a slow credential helper. Check `gh auth status`. Retries are rate-limited, so this clears on its own rather than immediately. |
package/index.mjs CHANGED
@@ -3072,7 +3072,14 @@ function retryThrottledTransport(root, host, { now = Date.now } = {}) {
3072
3072
 
3073
3073
  function identityCoordinationMessage(reason) {
3074
3074
  if (reason === "restart-required") return "Restart required: close older gh-glance panes";
3075
- if (["migration-hold", "legacy-unresolved"].includes(reason)) return "Upgrade waiting for legacy quota reset";
3075
+ // These two were one message for a long time, and the difference between them
3076
+ // is the difference between waiting and being stuck. A migration hold has a
3077
+ // deadline and ends by itself. An unresolved legacy ledger has no deadline at
3078
+ // all -- it holds unsettled spend with no reset recorded to wait for -- so the
3079
+ // same wording had people waiting weeks for something that was never going to
3080
+ // arrive. Say which one it is.
3081
+ if (reason === "migration-hold") return "Upgrade waiting for legacy quota reset";
3082
+ if (reason === "legacy-unresolved") return "Upgrade blocked: older spend cannot be settled or waited out";
3076
3083
  if (["legacy-corrupt", "corrupt"].includes(reason)) return "Coordination state unavailable; evidence preserved";
3077
3084
  if (reason === "transport-busy") return "Shared HTTP request or cooldown in progress";
3078
3085
  if (reason === "throttle-paused") return "Paused after repeated rate limits; refresh to retry";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gh-glance",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "A live-refreshing GitHub dashboard for your terminal: Actions, Issues, Pull Requests, and Security alerts in one narrow pane",
5
5
  "type": "module",
6
6
  "bin": {