moooon
Motir
Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.
- Vibe Project
- Open Source
- AI Agent
- AI Loop
- 1
- requests
- 0
- upvotes
- 145
- planned
- 1,361
- shipped
- MOTIR-3135.7.1 Design — bell + unread badge in the shell header + the notification drawer + the per-user notification-preferences settings page (`design/notifications/`)done
- MOTIR-3145.7.2 Schema — `Notification` model + repository + migration (cursor-paginated reads + an efficient unread-count aggregate; FKs as Prisma relations)done
- MOTIR-3155.7.3 In-app notification fan-in job — a 1.6-pipeline consumer of the SHIPPED 5.1.6 events writing `Notification` rows (actor-excluded, mention-deduped, EXTENSIBLE for 5.4/6.6)done
- MOTIR-3165.7.4 `notificationsService` + routes — cursor-paged feed, unread count, mark-read, mark-all-read (4-layer, per-user scoped)done
- MOTIR-3175.7.5 The bell + unread badge + notification drawer in the shell header — live count, deep links, mark-read on open (no whole-tree refresh)done
- MOTIR-3185.7.6 Per-user notification preferences — `NotificationPreference` model + the settings page (Jira shape); the channel gate BOTH the 5.7.3 in-app job AND the DONE 5.1.6 email job honourdone
- MOTIR-3195.7.7 Vitest — `Notification` model + fan-in recipients (actor-excluded, mention-deduped, registry-extensible) + the read/mark API + preference gatingdone
- MOTIR-3205.7.8 Playwright E2E — mention → bell increment → drawer → click → issue → marked read → badge decrement; preference-off stops the channeldone
- MOTIR-3215.7.9 Bug — fan-in Notification.data keys (`workItemKey`/`workItemTitle`) don't match the read API's `NotificationData` DTO (`issueKey`/`title`); the mapper passes data through unmapped, so a fanned-in row reads with `issueKey`/`title` undefineddone
- MOTIR-3225.7.10 In-app `transitioned`/`watching` fan-in delivery — add the registry entry + a `work-item/transitioned` job consumer (paged watcher roster; the in_app gate falls out)done
- MOTIR-3235.7.11 Gate the watcher TRANSITION email by the `transitioned · email` preference — `watcherNotificationsService` never consults the resolverdone
- MOTIR-3245.7.12 Flip the `transitioned` matrix seam to settable + real copy (en/zh) — depends on both channels being real (5.7.10 + 5.7.11)done
Showing 12 of 12