github-search-cli 9.1.0 → 9.2.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/README.md +31 -11
- package/bin/ghfind.js +3 -3
- package/completions/ghfind.bash +5 -1
- package/completions/ghfind.fish +2 -0
- package/completions/ghfind.zsh +2 -0
- package/demo.svg +51 -46
- package/dist/{chunk-TUMYR2IC.js → chunk-IVUU2KGR.js} +1 -2
- package/dist/cli.js +1014 -238
- package/dist/{config-DFL44OVL.js → config-GNZOQRTH.js} +1 -1
- package/package.json +2 -4
- package/scripts/postinstall.js +10 -7
- package/src/cli.ts +116 -7
- package/src/config.ts +1 -1
- package/src/help.ts +45 -15
- package/src/init.ts +1 -1
- package/src/package-browser.ts +305 -0
- package/src/package.ts +137 -0
- package/src/search.ts +1 -0
- package/src/themes.ts +60 -36
- package/src/trending.ts +31 -5
- package/src/tui.ts +390 -52
- package/src/types.ts +16 -2
- package/vendor/bun.exe +0 -0
package/README.md
CHANGED
|
@@ -22,14 +22,15 @@
|
|
|
22
22
|
npm install -g github-search-cli
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
> **No separate runtime needed!**
|
|
26
|
-
>
|
|
25
|
+
> **No separate runtime needed!** Only requires Node.js 20+. The TUI needs Bun,
|
|
26
|
+
> which is downloaded automatically at install time. Non-interactive modes work
|
|
27
|
+
> with just Node.js.
|
|
27
28
|
>
|
|
28
|
-
> |
|
|
29
|
-
> |
|
|
30
|
-
> |
|
|
31
|
-
> |
|
|
32
|
-
> |
|
|
29
|
+
> | Platform | TUI | CLI modes |
|
|
30
|
+
> | --------------------- | ---------------- | --------- |
|
|
31
|
+
> | Node 20+ | ⚠ Bun required | ✅ |
|
|
32
|
+
> | Bun | ✅ | ✅ |
|
|
33
|
+
> | Downloaded Bun | ✅ auto-installed| ✅ |
|
|
33
34
|
|
|
34
35
|
## Use
|
|
35
36
|
|
|
@@ -191,19 +192,38 @@ cd ghfind
|
|
|
191
192
|
# With Bun (recommended for TUI)
|
|
192
193
|
bun install
|
|
193
194
|
bun start # TUI
|
|
194
|
-
bun test #
|
|
195
|
+
bun test # 131 tests
|
|
195
196
|
bun run build # build dist/
|
|
196
197
|
|
|
197
198
|
# Or with npm
|
|
198
199
|
npm install
|
|
199
|
-
npm start # TUI (requires Node 20
|
|
200
|
-
npm test #
|
|
200
|
+
npm start # TUI (requires Node 20+)
|
|
201
|
+
npm test # 131 tests
|
|
201
202
|
npm run build # build dist/
|
|
202
203
|
```
|
|
203
204
|
|
|
204
205
|
---
|
|
206
|
+
### Unreleased
|
|
207
|
+
- Fixed trending tabs (Today / This Week / This Month) returning the same repos — cache key now includes the `since` parameter so each period fetches independently
|
|
208
|
+
- Added cyan underline indicator beneath the active trending tab for clearer visual selection
|
|
209
|
+
- Added `ghfind --compare <repo1> <repo2> [repo3]` CLI command to compare repos side-by-side
|
|
210
|
+
- Added `c` keybinding in TUI to toggle compare mode on selected repo
|
|
211
|
+
---
|
|
212
|
+
### v0.9.2
|
|
213
|
+
|
|
214
|
+
- Remove bundled Bun binary from npm package (now downloaded at install time for all platforms)
|
|
215
|
+
- Package size reduced from 39.5 MB to 100 KB
|
|
216
|
+
- Postinstall no longer fails npm install on Bun download failure (graceful fallback)
|
|
217
|
+
- Removed `bun` from engines field (users no longer need Bun pre-installed)
|
|
218
|
+
- Non-interactive modes (`--json`, `--csv`, etc.) work with just Node.js 20+
|
|
219
|
+
|
|
220
|
+
### v0.9.1
|
|
221
|
+
|
|
222
|
+
- bug fix TUI layout issues on small terminals
|
|
223
|
+
- npm package search(beta)
|
|
224
|
+
- a new landing screen
|
|
205
225
|
|
|
206
|
-
###
|
|
226
|
+
### v0.9.0
|
|
207
227
|
|
|
208
228
|
- Bundle `vendor/` and `dist/` in npm package for offline install support
|
|
209
229
|
- Remove dead Strategy 3 fallback in `bin/ghfind.js` (Node cannot import `.ts`)
|
package/bin/ghfind.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* ghfind — npm bin entry point.
|
|
4
4
|
* Requires Node.js >= 20 or Bun.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* directly
|
|
8
|
-
*
|
|
6
|
+
* Strategy 1: Use a Bun binary from vendor/ (downloaded by postinstall) to
|
|
7
|
+
* run TypeScript source directly. Strategy 2: Fall back to the bundled
|
|
8
|
+
* dist/cli.js with Node.js (works for non-interactive modes).
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync } from "fs";
|
|
11
11
|
import { spawnSync } from "child_process";
|
package/completions/ghfind.bash
CHANGED
|
@@ -7,7 +7,7 @@ _ghfind() {
|
|
|
7
7
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
8
8
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
9
9
|
|
|
10
|
-
opts="--json --csv --markdown --count --limit --sort --token --trending --since --pipe --format --watch --interval --version --help --completion"
|
|
10
|
+
opts="--json --csv --markdown --count --limit --sort --token --trending --since --pipe --format --registry --watch --interval --version --help --completion pkg"
|
|
11
11
|
|
|
12
12
|
case "${prev}" in
|
|
13
13
|
--sort)
|
|
@@ -30,6 +30,10 @@ _ghfind() {
|
|
|
30
30
|
COMPREPLY=( $(compgen -W "bash zsh fish" -- "${cur}") )
|
|
31
31
|
return 0
|
|
32
32
|
;;
|
|
33
|
+
--registry)
|
|
34
|
+
COMPREPLY=( $(compgen -W "npm" -- "${cur}") )
|
|
35
|
+
return 0
|
|
36
|
+
;;
|
|
33
37
|
--limit|--interval)
|
|
34
38
|
return 0
|
|
35
39
|
;;
|
package/completions/ghfind.fish
CHANGED
|
@@ -12,6 +12,8 @@ complete -c ghfind -l trending -d "Trending mode"
|
|
|
12
12
|
complete -c ghfind -l since -d "Trending period" -r -f -a "daily weekly monthly"
|
|
13
13
|
complete -c ghfind -l pipe -d "Pipe target" -r -f -a "clone open"
|
|
14
14
|
complete -c ghfind -l format -d "Output format" -r -f -a "urls names ssh-urls clone-commands ids"
|
|
15
|
+
complete -c ghfind -l registry -d "Registry for pkg" -r -f -a "npm"
|
|
16
|
+
|
|
15
17
|
complete -c ghfind -l watch -d "Watch mode"
|
|
16
18
|
complete -c ghfind -l interval -d "Watch interval seconds" -r
|
|
17
19
|
complete -c ghfind -l version -d "Print version"
|
package/completions/ghfind.zsh
CHANGED
|
@@ -15,6 +15,8 @@ _ghfind() {
|
|
|
15
15
|
'--since[Trending period]:(daily weekly monthly)'
|
|
16
16
|
'--pipe[Pipe target]:(clone open)'
|
|
17
17
|
'--format[Output format]:(urls names ssh-urls clone-commands ids)'
|
|
18
|
+
'--registry[Registry for pkg]:(npm)'
|
|
19
|
+
|
|
18
20
|
'--watch[Watch mode]'
|
|
19
21
|
'--interval[Watch interval seconds]:seconds:'
|
|
20
22
|
'--version[Print version]'
|
package/demo.svg
CHANGED
|
@@ -12,55 +12,60 @@
|
|
|
12
12
|
<rect width="100%" height="100%" fill="#0d0d1a"/>
|
|
13
13
|
|
|
14
14
|
<!-- Window -->
|
|
15
|
-
<rect x="12" y="10" width="876" height="783" fill="#
|
|
16
|
-
<rect x="12" y="10" width="876" height="36" fill="#
|
|
17
|
-
<rect x="12" y="46" width="876" height="2" fill="#
|
|
15
|
+
<rect x="12" y="10" width="876" height="783" fill="#1a1b26" rx="8" filter="url(#shadow)"/>
|
|
16
|
+
<rect x="12" y="10" width="876" height="36" fill="#16161e" rx="8"/>
|
|
17
|
+
<rect x="12" y="46" width="876" height="2" fill="#24283b"/>
|
|
18
18
|
|
|
19
19
|
<!-- Traffic lights -->
|
|
20
|
-
<circle cx="24" cy="28" r="5" fill="#
|
|
21
|
-
<circle cx="42" cy="28" r="5" fill="#
|
|
22
|
-
<circle cx="60" cy="28" r="5" fill="#
|
|
23
|
-
<text x="450" y="34" fill="#
|
|
20
|
+
<circle cx="24" cy="28" r="5" fill="#f7768e"/>
|
|
21
|
+
<circle cx="42" cy="28" r="5" fill="#e0af68"/>
|
|
22
|
+
<circle cx="60" cy="28" r="5" fill="#9ece6a"/>
|
|
23
|
+
<text x="450" y="34" fill="#565f89" font-family="'JetBrains Mono','Fira Code',monospace" font-size="13" text-anchor="middle">ghfind — terminal GitHub browser</text>
|
|
24
24
|
|
|
25
25
|
<g font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">
|
|
26
|
-
<text x="14" y="62" fill="#
|
|
27
|
-
<rect x="14" y="69" width="860" height="54.5" fill="#
|
|
28
|
-
<text x="22" y="88" fill="#
|
|
29
|
-
<text x="14" y="150.2" fill="#
|
|
30
|
-
<rect x="14" y="159.3" width="432" height="378" fill="#
|
|
31
|
-
|
|
32
|
-
<rect x="
|
|
33
|
-
<text x="
|
|
34
|
-
<text x="
|
|
35
|
-
<text x="
|
|
36
|
-
<text x="
|
|
37
|
-
<text x="
|
|
38
|
-
<text x="
|
|
39
|
-
<text x="
|
|
40
|
-
<text x="
|
|
41
|
-
<text x="
|
|
42
|
-
<text x="
|
|
43
|
-
|
|
44
|
-
<text x="
|
|
45
|
-
<text x="24" y="475.70000000000005" fill="#cdd6f4" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">astral-sh/uv ★ 40.2k</text>
|
|
46
|
-
<text x="24" y="498.8" fill="#cdd6f4" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">zed-industries/zed ★ 52k</text>
|
|
47
|
-
<rect x="450" y="159.3" width="432" height="378" fill="#1e1e2e" stroke="#45475a" stroke-width="1" rx="3"/>
|
|
48
|
-
<text x="456" y="177.5" fill="#a6e3a1" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14"> Details </text>
|
|
49
|
-
<text x="458" y="198.5" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Name shadcn/ui</text>
|
|
50
|
-
<text x="458" y="221.6" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Stars 78,500</text>
|
|
51
|
-
<text x="458" y="244.7" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Forks 4,200</text>
|
|
52
|
-
<text x="458" y="267.8" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Lang TypeScript</text>
|
|
53
|
-
<text x="458" y="290.9" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Updated 2026-07-12</text>
|
|
54
|
-
<text x="458" y="314" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Topics react, ui, components, shadcn</text>
|
|
55
|
-
<text x="458" y="360.20000000000005" fill="#cdd6f4" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Beautifully designed components built with Radix UI and</text>
|
|
56
|
-
<text x="458" y="383.3" fill="#cdd6f4" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">Tailwind CSS.</text>
|
|
57
|
-
<text x="458" y="429.5" fill="#89b4fa" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">https://github.com/shadcn/ui</text>
|
|
58
|
-
<rect x="14" y="489" width="860" height="25" fill="#181825" rx="3"/>
|
|
59
|
-
<rect x="14" y="489" width="860" height="2" fill="#45475a"/>
|
|
60
|
-
<text x="18" y="521.9" fill="#6c7086" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">15,842 results (↑↓ nav Enter open o browser Ctrl+R history)</text>
|
|
61
|
-
<rect x="338.79999999999995" y="70" width="5.76" height="16" fill="#89b4fa" opacity="0.8">
|
|
62
|
-
<animate attributeName="opacity" values="0.8;0.1;0.8" dur="1s" repeatCount="indefinite"/>
|
|
63
|
-
</rect>
|
|
26
|
+
<text x="14" y="62" fill="#565f89" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">ghfind — GitHub repo browser [t]rending [/]search [g]raph [r]efresh [q]uit</text>
|
|
27
|
+
<rect x="14" y="69" width="860" height="54.5" fill="#1a1b26" stroke="#7aa2f7" stroke-width="1" rx="3"/>
|
|
28
|
+
<text x="22" y="88" fill="#7aa2f7" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">> language:TypeScript stars:>1000</text>
|
|
29
|
+
<text x="14" y="150.2" fill="#565f89" font-family="'JetBrains Mono','Fira Code','Cascadia Code',monospace" font-size="14">sort: stars limit: 50 (s=cycle sort l=cycle limit)</text>
|
|
30
|
+
<rect x="14" y="159.3" width="432" height="378" fill="#24283b" stroke="#1f2335" stroke-width="1"/>
|
|
31
|
+
<!-- Search results list -->
|
|
32
|
+
<rect x="14" y="159.3" width="432" height="19" fill="#7aa2f7" opacity="0.15"/>
|
|
33
|
+
<text x="22" y="173" fill="#c0caf5">✓ facebook/react ★ 218k JavaScript</text>
|
|
34
|
+
<text x="22" y="193" fill="#c0caf5">✓ vercel/next.js ★ 116k TypeScript</text>
|
|
35
|
+
<text x="22" y="213" fill="#c0caf5">✓ microsoft/vscode ★ 158k TypeScript</text>
|
|
36
|
+
<text x="22" y="233" fill="#c0caf5">✓ tanstack/router ★ 15k TypeScript</text>
|
|
37
|
+
<text x="22" y="253" fill="#c0caf5">✓ tailwindlabs/tailwindcss ★ 81k TypeScript</text>
|
|
38
|
+
<text x="22" y="273" fill="#c0caf5">✓ denoland/deno ★ 93k Rust</text>
|
|
39
|
+
<text x="22" y="293" fill="#c0caf5">✓ oven-sh/bun ★ 65k TypeScript</text>
|
|
40
|
+
<text x="22" y="313" fill="#c0caf5">✓ sagoie/open-tui ★ 3.2k TypeScript</text>
|
|
41
|
+
<text x="22" y="333" fill="#e0af68">→ ghfind/cli ★ 4.8k TypeScript</text>
|
|
42
|
+
<text x="22" y="353" fill="#c0caf5">✓ biomejs/biome ★ 28k Rust</text>
|
|
43
|
+
<!-- ... more results ... -->
|
|
44
|
+
<text x="14" y="525" fill="#565f89"> 10 of 847 results [Page 1/85]</text>
|
|
64
45
|
|
|
46
|
+
<rect x="456" y="159.3" width="418" height="378" fill="#24283b" stroke="#1f2335" stroke-width="1"/>
|
|
47
|
+
<!-- Right panel: repo info -->
|
|
48
|
+
<text x="468" y="183" fill="#bb9af7" font-weight="bold">facebook/react</text>
|
|
49
|
+
<text x="468" y="203" fill="#565f89">React is a JavaScript library for building user interfaces</text>
|
|
50
|
+
<text x="468" y="228" fill="#e0af68">★ 218,847</text>
|
|
51
|
+
<text x="540" y="228" fill="#565f89"> Forks: 46,231</text>
|
|
52
|
+
<text x="468" y="248" fill="#9ece6a">License: MIT</text>
|
|
53
|
+
<text x="468" y="268" fill="#7aa2f7">Language: JavaScript</text>
|
|
54
|
+
<text x="468" y="293" fill="#c0caf5">Updated: today</text>
|
|
55
|
+
<text x="468" y="318" fill="#565f89">Topics: react, javascript, ui, frontend, framework</text>
|
|
56
|
+
|
|
57
|
+
<text x="468" y="348" fill="#7aa2f7" font-weight="bold">Description</text>
|
|
58
|
+
<text x="468" y="368" fill="#c0caf5">A declarative, efficient, and flexible JavaScript library</text>
|
|
59
|
+
<text x="468" y="383" fill="#c0caf5">for building user interfaces.</text>
|
|
60
|
+
|
|
61
|
+
<text x="468" y="413" fill="#7aa2f7" font-weight="bold">README Preview</text>
|
|
62
|
+
<text x="468" y="433" fill="#c0caf5"># React</text>
|
|
63
|
+
<text x="468" y="453" fill="#565f89"> A JavaScript library for building user interfaces</text>
|
|
64
|
+
<text x="468" y="478" fill="#565f89"> ──────────────────────────────────────────────────</text>
|
|
65
|
+
<text x="468" y="503" fill="#c0caf5">React lets you build user interfaces out of individual</text>
|
|
66
|
+
<text x="468" y="518" fill="#c0caf5">pieces called components.</text>
|
|
67
|
+
|
|
68
|
+
<rect x="456" y="545" width="418" height="40" fill="#16161e" stroke="#1f2335"/>
|
|
69
|
+
<text x="468" y="570" fill="#565f89"> [r]eadme [d]eepdive [→] open [h]elp [q]uit</text>
|
|
65
70
|
</g>
|
|
66
|
-
</svg>
|
|
71
|
+
</svg>
|