Skip to content

1.9.0

Released: TBD

Highlights

  • In-app notifications. Admins can compose notifications in the admin panel and target all tenants or a specific set of tenancies; the tenant app reads and displays them in-product (no email).

Added

  • In-app notification system — see In-App Notifications.
  • Admin GraphQL: notifications, notification, createNotification, updateNotification, deleteNotification with AdminNotification and the NotificationLevel enum (info / success / warning / critical).
  • Tenant GraphQL: myNotifications, myUnreadNotificationCount, markNotificationRead, markAllNotificationsRead.
  • Master-schema models Notification and NotificationRead.

Changed

  • cifras-admin: the sidebar entry that previously pointed the "Notifications" label at the email log is now split — "Notifications" opens the new in-app notifications page and "Emails" keeps the email/reminder log.

Fixed

-

Migrations

  • No alembic migration. notifications and notification_reads live in the master/public database and are created by the master-schema bootstrap (Base.metadata.create_all), consistent with the existing sent_notifications table — see the feature page's Decisions section.

Frontend impact

  • Admin (cifras-admin): new Notifications page + inAppNotificationsApi (create/update/delete/list/get) and a /notifications route. Already wired in this release.
  • Tenant app (product team): on load, call myUnreadNotificationCount for a badge and myNotifications for the list; render title/body styled by level; call markNotificationRead / markAllNotificationsRead as the user reads them.

Versioning notes

  • Minor bump (additive GraphQL surface, no breaking changes). Bumped with uv run python scripts/bump_version.py 1.9.0 --changelog-stub.