github-search-cli 9.9.0 → 9.10.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 +51 -0
- package/README.md +38 -32
- package/dist/cli.js +450 -106
- package/docs/HOW-TO.md +3 -2
- package/package.json +2 -2
- package/release-notes/9.10.0.md +137 -0
- package/src/help.ts +21 -4
- package/src/tui/mouse.ts +349 -0
- package/src/tui.ts +378 -106
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,57 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Publish
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [9.10.0] — 2026-10-03 (released)
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **The TUI is now fully clickable.** The mouse was already enabled — OpenTUI
|
|
14
|
+
emits SGR mouse tracking and hit-tests every event — but nothing consumed the
|
|
15
|
+
events, so they were silently discarded. Every list, card, tab and button now
|
|
16
|
+
responds:
|
|
17
|
+
- **Click** selects a row; the detail pane updates exactly as it does with
|
|
18
|
+
`↑`/`↓`, because clicks ride the same `selectionChanged` event the keyboard
|
|
19
|
+
already used.
|
|
20
|
+
- **Double-click** opens the repo in your browser, or runs the overlay's
|
|
21
|
+
action — the same code path as `Enter`, so the two can't drift apart.
|
|
22
|
+
- **Scroll wheel** moves the selection in a list and scrolls long panes
|
|
23
|
+
(README, help, org profile, update notes). This also fixes a pre-existing
|
|
24
|
+
bug: the wheel previously fell through to whichever renderable held focus,
|
|
25
|
+
so scrolling while the README viewer was open scrolled the wrong pane.
|
|
26
|
+
- **Click outside an overlay** dismisses it, the same as `Esc`.
|
|
27
|
+
- Landing cards, trending tabs, the update dialog's buttons, and every
|
|
28
|
+
overlay list (history, bookmarks, saved searches, topics, export, share,
|
|
29
|
+
command menu) are clickable. Hovering shows a pointer cursor and lifts the
|
|
30
|
+
row background.
|
|
31
|
+
- **A <kbd>☰ menu</kbd> button in the bottom-right corner** opens the command
|
|
32
|
+
menu. It floats above the layout and hides while an overlay is open.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- **`Esc` now opens the command menu; `Space` no longer does.** `Space` opened
|
|
37
|
+
the menu only while the query input was _not_ focused, which made one key mean
|
|
38
|
+
two different things depending on invisible state — and it meant `Space` could
|
|
39
|
+
not type a space in a query. More confusingly, it worked only _after_ you had
|
|
40
|
+
clicked a result row: clicking moved focus to the list as a side effect of
|
|
41
|
+
OpenTUI's auto-focus-on-press, and `Space` was gated on that focus being gone.
|
|
42
|
+
`Esc` is now the sole binding (it already closed overlays), and `Space` always
|
|
43
|
+
types. The bottom-right <kbd>☰ menu</kbd> button covers mouse users.
|
|
44
|
+
- Help, the README keybinding tables and `docs/HOW-TO.md` now document the mouse
|
|
45
|
+
bindings and the `Esc` menu binding.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- **Non-interactive text no longer swallows clicks.** Every `TextRenderable`
|
|
50
|
+
defaults to OpenTUI's `selectable: true`, and a left-press on a selectable
|
|
51
|
+
renderable is consumed as a text-selection drag before the app's own handlers
|
|
52
|
+
run. The detail pane, comparison table, tab bar and other read-only text now
|
|
53
|
+
opt out, so clicks over them behave.
|
|
54
|
+
- **A hover highlight no longer painted the list magenta.** OpenTUI's colour
|
|
55
|
+
parser accepts only hex and CSS names; an `rgba(...)` hover tint silently
|
|
56
|
+
resolved to its magenta fallback. Now expressed as 8-digit hex.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
9
60
|
## [9.9.0] — 2026-10-01 (released)
|
|
10
61
|
|
|
11
62
|
### Added
|
package/README.md
CHANGED
|
@@ -172,19 +172,19 @@ ghfind --completion fish | source
|
|
|
172
172
|
<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>
|
|
173
173
|
<tr><td><b>Trending</b></td><td>Today, week, month, year — filter by language</td></tr>
|
|
174
174
|
<tr><td><b>Packages</b></td><td>npm registry search (beta) — <code>ghfind pkg "query"</code></td></tr>
|
|
175
|
-
<tr><td><b>Bookmarks</b></td><td>
|
|
176
|
-
<tr><td><b>Deep-dive</b></td><td>
|
|
177
|
-
<tr><td><b>Compare</b></td><td>
|
|
178
|
-
<tr><td><b>Explore</b></td><td>
|
|
179
|
-
<tr><td><b>History</b></td><td>
|
|
180
|
-
<tr><td><b>Saved</b></td><td>
|
|
181
|
-
<tr><td><b>Export</b></td><td>
|
|
182
|
-
<tr><td><b>Share</b></td><td>
|
|
183
|
-
<tr><td><b>Org profile</b></td><td>
|
|
175
|
+
<tr><td><b>Bookmarks</b></td><td>Menu → Bookmark / Bookmarks panel — save repos, tag them</td></tr>
|
|
176
|
+
<tr><td><b>Deep-dive</b></td><td>Menu → Deep-dive — languages, contributors, README, activity chart</td></tr>
|
|
177
|
+
<tr><td><b>Compare</b></td><td>Menu → Compare select / Compare view — side-by-side, select 2+ repos</td></tr>
|
|
178
|
+
<tr><td><b>Explore</b></td><td>Menu → Topics — browse popular GitHub topics</td></tr>
|
|
179
|
+
<tr><td><b>History</b></td><td>Menu → History — recall past searches</td></tr>
|
|
180
|
+
<tr><td><b>Saved</b></td><td>Menu → Saved searches — load or save queries</td></tr>
|
|
181
|
+
<tr><td><b>Export</b></td><td>Menu → Export — JSON, CSV, Markdown to file</td></tr>
|
|
182
|
+
<tr><td><b>Share</b></td><td>Menu → Share repo — copy repo link to clipboard</td></tr>
|
|
183
|
+
<tr><td><b>Org profile</b></td><td>Menu → Org profile — org summary: repos, stars, top languages (<code>ghfind org <name></code> in CLI)</td></tr>
|
|
184
184
|
<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>
|
|
185
|
-
<tr><td><b>Notifications</b></td><td>
|
|
185
|
+
<tr><td><b>Notifications</b></td><td>Menu → Notifications — view & dismiss alerts</td></tr>
|
|
186
186
|
<tr><td><b>Releases</b></td><td><code>--releases</code> — new-release feed for bookmarked repos</td></tr>
|
|
187
|
-
<tr><td><b>Graph</b></td><td>
|
|
187
|
+
<tr><td><b>Graph</b></td><td>Menu → Activity graph — commit chart, fullscreen toggle</td></tr>
|
|
188
188
|
<tr><td><b>Help</b></td><td><code>?</code> / <code>Ctrl+H</code> — keybindings reference</td></tr>
|
|
189
189
|
<tr><td><b>Watch</b></td><td><code>--watch</code> — poll for new results</td></tr>
|
|
190
190
|
<tr><td><b>MCP server</b></td><td><code>ghfind mcp</code> — GitHub search as tools for AI agents (Claude Code, Cursor, …)</td></tr>
|
|
@@ -214,16 +214,26 @@ ghfind --completion fish | source
|
|
|
214
214
|
| `/` | Focus search input |
|
|
215
215
|
| `Enter` | Execute search / open selected repo in browser |
|
|
216
216
|
| `↑` / `↓` — `j` / `k` | Navigate results & menus |
|
|
217
|
-
| `
|
|
217
|
+
| `Esc` | Open / close leader menu (contextual actions) |
|
|
218
218
|
| `Tab` | Auto-complete search qualifier |
|
|
219
219
|
| `?` or `Ctrl+H` | Help overlay |
|
|
220
220
|
| `1`–`5` | Switch trending tabs (Today → All) |
|
|
221
221
|
| `←` / `→` — `h` / `l` | Switch trending tabs (left/right) |
|
|
222
222
|
| `PageUp` | Jump to top of results |
|
|
223
223
|
| `PageDown` | Load next page of results |
|
|
224
|
-
| `Esc` | Close current overlay |
|
|
225
224
|
| `q` | Quit ghfind |
|
|
226
225
|
|
|
226
|
+
**Mouse** — every list is clickable, and the keyboard and mouse are interchangeable
|
|
227
|
+
|
|
228
|
+
| Input | Action |
|
|
229
|
+
| --------------------------------------- | ----------------------------------------- |
|
|
230
|
+
| Click | Select a row / card / trending tab |
|
|
231
|
+
| Double-click | Open the repo, or run the action |
|
|
232
|
+
| Scroll wheel | Move the selection, or scroll a long pane |
|
|
233
|
+
| Click outside an overlay | Dismiss it (same as `Esc`) |
|
|
234
|
+
| Click the query box | Focus the search input |
|
|
235
|
+
| Click <kbd>☰ menu</kbd> (bottom-right) | Open the leader menu |
|
|
236
|
+
|
|
227
237
|
**Error recovery** — active only while the matching error is in the status bar
|
|
228
238
|
|
|
229
239
|
| Key | Action |
|
|
@@ -233,7 +243,7 @@ ghfind --completion fish | source
|
|
|
233
243
|
| `u` | Search without a token (401) |
|
|
234
244
|
| `c` | Change token (rate limit) |
|
|
235
245
|
|
|
236
|
-
**Leader menu** — press `
|
|
246
|
+
**Leader menu** — press `Esc` (or click <kbd>☰ menu</kbd>), navigate with `↑`/`↓`, press `Enter` to dispatch
|
|
237
247
|
|
|
238
248
|
Actions shown depend on current mode (search vs trending) and selection:
|
|
239
249
|
|
|
@@ -277,7 +287,7 @@ Actions shown depend on current mode (search vs trending) and selection:
|
|
|
277
287
|
|
|
278
288
|
Trending tabs: `1`–`5` (Today → All) or `←`/`→` — `h`/`l`
|
|
279
289
|
|
|
280
|
-
> Most actions are accessed via the **leader menu** (`
|
|
290
|
+
> Most actions are accessed via the **leader menu** (`Esc`, or the <kbd>☰ menu</kbd> button in the bottom-right corner). This keeps the keymap minimal while providing a full command palette. The leader menu filters actions contextually — items that don't apply (e.g., Bookmark with no repo selected) are hidden.
|
|
281
291
|
|
|
282
292
|
</details>
|
|
283
293
|
|
|
@@ -337,14 +347,14 @@ cd ghfind
|
|
|
337
347
|
# With Bun (recommended for TUI)
|
|
338
348
|
bun install
|
|
339
349
|
bun start # TUI
|
|
340
|
-
bun test #
|
|
350
|
+
bun test # 657 tests
|
|
341
351
|
bun run check # format check + tests — the green gate
|
|
342
352
|
bun run build # build dist/
|
|
343
353
|
|
|
344
354
|
# Or with npm
|
|
345
355
|
npm install
|
|
346
356
|
npm start # TUI (requires Node 20+)
|
|
347
|
-
npm test #
|
|
357
|
+
npm test # 657 tests
|
|
348
358
|
npm run build # build dist/
|
|
349
359
|
|
|
350
360
|
> Want to contribute? See [CONTRIBUTING.md](CONTRIBUTING.md) for commands,
|
|
@@ -378,6 +388,17 @@ for the architecture, measurements, and remaining work.
|
|
|
378
388
|
|
|
379
389
|
Recent releases (full history in [CHANGELOG.md](CHANGELOG.md)):
|
|
380
390
|
|
|
391
|
+
### v9.10.0
|
|
392
|
+
|
|
393
|
+
- **The TUI is now fully clickable** — the mouse was already enabled (OpenTUI emitted and hit-tested every event) but nothing consumed them, so they were silently discarded; click selects, double-click opens, the wheel scrolls, and clicking outside an overlay closes it
|
|
394
|
+
- **Clicks reuse the keyboard's own code paths** — a click calls `setSelectedIndex`, which emits the same `selectionChanged` event `↑`/`↓` does, so the detail pane, graph and packages view work identically with no parallel mouse branch to drift
|
|
395
|
+
- **Every surface responds** — results, landing mode cards, trending tabs, the update dialog's buttons, and all seven overlay lists (history, bookmarks, saved searches, topics, export, share, command menu), with hover highlighting and a pointer cursor
|
|
396
|
+
- **A <kbd>☰ menu</kbd> button in the bottom-right corner** opens the command menu; it floats above the layout and hides while an overlay is open
|
|
397
|
+
- **The scroll wheel no longer scrolls the wrong pane** — a pre-existing bug: scroll events that hit nothing fell through to the focused renderable, so scrolling in the README viewer moved the _result selection_ instead of the README
|
|
398
|
+
- **Clicks over read-only text now register** — every `TextRenderable` defaults to OpenTUI's text-selection mode, which consumed left-presses as a selection drag before ghfind's handlers ran, so the detail pane and comparison table ignored clicks entirely
|
|
399
|
+
- **`Space` now always types a space, and `Esc` opens the command menu** — `Space` opened the menu only while the query input was unfocused, and the only thing that unfocused it was clicking a result row, so `Space` worked only after a mouse click; `Esc` already closed every overlay, so it gains a meaning rather than losing one
|
|
400
|
+
- **A hover highlight no longer painted lists magenta** — OpenTUI's colour parser accepts only hex and CSS names, so an `rgba()` tint fell through to its magenta fallback
|
|
401
|
+
|
|
381
402
|
### v9.9.0
|
|
382
403
|
|
|
383
404
|
- **Queries are understood before they are sent** — every surface (TUI, CLI, MCP, `--watch`) parses and checks a query first, so a typo or bad value fails with a specific message and a fix instead of an opaque GitHub 422 or a misleading "network error"; previously only the TUI ran validation at all
|
|
@@ -410,21 +431,6 @@ Recent releases (full history in [CHANGELOG.md](CHANGELOG.md)):
|
|
|
410
431
|
- **State files are written atomically** — a crash mid-write used to leave truncated JSON that was silently replaced with defaults, losing bookmarks and history
|
|
411
432
|
- Fixed notification IDs restarting after "dismiss all", `history --delete` removing every duplicate, an invalid `--sort` degrading silently, a failed "load more" clearing the TUI's results, `--markdown` not escaping `|`, and a not-quite-LRU memory cache
|
|
412
433
|
|
|
413
|
-
### v9.8.1
|
|
414
|
-
|
|
415
|
-
- **`ghfind skill search <query>`** finds agent skills by keyword and prints why
|
|
416
|
-
each one matched; `--remote` searches the public [skills.sh](https://skills.sh)
|
|
417
|
-
ecosystem instead, and `GHFIND_SKILL_ROOTS` overrides the scanned directories
|
|
418
|
-
- **MCP tool `ghfind_skill_search`** — agents search installed skills or the
|
|
419
|
-
skills.sh registry as soon as they connect; read-only
|
|
420
|
-
- **Read-only CLI views of local state** — `ghfind bookmarks`, `ghfind history`,
|
|
421
|
-
`ghfind saved`, `ghfind topics`, plus `ghfind readme <owner/repo>` and
|
|
422
|
-
`ghfind share <owner/repo>`, each with `--json` for agents
|
|
423
|
-
- **Shell completions** (bash, zsh, fish) cover every new subcommand and flag
|
|
424
|
-
- **README image rendering is incomplete** — see
|
|
425
|
-
[Known limitations](#known-limitations); the v9.8.0 notes wrongly described it
|
|
426
|
-
as working
|
|
427
|
-
|
|
428
434
|
## License
|
|
429
435
|
|
|
430
436
|
MIT
|