gh-glance 0.12.0 → 0.13.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +78 -1
  2. package/index.mjs +583 -183
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.13.1] - 2026-09-07
11
+
12
+ ### Fixed
13
+
14
+ - **Upgrading from 0.12.0 no longer leaves every pane unable to coordinate.**
15
+ 0.13.0 moved the coordination protocol from version 3 to 5 but could migrate
16
+ only version 1, and unlike earlier protocol changes it kept the state file in
17
+ the same place. A pane upgrading therefore read its own file, could neither
18
+ validate nor migrate it, and reported unusable coordination state on every
19
+ launch from then on -- the read happens before any write, so nothing ever
20
+ replaced the file. Versions 2, 3 and 4 now upgrade in place, keeping the
21
+ unsettled charges and observed budgets they hold. A file from a *newer*
22
+ protocol is still refused, which is the recoverable direction: the newer build
23
+ is still there to rewrite it.
24
+
25
+ - **Diagnostics and manual actions no longer pace as though they spent their
26
+ worst case.** Work is admitted against the most it could cost, and the
27
+ difference is returned once the real cost is known. That return was wired
28
+ into only one of the two settlement paths, so every `--doctor` probe and
29
+ manual operation kept paying for capacity it had not used, delaying later
30
+ requests for no reason.
31
+
32
+ ## [0.13.0] - 2026-09-06
33
+
34
+ ### Changed
35
+
36
+ - **Upgrading requires restarting older panes, and may wait for a quota reset.**
37
+ The coordination protocol moved from version 3 to 5. A pane still running an
38
+ older build holds a lease this one refuses to coordinate against, so it must
39
+ be closed; if that pane left API charges it never settled, admission waits for
40
+ the affected quota window to reset before spending against a counter it cannot
41
+ account for. Both are conservative on purpose, and both clear on their own.
42
+ - **A slow or failed budget observer no longer holds up the other resource.**
43
+ Core and GraphQL are claimed, published and retried independently. What still
44
+ couples them is the shared transport permit and any account-wide hold, which
45
+ are enforced where they belong.
46
+
47
+ ### Added
48
+
49
+ - **Secondary rate limits back off on a bounded ladder.** A `Retry-After` the
50
+ server supplies is honoured exactly, in seconds or as an HTTP date, and
51
+ concurrent holds merge by maximum so a shorter error cannot shorten a longer
52
+ hold. Without a supplied deadline the client waits 60, 120, 240, 480 then 900
53
+ seconds by consecutive throttle; that cap applies only to the delay gh-glance
54
+ chooses, never to one the server asked for. After five consecutive throttles
55
+ it stops choosing and waits for an explicit refresh.
56
+ - **A run of manual refreshes yields a turn to a waiting tab.** Manual work
57
+ still outranks background polling, but after three consecutive grants an
58
+ active tab that has been waiting goes next, so holding `r` can no longer
59
+ starve the rest of the dashboard.
60
+
61
+ ### Fixed
62
+
63
+ - **A permission error no longer pauses every pane.** A 403 carrying no
64
+ rate-limit headers and no secondary-limit marker is a permission failure, not
65
+ a throttle. It previously held the shared transport, so one repository the
66
+ token could not read stalled every pane using that account.
67
+ - **The external-use estimator can come back down.** When other clients were
68
+ busy, gh-glance would raise its estimate of their share and then keep pacing
69
+ against it: each sampling window closed on publication even when the sample
70
+ was too small to reconcile, discarding the local accumulation that would
71
+ eventually have made one. A window now closes only when it actually
72
+ reconciles, and a new quota window starts from no assumed external use rather
73
+ than inheriting the previous window's ratio.
74
+ - **A request that cost nothing no longer paces as though it had.** Work is
75
+ paced by the cost it reserves, which is a worst case. A conditional request
76
+ answered `304` spends nothing, and cancelled work spends nothing at all -- the
77
+ unused pacing is now returned instead of leaving the next request waiting out
78
+ a slot nobody used.
79
+ - **Older coordination files are readable again.** The version 3 to 4 change
80
+ altered the file's shape, and the legacy reader recognised only the version
81
+ number, so every file an older pane had actually written was rejected as
82
+ corrupt -- exactly the file the restart boundary has to read to see that an
83
+ older pane is still running.
84
+
10
85
  ## [0.12.0] - 2026-09-06
11
86
 
12
87
  ### Added
@@ -851,7 +926,9 @@ engineering, security, QA and UX. What follows is what changed as a result.
851
926
  - The `main` field from `package.json`. It advertised the file as importable,
852
927
  but importing it took over the terminal or exited the host process.
853
928
 
854
- [Unreleased]: https://github.com/juan294/gh-glance/compare/v0.12.0...HEAD
929
+ [Unreleased]: https://github.com/juan294/gh-glance/compare/v0.13.1...HEAD
930
+ [0.13.1]: https://github.com/juan294/gh-glance/compare/v0.13.0...v0.13.1
931
+ [0.13.0]: https://github.com/juan294/gh-glance/compare/v0.12.0...v0.13.0
855
932
  [0.12.0]: https://github.com/juan294/gh-glance/compare/v0.11.2...v0.12.0
856
933
  [0.11.2]: https://github.com/juan294/gh-glance/compare/v0.11.1...v0.11.2
857
934
  [0.11.1]: https://github.com/juan294/gh-glance/compare/v0.11.0...v0.11.1