Skip to content

Commit bee93ac

Browse files
committed
Overhaul TUI visuals, add community files and demo animation
- Replace blue cursor highlight with violet (magenta) for brand consistency - Replace ◉/○ checkboxes with ✓ (green) / space for a cleaner look - Right-align match counts to terminal edge (termWidth-aware) - Replace ▶/▼ fold arrows with ▸/▾ in brand violet - Add brand badge header (bgMagenta) in TUI title bar - Colour section separators with magenta - Pass process.stdout.columns to renderGroups via tui.ts - Add SECURITY.md (RSSI-approved vulnerability disclosure policy) - Add CODE_OF_CONDUCT.md (Contributor Covenant 2.1) - Add docs/public/social-preview.svg (1280×640 GitHub social image) - Add demo/demo.tape (VHS tape for animated demo GIF) - Add demo/demo.gif (recorded demo animation) - Add demo/README.md (regeneration instructions) - Add 18 keywords to package.json for npm/pkg discoverability - Expand README.md: Features, Use cases, Why not gh search code? sections Bump: 1.3.0 → 1.4.0 (minor)
1 parent 24c427c commit bee93ac

11 files changed

Lines changed: 539 additions & 16 deletions

File tree

CODE_OF_CONDUCT.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, caste, color, religion, or sexual
10+
identity and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
- Demonstrating empathy and kindness toward other people
21+
- Being respectful of differing opinions, viewpoints, and experiences
22+
- Giving and gracefully accepting constructive feedback
23+
- Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
- Focusing on what is best not just for us as individuals, but for the overall
26+
community
27+
28+
Examples of unacceptable behavior include:
29+
30+
- The use of sexualized language or imagery, and sexual attention or advances of
31+
any kind
32+
- Trolling, insulting or derogatory comments, and personal or political attacks
33+
- Public or private harassment
34+
- Publishing others' private information, such as a physical or email address,
35+
without their explicit permission
36+
- Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official email address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the community leaders responsible for enforcement at
63+
[admin@fulll.fr](mailto:admin@fulll.fr).
64+
All complaints will be reviewed and investigated promptly and fairly.
65+
66+
All community leaders are obligated to respect the privacy and security of the
67+
reporter of any incident.
68+
69+
## Enforcement Guidelines
70+
71+
Community leaders will follow these Community Impact Guidelines in determining
72+
the consequences for any action they deem in violation of this Code of Conduct:
73+
74+
### 1. Correction
75+
76+
**Community Impact**: Use of inappropriate language or other behavior deemed
77+
unprofessional or unwelcome in the community.
78+
79+
**Consequence**: A private, written warning from community leaders, providing
80+
clarity around the nature of the violation and an explanation of why the
81+
behavior was inappropriate. A public apology may be requested.
82+
83+
### 2. Warning
84+
85+
**Community Impact**: A violation through a single incident or series of
86+
actions.
87+
88+
**Consequence**: A warning with consequences for continued behavior. No
89+
interaction with the people involved, including unsolicited interaction with
90+
those enforcing the Code of Conduct, for a specified period of time. This
91+
includes avoiding interactions in community spaces as well as external channels
92+
like social media. Violating these terms may lead to a temporary or permanent
93+
ban.
94+
95+
### 3. Temporary Ban
96+
97+
**Community Impact**: A serious violation of community standards, including
98+
sustained inappropriate behavior.
99+
100+
**Consequence**: A temporary ban from any sort of interaction or public
101+
communication with the community for a specified period of time. No public or
102+
private interaction with the people involved, including unsolicited interaction
103+
with those enforcing the Code of Conduct, is allowed during this period.
104+
Violating these terms may lead to a permanent ban.
105+
106+
### 4. Permanent Ban
107+
108+
**Community Impact**: Demonstrating a pattern of violation of community
109+
standards, including sustained inappropriate behavior, harassment of an
110+
individual, or aggression toward or disparagement of classes of individuals.
111+
112+
**Consequence**: A permanent ban from any sort of public interaction within the
113+
community.
114+
115+
## Attribution
116+
117+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118+
version 2.1, available at
119+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120+
121+
Community Impact Guidelines were inspired by
122+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123+
124+
For answers to common questions about this code of conduct, see the FAQ at
125+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126+
[https://www.contributor-covenant.org/translations][translations].
127+
128+
[homepage]: https://www.contributor-covenant.org
129+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130+
[Mozilla CoC]: https://github.com/mozilla/diversity
131+
[FAQ]: https://www.contributor-covenant.org/faq
132+
[translations]: https://www.contributor-covenant.org/translations

README.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,82 @@ keyboard-driven TUI, fine-grained extract selection, markdown/JSON output.
1010

1111
**Full documentation: https://fulll.github.io/github-code-search/**
1212

13+
![Demo](demo/demo.gif)
14+
1315
## Quick start
1416

1517
```bash
1618
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
1719
curl -fsSL https://raw.githubusercontent.com/fulll/github-code-search/main/install.sh | bash
1820
github-code-search query "TODO" --org my-org
1921
```
22+
23+
## Features
24+
25+
- **Org-wide search** — queries all repositories in a GitHub organisation in one command, with automatic pagination up to 1 000 results
26+
- **Per-repository aggregation** — results grouped by repo, not as a flat list; fold/unfold each repo to focus on what matters
27+
- **Keyboard-driven TUI** — navigate with arrow keys, toggle selections, filter by file path, confirm with Enter — without leaving the terminal
28+
- **Fine-grained selection** — pick exactly the repos and extracts you want; deselected items are recorded as exclusions in the replay command
29+
- **Structured output** — clean Markdown lists with GitHub links, or machine-readable JSON — ready to paste into docs, issues or scripts
30+
- **Team-prefix grouping** — group results by team prefix (e.g. `platform/`, `data/`) using `--group-by-team-prefix`
31+
- **Replay command** — every session produces a one-liner you can run in CI to reproduce the exact same selection without the UI
32+
- **Syntax highlighting** — code fragments rendered with language-aware coloring (TypeScript, Python, Go, Rust, YAML, JSON and more)
33+
34+
## Use cases
35+
36+
**Audit a dependency across the org**
37+
38+
```bash
39+
github-code-search query "from 'lodash'" --org my-org
40+
```
41+
42+
Instantly see every repo still importing lodash, select the ones to migrate, and get a Markdown checklist to paste in your migration issue.
43+
44+
**Hunt down TODOs before a release**
45+
46+
```bash
47+
github-code-search query "TODO" --org my-org --exclude-repositories sandbox,archived-repo
48+
```
49+
50+
Surfaces all in-code TODOs, lets you triage interactively, and outputs a linked list for your release notes.
51+
52+
**Verify a breaking-change rollout**
53+
54+
```bash
55+
github-code-search query "oldApiClient" --org my-org --output-type repo-only --format json
56+
```
57+
58+
Use JSON output in a CI script to assert that no repository still references the deprecated client after your migration deadline.
59+
60+
**Security sweep — find hardcoded secrets patterns**
61+
62+
```bash
63+
github-code-search query "process.env.SECRET" --org my-org
64+
```
65+
66+
Cross-repo scan for risky patterns; export results to Markdown to attach to a security audit report.
67+
68+
**Onboarding — understand how an internal library is used**
69+
70+
```bash
71+
github-code-search query "useFeatureFlag" --org my-org --group-by-team-prefix platform/
72+
```
73+
74+
Get a team-scoped view of every usage site before refactoring a shared hook or utility.
75+
76+
## Why not `gh search code`?
77+
78+
The official [`gh` CLI](https://cli.github.com/) does support `gh search code`, but it returns a **flat paginated list** — one result per line, no grouping, no interactive selection, no structured output.
79+
80+
| | `gh search code` | `github-code-search` |
81+
| ------------------------------------------ | ---------------- | -------------------- |
82+
| Results grouped by repo |||
83+
| Interactive TUI (navigate, select, filter) |||
84+
| Fine-grained extract selection |||
85+
| Markdown / JSON output |||
86+
| Replay / CI command |||
87+
| Team-prefix grouping |||
88+
| Syntax highlighting in terminal |||
89+
| Pagination (up to 1 000 results) |||
90+
91+
`github-code-search` is purpose-built for **org-wide code audits and interactive triage** — not just a search wrapper.

SECURITY.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## Security
2+
3+
We take the security of our software products and components seriously, which includes all source code repositories managed through our [Fulll's GitHub organization](https://github.com/fulll).
4+
5+
If you believe you have found a security vulnerability in any Fulll's repository that meets Wikipedia's definition of a security vulnerability ([English version](<https://en.wikipedia.org/wiki/Vulnerability_(computing)>), [French version](<https://fr.wikipedia.org/wiki/Vuln%C3%A9rabilit%C3%A9_(informatique)>)), please report it to us as described below.
6+
7+
## Reporting security vulnerability Issues
8+
9+
:warning: **Please do not report security vulnerabilities through public GitHub issues.**
10+
11+
Instead, **please report them by email** to [rssi@fulll.fr](mailto:rssi@fulll.fr).
12+
13+
You should receive a response as soon as possible. If for some reason you do not, please follow up via email to our [Administrator Team](mailto:admin@fulll.fr) to ensure we received your original message.
14+
15+
For private repositories, you can also send an email or directly use the dedicated issue template for security vulnerability.
16+
17+
:bulb: In any ways, please include the requested information listed below (**as much as you can provide**) to help us better understand the nature and scope of the possible issue:
18+
19+
- Type of issue (e.g. Denial of service, Elevation of privilege, Information disclosure, Remote Code Execution, Security feature bypass, buffer overflow, SQL injection, cross-site scripting, etc.)
20+
- Full paths of source file(s) related to the manifestation of the issue
21+
- The location of the affected source code (tag/branch/commit or direct URL)
22+
- Step-by-step instructions to reproduce the issue, including any special configuration required to reproduce
23+
- (if possible) Proof-of-concept or exploit code
24+
- Description and Impact of the issue, including how an attacker might exploit the issue
25+
26+
This information will help us triage your report more quickly.
27+
28+
## Preferred Languages
29+
30+
We prefer all communications to be in English, but if you are not comfortable, French is acceptable too.
31+
32+
## Policy
33+
34+
Fulll follows the principle of [Microsoft's Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).

demo/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Demo
2+
3+
This directory contains the [VHS](https://github.com/charmbracelet/vhs) tape used to generate
4+
the animated demo (`demo.gif`) embedded in the root README.
5+
6+
## Regenerate the animation
7+
8+
1. Install VHS:
9+
10+
```bash
11+
brew install vhs
12+
```
13+
14+
2. Build the binary:
15+
16+
```bash
17+
bun run build.ts
18+
```
19+
20+
3. Export your GitHub token and record:
21+
22+
```bash
23+
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
24+
vhs demo.tape # writes demo.gif
25+
```
26+
27+
The GIF is committed alongside this file and referenced from the root README as `![Demo](demo/demo.gif)`.

demo/demo.gif

438 KB
Loading

demo/demo.tape

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# VHS tape — terminal demo for README
2+
# Usage:
3+
# 1. Install VHS: brew install vhs
4+
# 2. Build the binary: bun run build.ts
5+
# 3. Export your token: export GITHUB_TOKEN=ghp_...
6+
# 4. Record: vhs demo/demo.tape
7+
#
8+
# The GIF is written to demo/demo.gif — add it to README.md with:
9+
# ![demo](demo/demo.gif)
10+
11+
Output demo/demo.gif
12+
13+
Require github-code-search
14+
15+
Set Shell "bash"
16+
Set FontSize 15
17+
Set Width 1200
18+
Set Height 600
19+
Set Theme "Catppuccin Mocha"
20+
Set Padding 24
21+
Set TypingSpeed 60ms
22+
23+
# ── Show the prompt ────────────────────────────────────────────────────────────
24+
Hide
25+
Type "export GITHUB_TOKEN=$GITHUB_TOKEN"
26+
Enter
27+
Show
28+
29+
Sleep 500ms
30+
31+
# ── Type the command ──────────────────────────────────────────────────────────
32+
Type 'github-code-search query "@actions/cache" --org actions'
33+
Sleep 800ms
34+
Enter
35+
36+
# Wait for results to load (API call + TUI render)
37+
Sleep 4s
38+
39+
# ── Navigate down a few rows ──────────────────────────────────────────────────
40+
Down
41+
Sleep 300ms
42+
Down
43+
Sleep 300ms
44+
Down
45+
Sleep 300ms
46+
47+
# ── Toggle selection off on current extract ───────────────────────────────────
48+
Space
49+
Sleep 400ms
50+
51+
# ── Enter filter mode to exclude .ts files ────────────────────────────────────
52+
Type "f"
53+
Sleep 300ms
54+
Type ".yml"
55+
Sleep 600ms
56+
Enter
57+
Sleep 500ms
58+
59+
# ── Select all visible (filtered) rows ────────────────────────────────────────
60+
Type "a"
61+
Sleep 500ms
62+
63+
# ── Reset filter ──────────────────────────────────────────────────────────────
64+
Type "r"
65+
Sleep 600ms
66+
67+
# ── Confirm and print output ──────────────────────────────────────────────────
68+
Enter
69+
70+
Sleep 2s

0 commit comments

Comments
 (0)