hotsheet 0.14.1 → 0.15.0
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 +48 -15
- package/dist/cli.js +19713 -16776
- package/dist/client/app.global.js +116 -53
- package/dist/client/styles.css +1 -1
- package/dist/plugins/demo-plugin/index.js +189 -0
- package/dist/plugins/demo-plugin/manifest.json +106 -0
- package/dist/plugins/github-issues/index.js +495 -0
- package/dist/plugins/github-issues/manifest.json +141 -0
- package/package.json +10 -4
package/README.md
CHANGED
|
@@ -60,9 +60,9 @@ The workflow:
|
|
|
60
60
|
1. **You** create and prioritize tickets in Hot Sheet
|
|
61
61
|
2. **Hot Sheet** syncs an `Up Next` worklist to `.hotsheet/worklist.md`
|
|
62
62
|
3. **Your AI tool** reads the worklist and works through it
|
|
63
|
-
4. **You**
|
|
63
|
+
4. **You** review, give feedback, and add new tickets
|
|
64
64
|
|
|
65
|
-
The loop stays tight because the AI always knows what to work on next.
|
|
65
|
+
The loop stays tight because the AI always knows what to work on next — and you always know what it's doing.
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
@@ -80,31 +80,33 @@ The loop stays tight because the AI always knows what to work on next.
|
|
|
80
80
|
<img src="docs/demo-3.png" alt="Sidebar with custom views and category filtering" width="900">
|
|
81
81
|
</p>
|
|
82
82
|
|
|
83
|
-
**Column view** — switch to a kanban-style board grouped by status. Drag tickets between columns to change status
|
|
83
|
+
**Column view** — switch to a kanban-style board grouped by status. Drag tickets between columns to change status. Click column headers to select all tickets in a column. Drag onto sidebar items to set category, priority, or view.
|
|
84
84
|
|
|
85
85
|
<p align="center">
|
|
86
86
|
<img src="docs/demo-7.png" alt="Column view showing tickets organized by status in a kanban board" width="900">
|
|
87
87
|
</p>
|
|
88
88
|
|
|
89
|
-
**Batch operations** — select multiple tickets to bulk-update category, priority, status, or Up Next. The overflow menu
|
|
89
|
+
**Batch operations** — select multiple tickets to bulk-update category, priority, status, or Up Next. The overflow menu provides duplicate, tags, mark as read/unread, move to backlog, and archive actions — all with icons. Right-click any ticket for a full context menu with submenus.
|
|
90
90
|
|
|
91
91
|
<p align="center">
|
|
92
92
|
<img src="docs/demo-5.png" alt="Multiple tickets selected with the batch toolbar and context menu" width="900">
|
|
93
93
|
</p>
|
|
94
94
|
|
|
95
|
-
**Detail panel** — side or bottom orientation (toggle in the toolbar), resizable, collapsible
|
|
95
|
+
**Detail panel** — side or bottom orientation (toggle in the toolbar), resizable, collapsible. Shows category, priority, status, and Up Next in a compact grid, plus title, details, tags, attachments, and editable notes. Click a note to edit inline; right-click to delete.
|
|
96
96
|
|
|
97
97
|
<p align="center">
|
|
98
98
|
<img src="docs/demo-6.png" alt="Detail panel in bottom orientation showing ticket details, tags, and notes" width="900">
|
|
99
99
|
</p>
|
|
100
100
|
|
|
101
|
+
**Unread indicators** — when tickets are created or updated externally (by AI tools, sync plugins, or the API), a blue dot appears next to the title. Your own edits in the UI never trigger unread status. Mark as Read/Unread from the context menu or batch toolbar. Tickets are automatically marked as read when you open them in the detail panel.
|
|
102
|
+
|
|
101
103
|
**Stats dashboard** — click the sidebar widget to open a full analytics page with throughput charts, created-vs-completed trends, cumulative flow diagram, category breakdown, and cycle time scatter plot. Hover any chart for detailed tooltips.
|
|
102
104
|
|
|
103
105
|
<p align="center">
|
|
104
106
|
<img src="docs/demo-8.png" alt="Stats dashboard showing throughput, flow, and cycle time charts" width="900">
|
|
105
107
|
</p>
|
|
106
108
|
|
|
107
|
-
**Multi-project tabs** — open multiple projects in a single window. Tabs appear automatically when you register a second project via
|
|
109
|
+
**Multi-project tabs** — open multiple projects in a single window. Each project remembers its own sidebar view, settings, sort preferences, and layout. Tabs appear automatically when you register a second project via Open Folder (`Cmd+O`). Drag tabs to reorder, right-click for close options and "Show in Finder," switch with `Cmd+Shift+[/]`.
|
|
108
110
|
|
|
109
111
|
<p align="center">
|
|
110
112
|
<img src="docs/demo-10.png" alt="Multiple project tabs showing independent ticket lists with tab context menu" width="900">
|
|
@@ -117,7 +119,7 @@ The loop stays tight because the AI always knows what to work on next.
|
|
|
117
119
|
- **Five priority levels** — Highest to Lowest, with Lucide chevron icons, sortable and filterable
|
|
118
120
|
- **Up Next flag** — star tickets to add them to the AI worklist
|
|
119
121
|
- **Drag and drop** — drag tickets onto sidebar views to change category, priority, or status; drop files onto the detail panel to attach; reorder project tabs and custom views
|
|
120
|
-
- **Right-click context menus** — full context menu on tickets with category/priority/status submenus, tags, duplicate, backlog, archive, delete
|
|
122
|
+
- **Right-click context menus** — full context menu on tickets with category/priority/status submenus, tags, duplicate, mark as read/unread, backlog, archive, delete
|
|
121
123
|
- **Search** — full-text search across ticket titles, details, ticket numbers, and tags
|
|
122
124
|
- **Print** — print the dashboard, all tickets, selected tickets, or individual tickets in checklist, summary, or full-detail format
|
|
123
125
|
- **Keyboard-driven** — `Enter` to create, `Cmd+I/B/F/R/K/G` for categories, `Alt+1-5` for priority, `Cmd+D` for Up Next, `Delete` to trash, `Cmd+P` to print, `Cmd+Z/Shift+Z` for undo/redo
|
|
@@ -128,6 +130,7 @@ The loop stays tight because the AI always knows what to work on next.
|
|
|
128
130
|
- **Markdown sync** — `worklist.md` and `open-tickets.md` auto-generated on every change
|
|
129
131
|
- **Automatic backups** — tiered snapshots (every 5 min, hourly, daily) with preview-before-restore recovery
|
|
130
132
|
- **Auto-cleanup** — verified tickets auto-archive after a configurable number of days; trashed tickets auto-delete
|
|
133
|
+
- **Portable settings** — all project settings stored in `settings.json` for easy copying between projects
|
|
131
134
|
- **App icon variants** — 9 icon variants to choose from in Settings, applied instantly to the dock icon
|
|
132
135
|
- **Fully local** — embedded PostgreSQL (PGLite), no network calls, no accounts, no telemetry
|
|
133
136
|
|
|
@@ -137,7 +140,7 @@ The loop stays tight because the AI always knows what to work on next.
|
|
|
137
140
|
|
|
138
141
|
The exported worklist is plain markdown. Any AI tool that can read files can use it.
|
|
139
142
|
|
|
140
|
-
Star tickets as "Up Next" and they appear in the worklist, sorted by priority. As the AI works, it updates ticket status and appends notes — visible right in the detail panel.
|
|
143
|
+
Star tickets as "Up Next" and they appear in the worklist, sorted by priority. As the AI works, it updates ticket status and appends notes — visible right in the detail panel. Tickets modified by the AI show a blue unread dot so you know what to review.
|
|
141
144
|
|
|
142
145
|
<p align="center">
|
|
143
146
|
<img src="docs/demo-4.png" alt="Up Next view showing prioritized tickets with AI progress notes in the detail panel" width="900">
|
|
@@ -161,11 +164,12 @@ Hot Sheet automatically generates skill files for Claude Code (as well as Cursor
|
|
|
161
164
|
|
|
162
165
|
### Claude Channel Integration (Experimental)
|
|
163
166
|
|
|
164
|
-
Hot Sheet can push events directly to a running Claude Code session via MCP channels. Enable it in Settings
|
|
167
|
+
Hot Sheet can push events directly to a running Claude Code session via MCP channels. Enable it in Settings:
|
|
165
168
|
|
|
166
|
-
- **Play button** — appears in the sidebar. Single-click sends the worklist to Claude on demand.
|
|
169
|
+
- **Play button** — appears in the sidebar. Single-click sends the worklist to Claude on demand. Pending worklist changes are flushed immediately so the AI always reads up-to-date data.
|
|
167
170
|
- **Auto mode** — double-click the play button to enable automatic mode. Claude is triggered immediately, then continues monitoring for new Up Next items with debounce. Exponential backoff prevents runaway retries.
|
|
168
171
|
- **Auto-prioritize** — when no tickets are flagged as Up Next, Claude automatically evaluates open tickets and picks the most important ones to work on.
|
|
172
|
+
- **Feedback loop** — Claude can request user input by adding notes prefixed with `FEEDBACK NEEDED:` or `IMMEDIATE FEEDBACK NEEDED:`. A dialog appears in the UI for the user to respond, and Claude is automatically re-triggered with the feedback. Blue dots on project tabs indicate pending feedback.
|
|
169
173
|
- **Custom commands** — create named buttons that send custom prompts to Claude **or run shell commands** directly. Organize into collapsible groups. Toggle between "Claude Code" and "Shell" targets per command. Shell commands execute server-side with stdout/stderr captured to the commands log.
|
|
170
174
|
- **Permission relay** — when Claude needs tool approval (Bash, Edit, etc.), a full-screen overlay shows the tool name and command preview with Allow/Deny/Dismiss buttons — no need to switch to the terminal.
|
|
171
175
|
- **Commands log** — a resizable bottom panel that records all communication: triggers, completions, permission requests, and shell command output. Filter by type, search, and copy entries. Shell commands show a stop button for running processes.
|
|
@@ -210,6 +214,31 @@ TICKET HS-15:
|
|
|
210
214
|
|
|
211
215
|
---
|
|
212
216
|
|
|
217
|
+
## Plugins
|
|
218
|
+
|
|
219
|
+
Hot Sheet supports plugins for syncing with external ticketing systems and adding custom functionality. Plugins are loaded from `~/.hotsheet/plugins/` and configured per-project.
|
|
220
|
+
|
|
221
|
+
### GitHub Issues (bundled)
|
|
222
|
+
|
|
223
|
+
The GitHub Issues plugin ships with Hot Sheet and syncs tickets bidirectionally:
|
|
224
|
+
- Pull issues from GitHub, push local tickets to GitHub
|
|
225
|
+
- Map categories, priorities, and statuses via configurable labels
|
|
226
|
+
- Sync notes as GitHub comments, push attachments via the Contents API
|
|
227
|
+
- Toolbar sync button with busy indicator
|
|
228
|
+
|
|
229
|
+
Configure it in Settings → Plugins with your GitHub PAT and repository details.
|
|
230
|
+
|
|
231
|
+
### Building Plugins
|
|
232
|
+
|
|
233
|
+
Plugins are ESM JavaScript modules with a `manifest.json`. They can:
|
|
234
|
+
- **Sync tickets** with any external system (Linear, Jira, Trello, Asana, etc.)
|
|
235
|
+
- **Add UI elements** — toolbar buttons, sidebar actions, context menu items
|
|
236
|
+
- **Run custom actions** — export, notifications, webhooks, automation
|
|
237
|
+
|
|
238
|
+
See **[`docs/plugin-development-guide.md`](docs/plugin-development-guide.md)** for the complete plugin API reference, including a full Linear plugin skeleton and standalone TypeScript types. The guide is designed to be read by both humans and AI coding assistants — point Claude Code or another AI tool at it to generate plugins for systems it already knows.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
213
242
|
## Backups & Data Safety
|
|
214
243
|
|
|
215
244
|
Hot Sheet automatically protects your data with tiered backups and instance locking.
|
|
@@ -312,11 +341,12 @@ hotsheet --browser
|
|
|
312
341
|
|
|
313
342
|
### Settings file
|
|
314
343
|
|
|
315
|
-
|
|
344
|
+
All project settings are stored in `.hotsheet/settings.json`. You can copy this file between projects to share configuration:
|
|
316
345
|
|
|
317
346
|
```json
|
|
318
347
|
{
|
|
319
348
|
"appName": "HS - My Project",
|
|
349
|
+
"ticketPrefix": "PROJ",
|
|
320
350
|
"backupDir": "/path/to/backup/location"
|
|
321
351
|
}
|
|
322
352
|
```
|
|
@@ -328,6 +358,8 @@ Create `.hotsheet/settings.json` to configure per-project options:
|
|
|
328
358
|
| `ticketPrefix` | Custom ticket number prefix (defaults to `HS`) |
|
|
329
359
|
| `appIcon` | Icon variant (`default`, `variant-1` through `variant-9`) |
|
|
330
360
|
|
|
361
|
+
UI preferences (detail panel position, sort order, categories, custom views, custom commands, etc.) are also stored in this file and transfer automatically when you copy it.
|
|
362
|
+
|
|
331
363
|
All settings can also be changed from the settings panel UI.
|
|
332
364
|
|
|
333
365
|
### Keyboard shortcuts
|
|
@@ -366,7 +398,7 @@ All settings can also be changed from the settings panel UI.
|
|
|
366
398
|
| Database | PGLite (embedded PostgreSQL) |
|
|
367
399
|
| UI | Custom server-side JSX (no React), vanilla client JS |
|
|
368
400
|
| Charts | Inline SVG (no external chart library) |
|
|
369
|
-
| Build | tsup (server + client bundles), sass (SCSS
|
|
401
|
+
| Build | tsup (server + client bundles), sass (SCSS) |
|
|
370
402
|
| Storage | `.hotsheet/` in your project directory |
|
|
371
403
|
|
|
372
404
|
Data stays local. No network calls, no accounts, no telemetry.
|
|
@@ -382,15 +414,16 @@ npm install
|
|
|
382
414
|
|
|
383
415
|
npm run dev # Build client assets, then run via tsx
|
|
384
416
|
npm run build # Build to dist/cli.js
|
|
385
|
-
npm test # Unit tests with coverage (
|
|
386
|
-
npm run test:e2e # E2E browser tests (
|
|
417
|
+
npm test # Unit tests with coverage (626 tests)
|
|
418
|
+
npm run test:e2e # E2E browser tests (120+ tests)
|
|
419
|
+
npm run test:fast # Unit + fast E2E (skips GitHub plugin tests)
|
|
387
420
|
npm run test:all # Merged coverage report (unit + E2E)
|
|
388
421
|
npm run lint # ESLint
|
|
389
422
|
npm run clean # Remove dist and caches
|
|
390
423
|
npm link # Symlink for global 'hotsheet' command
|
|
391
424
|
```
|
|
392
425
|
|
|
393
|
-
The project has comprehensive test coverage with
|
|
426
|
+
The project has comprehensive test coverage with 626 unit tests (vitest) and 120+ Playwright E2E browser tests, plus smoke tests for production install verification.
|
|
394
427
|
|
|
395
428
|
---
|
|
396
429
|
|