github-search-cli 9.4.4 → 9.5.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 CHANGED
@@ -5,9 +5,82 @@ 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
+ ## [Unreleased]
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
+
24
+ - **Update panel clipped the changelog** — the modal was hard-capped at 16
25
+ rows and put the release notes in a single unsized text block, so anything
26
+ past the first ~10 lines of the notes was invisible with no hint that more
27
+ existed. The notes area is now a scrollable region (same mechanics as the
28
+ README/org viewers): `↑↓/jk` move a fifth of a page, `PageUp`/`PageDown`
29
+ and `Home`/`End` jump, a scrollbar shows when content overflows, and scroll
30
+ position resets each time the panel opens. The box is taller (24 rows), and
31
+ notes render at the panel's actual width so wrapped lines no longer clip
32
+ horizontally on narrow terminals.
33
+
34
+ ---
35
+
36
+ ## [9.5.0] — 2026-09-15
37
+
38
+ ### Added
39
+
40
+ - **`ghfind user <name>`** — GitHub user profiles from the terminal, the
41
+ user-side counterpart to `ghfind org <name>`. Fetches the user's metadata
42
+ and public repos from the GitHub REST API and aggregates them into one
43
+ summary: public repo count, total stars/forks of the fetched repos,
44
+ followers/following, top languages by repo count, top 5 repos by stars, and
45
+ the 5 most recently pushed repos. Supports `--json`, `--csv`, `--markdown`,
46
+ `--count`, and `--limit` just like `org`, and honors `--token` for higher
47
+ rate limits. Leading `@` is stripped (`ghfind user @torvalds` works), and
48
+ Organization / Bot accounts are labeled with an `[org]` / `[bot]` badge in
49
+ text output (`[staff]` for site admins).
50
+
51
+ ### Fixed
52
+
53
+ - `ghfind org <name>` mangled multi-word names with dashes (`ghfind org "in
54
+ tech"` looked up `in-tech`) — names are now joined with spaces, which the
55
+ API handles. In practice org logins are single tokens, so existing one-word
56
+ lookups are unaffected.
57
+
58
+ ### Internal
59
+
60
+ - `src/user.ts` mirrors the org-profile module shape: pure
61
+ `normalizeUser`/`normalizeUserRepo` aggregate functions testable with
62
+ fixtures, thin formatters, and a `fetchUserProfile` wrapper that degrades
63
+ gracefully when the repos request fails (metadata is still returned).
64
+ - 27 new tests in `tests/user.test.ts` covering normalization, aggregation,
65
+ `@`-stripping, 404/network error paths, token headers, zero-repo users,
66
+ non-array API responses, badges, and all four formatters.
67
+ - **TUI overlay registry seam** — `src/tui.ts` is 2,867 lines and was the
68
+ most-changed file in the repo (28 of the last 200 commits). A new
69
+ `src/tui/overlays/registry.ts` introduces the seam that future
70
+ migrations will consume: `Overlay` interface plus `OVERLAYS` array and
71
+ `getOverlay()` lookup. The first overlay (`help`) is extracted behind
72
+ it. Behaviour is unchanged. Migration is gradual; subsequent commits
73
+ move one overlay at a time and rewire `showOverlay()` to query the
74
+ registry. 6 guard tests in `tests/overlay-registry.test.ts` pin the
75
+ registry contract and source-grep `src/tui.ts` to fail on drift between
76
+ the registered ids and the dispatcher's union type.
77
+
78
+ ---
79
+
8
80
  ## [9.4.3] — 2026-09-13 (released)
9
81
 
10
82
  ### Added
83
+
11
84
  - nothing added
12
85
 
13
86
  ### Changed
@@ -82,27 +155,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Publish
82
155
 
83
156
  ---
84
157
 
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
158
  ## [9.4.0] — 2026-08-28
107
159
 
108
160
  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
@@ -103,6 +107,7 @@ ghfind --completion fish | source
103
107
  <tr><td><b>Export</b></td><td>Space → Export — JSON, CSV, Markdown to file</td></tr>
104
108
  <tr><td><b>Share</b></td><td>Space → Share repo — copy repo link to clipboard</td></tr>
105
109
  <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>
110
+ <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
111
  <tr><td><b>Notifications</b></td><td>Space → Notifications — view & dismiss alerts</td></tr>
107
112
  <tr><td><b>Graph</b></td><td>Space → Activity graph — commit chart, fullscreen toggle</td></tr>
108
113
  <tr><td><b>Help</b></td><td><code>?</code> / <code>Ctrl+H</code> — keybindings reference</td></tr>
@@ -112,6 +117,16 @@ ghfind --completion fish | source
112
117
  <details>
113
118
  <summary>Keybindings</summary>
114
119
 
120
+ **Landing screen** (the mode menu shown on launch)
121
+
122
+ | Key | Action |
123
+ | --------------------- | ---------------------------- |
124
+ | `↑` / `↓` — `j` / `k` | Navigate mode cards |
125
+ | `Enter` | Select mode / open Bookmarks |
126
+ | `b` | Jump straight to Bookmarks |
127
+ | `?` or `h` | Help overlay |
128
+ | `q` | Quit ghfind |
129
+
115
130
  **Global shortcuts** (main view, no overlay active)
116
131
 
117
132
  | Key | Action |
@@ -159,14 +174,16 @@ Actions shown depend on current mode (search vs trending) and selection:
159
174
 
160
175
  **Overlay-specific shortcuts**
161
176
 
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) |
177
+ | Key | Context | Action |
178
+ | -------------------------------- | ---------------------------------------------------- | ------------------------------------------- |
179
+ | `Esc` / `q` | Any overlay | Close overlay |
180
+ | `Enter` | Leader / History / Saved / Export / Topics / Share | Confirm selection |
181
+ | `d` | History / Bookmarks / Saved searches / Notifications | Delete current entry |
182
+ | `Ctrl+X` | History | Clear all history |
183
+ | `Ctrl+C` | Notifications | Dismiss all notifications |
184
+ | `Y` / `N` / `L` | Update modal | Yes (install) / No (skip) / Later (dismiss) |
185
+ | `↑` / `↓` — `j` / `k` | Update modal | Scroll release notes |
186
+ | `PgUp` / `PgDn` / `Home` / `End` | Update modal | Jump through release notes |
170
187
 
171
188
  Trending tabs: `1`–`5` (Today → All) or `←`/`→` — `h`/`l`
172
189
 
@@ -215,14 +232,14 @@ cd ghfind
215
232
  # With Bun (recommended for TUI)
216
233
  bun install
217
234
  bun start # TUI
218
- bun test # 215 tests
235
+ bun test # 292 tests
219
236
  bun run check # format check + tests — the green gate
220
237
  bun run build # build dist/
221
238
 
222
239
  # Or with npm
223
240
  npm install
224
241
  npm start # TUI (requires Node 20+)
225
- npm test # 215 tests
242
+ npm test # 292 tests
226
243
  npm run build # build dist/
227
244
 
228
245
  > Want to contribute? See [CONTRIBUTING.md](CONTRIBUTING.md) for commands,
@@ -235,6 +252,14 @@ npm run build # build dist/
235
252
 
236
253
  Recent releases (full history in [CHANGELOG.md](CHANGELOG.md)):
237
254
 
255
+ ### v9.5.0
256
+
257
+ - New `ghfind user <name>` command — user profiles like `ghfind org`: repos, total stars/forks, followers, top languages, top repos
258
+ - Supports `--json`, `--csv`, `--markdown`, `--count`, `--limit`, `--token`; `@` prefix accepted
259
+ - Fixed `ghfind org` mangling multi-word names with dashes
260
+ - Fixed landing-screen keys leaking into the main view — `/`, `Space`, `t`, `c`, `?`, `q` all double-fired; `b` on the landing screen now opens Bookmarks
261
+ - Fixed the update panel clipping the changelog — release notes are now scrollable (`↑↓`/`j`/`k`, `PgUp`/`PgDn`, `Home`/`End`) in a taller panel
262
+
238
263
  ### v9.3.0
239
264
 
240
265
  - 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`, `?`)