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 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** mark tickets complete and add new ones
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, or drag onto sidebar items to set category, priority, or view.
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 (⋯) provides duplicate, tags, move to backlog, and archive actions. Right-click any ticket for a full context menu with submenus.
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 (click the active position to hide). 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.
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 the Open Folder dialog (`Cmd+O`). Drag tabs to reorder, right-click for close options and "Show in Finder," and switch with `Cmd+Shift+[/]`. Each project has independent settings, sort preferences, and views.
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 — all with Lucide icons
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 → Experimental:
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
- Create `.hotsheet/settings.json` to configure per-project options:
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 → CSS) |
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 (446 tests)
386
- npm run test:e2e # E2E browser tests (64 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 446 unit tests (vitest) and 64 Playwright E2E browser tests, plus 12 smoke tests for production install verification.
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