gh-glance 0.16.1 → 0.17.0

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 (4) hide show
  1. package/CHANGELOG.md +53 -1
  2. package/README.md +64 -12
  3. package/index.mjs +617 -177
  4. package/package.json +8 -4
package/CHANGELOG.md CHANGED
@@ -7,6 +7,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.17.0] - 2026-10-25
11
+
12
+ ### Added
13
+
14
+ - Contextual, paginated help with the selected GitHub host and repository,
15
+ complete diagnostics and recovery actions, including in narrow terminals.
16
+ - Optional Actions setup checks with `s` in standalone mode: one read-only
17
+ request lists up to 100 workflows, reports incomplete coverage and keeps a
18
+ separate result for five minutes. Press `g` to open the repository's Actions
19
+ page, including from collector and SSH views.
20
+
21
+ ### Changed
22
+
23
+ - Empty tabs explain what was checked, what the result means and what to do
24
+ next. Saved views, waiting, overdue data and failed refreshes retain their
25
+ actual source-check context.
26
+ - README: the provenance note now says the published package is the exact
27
+ tarball tested for the release pull request.
28
+ - Development CI monitoring uses Sutura v0.3.9 with a repository-scoped App token.
29
+
30
+ ### Fixed
31
+
32
+ - Preserve actionable login and local-storage remedies in short terminal panes.
33
+ - Distinguish partial or disabled Security coverage from an all-clear result,
34
+ and disclose uncertain check times without inventing freshness.
35
+ - Keep setup and browser failures separate from workflow-run results, with
36
+ bounded retries, shared rate-limit accounting and account-change fencing.
37
+
38
+ ## [0.16.2] - 2026-10-03
39
+
40
+ No change to the dashboard itself: `index.mjs` is identical to 0.16.1. This
41
+ release changes how gh-glance is tested and published.
42
+
43
+ ### Changed
44
+
45
+ - The published npm package is now the exact tarball the release pull request
46
+ tested: CI packs it once, the package and terminal smoke checks run those
47
+ bytes, and the release workflow verifies the tested tree, run, archive digest and
48
+ tarball digests before publishing it with lifecycle scripts disabled and
49
+ pinned Node 22.22.2 / npm 11.21.0. A version collision or an unclear
50
+ registry answer stops publication instead of skipping it.
51
+ - Release delivery is checked automatically: registry integrity, npm
52
+ provenance bound to this release workflow, tag and merge commit, and a fresh
53
+ install run on Node 22 and 24.
54
+ - CI runs the full suites once, on the release pull request; pushes to
55
+ `develop` and `main` run quick checks or a promotion identity check, and
56
+ coverage runs on a schedule instead of on every push.
57
+ - README: the live freshness monitor section explains how to observe the
58
+ default on-demand mode (continuously active Actions only).
59
+
10
60
  ## [0.16.1] - 2026-10-02
11
61
 
12
62
  ### Fixed
@@ -1232,7 +1282,9 @@ engineering, security, QA and UX. What follows is what changed as a result.
1232
1282
  - The `main` field from `package.json`. It advertised the file as importable,
1233
1283
  but importing it took over the terminal or exited the host process.
1234
1284
 
1235
- [Unreleased]: https://github.com/juan294/gh-glance/compare/v0.16.1...HEAD
1285
+ [Unreleased]: https://github.com/juan294/gh-glance/compare/v0.17.0...HEAD
1286
+ [0.17.0]: https://github.com/juan294/gh-glance/compare/v0.16.2...v0.17.0
1287
+ [0.16.2]: https://github.com/juan294/gh-glance/compare/v0.16.1...v0.16.2
1236
1288
  [0.16.1]: https://github.com/juan294/gh-glance/compare/v0.16.0...v0.16.1
1237
1289
  [0.16.0]: https://github.com/juan294/gh-glance/compare/v0.15.2...v0.16.0
1238
1290
  [0.15.2]: https://github.com/juan294/gh-glance/compare/v0.15.1...v0.15.2
package/README.md CHANGED
@@ -25,14 +25,14 @@ without switching to the browser.
25
25
  ╭─ Actions · owner/repo ──────────────────────────────────────────────────╮
26
26
  │ TITLE │WORKFLOW │BRANCH │TIME │UPDATED │
27
27
  │ ─────────────────────────────────────────────────────────────────────── │
28
- │ >+ ci: pin actions to com… #443 CI develop 1m20s 44d ago │
29
- │ x fix: restore the prima… #442 Code… develop 1m28s 44d ago │
30
- │ + chore: bump dependenci… #441 CI dependa…int-10 30s 44d ago │
31
- │ - docs: update the readme #440 CI develop 15s 45d ago │
28
+ │ >+ ci: pin actions to com… #443 CI develop 1m20s 85d ago │
29
+ │ x fix: restore the prima… #442 Code… develop 1m28s 85d ago │
30
+ │ + chore: bump dependenci… #441 CI dependa…int-10 30s 85d ago │
31
+ │ - docs: update the readme #440 CI develop 15s 86d ago │
32
32
  │ │
33
33
  │ │
34
34
  ╰──────────────────────────────────────────────────────────────── 4 of 4 ─╯
35
- · Watching Refresh: r Quit: q Move: ↑↓ Open: Ent Width: w
35
+ · Watching Refresh: r Quit: q Help: ? Move: ↑↓ Open: Ent w
36
36
  ```
37
37
 
38
38
  > Generated from this candidate's real binary under the repository PTY harness
@@ -134,15 +134,20 @@ The installed package is a CLI, not a JavaScript library. The `gh-glance`
134
134
  executable is supported; package-root and deep imports are intentionally
135
135
  blocked so an internal test seam cannot become an accidental public API.
136
136
 
137
- Every published version is built and signed by GitHub Actions from a tagged
138
- commit on `main`, never from a maintainer's laptop, and carries [npm
137
+ Every published version is the exact tarball GitHub Actions packed and tested
138
+ for the release pull request, published by GitHub Actions from a tagged commit
139
+ on `main`, never from a maintainer's laptop, and carries [npm
139
140
  provenance](https://docs.npmjs.com/generating-provenance-statements) linking
140
- the tarball back to the workflow run and commit that produced it. The
141
+ the tarball back to the workflow run and commit that published it. The
141
142
  "Provenance" section on the [package
142
143
  page](https://www.npmjs.com/package/gh-glance) shows the exact source.
143
144
 
144
145
  ### First run
145
146
 
147
+ The footer keeps `?` available for contextual help, even in a narrow pane.
148
+ Help explains the selected repository and host, the current observation, and
149
+ what to do next; its pages keep long targets and recovery details reachable.
150
+
146
151
  The default standalone dashboard uses the credentials and active account
147
152
  already selected by your local `gh` CLI. It does not persist or display the
148
153
  token. Check that account before starting the dashboard:
@@ -176,6 +181,33 @@ the core gh-glance minimum remains unchanged. To keep simultaneous panes on
176
181
  different accounts, use separate `GH_CONFIG_DIR` values as described under
177
182
  [No account pinning](#limitations).
178
183
 
184
+ A successful empty result is different from a check that has not succeeded.
185
+ Actions says “No workflow runs found” and explains that runs come from workflows
186
+ with matching triggers. Issues and Pull requests report open items. Security
187
+ reports only the sources it could check and keeps unavailable-source notes visible.
188
+ An empty result is not a repository-wide health or security clearance.
189
+
190
+ On Actions, press `s` for an optional read-only setup check or `g` to open the
191
+ selected repository's Actions page. The setup check lists at most 100 workflows
192
+ in one request. It reports partial coverage and unfamiliar states explicitly;
193
+ zero workflows or an access error does not prove that Actions is disabled.
194
+ Setup results have their own check time and do not change the run list or its
195
+ freshness. A successful or partial result is reused for five minutes. Failures
196
+ keep the prior dated result and require `s` to retry after at least 30 seconds
197
+ and any shared API hold. There is no automatic setup retry. Setup checks are
198
+ available only in standalone mode; connected collector and SSH views offer `g`
199
+ instead. Neither key creates, enables, edits, or dispatches a workflow.
200
+
201
+ “Checking” and “Waiting to check” mean no successful result is available yet.
202
+ A failed load shows the actual recovery action. A failed refresh keeps the prior
203
+ result and its original check time. “Needs an update” describes overdue data;
204
+ it does not by itself mean a network request failed. Unknown or future source
205
+ clocks show “Last-check time unavailable”.
206
+
207
+ With the default on-demand policy, Issues, Pull requests and Security show a
208
+ saved view between checks. Press `r` to check again; opening the tab also follows
209
+ the normal refresh policy. These tabs do not promise continuous polling.
210
+
179
211
  ### From a clone
180
212
 
181
213
  For hacking on it, or to run an unreleased revision:
@@ -251,8 +283,10 @@ stdout isn't a terminal rather than streaming redraw frames into a pipe.
251
283
  | `Enter` | Open the selected item, or accept an onboarding prompt |
252
284
  | `r` | Request a current-tab refresh. It sends the cached validators, so an unchanged tab answers `304` and spends nothing. A safe grant is still required. |
253
285
  | `R` | Resynchronize the current tab: one generation without validators, and the only key that clears a negative capability backoff. Still subject to the budget and the secondary cooldown. |
286
+ | `s` | On Actions, request or reuse a read-only setup check (standalone only) |
287
+ | `g` | On Actions, open the selected repository’s Actions page |
254
288
  | `w` | Adjust table column widths |
255
- | `?` | Show the keys without leaving the dashboard (any key closes it) |
289
+ | `?` | Open or close contextual help; `n` / `p` moves through its pages |
256
290
  | `q` / `Esc` / `Ctrl+C` | Quit (`Esc` leaves width mode) |
257
291
 
258
292
  ### Adjusting column widths
@@ -304,9 +338,16 @@ switch `gh` into non-interactive mode and require choosing a visibility in
304
338
  advance. Press `q` or `Esc` to decline. To watch an existing repository without
305
339
  attaching this folder, restart with `gh-glance --repo owner/name`.
306
340
 
307
- When the repository was chosen explicitly, with `--repo` or `GH_REPO`, the panel
308
- says so: `╭─ Actions · acme/widget ─`. That is what tells two side-by-side panes
309
- apart. It is dropped before the tab name when the pane is too narrow for both.
341
+ The panel names the selected repository, including targets inferred from Git
342
+ remotes: `╭─ Actions · acme/widget ─`. Non-default hosts are included in the
343
+ target. Selection does not prove that the active account can access it. When
344
+ the pane is too narrow for the target, press `?` to read its complete name and
345
+ host, the current check state, source time, recovery action, and key reference.
346
+
347
+ Help wraps long text and uses `n` / `p` for next / previous page. `?` closes it;
348
+ any other ordinary key closes help without performing that key's usual action.
349
+ `q`, `Esc`, and `Ctrl+C` still quit. Width mode keeps its own keys: leave it
350
+ before opening help.
310
351
 
311
352
  If `gh-glance` is started without an interactive stdin (for example with stdin
312
353
  redirected), the key handlers cannot run and the status bar shows only `Quit: ^C`
@@ -946,6 +987,17 @@ SIGINT, or a sample gap over 15 seconds makes the report nonqualifying. A sleep
946
987
  gap requires a new uninterrupted window. A schema 1 manifest supports a
947
988
  diagnostic `--once` read only; it cannot qualify a run.
948
989
 
990
+ Under the default `--background on-demand`, only the active Actions tab is
991
+ watched continuously; Issues, Pull Requests and Security are fetched when
992
+ opened or on `r`. Declare only those continuously active Actions panes in a
993
+ monitored window, and check secondary views with separate one-shot assertions:
994
+ a perpetual cadence oracle over an intentionally idle tab would report a false
995
+ stall. A bounded release canary (one already running Actions pane, at most five
996
+ minutes and 20 extra admissions per resource above the quota floor) is planned
997
+ offline by `planCanary` in `scripts/release-policy.mjs`, which emits exactly
998
+ such a schema 2 manifest and the stop rule; it cannot qualify the 24-hour
999
+ windows.
1000
+
949
1001
  Provider-limit exclusions require `--external-evidence` pointing to an
950
1002
  append-only JSON trace with `schema: 1` and an `events` array. Each `raw-http`
951
1003
  event records the independently captured issue and finish timestamps, host,