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.
Files changed (117) hide show
  1. package/.env.example +7 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
  5. package/.github/labels.json +92 -0
  6. package/.github/pull_request_template.md +64 -0
  7. package/.github/workflows/ci.yml +87 -0
  8. package/.github/workflows/labels.yml +27 -0
  9. package/.github/workflows/manual-publish.yml +105 -0
  10. package/.github/workflows/publish.yml +57 -0
  11. package/.github/workflows/release.yml +124 -0
  12. package/.github/workflows/security-audit.yml +44 -0
  13. package/.husky/pre-commit +12 -0
  14. package/.husky/pre-push +27 -0
  15. package/.lintstagedrc.json +3 -0
  16. package/AGENTS.md +449 -0
  17. package/CHANGELOG.md +38 -0
  18. package/CHANGES.md +259 -0
  19. package/LICENSE +15 -0
  20. package/PUBLISHING.md +191 -0
  21. package/README.md +385 -0
  22. package/ROADMAP.md +158 -0
  23. package/SETUP-COMPLETE.md +446 -0
  24. package/WORKFLOW-SUMMARY.md +368 -0
  25. package/completions/_huntr +168 -0
  26. package/completions/huntr.1 +266 -0
  27. package/completions/huntr.bash +91 -0
  28. package/dist/api/client.d.ts +14 -0
  29. package/dist/api/client.d.ts.map +1 -0
  30. package/dist/api/client.js +74 -0
  31. package/dist/api/client.js.map +1 -0
  32. package/dist/api/personal/activities.d.ts +20 -0
  33. package/dist/api/personal/activities.d.ts.map +1 -0
  34. package/dist/api/personal/activities.js +50 -0
  35. package/dist/api/personal/activities.js.map +1 -0
  36. package/dist/api/personal/boards.d.ts +9 -0
  37. package/dist/api/personal/boards.d.ts.map +1 -0
  38. package/dist/api/personal/boards.js +16 -0
  39. package/dist/api/personal/boards.js.map +1 -0
  40. package/dist/api/personal/index.d.ts +17 -0
  41. package/dist/api/personal/index.d.ts.map +1 -0
  42. package/dist/api/personal/index.js +37 -0
  43. package/dist/api/personal/index.js.map +1 -0
  44. package/dist/api/personal/jobs.d.ts +13 -0
  45. package/dist/api/personal/jobs.d.ts.map +1 -0
  46. package/dist/api/personal/jobs.js +31 -0
  47. package/dist/api/personal/jobs.js.map +1 -0
  48. package/dist/api/personal/user.d.ts +8 -0
  49. package/dist/api/personal/user.d.ts.map +1 -0
  50. package/dist/api/personal/user.js +13 -0
  51. package/dist/api/personal/user.js.map +1 -0
  52. package/dist/cli.d.ts +3 -0
  53. package/dist/cli.d.ts.map +1 -0
  54. package/dist/cli.js +501 -0
  55. package/dist/cli.js.map +1 -0
  56. package/dist/commands/capture-session.d.ts +10 -0
  57. package/dist/commands/capture-session.d.ts.map +1 -0
  58. package/dist/commands/capture-session.js +478 -0
  59. package/dist/commands/capture-session.js.map +1 -0
  60. package/dist/config/clerk-session-manager.d.ts +44 -0
  61. package/dist/config/clerk-session-manager.d.ts.map +1 -0
  62. package/dist/config/clerk-session-manager.js +232 -0
  63. package/dist/config/clerk-session-manager.js.map +1 -0
  64. package/dist/config/config-manager.d.ts +15 -0
  65. package/dist/config/config-manager.d.ts.map +1 -0
  66. package/dist/config/config-manager.js +51 -0
  67. package/dist/config/config-manager.js.map +1 -0
  68. package/dist/config/keychain-manager.d.ts +6 -0
  69. package/dist/config/keychain-manager.d.ts.map +1 -0
  70. package/dist/config/keychain-manager.js +37 -0
  71. package/dist/config/keychain-manager.js.map +1 -0
  72. package/dist/config/token-capture.d.ts +11 -0
  73. package/dist/config/token-capture.d.ts.map +1 -0
  74. package/dist/config/token-capture.js +252 -0
  75. package/dist/config/token-capture.js.map +1 -0
  76. package/dist/config/token-manager.d.ts +38 -0
  77. package/dist/config/token-manager.d.ts.map +1 -0
  78. package/dist/config/token-manager.js +153 -0
  79. package/dist/config/token-manager.js.map +1 -0
  80. package/dist/lib/list-options.d.ts +69 -0
  81. package/dist/lib/list-options.d.ts.map +1 -0
  82. package/dist/lib/list-options.js +299 -0
  83. package/dist/lib/list-options.js.map +1 -0
  84. package/dist/types/personal.d.ts +113 -0
  85. package/dist/types/personal.d.ts.map +1 -0
  86. package/dist/types/personal.js +4 -0
  87. package/dist/types/personal.js.map +1 -0
  88. package/docs/AUTOMATIC-PUBLISHING.md +520 -0
  89. package/docs/CHANGELOG-AUTOMATION.md +418 -0
  90. package/docs/CI-CD-SETUP.md +582 -0
  91. package/docs/DEV-SETUP.md +512 -0
  92. package/docs/ENHANCEMENT-PLAN.md +204 -0
  93. package/docs/ENTITY-TYPES.md +462 -0
  94. package/docs/GITHUB-ACTIONS-GUIDE.md +367 -0
  95. package/docs/NPM-PUBLISHING.md +324 -0
  96. package/docs/OUTPUT-EXAMPLES.md +414 -0
  97. package/docs/OUTPUT-FORMATS.md +299 -0
  98. package/docs/TESTING.md +216 -0
  99. package/eslint.config.js +68 -0
  100. package/package.json +64 -0
  101. package/src/api/client.ts +88 -0
  102. package/src/api/personal/activities.ts +66 -0
  103. package/src/api/personal/boards.ts +14 -0
  104. package/src/api/personal/index.ts +25 -0
  105. package/src/api/personal/jobs.ts +33 -0
  106. package/src/api/personal/user.ts +10 -0
  107. package/src/cli.ts +487 -0
  108. package/src/commands/capture-session.ts +582 -0
  109. package/src/config/clerk-session-manager.ts +263 -0
  110. package/src/config/config-manager.ts +56 -0
  111. package/src/config/keychain-manager.ts +30 -0
  112. package/src/config/token-capture.ts +233 -0
  113. package/src/config/token-manager.ts +139 -0
  114. package/src/lib/list-options.ts +370 -0
  115. package/src/types/personal.ts +114 -0
  116. package/tests/example.test.ts +130 -0
  117. package/tsconfig.json +19 -0
package/README.md ADDED
@@ -0,0 +1,385 @@
1
+ # Huntr CLI
2
+
3
+ [![CI](https://github.com/mattmck/huntr-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/mattmck/huntr-cli/actions/workflows/ci.yml)
4
+ [![npm version](https://img.shields.io/npm/v/huntr-cli.svg)](https://www.npmjs.com/package/huntr-cli)
5
+ [![License: ISC](https://img.shields.io/badge/license-ISC-green.svg)](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