multica/server/internal/handler
Naiyuan Qing bfe9498def feat(notifications): replace hardcoded inbox notifications with subscriber-driven model
Replace inbox_listeners.go with a subscriber-driven notification system:

- Add issue_subscriber table with auto-subscribe on create/assign/comment
- New subscriber_listeners.go: maintains subscriber data on domain events
- New notification_listeners.go: notifySubscribers (fanout to all subscribers
  minus actor) and notifyDirect (targeted, punches through unsubscribe)
- Subscriber API: list/subscribe/unsubscribe endpoints
- Frontend: subscribers section in issue detail sidebar with real-time sync
- Frontend: inbox notification grouping by (issue_id, type, actor_id)
- Remove createInboxForIssueCreator from task.go (unified through event bus)
- 21 new Go tests, all passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 19:33:20 +08:00
..
agent.go refactor(daemon): remove context snapshot, let agent fetch data via CLI 2026-03-27 15:31:22 +08:00
auth.go fix(auth): reduce verification code rate limit from 60s to 10s 2026-03-26 15:44:05 +08:00
comment.go feat: inbox actor tracking, issue detail extraction, UI polish 2026-03-26 12:36:12 +08:00
daemon.go refactor(daemon): remove context snapshot, let agent fetch data via CLI 2026-03-27 15:31:22 +08:00
daemon_pairing.go feat(runtime): add local codex daemon pairing 2026-03-24 12:03:14 +08:00
handler.go feat(runtimes): add Runtimes tab with usage tracking and connection test 2026-03-26 18:28:36 +08:00
handler_test.go feat(auth): email verification login and personal access tokens 2026-03-26 14:32:30 +08:00
inbox.go feat: settings redesign, rich text mentions, inbox listeners, and UI polish 2026-03-26 19:17:14 +08:00
issue.go refactor: decouple task lifecycle from issue status (#151) 2026-03-27 18:30:21 +08:00
personal_access_token.go feat(auth): email verification login and personal access tokens 2026-03-26 14:32:30 +08:00
runtime.go feat(runtimes): add Runtimes tab with usage tracking and connection test 2026-03-26 18:28:36 +08:00
runtime_ping.go feat(runtimes): add Runtimes tab with usage tracking and connection test 2026-03-26 18:28:36 +08:00
skill.go feat(skills): add skill import from ClawHub and Skills.sh 2026-03-26 18:21:28 +08:00
subscriber.go feat(notifications): replace hardcoded inbox notifications with subscriber-driven model 2026-03-28 19:33:20 +08:00
subscriber_test.go feat(notifications): replace hardcoded inbox notifications with subscriber-driven model 2026-03-28 19:33:20 +08:00
workspace.go fix: address PR #149 review findings 2026-03-27 16:15:58 +08:00