github-search-cli 9.4.4 → 9.5.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/CHANGELOG.md CHANGED
@@ -5,9 +5,111 @@ All notable changes to `github-search-cli` (published as the `ghfind` binary).
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Published versions and dates mirror [npm](https://www.npmjs.com/package/github-search-cli?activeTab=versions).
6
6
 
7
7
  ---
8
+
9
+ ## [9.5.1] — 2026-09-15
10
+
11
+ ### Fixed
12
+
13
+ - **Landing-screen keys leaked into the main view** — pressing `/` on the
14
+ landing menu focused the search input on top of it, and `Space`, `t`, `c`,
15
+ `?`, and `q` all double-fired through the second key listener (help opened
16
+ and instantly closed; quit ran cleanup twice). The landing handler now
17
+ claims its keys with `stopPropagation()` via the `landingKeysActive` /
18
+ `landingConsumesKey` seam (previously built and tested but never wired),
19
+ and the global handler ignores everything while the landing menu owns the
20
+ screen. Also fixed while routing keys: `b` on the landing screen now opens
21
+ bookmarks (hint bar updated), and overlays opened from landing hide the
22
+ menu instead of drawing on top of it.
23
+ - **Update panel clipped the changelog** — the modal was hard-capped at 16
24
+ rows and put the release notes in a single unsized text block, so anything
25
+ past the first ~10 lines of the notes was invisible with no hint that more
26
+ existed. The notes area is now a scrollable region (same mechanics as the
27
+ README/org viewers): `↑↓/jk` move a fifth of a page, `PageUp`/`PageDown`
28
+ and `Home`/`End` jump, a scrollbar shows when content overflows, and scroll
29
+ position resets each time the panel opens. The box is taller (24 rows), and
30
+ notes render at the panel's actual width so wrapped lines no longer clip
31
+ horizontally on narrow terminals.
32
+ - **`--help` listed `ghfind user <name>` twice** — the 9.5.0 usage block
33
+ carried a duplicated line, so the profile examples were printed twice. It
34
+ now appears once, and the `ghfind pkg` line is aligned with its neighbours.
35
+
36
+ ### Internal
37
+
38
+ - **Test isolation** — seven suites derived their temp dirs from a
39
+ `Date.now()` stamp (`tmpdir()/<name>-<ms>`), a name two concurrent
40
+ `bun test` processes can collide on, which intermittently failed
41
+ bookmarks / config / doctor / history / login / saved-searches /
42
+ update-check tests. They now use `mkdtempSync`, which is unique and
43
+ collision-proof (the pattern `tests/releases.test.ts` already used), and
44
+ the login `readGhCliToken` / `persistToken` dirs are removed after use
45
+ instead of accumulating in the temp folder.
46
+ - **Docs sync** (README ↔ `src/help.ts` ↔ `--help`): README gained
47
+ `--releases` / `--compare` / `pkg` examples plus Packages and Releases
48
+ feature rows; the TUI help screen gained the `Org profile` command-menu
49
+ entry the leader menu already had. `tests/cli-help.test.ts` pins the
50
+ `--help` usage block (no duplicate rows, one description column).
51
+ - `package-lock.json` root version synced to 9.5.1 (`bun.lock` carries no
52
+ root version), and the release workflow's manual dispatch now runs the
53
+ gate only — the GitHub Release and npm publish jobs are tag-gated, so
54
+ dispatching from a branch can't create a release on a non-tag ref.
55
+ - `--doctor` tests remove their temp config dirs after each test instead of
56
+ leaving them behind.
57
+ - **CI was red on `windows-latest`** — `tests/landing.test.ts` source-greps
58
+ `src/tui.ts` for a snippet containing `\n`, but Windows checks the tree out
59
+ with CRLF, so the assertion could never match there while every other OS
60
+ passed. The source-grep helpers now normalise line endings before
61
+ asserting; `tests/overlay-registry.test.ts` does the same.
62
+
63
+ ---
64
+
65
+ ## [9.5.0] — 2026-09-15 (released)
66
+
67
+ ### Added
68
+
69
+ - **`ghfind user <name>`** — GitHub user profiles from the terminal, the
70
+ user-side counterpart to `ghfind org <name>`. Fetches the user's metadata
71
+ and public repos from the GitHub REST API and aggregates them into one
72
+ summary: public repo count, total stars/forks of the fetched repos,
73
+ followers/following, top languages by repo count, top 5 repos by stars, and
74
+ the 5 most recently pushed repos. Supports `--json`, `--csv`, `--markdown`,
75
+ `--count`, and `--limit` just like `org`, and honors `--token` for higher
76
+ rate limits. Leading `@` is stripped (`ghfind user @torvalds` works), and
77
+ Organization / Bot accounts are labeled with an `[org]` / `[bot]` badge in
78
+ text output (`[staff]` for site admins).
79
+
80
+ ### Fixed
81
+
82
+ - `ghfind org <name>` mangled multi-word names with dashes (`ghfind org "in
83
+ tech"` looked up `in-tech`) — names are now joined with spaces, which the
84
+ API handles. In practice org logins are single tokens, so existing one-word
85
+ lookups are unaffected.
86
+
87
+ ### Internal
88
+
89
+ - `src/user.ts` mirrors the org-profile module shape: pure
90
+ `normalizeUser`/`normalizeUserRepo` aggregate functions testable with
91
+ fixtures, thin formatters, and a `fetchUserProfile` wrapper that degrades
92
+ gracefully when the repos request fails (metadata is still returned).
93
+ - 27 new tests in `tests/user.test.ts` covering normalization, aggregation,
94
+ `@`-stripping, 404/network error paths, token headers, zero-repo users,
95
+ non-array API responses, badges, and all four formatters.
96
+ - **TUI overlay registry seam** — `src/tui.ts` is 2,867 lines and was the
97
+ most-changed file in the repo (28 of the last 200 commits). A new
98
+ `src/tui/overlays/registry.ts` introduces the seam that future
99
+ migrations will consume: `Overlay` interface plus `OVERLAYS` array and
100
+ `getOverlay()` lookup. The first overlay (`help`) is extracted behind
101
+ it. Behaviour is unchanged. Migration is gradual; subsequent commits
102
+ move one overlay at a time and rewire `showOverlay()` to query the
103
+ registry. 6 guard tests in `tests/overlay-registry.test.ts` pin the
104
+ registry contract and source-grep `src/tui.ts` to fail on drift between
105
+ the registered ids and the dispatcher's union type.
106
+
107
+ ---
108
+
8
109
  ## [9.4.3] — 2026-09-13 (released)
9
110
 
10
111
  ### Added
112
+
11
113
  - nothing added
12
114
 
13
115
  ### Changed
@@ -82,27 +184,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Publish
82
184
 
83
185
  ---
84
186
 
85
- ## [Unreleased]
86
-
87
- ### Changed
88
-
89
- - **TUI overlay registry seam** — `src/tui.ts` is 2,867 lines and was the
90
- most-changed file in the repo (28 of the last 200 commits). A new
91
- `src/tui/overlays/registry.ts` introduces the seam that future
92
- migrations will consume: `Overlay` interface plus `OVERLAYS` array and
93
- `getOverlay()` lookup. The first overlay (`help`) is extracted behind
94
- it. Behaviour is unchanged. Migration is gradual; subsequent commits
95
- move one overlay at a time and rewire `showOverlay()` to query the
96
- registry.
97
-
98
- ### Added
99
-
100
- - 6 guard tests in `tests/overlay-registry.test.ts` pin the registry
101
- contract and source-grep `src/tui.ts` to fail on drift between the
102
- registered ids and the dispatcher's union type.
103
-
104
- ---
105
-
106
187
  ## [9.4.0] — 2026-08-28
107
188
 
108
189
  Release tracking for bookmarked repos, plus a bookmarks page and toast notifications in the TUI.
package/README.md CHANGED
@@ -39,6 +39,8 @@ Or grab a **standalone binary** (no Node.js needed) from [GitHub Releases](https
39
39
  | Side-by-side repo compare | ✅ | ❌ | ❌ |
40
40
  | Deep-dive (README, contributors, activity) | ✅ | ❌ | ❌ |
41
41
  | npm package search | ✅ | ❌ | ❌ |
42
+ | Org profile | ✅ | ✅ | ❌ |
43
+ | User profile | ✅ | ❌ | ❌ |
42
44
  | Pipeable JSON / CSV / Markdown export | ✅ | JSON only | ❌ |
43
45
  | No login required | ✅ | ❌ | ❌ |
44
46
 
@@ -63,6 +65,8 @@ ghfind "language:Rust stars:>1000" --json | jq '.[].fullName'
63
65
  ghfind "language:Zig" --count
64
66
  ghfind --trending --json --since weekly
65
67
  ghfind login # import the gh CLI token or paste one
68
+ ghfind org vercel # org profile: repos, stars, top languages
69
+ ghfind user torvalds # user profile: repos, stars, followers
66
70
  ```
67
71
 
68
72
  ### Non-interactive
@@ -77,6 +81,9 @@ ghfind "query" --pipe open # open in browser
77
81
  ghfind "query" --pipe clone # clone commands
78
82
  ghfind --trending --json # trending as JSON
79
83
  ghfind --watch "query" # poll every 300s
84
+ ghfind --releases # new releases for bookmarked repos
85
+ ghfind --compare a/b c/d # side-by-side comparison
86
+ ghfind pkg "query" --json # npm package search as JSON
80
87
  ```
81
88
 
82
89
  ### Completions
@@ -94,6 +101,7 @@ ghfind --completion fish | source
94
101
  <table>
95
102
  <tr><td><b>Search</b></td><td>Free-text + qualifiers (<code>language:</code>, <code>stars:</code>, <code>topic:</code>), sort by stars/updated/forks</td></tr>
96
103
  <tr><td><b>Trending</b></td><td>Today, week, month, year — filter by language</td></tr>
104
+ <tr><td><b>Packages</b></td><td>npm registry search (beta) — <code>ghfind pkg "query"</code></td></tr>
97
105
  <tr><td><b>Bookmarks</b></td><td>Space → Bookmark / Bookmarks panel — save repos, tag them</td></tr>
98
106
  <tr><td><b>Deep-dive</b></td><td>Space → Deep-dive — languages, contributors, README, activity chart</td></tr>
99
107
  <tr><td><b>Compare</b></td><td>Space → Compare select / Compare view — side-by-side, select 2+ repos</td></tr>
@@ -103,7 +111,9 @@ ghfind --completion fish | source
103
111
  <tr><td><b>Export</b></td><td>Space → Export — JSON, CSV, Markdown to file</td></tr>
104
112
  <tr><td><b>Share</b></td><td>Space → Share repo — copy repo link to clipboard</td></tr>
105
113
  <tr><td><b>Org profile</b></td><td>Space → Org profile — org summary: repos, stars, top languages (<code>ghfind org <name></code> in CLI)</td></tr>
114
+ <tr><td><b>User profile</b></td><td>User summary like org profile — repos, stars, followers, top languages (<code>ghfind user <name></code>)</td></tr>
106
115
  <tr><td><b>Notifications</b></td><td>Space → Notifications — view & dismiss alerts</td></tr>
116
+ <tr><td><b>Releases</b></td><td><code>--releases</code> — new-release feed for bookmarked repos</td></tr>
107
117
  <tr><td><b>Graph</b></td><td>Space → Activity graph — commit chart, fullscreen toggle</td></tr>
108
118
  <tr><td><b>Help</b></td><td><code>?</code> / <code>Ctrl+H</code> — keybindings reference</td></tr>
109
119
  <tr><td><b>Watch</b></td><td><code>--watch</code> — poll for new results</td></tr>
@@ -112,6 +122,16 @@ ghfind --completion fish | source
112
122
  <details>
113
123
  <summary>Keybindings</summary>
114
124
 
125
+ **Landing screen** (the mode menu shown on launch)
126
+
127
+ | Key | Action |
128
+ | --------------------- | ---------------------------- |
129
+ | `↑` / `↓` — `j` / `k` | Navigate mode cards |
130
+ | `Enter` | Select mode / open Bookmarks |
131
+ | `b` | Jump straight to Bookmarks |
132
+ | `?` or `h` | Help overlay |
133
+ | `q` | Quit ghfind |
134
+
115
135
  **Global shortcuts** (main view, no overlay active)
116
136
 
117
137
  | Key | Action |
@@ -159,14 +179,16 @@ Actions shown depend on current mode (search vs trending) and selection:
159
179
 
160
180
  **Overlay-specific shortcuts**
161
181
 
162
- | Key | Context | Action |
163
- | --------------- | ---------------------------------------------------- | ------------------------------------------- |
164
- | `Esc` / `q` | Any overlay | Close overlay |
165
- | `Enter` | Leader / History / Saved / Export / Topics / Share | Confirm selection |
166
- | `d` | History / Bookmarks / Saved searches / Notifications | Delete current entry |
167
- | `Ctrl+X` | History | Clear all history |
168
- | `Ctrl+C` | Notifications | Dismiss all notifications |
169
- | `Y` / `N` / `L` | Update modal | Yes (install) / No (skip) / Later (dismiss) |
182
+ | Key | Context | Action |
183
+ | -------------------------------- | ---------------------------------------------------- | ------------------------------------------- |
184
+ | `Esc` / `q` | Any overlay | Close overlay |
185
+ | `Enter` | Leader / History / Saved / Export / Topics / Share | Confirm selection |
186
+ | `d` | History / Bookmarks / Saved searches / Notifications | Delete current entry |
187
+ | `Ctrl+X` | History | Clear all history |
188
+ | `Ctrl+C` | Notifications | Dismiss all notifications |
189
+ | `Y` / `N` / `L` | Update modal | Yes (install) / No (skip) / Later (dismiss) |
190
+ | `↑` / `↓` — `j` / `k` | Update modal | Scroll release notes |
191
+ | `PgUp` / `PgDn` / `Home` / `End` | Update modal | Jump through release notes |
170
192
 
171
193
  Trending tabs: `1`–`5` (Today → All) or `←`/`→` — `h`/`l`
172
194
 
@@ -215,14 +237,14 @@ cd ghfind
215
237
  # With Bun (recommended for TUI)
216
238
  bun install
217
239
  bun start # TUI
218
- bun test # 215 tests
240
+ bun test # 295 tests
219
241
  bun run check # format check + tests — the green gate
220
242
  bun run build # build dist/
221
243
 
222
244
  # Or with npm
223
245
  npm install
224
246
  npm start # TUI (requires Node 20+)
225
- npm test # 215 tests
247
+ npm test # 295 tests
226
248
  npm run build # build dist/
227
249
 
228
250
  > Want to contribute? See [CONTRIBUTING.md](CONTRIBUTING.md) for commands,
@@ -235,31 +257,22 @@ npm run build # build dist/
235
257
 
236
258
  Recent releases (full history in [CHANGELOG.md](CHANGELOG.md)):
237
259
 
238
- ### v9.3.0
239
-
240
- - Fixed `c` keybinding in TUI not adding repos to comparison — a missing closing brace in the space-key handler broke every later key handler (`c`, `t`, `?`)
241
- - README viewer renders full markdown (headings, code blocks, lists, tables, blockquotes, rules) instead of stripping formatting
242
- - Widened compare table columns (min 35 chars), added Description + URL rows, and raised the topic cap to 5 per repo
243
-
244
- ### v9.2.1
260
+ ### v9.5.1
245
261
 
246
- - npm package search (beta) and a new landing screen
247
- - Removed the bundled Bun binary — downloaded at install time instead; package size 39.5 MB → 100 KB
248
- - Postinstall failures no longer break `npm install`; `bun` dropped from engines
249
- - Fixed TUI layout on small terminals, trending visibility from the landing screen, and independent trending-tab fetches
262
+ - Fixed landing-screen keys leaking into the main view — `/`, `Space`, `t`, `c`, `?`, `q` all double-fired; `b` on the landing screen now opens Bookmarks
263
+ - Fixed the update panel clipping the changelog — release notes are now scrollable (`↑↓`/`j`/`k`, `PgUp`/`PgDn`, `Home`/`End`) in a taller panel
250
264
 
251
- ### v9.1.1
265
+ ### v9.5.0
252
266
 
253
- - Bundle `vendor/` and `dist/` for offline install
254
- - Postinstall exits non-zero on Bun download failure; bundled Bun 1.3.12 → 1.3.14
267
+ - New `ghfind user <name>` command — user profiles like `ghfind org`: repos, total stars/forks, followers, top languages, top repos
268
+ - Supports `--json`, `--csv`, `--markdown`, `--count`, `--limit`, `--token`; `@` prefix accepted
269
+ - Fixed `ghfind org` mangling multi-word names with dashes
255
270
 
256
- ### v9.1.0
271
+ ### v9.3.0
257
272
 
258
- - Automatic update checking against the npm registry, with a Y/N/L modal
259
- - Leader menu (Space) consolidating all contextual actions
260
- - Topic explorer, notifications panel, saved searches, activity graph, README viewer
261
- - Tab qualifier auto-complete, PageUp/PageDown, `Ctrl+X` clear history, `Ctrl+C` clear notifications
262
- - TUI runs on Node.js 20+ via the downloaded Bun binary
273
+ - Fixed `c` keybinding in TUI not adding repos to comparison — a missing closing brace in the space-key handler broke every later key handler (`c`, `t`, `?`)
274
+ - README viewer renders full markdown (headings, code blocks, lists, tables, blockquotes, rules) instead of stripping formatting
275
+ - Widened compare table columns (min 35 chars), added Description + URL rows, and raised the topic cap to 5 per repo
263
276
 
264
277
  ---
265
278