Skip to content
Hussein Jarrar edited this page Sep 12, 2026 · 2 revisions

v0.30.0

6 changes · 3 Bugfixes, 3 New Features.

Bugfix

  • RADD-989 llm mail rules are dead code: MAIL_ROUTING never entered the feature dispatch — and fall-through is a crash, never a decision
    (found live on the dev instance, three independent confirmations)
    34d5bff7
  • RADD-991 The mailer resolves every event id as a comment id: one assigned email away from killing the whole tick
    notify/mailer._comment_id treats event.entity_id as a comment id regardless of the event type. Mailing any row fanned out from an item-family event hands transport.send_item_mail an ITEM uuid as comment_idfk_mail_messages_comment_id_comments violation → the whole mailer tick dies. assigned and…
    743b9454
  • RADD-990 Every item event crashes the notify consumer: assigned, state_changed and description mentions have reached nobody since RADD-922
    notify/consumer._handle_item_event still reads top-level payload["project_id"] and payload["description"] — keys item events stopped carrying when RADD-922 nested the canonical ref under payload["item"]. Every item.created/item.updated raises KeyError inside the per-event SAVEPOINT, is logged, skipped,…
    63e32943

New Feature

  • RADD-978 Being added as a participant tells nobody: a participant_added notification, inbox + email
    Adding a direct USER participant auto-watches them (participants → notify.add_watchers) so they hear about FUTURE activity — but the add itself notifies nobody: notify's _HANDLED set consumes no participant event, so there is no inbox row and (post-RADD-968, where email rides rows) no email either. Being pulled…
    aa0888d2
  • RADD-979 Replies leave from the wrong identity: bind each mail source to the sender that answers for it
    Every outbound message — reply, ack, notification mail — leaves from the single DEFAULT sender, regardless of which address the conversation arrived at. Write to help@radd-hq.com, get answered by agent@radd-hq.com; write to pipeline@, same. A requester's client shows a stranger, reply-all forks the thread, and a…
    955ddacd
  • RADD-977 The ack tells the requester a ticket exists but not where it is: the acknowledgement gains the issue link
    mailrender.acknowledgement deliberately carries no issue link (RADD-967: "the requester has no account, so the link is a login page"). That decision is stale on two counts: email ingest PROVISIONS a requester account (RADD-828), and a sender is often an existing real user (an employee mailing the desk from their…
    1ba5c1fd

Changes from v0.29.0 to v0.30.0.


Mirrored from project.radd-hq.com on 2026-09-12. Documentation is written there; this copy is regenerated by scripts/publish_wiki.py and hand edits do not survive it.

Clone this wiki locally