gh-glance 0.17.1 → 0.18.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.
- package/CHANGELOG.md +48 -1
- package/README.md +106 -1
- package/index.mjs +1793 -84
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,52 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.18.0] - 2026-10-29
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Local Focus searches loaded Issues and PRs with `/`, topic words and exact
|
|
15
|
+
number, author, branch and updated-date filters, without extra GitHub requests.
|
|
16
|
+
Optional semantic Focus uses `--jev`, `TYPESAFE_API_KEY` and scoped consent;
|
|
17
|
+
`m` evaluates more loaded candidates. Model calls share a session cap and
|
|
18
|
+
four-second action deadline; results stay in memory. Live provider behavior,
|
|
19
|
+
semantic accuracy and developer benefit remain unqualified or unmeasured.
|
|
20
|
+
- Standalone `a` shows exact personal review, assignment and authored-PR
|
|
21
|
+
attention among loaded rows, with explicit 25-item detail batches, unknown
|
|
22
|
+
relationship coverage and refresh/retry controls. Optional `J` metadata
|
|
23
|
+
badges preserve deterministic membership/order; `x` revokes permission.
|
|
24
|
+
|
|
25
|
+
- Actions `d` opens exact run/attempt/job evidence in standalone mode; `l`
|
|
26
|
+
explicitly captures a bounded failed/timed-out job log. Enter opens the exact
|
|
27
|
+
selected job. Coverage and unsupported proxy/storage limitations are visible.
|
|
28
|
+
- Optional CI `J` previews sanitized bounded log text before every send, then
|
|
29
|
+
reports six independent observations with existing original-line evidence.
|
|
30
|
+
`e` selects a clean smaller range; `x` revokes permission and clears active
|
|
31
|
+
log/excerpt/results. Exact GitHub facts stay authoritative; live semantic
|
|
32
|
+
qualification and developer benefit remain unmeasured.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- Sutura's protected native-proof pilot records exact checkout evidence and
|
|
37
|
+
selects full native verification for repair proposals and authenticated exact
|
|
38
|
+
repair merges. Ordinary development checks and release publication authority
|
|
39
|
+
remain separate.
|
|
40
|
+
- Shared quota protocol 8 upgrades the same ledger path with a private exact
|
|
41
|
+
`.pre-v8.backup`. Restart all gh-glance panes with this version; keep the
|
|
42
|
+
shared quota ledger. Never clear, delete or downgrade it for a version
|
|
43
|
+
mismatch. A future protocol requires updating every pane. Preserve a
|
|
44
|
+
conflicting backup under an unused archival filename before retrying;
|
|
45
|
+
recovery help/doctor reports its exact path. An unverified native connection
|
|
46
|
+
keeps its charge until the ledger's computed uncertainty-window recovery.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- Collector readiness now guarantees shutdown handlers are installed, so an
|
|
51
|
+
immediate stop closes the socket and lock cleanly.
|
|
52
|
+
- Attention refresh compares live and cached metadata consistently, so an
|
|
53
|
+
unchanged unknown PR review value cannot invalidate its source binding.
|
|
54
|
+
Real metadata changes still retire the prior view and require explicit restart.
|
|
55
|
+
|
|
10
56
|
## [0.17.1] - 2026-10-26
|
|
11
57
|
|
|
12
58
|
### Fixed
|
|
@@ -1315,7 +1361,8 @@ engineering, security, QA and UX. What follows is what changed as a result.
|
|
|
1315
1361
|
- The `main` field from `package.json`. It advertised the file as importable,
|
|
1316
1362
|
but importing it took over the terminal or exited the host process.
|
|
1317
1363
|
|
|
1318
|
-
[Unreleased]: https://github.com/juan294/gh-glance/compare/v0.
|
|
1364
|
+
[Unreleased]: https://github.com/juan294/gh-glance/compare/v0.18.0...HEAD
|
|
1365
|
+
[0.18.0]: https://github.com/juan294/gh-glance/compare/v0.17.1...v0.18.0
|
|
1319
1366
|
[0.17.1]: https://github.com/juan294/gh-glance/compare/v0.17.0...v0.17.1
|
|
1320
1367
|
[0.17.0]: https://github.com/juan294/gh-glance/compare/v0.16.2...v0.17.0
|
|
1321
1368
|
[0.16.2]: https://github.com/juan294/gh-glance/compare/v0.16.1...v0.16.2
|
package/README.md
CHANGED
|
@@ -69,6 +69,14 @@ current.
|
|
|
69
69
|
- **Issues** -- open issues: title, author, first label, age
|
|
70
70
|
- **Pull Requests** -- open PRs: title, author, branch, review status
|
|
71
71
|
(approved / changes requested / pending), age
|
|
72
|
+
- **[Focus](#focus-loaded-work)** -- `/` searches loaded Issues and PRs locally;
|
|
73
|
+
optional `J` adds semantic matching after explicit consent
|
|
74
|
+
- **[Selected CI evidence](#selected-ci-evidence)** -- `d` opens exact run/job
|
|
75
|
+
facts and `l` loads a failed-job log in standalone mode; optional
|
|
76
|
+
[CI observations](#optional-ci-log-observations) cite original log lines
|
|
77
|
+
- **[Personal attention](#personal-attention)** -- `a` shows personal review,
|
|
78
|
+
assignment and authored-PR facts in standalone mode; optional metadata badges
|
|
79
|
+
leave the exact queue and order unchanged
|
|
72
80
|
- **Security** -- open Dependabot, code-scanning, and secret-scanning alerts,
|
|
73
81
|
sorted with the most severe first and with severity spelled out rather than
|
|
74
82
|
carried by colour alone. Each source starts with its newest 100 open alerts.
|
|
@@ -303,9 +311,16 @@ stdout isn't a terminal rather than streaming redraw frames into a pipe.
|
|
|
303
311
|
| `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. |
|
|
304
312
|
| `s` | On Actions, request or reuse a read-only setup check (standalone only) |
|
|
305
313
|
| `g` | On Actions, open the selected repository’s Actions page |
|
|
314
|
+
| `/` | Search loaded Issues or Pull requests with Focus |
|
|
315
|
+
| `d` | On Actions, inspect the selected run and jobs (standalone only) |
|
|
316
|
+
| `a` | Open personal attention for a verified human user (standalone only) |
|
|
317
|
+
| `J` | In Focus, a loaded CI log or attention, request optional Jev interpretation; requires `--jev`, an API key and scoped consent |
|
|
318
|
+
| `m` | In semantic Focus, evaluate more loaded candidates; in attention, request the next GitHub detail batch |
|
|
319
|
+
| `l` / `e` | In CI details, load the selected failed/timed-out job log / edit its excerpt range |
|
|
320
|
+
| `x` | Revoke the current scope's Jev permission and clear its semantic results; in CI, also clear the active log and excerpt |
|
|
306
321
|
| `w` | Adjust table column widths |
|
|
307
322
|
| `?` | Open or close contextual help; `n` / `p` moves through its pages |
|
|
308
|
-
| `q` / `Esc` / `Ctrl+C` | Quit
|
|
323
|
+
| `q` / `Esc` / `Ctrl+C` | Quit from ordinary navigation; `Esc` leaves feature views, editors and width mode. While editing a query or range, `q` is text and `Ctrl+C` quits. |
|
|
309
324
|
|
|
310
325
|
### Adjusting column widths
|
|
311
326
|
|
|
@@ -382,6 +397,8 @@ pane definition. Flags are there when you want them:
|
|
|
382
397
|
| `--refresh <seconds>` | Minimum automatic poll interval, 2-3600, default 5. A floor, never a ceiling: a tab whose content is unchanged twice in a row slows to 30 seconds (60 for Security), and Actions with a running or queued job is checked every 5. Safe shared grants can make any check later. |
|
|
383
398
|
| `--tab <name>` | Start on `actions`, `issues`, `prs` or `security`. |
|
|
384
399
|
| `--background <mode>` | `on-demand` (default): active Actions updates automatically; Issues, PRs and Security use cached data and check when opened or refreshed with `r`. Unopened tabs make no data requests. `all` continuously polls active and inactive tabs; `off` continuously polls only the selected tab. |
|
|
400
|
+
| `--jev` | Enable optional semantic Focus, CI observations and attention badges in an interactive standalone dashboard. Requires `TYPESAFE_API_KEY` and explicit scoped consent; startup and ordinary refresh send no model requests. |
|
|
401
|
+
| `--jev-max-requests <n>` | Set the per-process model-call cap, 1-10000 (default 100); requires `--jev`. |
|
|
385
402
|
| `--verbose` | Log one line per dashboard `gh` call to stderr, with timing and outcome. Credential lookup and the account-identity proof are deliberately excluded, so that they cannot log anything derived from a token. stderr must be redirected: `gh-glance --verbose 2>gh-glance.log`. |
|
|
386
403
|
| `--doctor` | Print a diagnostic report and exit. See [Diagnostics](#diagnostics). |
|
|
387
404
|
| `--doctor --probe` | Add bounded, admitted GitHub capability probes to the local diagnostic report. |
|
|
@@ -608,6 +625,7 @@ Environment variables work too, and the flags take precedence:
|
|
|
608
625
|
|
|
609
626
|
| Variable | Effect |
|
|
610
627
|
|---|---|
|
|
628
|
+
| `TYPESAFE_API_KEY` | TypeSafe credential used only with `--jev` and explicit scoped consent. Removed from child-process environments; never saved in dashboard or collector state. |
|
|
611
629
|
| `GH_REPO=[host/]owner/name` | Watch a specific repository instead of the current directory's. A qualified value supplies the host; an unqualified value means `github.com`. An explicit `--repo` wins. |
|
|
612
630
|
| `GH_HOST=<host>` | When no explicit `--repo` overrides it, send every call and the account governor to a GitHub Enterprise or EMU host instead of `github.com`. |
|
|
613
631
|
| `GH_TOKEN`, `GITHUB_TOKEN`, `GH_ENTERPRISE_TOKEN`, `GITHUB_ENTERPRISE_TOKEN` | Used by the default `gh` provider with `gh`'s host-specific precedence. gh-glance never logs or stores the raw values. One-way credential digests keep private rows access-partitioned; credentials GitHub verifies as the same principal share its quota ledger. App-provider children remove these variables before setting their memory-only installation token. |
|
|
@@ -1165,3 +1183,90 @@ See [SECURITY.md](./SECURITY.md).
|
|
|
1165
1183
|
## License
|
|
1166
1184
|
|
|
1167
1185
|
[MIT](./LICENSE)
|
|
1186
|
+
|
|
1187
|
+
### Focus loaded work
|
|
1188
|
+
|
|
1189
|
+
On Issues or Pull requests, press `/`, type a query, and press Enter. Focus searches loaded titles, available labels and PR branches locally. Exact filters are `#123`, `author:alice`, `branch:fix/session` (case sensitive), and `updated:>=2026-10-01`. Filters and topic words are combined. Prefixes and a single edit in words of five or more characters can match; no additional GitHub request is made. Counts and source age describe only loaded metadata. Press `/` to edit, Escape to cancel an edit or return to the ordinary list, and Enter on a selected result to open GitHub. While editing, `q` is text; Ctrl-C quits.
|
|
1190
|
+
|
|
1191
|
+
For optional semantic Focus, set `TYPESAFE_API_KEY` in your shell and start `gh-glance --jev` in an interactive standalone terminal. A key alone enables nothing. Press `J` on submitted Focus results, review the exact repository/access scope and metadata disclosure, then Enter to send or Escape to cancel. TypeSafe receives the topic, titles, available labels and PR branches; separate repository/account identity, author, body and URL fields are omitted. Query and metadata text remain literal supplied text. Public metadata also needs permission. `x` revokes that scope's permission, cancels work and clears its results. Permission and normalized results remain in memory for this session only.
|
|
1192
|
+
|
|
1193
|
+
Semantic Focus uses pinned `jev-1.14.0`, a four-second action deadline and at most 60 uncached eligible rows per explicit action. Exact filters still run locally, and all filter-eligible rows can be considered, including synonyms absent from local results. `m` evaluates the next loaded candidates. Coverage distinguishes matches, uncertain answers and unevaluated rows; all remain inspectable and Escape returns to the ordinary list. Filter-only queries send nothing. No automatic model requests or retries occur on startup, typing, polling or refresh. The session defaults to 100 dispatched calls; `--jev-max-requests 1..10000` changes that per-process cap. Errors, cooldowns and exhaustion retain local Focus and show the next explicit action. No account retention guarantee is implied. The live provider contract and semantic accuracy are not yet qualified.
|
|
1194
|
+
|
|
1195
|
+
### Selected CI evidence
|
|
1196
|
+
|
|
1197
|
+
On Actions, select a run and press `d` to inspect its exact run ID, attempt,
|
|
1198
|
+
head SHA, jobs and step facts. Failed and timed-out jobs appear first. Up/Down
|
|
1199
|
+
selects a job; `l` explicitly captures a selected failed/timed-out job's plaintext
|
|
1200
|
+
log, and Enter opens
|
|
1201
|
+
that exact job on GitHub. Escape returns to ordinary Actions. This view is
|
|
1202
|
+
standalone only; connected collectors offer the selected run's browser link.
|
|
1203
|
+
Nothing is acquired for this feature during ordinary polling or idle time.
|
|
1204
|
+
|
|
1205
|
+
The view loads one page of at most 100 jobs and 100 steps per job, and displays
|
|
1206
|
+
loaded/total coverage. Metadata has a 2 MiB aggregate bound and 45-second total
|
|
1207
|
+
deadline. A selected log has a 1 MiB cumulative bound and 20-second total
|
|
1208
|
+
deadline: one admitted GitHub API GET and at most one credential-free HTTPS
|
|
1209
|
+
storage GET, with no automatic retries or pagination. Actions read permission
|
|
1210
|
+
is required. Unsupported proxies or storage redirects offer Open GitHub.
|
|
1211
|
+
Step metadata does not imply a step-to-log-line association. Log text stays in
|
|
1212
|
+
session memory and never enters dashboard/collector caches.
|
|
1213
|
+
|
|
1214
|
+
This version upgrades the shared quota protocol from 7 to 8 at the same ledger
|
|
1215
|
+
path. **Restart all gh-glance panes with this version; keep the shared quota
|
|
1216
|
+
ledger. Never clear, delete, downgrade or replace it to resolve a version
|
|
1217
|
+
mismatch.** Live old leases hold the upgrade until they close or expire. The
|
|
1218
|
+
upgrade saves an exact private `.pre-v8.backup` before its first write. A
|
|
1219
|
+
conflicting backup names its path in recovery help/doctor: preserve it under an
|
|
1220
|
+
unused archival filename before retrying. Storage failures refuse new admission.
|
|
1221
|
+
A future protocol requires updating and restarting every pane.
|
|
1222
|
+
|
|
1223
|
+
An unverified native connection closure retains its quota charge and displays
|
|
1224
|
+
the computed uncertainty-window deadline. Restarting a pane does not refund that
|
|
1225
|
+
charge. The ledger's existing verified closure/boot/window recovery rules apply;
|
|
1226
|
+
Open GitHub remains available while waiting.
|
|
1227
|
+
|
|
1228
|
+
### Optional CI log observations
|
|
1229
|
+
|
|
1230
|
+
With `--jev` and `TYPESAFE_API_KEY`, press `J` after explicitly loading a selected failed/timed-out job log. Every send opens a TypeSafe preview of the exact sanitized state, even when this session already has permission or the answer is cached. PgUp/PgDn reviews the complete preview; Enter sends and Escape cancels without sending. Separate repository/account/run identity fields and step names stay local. Log text can still contain private or identifying content; redaction does not guarantee that it is secret-free.
|
|
1231
|
+
|
|
1232
|
+
Known credentials, authorization/cookie headers, private-key blocks and signed links are redacted locally and block cloud submission for the selected range. Press `e`, type an existing `start-end` line range, one line number, or `all`, and Enter to apply it. A clean smaller range can reach a new preview. While editing, `q` is text and Ctrl-C quits. Excerpts retain original line numbers, contain at most 40 spans/8 KiB, and disclose omitted or truncated lines. Source log capture and GitHub facts remain independent of inference.
|
|
1233
|
+
|
|
1234
|
+
The six independent observations are assertion mismatch, dependency-download failure, explicit permission denial, reported execution timeout, explicit memory exhaustion, and concrete static-check diagnostics. A positive observation must point to an existing span in this exact run/attempt/SHA/job/excerpt. These are reported log observations rather than proven root causes or generated fixes. “No listed observation found” applies only to this excerpt; uncertain or missing evidence does not mean healthy CI. GitHub's conclusion is always retained. Results are invalidated by source, account, job, log or range changes and expire after ten minutes.
|
|
1235
|
+
|
|
1236
|
+
`x` revokes this scope's Jev permission, cancels work and clears the active log/excerpt/results; press `l` to load a log again. Requests use the shared four-second deadline, call cap and bounded memory-only cache. Typing, refreshing, polling and opening a view never send model requests. Errors retain local evidence and show an explicit review/retry or smaller-range action. The live Jev contract, semantic accuracy and developer benefit remain unverified or unmeasured.
|
|
1237
|
+
|
|
1238
|
+
### Personal attention
|
|
1239
|
+
|
|
1240
|
+
Press `a` in standalone mode to inspect direct review requests, assignments and
|
|
1241
|
+
viewer-authored PRs among the currently loaded Issues and PRs. The account must
|
|
1242
|
+
be a verified human GitHub user. Cached identities without a human proof offer
|
|
1243
|
+
`r` to verify `/user` explicitly; connected views and GitHub App installations
|
|
1244
|
+
explain how to use standalone user authentication.
|
|
1245
|
+
|
|
1246
|
+
Opening requests at most 25 details. `m` explicitly requests the next 25, up to
|
|
1247
|
+
300 frozen candidates; it never drains the list automatically. `r` refreshes the
|
|
1248
|
+
first source page for Issues and PRs, rebuilds the manifest, and requests one
|
|
1249
|
+
batch. Empty/unloaded lists require that explicit action. Source coverage/age
|
|
1250
|
+
and each detail batch's age remain separate. Details expire after five minutes;
|
|
1251
|
+
changed source metadata or account scope requires an explicit refresh/restart.
|
|
1252
|
+
Errors retain prior same-scope facts as partial/as-of and show retry controls.
|
|
1253
|
+
|
|
1254
|
+
The fixed order is direct personal review requests, assigned Issues, changes
|
|
1255
|
+
requested on your non-draft PRs, assigned PRs, then other authored PRs under
|
|
1256
|
+
Following. Draft badges and all exact reasons remain visible. Within a tier,
|
|
1257
|
+
items use their update time, oldest first; this is not request age or an overdue
|
|
1258
|
+
claim. `u` inspects unknown/unqueried relationships. Truncated nested lists cannot
|
|
1259
|
+
prove absence; team review requests do not establish personal membership.
|
|
1260
|
+
PgUp/PgDn scroll disclosures, arrows select, Enter opens the original Issue/PR
|
|
1261
|
+
URL, and Escape returns to ordinary navigation.
|
|
1262
|
+
|
|
1263
|
+
With `--jev`, `J` optionally annotates current unchanged attention metadata with
|
|
1264
|
+
“Reports regression” and “Describes user impact.” Review the TypeSafe destination,
|
|
1265
|
+
exact repository/access scope and title/label/branch disclosure, then Enter Send
|
|
1266
|
+
or Escape Cancel. Badges cannot change queue membership, reasons, tier, order or
|
|
1267
|
+
navigation. Each explicit `J` covers at most 60 eligible rows, using at most 15
|
|
1268
|
+
rows per HTTP request and complete badge pairs packed within 24 KiB. Repeated
|
|
1269
|
+
`J` advances remaining rows; `m` remains GitHub detail pagination. `x` revokes
|
|
1270
|
+
permission and clears badges while retaining exact facts. The shared deadline,
|
|
1271
|
+
call cap, cooldown and memory limits apply. The live provider contract, badge
|
|
1272
|
+
accuracy and developer benefit remain unverified or unmeasured.
|