Repository navigation
v0.6.3
Features
Realtime board updates (SSE)
The board now updates in realtime — no more stale views when changes happen in
another tab, the CLI, or the API.
- New
GET /api/eventsSSE endpoint. A lightweight hub broadcasts coarse change events (tickets.updated,projects.updated,teams.updated,labels.updated) after every successful mutation. - The board automatically refetches when it receives an event, including a 15s heartbeat to keep connections alive through proxies.
- Drag-and-drop now refetches the board on successful moves so client state always converges with the server; events arriving mid-drag are deferred until the drag completes.
Board selection persists in the URL
The selected project is now stored in the URL (?project=<id>), so board selection survives reloads, can be bookmarked/shared, and works with browser back/forward.
Image attachments
Tickets now support image attachments, stored as SQLite BLOBs — still a single database file.
- Upload via the ticket panel ("Add image…" input) or
POST /api/tickets/{id}/attachments. - Attachments display as a preview grid in the ticket panel, and the first image shows as a cover thumbnail on the kanban card.
- Images only: uploads are validated by content sniffing (png/jpeg/webp/gif); non-images are rejected with
415. - 8MB per-file cap; larger uploads are rejected with
413. - Served via
GET /api/attachments/{id}(Content-Disposition: inline). - Deleting an attachment asks for confirmation first.
- Attachment changes broadcast on the realtime channel like everything else.
Upgrades
- Go 1.26 (minimum now 1.26+).
API changes
| Endpoint | Method | Notes |
|---|---|---|
/api/events |
GET | New — SSE change events |
/api/tickets/{id}/attachments |
POST | New — multipart image upload (8MB cap) |
/api/attachments/{id} |
GET | New — fetch attachment bytes |
/api/attachments/{id} |
DELETE | New — remove attachment |
All pre-existing endpoints are unchanged. Ticket responses now include an optional attachments array.
Upgrading
No manual steps required — the new attachments table is created by an automatic database migration on first start. Your database remains a single file.