huntr-cli 1.0.9
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/.env.example +7 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
- package/.github/labels.json +92 -0
- package/.github/pull_request_template.md +64 -0
- package/.github/workflows/ci.yml +87 -0
- package/.github/workflows/labels.yml +27 -0
- package/.github/workflows/manual-publish.yml +105 -0
- package/.github/workflows/publish.yml +57 -0
- package/.github/workflows/release.yml +124 -0
- package/.github/workflows/security-audit.yml +44 -0
- package/.husky/pre-commit +12 -0
- package/.husky/pre-push +27 -0
- package/.lintstagedrc.json +3 -0
- package/AGENTS.md +449 -0
- package/CHANGELOG.md +38 -0
- package/CHANGES.md +259 -0
- package/LICENSE +15 -0
- package/PUBLISHING.md +191 -0
- package/README.md +385 -0
- package/ROADMAP.md +158 -0
- package/SETUP-COMPLETE.md +446 -0
- package/WORKFLOW-SUMMARY.md +368 -0
- package/completions/_huntr +168 -0
- package/completions/huntr.1 +266 -0
- package/completions/huntr.bash +91 -0
- package/dist/api/client.d.ts +14 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +74 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/personal/activities.d.ts +20 -0
- package/dist/api/personal/activities.d.ts.map +1 -0
- package/dist/api/personal/activities.js +50 -0
- package/dist/api/personal/activities.js.map +1 -0
- package/dist/api/personal/boards.d.ts +9 -0
- package/dist/api/personal/boards.d.ts.map +1 -0
- package/dist/api/personal/boards.js +16 -0
- package/dist/api/personal/boards.js.map +1 -0
- package/dist/api/personal/index.d.ts +17 -0
- package/dist/api/personal/index.d.ts.map +1 -0
- package/dist/api/personal/index.js +37 -0
- package/dist/api/personal/index.js.map +1 -0
- package/dist/api/personal/jobs.d.ts +13 -0
- package/dist/api/personal/jobs.d.ts.map +1 -0
- package/dist/api/personal/jobs.js +31 -0
- package/dist/api/personal/jobs.js.map +1 -0
- package/dist/api/personal/user.d.ts +8 -0
- package/dist/api/personal/user.d.ts.map +1 -0
- package/dist/api/personal/user.js +13 -0
- package/dist/api/personal/user.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +501 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/capture-session.d.ts +10 -0
- package/dist/commands/capture-session.d.ts.map +1 -0
- package/dist/commands/capture-session.js +478 -0
- package/dist/commands/capture-session.js.map +1 -0
- package/dist/config/clerk-session-manager.d.ts +44 -0
- package/dist/config/clerk-session-manager.d.ts.map +1 -0
- package/dist/config/clerk-session-manager.js +232 -0
- package/dist/config/clerk-session-manager.js.map +1 -0
- package/dist/config/config-manager.d.ts +15 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +51 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/keychain-manager.d.ts +6 -0
- package/dist/config/keychain-manager.d.ts.map +1 -0
- package/dist/config/keychain-manager.js +37 -0
- package/dist/config/keychain-manager.js.map +1 -0
- package/dist/config/token-capture.d.ts +11 -0
- package/dist/config/token-capture.d.ts.map +1 -0
- package/dist/config/token-capture.js +252 -0
- package/dist/config/token-capture.js.map +1 -0
- package/dist/config/token-manager.d.ts +38 -0
- package/dist/config/token-manager.d.ts.map +1 -0
- package/dist/config/token-manager.js +153 -0
- package/dist/config/token-manager.js.map +1 -0
- package/dist/lib/list-options.d.ts +69 -0
- package/dist/lib/list-options.d.ts.map +1 -0
- package/dist/lib/list-options.js +299 -0
- package/dist/lib/list-options.js.map +1 -0
- package/dist/types/personal.d.ts +113 -0
- package/dist/types/personal.d.ts.map +1 -0
- package/dist/types/personal.js +4 -0
- package/dist/types/personal.js.map +1 -0
- package/docs/AUTOMATIC-PUBLISHING.md +520 -0
- package/docs/CHANGELOG-AUTOMATION.md +418 -0
- package/docs/CI-CD-SETUP.md +582 -0
- package/docs/DEV-SETUP.md +512 -0
- package/docs/ENHANCEMENT-PLAN.md +204 -0
- package/docs/ENTITY-TYPES.md +462 -0
- package/docs/GITHUB-ACTIONS-GUIDE.md +367 -0
- package/docs/NPM-PUBLISHING.md +324 -0
- package/docs/OUTPUT-EXAMPLES.md +414 -0
- package/docs/OUTPUT-FORMATS.md +299 -0
- package/docs/TESTING.md +216 -0
- package/eslint.config.js +68 -0
- package/package.json +64 -0
- package/src/api/client.ts +88 -0
- package/src/api/personal/activities.ts +66 -0
- package/src/api/personal/boards.ts +14 -0
- package/src/api/personal/index.ts +25 -0
- package/src/api/personal/jobs.ts +33 -0
- package/src/api/personal/user.ts +10 -0
- package/src/cli.ts +487 -0
- package/src/commands/capture-session.ts +582 -0
- package/src/config/clerk-session-manager.ts +263 -0
- package/src/config/config-manager.ts +56 -0
- package/src/config/keychain-manager.ts +30 -0
- package/src/config/token-capture.ts +233 -0
- package/src/config/token-manager.ts +139 -0
- package/src/lib/list-options.ts +370 -0
- package/src/types/personal.ts +114 -0
- package/tests/example.test.ts +130 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
# Huntr CLI
|
|
2
|
+
|
|
3
|
+
[](https://github.com/mattmck/huntr-cli/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/huntr-cli)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
A command-line interface for managing your Huntr job search board. Track activities, search jobs, and manage your application pipeline from the terminal.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- 🔐 **Session-based auth** — Log in once via browser, CLI auto-refreshes tokens
|
|
12
|
+
- 📊 **Multiple output formats** — Table (default), JSON, CSV
|
|
13
|
+
- 🔍 **Flexible filtering** — Filter activities by time window and action types
|
|
14
|
+
- 🎯 **Your board only** — Personal user API (not organization-scoped)
|
|
15
|
+
- 🔒 **Secure storage** — Session data stored in macOS Keychain
|
|
16
|
+
- ⚡ **Fast** — No copy-paste token juggling, session persists for weeks
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
### Prerequisites
|
|
21
|
+
|
|
22
|
+
- Node.js 18 or higher
|
|
23
|
+
- macOS with Chrome/Chromium for session capture
|
|
24
|
+
- A Huntr account (free at [huntr.co](https://huntr.co))
|
|
25
|
+
|
|
26
|
+
### Install from npm (recommended)
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g huntr-cli
|
|
30
|
+
# Now use: huntr <command>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Install from source
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
git clone https://github.com/mattmck/huntr-cli.git
|
|
37
|
+
cd huntr-cli
|
|
38
|
+
npm install
|
|
39
|
+
npm run build
|
|
40
|
+
# Use: huntr <command>
|
|
41
|
+
# Or: npm link (to use 'huntr' command globally)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
### 1. Set up session-based authentication
|
|
47
|
+
|
|
48
|
+
The easiest way — no token copy-paste needed:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
huntr config capture-session
|
|
52
|
+
# Automatically extracts your Clerk session from your browser
|
|
53
|
+
# Saves to keychain, tests the refresh
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Verify it works:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
huntr config test-session
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. List your activities
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
huntr activities list <your-board-id> --days 7 --format csv > activities.csv
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Replace `<your-board-id>` with your actual board ID (you can get it from huntr.co/home in your browser, or run `me` to find it).
|
|
69
|
+
|
|
70
|
+
## Authentication
|
|
71
|
+
|
|
72
|
+
The CLI supports multiple auth methods, with this priority order:
|
|
73
|
+
|
|
74
|
+
1. **CLI argument** (`--token <token>`)
|
|
75
|
+
2. **Environment variable** (`HUNTR_API_TOKEN`)
|
|
76
|
+
3. **Session-based (macOS only)** — Auto-refreshing browser session
|
|
77
|
+
4. **Config file** (`~/.huntr/config.json`)
|
|
78
|
+
5. **macOS Keychain** (static token)
|
|
79
|
+
6. **Interactive prompt**
|
|
80
|
+
|
|
81
|
+
### Recommended Method: Session-Based Auth (macOS)
|
|
82
|
+
|
|
83
|
+
Most convenient for regular use — logs in once via browser, tokens auto-refresh:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Extract Clerk session from your browser and save to Keychain
|
|
87
|
+
huntr config capture-session
|
|
88
|
+
|
|
89
|
+
# Verify it works
|
|
90
|
+
huntr config test-session
|
|
91
|
+
|
|
92
|
+
# From now on, all commands auto-refresh tokens before use
|
|
93
|
+
huntr activities list <board-id>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
If capture fails, check Chrome DevTools:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
huntr config check-cdp
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Cross-Platform: Environment Variable (All Platforms)
|
|
103
|
+
|
|
104
|
+
**For non-Mac users or CI/CD environments**, use environment variables or a `.env` file:
|
|
105
|
+
|
|
106
|
+
Create a `.env` file in your huntr-cli project root:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# .env
|
|
110
|
+
HUNTR_API_TOKEN=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Then use the CLI:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
huntr activities list <board-id>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The CLI automatically loads `.env` without any special flags. **Note:** Keep `.env` out of version control (add to `.gitignore`).
|
|
120
|
+
|
|
121
|
+
To get your token, log into Huntr and run in your browser DevTools console:
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
await window.Clerk.session.getToken()
|
|
125
|
+
// Copy the output and paste into your .env file
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Method: Static API Token (All Platforms)
|
|
129
|
+
|
|
130
|
+
For one-off use or scripting, save a token to the config file:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# In DevTools console on huntr.co:
|
|
134
|
+
# await window.Clerk.session.getToken() → copy result
|
|
135
|
+
|
|
136
|
+
huntr config set-token "<token>"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Check your configured sources:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
huntr config show-token
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Clear tokens:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
huntr config clear-token --all
|
|
149
|
+
huntr config clear-session # Clear saved browser session
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Method: Command-Line or Shell Environment
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Via CLI argument
|
|
156
|
+
huntr activities list <board-id> --token <your-jwt>
|
|
157
|
+
|
|
158
|
+
# Via shell environment variable (one-time)
|
|
159
|
+
HUNTR_API_TOKEN=<your-jwt> huntr activities list <board-id>
|
|
160
|
+
|
|
161
|
+
# Via persistent shell environment
|
|
162
|
+
export HUNTR_API_TOKEN=<your-jwt>
|
|
163
|
+
huntr activities list <board-id>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Usage
|
|
167
|
+
|
|
168
|
+
### User Profile
|
|
169
|
+
|
|
170
|
+
Show your Huntr user info:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
huntr me
|
|
174
|
+
huntr me --json
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Boards
|
|
178
|
+
|
|
179
|
+
List your boards:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
huntr boards list
|
|
183
|
+
huntr boards list --format json
|
|
184
|
+
huntr boards list --format csv
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Get details for a specific board:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
huntr boards get <board-id>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Jobs
|
|
194
|
+
|
|
195
|
+
List all jobs on a board:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
huntr jobs list <board-id>
|
|
199
|
+
huntr jobs list <board-id> --format csv
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Get details for a specific job:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
huntr jobs get <board-id> <job-id>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Activities
|
|
209
|
+
|
|
210
|
+
List activities (job tracking actions you've taken):
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# All activities
|
|
214
|
+
huntr activities list <board-id>
|
|
215
|
+
|
|
216
|
+
# Last 7 days
|
|
217
|
+
huntr activities list <board-id> --days 7
|
|
218
|
+
|
|
219
|
+
# Last 7 days, JSON output
|
|
220
|
+
huntr activities list <board-id> --days 7 --format json
|
|
221
|
+
|
|
222
|
+
# Last 7 days, CSV output (for spreadsheet import)
|
|
223
|
+
huntr activities list <board-id> --days 7 --format csv
|
|
224
|
+
|
|
225
|
+
# Filter by action types
|
|
226
|
+
huntr activities list <board-id> --types JOB_MOVED,NOTE_CREATED
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Export last 7 days as CSV:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
huntr activities week-csv <board-id> > activities.csv
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Global Options
|
|
236
|
+
|
|
237
|
+
- `-t, --token <token>` — Specify API token (overrides all other sources)
|
|
238
|
+
- `-h, --help` — Show help for any command
|
|
239
|
+
|
|
240
|
+
### List Command Options
|
|
241
|
+
|
|
242
|
+
Available on `boards list`, `jobs list`, and `activities list`:
|
|
243
|
+
|
|
244
|
+
- `-f, --format <format>` — Output format: `table` (default), `json`, or `csv`
|
|
245
|
+
- `-j, --json` — Same as `--format json` (legacy alias)
|
|
246
|
+
|
|
247
|
+
For `activities list` only:
|
|
248
|
+
|
|
249
|
+
- `-d, --days <days>` — Filter to last N days (e.g., `--days 7` for past week)
|
|
250
|
+
- `-w, --week` — Filter to last 7 days (legacy alias for `--days 7`)
|
|
251
|
+
- `--types <types>` — Comma-separated action types (e.g., `JOB_MOVED,NOTE_CREATED`)
|
|
252
|
+
|
|
253
|
+
## Examples
|
|
254
|
+
|
|
255
|
+
### Export your last week of activity to a spreadsheet
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
huntr activities list 68bf9e33f871e5004a5eb58e --days 7 --format csv > week.csv
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Then open `week.csv` in Excel or Google Sheets.
|
|
262
|
+
|
|
263
|
+
### Get JSON of your jobs for scripting
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
huntr jobs list <board-id> --json | jq '.[] | {ID, Title}'
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Check which auth sources are configured
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
huntr config show-token
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Output:
|
|
276
|
+
```
|
|
277
|
+
Configured authentication sources:
|
|
278
|
+
Environment variable (HUNTR_API_TOKEN): ✗ Not set
|
|
279
|
+
Clerk session (auto-refresh): ✓ Set
|
|
280
|
+
Config file (~/.huntr/config.json): ✗ Not set
|
|
281
|
+
macOS Keychain: ✗ Not set
|
|
282
|
+
|
|
283
|
+
✓ Clerk session active — tokens refresh automatically.
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Development
|
|
287
|
+
|
|
288
|
+
Run in development mode with TypeScript hot-reload:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
npm run dev -- activities list <board-id>
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Build for production:
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
npm run build
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Run tests (if added):
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
npm test
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## Finding Your Board ID
|
|
307
|
+
|
|
308
|
+
1. Go to [huntr.co/home](https://huntr.co/home)
|
|
309
|
+
2. Open DevTools (F12)
|
|
310
|
+
3. Run: `window.location.href` and note the URL
|
|
311
|
+
4. Or run: `huntr me --json` to see your boards
|
|
312
|
+
|
|
313
|
+
## Troubleshooting
|
|
314
|
+
|
|
315
|
+
### "Session expired or invalid (HTTP 401)"
|
|
316
|
+
|
|
317
|
+
Your browser session has expired or been revoked. Re-run (macOS only):
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
huntr config capture-session
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**Non-Mac users:** Use the `.env` file method instead (see "Cross-Platform: Environment Variable" above).
|
|
324
|
+
|
|
325
|
+
### "No Clerk session stored"
|
|
326
|
+
|
|
327
|
+
You haven't set up session-based auth yet. This is macOS-only. Options:
|
|
328
|
+
|
|
329
|
+
**On macOS:**
|
|
330
|
+
```bash
|
|
331
|
+
huntr config capture-session
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**On other platforms:**
|
|
335
|
+
Create a `.env` file with your token:
|
|
336
|
+
```bash
|
|
337
|
+
echo "HUNTR_API_TOKEN=<your-token>" > .env
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### "Could not connect to Chrome DevTools Protocol"
|
|
341
|
+
|
|
342
|
+
Session capture (macOS only) needs Chrome running with remote debugging. Try:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
# Quit all Chrome instances first
|
|
346
|
+
killall "Google Chrome"
|
|
347
|
+
|
|
348
|
+
# Then re-run
|
|
349
|
+
huntr config capture-session
|
|
350
|
+
# (It will auto-launch Chrome)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Or manually launch Chrome with:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 https://huntr.co/home
|
|
357
|
+
# Then run: huntr config capture-session
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### "No token found" on non-Mac platforms
|
|
361
|
+
|
|
362
|
+
Session-based auth only works on macOS. Use one of these methods instead:
|
|
363
|
+
|
|
364
|
+
**Option 1: .env file (recommended for single machine)**
|
|
365
|
+
```bash
|
|
366
|
+
# Create .env in your huntr-cli directory
|
|
367
|
+
echo "HUNTR_API_TOKEN=<your-token>" > .env
|
|
368
|
+
huntr activities list <board-id>
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Option 2: Save to config file (all platforms)**
|
|
372
|
+
```bash
|
|
373
|
+
huntr config set-token "<your-token>"
|
|
374
|
+
huntr activities list <board-id>
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**Option 3: Shell environment variable**
|
|
378
|
+
```bash
|
|
379
|
+
export HUNTR_API_TOKEN=<your-token>
|
|
380
|
+
huntr activities list <board-id>
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## License
|
|
384
|
+
|
|
385
|
+
ISC
|
package/ROADMAP.md
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Huntr CLI Roadmap
|
|
2
|
+
|
|
3
|
+
## Current Status (v1.0.0) ✅
|
|
4
|
+
|
|
5
|
+
### Completed Features
|
|
6
|
+
- ✅ Session-based auth (macOS Keychain with auto-refresh)
|
|
7
|
+
- ✅ Static token auth (env var, config file, CLI flag)
|
|
8
|
+
- ✅ Interactive token prompt
|
|
9
|
+
- ✅ All GET endpoints (read-only)
|
|
10
|
+
- ✅ Multiple output formats (table, JSON, CSV)
|
|
11
|
+
- ✅ List command filtering (--days, --types, --format)
|
|
12
|
+
- ✅ Shell completions (bash, zsh, .fish)
|
|
13
|
+
- ✅ NPM package ready to publish
|
|
14
|
+
- ✅ Cross-platform support (.env file for non-Mac)
|
|
15
|
+
- ✅ Comprehensive documentation
|
|
16
|
+
|
|
17
|
+
### API Endpoints Implemented
|
|
18
|
+
| Endpoint | Command | Status |
|
|
19
|
+
|----------|---------|--------|
|
|
20
|
+
| `GET /me` | `huntr me` | ✅ |
|
|
21
|
+
| `GET /boards` | `huntr boards list` | ✅ |
|
|
22
|
+
| `GET /boards/{id}` | `huntr boards get <id>` | ✅ |
|
|
23
|
+
| `GET /jobs` | `huntr jobs list <board-id>` | ✅ |
|
|
24
|
+
| `GET /jobs/{id}` | `huntr jobs get <board-id> <job-id>` | ✅ |
|
|
25
|
+
| `GET /activities` | `huntr activities list <board-id>` | ✅ |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Near-Term Enhancements (v1.1.x)
|
|
30
|
+
|
|
31
|
+
### Testing & Quality
|
|
32
|
+
- [ ] Unit tests for API client
|
|
33
|
+
- [ ] Integration tests for CLI commands
|
|
34
|
+
- [ ] Test coverage report
|
|
35
|
+
- [ ] CI/CD pipeline (GitHub Actions)
|
|
36
|
+
|
|
37
|
+
### Data Export
|
|
38
|
+
- [ ] Export to Excel (.xlsx)
|
|
39
|
+
- [ ] Export to PDF report
|
|
40
|
+
- [ ] Email export results
|
|
41
|
+
- [ ] S3 upload capability
|
|
42
|
+
|
|
43
|
+
### Search & Filter Enhancements
|
|
44
|
+
- [ ] Full-text search in job titles/descriptions
|
|
45
|
+
- [ ] Filter by date range (--from, --to)
|
|
46
|
+
- [ ] Filter by job status
|
|
47
|
+
- [ ] Sort options (--sort, --order)
|
|
48
|
+
|
|
49
|
+
### User Experience
|
|
50
|
+
- [ ] Better error messages
|
|
51
|
+
- [ ] Progress bars for long operations
|
|
52
|
+
- [ ] Quiet mode (--silent)
|
|
53
|
+
- [ ] Verbose mode (--verbose)
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Future Features (v2.0.x)
|
|
58
|
+
|
|
59
|
+
### Data Visualization
|
|
60
|
+
- [ ] Dashboard with stats (web UI)
|
|
61
|
+
- [ ] Charts & analytics
|
|
62
|
+
- [ ] Heatmaps of application timeline
|
|
63
|
+
- [ ] Success rate analysis
|
|
64
|
+
|
|
65
|
+
### Webhooks & Notifications
|
|
66
|
+
- [ ] Slack integration
|
|
67
|
+
- [ ] Email notifications on new jobs
|
|
68
|
+
- [ ] Desktop notifications
|
|
69
|
+
- [ ] Custom webhook support
|
|
70
|
+
|
|
71
|
+
### Data Sync
|
|
72
|
+
- [ ] Automatic sync to local database
|
|
73
|
+
- [ ] Offline mode
|
|
74
|
+
- [ ] Conflict resolution for multi-device use
|
|
75
|
+
|
|
76
|
+
### Advanced Features (Requires API Support)
|
|
77
|
+
- [ ] Create/edit jobs from CLI
|
|
78
|
+
- [ ] Update job status
|
|
79
|
+
- [ ] Add notes to jobs
|
|
80
|
+
- [ ] Bulk operations
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Questions for Product Direction
|
|
85
|
+
|
|
86
|
+
These would require coordination with Huntr:
|
|
87
|
+
|
|
88
|
+
1. **Write API**: Does Huntr expose endpoints to create/edit jobs and activities?
|
|
89
|
+
2. **Real-time updates**: Would a webhook API be valuable?
|
|
90
|
+
3. **Data access**: Any restrictions on exporting/analyzing user data?
|
|
91
|
+
4. **Authentication**: Can service accounts / API tokens be generated instead of browser-based?
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Known Limitations
|
|
96
|
+
|
|
97
|
+
### Current Scope (By Design)
|
|
98
|
+
- **Read-only**: All operations are GET. No create/update/delete from CLI.
|
|
99
|
+
- **macOS session auth**: Keychain storage only on macOS (env vars work on all platforms)
|
|
100
|
+
- **Manual token renewal**: Session cookies rotate every few weeks
|
|
101
|
+
- **No real-time**: Pulls data on-demand, no WebSocket support
|
|
102
|
+
|
|
103
|
+
### To Address
|
|
104
|
+
- [ ] Windows/Linux better support (PowerShell, snap packages)
|
|
105
|
+
- [ ] Better error recovery (retry logic)
|
|
106
|
+
- [ ] Caching for repeated queries
|
|
107
|
+
- [ ] Rate limiting awareness
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Dependencies to Monitor
|
|
112
|
+
|
|
113
|
+
| Package | Current | Purpose | Risk |
|
|
114
|
+
|---------|---------|---------|------|
|
|
115
|
+
| commander | 14.0.3 | CLI framework | ✅ Well-maintained |
|
|
116
|
+
| axios | 1.13.5 | HTTP client | ✅ Very stable |
|
|
117
|
+
| keytar | 7.9.0 | Keychain access | ⚠️ Native binding, macOS only |
|
|
118
|
+
| dotenv | 17.3.1 | Env loading | ✅ Stable |
|
|
119
|
+
| @inquirer/prompts | 8.2.1 | Interactive CLI | ✅ Good |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Release Strategy
|
|
124
|
+
|
|
125
|
+
### Semantic Versioning
|
|
126
|
+
- **1.0.x**: Bug fixes, documentation
|
|
127
|
+
- **1.1.x**: Minor features (export formats, filtering)
|
|
128
|
+
- **1.2.x**: UX improvements (better errors, progress bars)
|
|
129
|
+
- **2.0.x**: Major features (dashboards, webhooks, write API)
|
|
130
|
+
|
|
131
|
+
### Timeline Estimate
|
|
132
|
+
- v1.0.0: Feb 2026 (current)
|
|
133
|
+
- v1.1.0: March 2026 (testing + export)
|
|
134
|
+
- v1.2.0: April 2026 (UX improvements)
|
|
135
|
+
- v2.0.0: Q3 2026 (dashboards if write API exists)
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Getting Help
|
|
140
|
+
|
|
141
|
+
- **Issues**: GitHub issues for bugs
|
|
142
|
+
- **Feature requests**: GitHub discussions
|
|
143
|
+
- **Contribute**: See CONTRIBUTING.md
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Checklist for Next Maintainer
|
|
148
|
+
|
|
149
|
+
When handing off or updating:
|
|
150
|
+
|
|
151
|
+
- [ ] Update version in package.json
|
|
152
|
+
- [ ] Update CHANGELOG.md
|
|
153
|
+
- [ ] Update this ROADMAP.md
|
|
154
|
+
- [ ] Update completions if new commands added
|
|
155
|
+
- [ ] Test on macOS, Linux, Windows
|
|
156
|
+
- [ ] Verify npm publish works
|
|
157
|
+
- [ ] Create GitHub release
|
|
158
|
+
- [ ] Update README with new features
|