Notifications
The bell in the header shows the last 20 events; the full list, with filters and paging, lives at /notifications. That is also where the settings are — each user chooses for themselves what they want to hear about, type by type.
What gets announced
A task or a goal assigned to you (including in a map that already exists), a comment on your task or goal, a new project and a project shared with you, a waiting goal being unblocked ("the goal is up"), an approaching or missed deadline, an AI agent request and its fulfilment, an automation finishing or failing, and a timer stopped automatically. New: a Timed reminder (for a calendar event or a task deadline — see below) and an Event invitation (someone added you to the invitees of their event).
Besides events around your own work, the bell also carries a new version notice — after an update you get a few sentences about what was added, in your language. It arrives once per release and never comes by e-mail.
The full list at /notifications is paged ("Page X of Y") and filterable: All / Unread and by type; Mark all read clears the bell in one click.
Deadline notices arrive as one morning digest per group — overdue / due today / due tomorrow — not one message per item. The hour is KB_DEADLINE_HOUR (default 7, the container's local time). Read notifications are cleaned up after 30 days.
Timed reminders
The morning deadline digest is for everyone and has no time of day. When you want a nudge at a specific minute, there are two ways — both described under Tasks and My day:
- a reminder on a calendar event (at the start, 15/30/60 minutes or a day before; for an all-day event in the morning at
KB_DEADLINE_HOUR) — it reaches you and the invitees, - a reminder on a task deadline (on the deadline day, the day before, 2 days, a week — plus the hour) — you only.
Both arrive as the Timed reminder type: in the bell and by e-mail. Clicking the notification opens the calendar with the event's detail, or the map with that task. A timed reminder differs from the other types in two ways:
- E-mail is on by default for your own events and deadline reminders (other types wait until you tick e-mail on). A reminder for a meeting that never reaches you while the app is closed would be useless. It can be switched off like any other type.
- An invitee gets the reminder in the bell; by e-mail only after ticking e-mail for the Timed reminder type themselves. An invitation you did not ask for must not be a way for anyone to send you e-mail.
- An event recorded in the past (say “dentist this morning”, entered in the afternoon) counts as reminded — nothing fires retroactively.
- It is sent immediately even in Daily digest mode. A digest at 8:00 does not help with a meeting at 14:00. The Nothing mode still applies — if you switched e-mail off entirely, you get no reminder e-mails either.
The time is counted in the instance's time zone (the TZ variable; on a self-hosted instance the default is UTC — set e.g. TZ=Europe/Prague, see Environment variables). When the instance zone differs from your browser's, the event dialog says so: "Reminders use the instance time zone (…)". The server sends reminders once a minute.
After a server outage, reminders older than KB_REMINDER_CATCHUP_H hours (default 48) are not sent any more — they are only logged. Otherwise restoring a week-old backup would bury the bell in meetings that already happened. Younger missed reminders arrive right after start.
The bell does not flood
Two guards keep a busy morning from burying you, and neither of them ever silently drops anything — events are merged and the counts are admitted openly:
- Merging: repeated events of the same type on the same item within a short window (10 minutes by default) raise a counter on the existing unread notification — "… (×3)" — instead of adding rows.
- Daily cap: above a daily limit (50 by default), further events collapse into a single overflow summary with a growing count, rather than an endless list.
E-mail
The e-mail channel switches on once SMTP is configured; until then it is greyed out in the settings, with the explanation that e-mail is not set up on this server yet (in the cloud, sending is on from day one). Everyone then picks one rule above the per-type toggles — what may reach them by e-mail:
| Mode | Behaviour |
|---|---|
| Instantly | Every checked event is e-mailed right away. |
| Daily digest | No individual e-mails; one summary arrives once a day (in the morning, from 8:00 by default). Exception: a Timed reminder is sent immediately. |
| Nothing | Nothing is e-mailed — timed reminders included. Notifications stay in the app. |
E-mails arrive in the recipient's language, in one consistent look. E-mail also has its own daily cap per recipient (10 by default) — an app that spams its users into a mail filter has no e-mail channel at all. On an instance where notification e-mails were already arriving before per-user preferences existed, KB_NOTIFY_EMAIL_DEFAULT=1 keeps them on until each user says otherwise.
Next
- Configuration → E-mail — switching SMTP on
- Tasks and My day → Events — where timed reminders come from
- Automations and agents — the events automations emit

