Skip to content

feat: webhook/callback registration endpoint for real-time event push#27

Open
jl-codes wants to merge 3 commits intomainfrom
feat/webhook-registration
Open

feat: webhook/callback registration endpoint for real-time event push#27
jl-codes wants to merge 3 commits intomainfrom
feat/webhook-registration

Conversation

@jl-codes
Copy link
Contributor

Consumers register a URL or unix socket; Kanban pushes task.created, task.moved, and task.completed events in real-time via HTTP POST or unix socket delivery with optional HMAC-SHA256 signing.

New files:

  • src/webhooks/webhook-service.ts (unified registry + dispatcher)
  • src/webhooks/board-diff.ts (pure board diffing logic)
  • test/runtime/webhooks/webhook-service.test.ts (17 tests)
  • test/runtime/webhooks/board-diff.test.ts (7 tests)

Modified:

  • src/core/api-contract.ts (Zod schemas + types)
  • src/trpc/app-router.ts (webhooks sub-router)
  • src/trpc/workspace-api.ts (board diff in saveState)
  • src/server/runtime-server.ts (wiring)

Consumers register a URL or unix socket; Kanban pushes task.created,
task.moved, and task.completed events in real-time via HTTP POST or
unix socket delivery with optional HMAC-SHA256 signing.

New files:
- src/webhooks/webhook-service.ts (unified registry + dispatcher)
- src/webhooks/board-diff.ts (pure board diffing logic)
- test/runtime/webhooks/webhook-service.test.ts (17 tests)
- test/runtime/webhooks/board-diff.test.ts (7 tests)

Modified:
- src/core/api-contract.ts (Zod schemas + types)
- src/trpc/app-router.ts (webhooks sub-router)
- src/trpc/workspace-api.ts (board diff in saveState)
- src/server/runtime-server.ts (wiring)
- Replace all non-null assertions with optional chaining in test files
- Add test: network exception retry on delivery failure
- Add test: task.created in non-backlog column
- Add test: delivery skipped after webhook unregistered
- Add saveState webhook dispatch integration tests (3 cases)
@jl-codes jl-codes requested a review from saoudrizwan March 19, 2026 10:31
@saoudrizwan
Copy link
Contributor

super cool! need to do another pass on this, but i love the vision

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants