terminalhire 0.1.1 → 0.2.2

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 CHANGED
@@ -22,17 +22,23 @@ The installer prints a full v3.1 disclosure, asks for explicit "yes", then offer
22
22
  ## Uninstall
23
23
 
24
24
  ```sh
25
- node install.js --uninstall
25
+ node $(npm root -g)/terminalhire/install.js --uninstall
26
26
  terminalhire logout # clear GitHub token (if connected)
27
27
  terminalhire profile --delete # also wipe local profile
28
- rm -rf ~/.jpi # wipe everything
28
+ rm -rf ~/.terminalhire # wipe everything
29
+ ```
30
+
31
+ To disable only the spinner job surface without uninstalling:
32
+
33
+ ```sh
34
+ terminalhire spinner --off
29
35
  ```
30
36
 
31
37
  ## Commands
32
38
 
33
39
  ```sh
34
40
  terminalhire login # sign in with GitHub — enriches profile instantly (recommended)
35
- terminalhire logout # clear stored GitHub token from ~/.jpi/github-token.enc
41
+ terminalhire logout # clear stored GitHub token from ~/.terminalhire/github-token.enc
36
42
 
37
43
  terminalhire jobs # fetch index, match locally, browse ranked roles
38
44
  terminalhire jobs --limit 20 # show top 20 results (default: 10)
@@ -56,7 +62,7 @@ This runs the **GitHub OAuth Device Flow**:
56
62
 
57
63
  1. A code like `XXXX-XXXX` and a URL (`https://github.com/login/device`) are displayed.
58
64
  2. You open the URL, enter the code, and click "Authorize".
59
- 3. Terminalhire polls until you authorize, then stores the token encrypted at `~/.jpi/github-token.enc`.
65
+ 3. Terminalhire polls until you authorize, then stores the token encrypted at `~/.terminalhire/github-token.enc`.
60
66
  4. Your public GitHub profile is fetched, processed, and merged into your local profile.
61
67
 
62
68
  ### What GitHub enriches
@@ -79,7 +85,7 @@ Scope requested: **`read:user`** — public profile + public repos only.
79
85
 
80
86
  ### Data residency
81
87
 
82
- - Token: encrypted at `~/.jpi/github-token.enc` (AES-256-GCM, same scheme as local profile).
88
+ - Token: encrypted at `~/.terminalhire/github-token.enc` (AES-256-GCM, same scheme as local profile).
83
89
  - GitHub data stays **on your machine** — it enriches your local profile.
84
90
  - GitHub fields cross the wire **only** in a consented `LeadPayload` when you type "yes".
85
91
  - GitHub data is **never sent silently**.
@@ -127,15 +133,36 @@ After `terminalhire jobs` runs and finds matches, the Claude Code status bar sho
127
133
  ✦ N roles match your current work — run: terminalhire jobs
128
134
  ```
129
135
 
130
- The nudge is printed at most once per Claude Code session. It reads only `~/.jpi/index-cache.json` (a matchCount written by the last `terminalhire jobs` run). It makes zero network calls.
136
+ The nudge is printed at most once per Claude Code session. It reads only `~/.terminalhire/index-cache.json` (a matchCount written by the last `terminalhire jobs` run). It makes zero network calls.
137
+
138
+ ## Spinner job surface
139
+
140
+ While you work inside Claude Code, terminalhire surfaces your top local job matches directly in the spinner — the ambient status indicator that appears while Claude is thinking.
141
+
142
+ - **Enabled at install.** No additional setup required.
143
+ - **Computed locally.** Match scoring runs on your machine against your encrypted local profile. No network call is made for the spinner display.
144
+ - **Zero egress.** The spinner reads only `~/.terminalhire/index-cache.json` (written by the last `terminalhire jobs` run). Nothing leaves your device.
145
+ - **Reversible.** Disable at any time without uninstalling:
146
+
147
+ ```sh
148
+ terminalhire spinner --off
149
+ ```
150
+
151
+ Re-enable with:
152
+
153
+ ```sh
154
+ terminalhire spinner --on
155
+ ```
156
+
157
+ The spinner surface shows a short ranked summary (e.g. `✦ 3 matches — run: terminalhire jobs`). It does not send your profile, fingerprint, or any data to any server.
131
158
 
132
159
  ## Architecture (v3.1 hybrid)
133
160
 
134
161
  ```
135
162
  Server Client (your machine)
136
163
  ────────────────────────────── ─────────────────────────────────────────
137
- Broad public pool: ~/.jpi/profile.enc (AES-256-GCM encrypted)
138
- Greenhouse + Ashby (ATS) ~/.jpi/github-token.enc (AES-256-GCM)
164
+ Broad public pool: ~/.terminalhire/profile.enc (AES-256-GCM encrypted)
165
+ Greenhouse + Ashby (ATS) ~/.terminalhire/github-token.enc (AES-256-GCM)
139
166
  Himalayas + WWR + HN GET Fingerprint built from profile
140
167
  Coastal buyer-lead roles ←─── /api/index (anonymous, no dev data)
141
168
  Local match() from @jpi/core
@@ -168,9 +195,9 @@ GitHub (optional enrichment):
168
195
  ## Local profile encryption
169
196
 
170
197
  - Algorithm: **AES-256-GCM** via Node built-in `crypto` (no external deps).
171
- - Key: stored at `~/.jpi/key` with `0600` permissions. If `keytar` is installed, the OS keychain is preferred and the key file is not written.
172
- - Profile file: `~/.jpi/profile.enc` — JSON blob `{ iv, tag, ciphertext }` (all hex-encoded).
173
- - GitHub token file: `~/.jpi/github-token.enc` — same format, same key.
198
+ - Key: stored at `~/.terminalhire/key` with `0600` permissions. If `keytar` is installed, the OS keychain is preferred and the key file is not written.
199
+ - Profile file: `~/.terminalhire/profile.enc` — JSON blob `{ iv, tag, ciphertext }` (all hex-encoded).
200
+ - GitHub token file: `~/.terminalhire/github-token.enc` — same format, same key.
174
201
 
175
202
  ## Lead payload shape
176
203
 
@@ -290,5 +317,5 @@ apps/cli/
290
317
  | Contact email | Stored encrypted locally (pre-filled from GitHub public email) | Included if set and "yes" |
291
318
  | GitHub login / profileUrl | Stored in `profile.github` on `terminalhire login` | Included in `approvedFields.github` ONLY on "yes" |
292
319
  | GitHub topLanguages | Used locally for tag inference (closed vocab) | Included in `approvedFields.github` ONLY on "yes" |
293
- | GitHub token | Encrypted at `~/.jpi/github-token.enc` | Never sent |
320
+ | GitHub token | Encrypted at `~/.terminalhire/github-token.enc` | Never sent |
294
321
  | Private repos | Never accessed (scope: read:user) | N/A |