-
-
Notifications
You must be signed in to change notification settings - Fork 0
0.33.0
Hussein Jarrar edited this page Sep 12, 2026
·
2 revisions
22 changes · 1 Bugfix, 21 New Features.
-
RADD-1064 ai.validate is unusable from the builder: generic TRUE/FALSE ports and a text box where the context checkboxes should be
Symptom (found by Hussein building his first validation rule, 2026-08-12): the ai.validate node renders TRUE/FALSE output handles on the canvas, and its "What the model sees" parameter renders as a free-text input — which invites template tokens like{{title}}and stores a string where the server schema requires an…
f1212435
-
RADD-1065 The SBOM becomes a wiki document: a child page of each version's release notes
Wanted (Hussein, 2026-08-12): the per-release SBOM published as a readable document on Radd when we release, the way release notes are — as a child of the version's page.
9f19abb0 -
RADD-1063 Notification settings: describe when each kind fires and what each scope column means
the new /settings/notifications page shows 13 kind rows and three scope columns with bare labels — a user can't tell what "Updated" covers vs "State changed", that "Mine" reaches them even unwatched, or what a team subscription follows. Asked by Hussein while trying the wave out, 2026-08-12.
a2d60aa3 -
RADD-1057 Validate trigger + binding index + a findings-collecting walk mode
atrigger.validatesentinel trigger (joinsmanual/schedule— not in the event catalog). Its node params carry the binding: form ids, issue-type ids, optional project scope + condition, andmode(advisory | required). Bindings sync to an index tableautomation_validationson every rule write, mirroring…
7a8a6b12 -
RADD-1060 Intake UX: Validate button, field highlights, create-anyway + builder support
intake surfaces learn validation. A read endpoint (GET /items/validation-context?project&form&type) tells the client whether bindings govern the draft and the strictest mode;IntakeSubmitShell(both form pages) andNewItemModalrender Validate instead of Submit when governed. Click →POST .../validatewith…
a073c9eb -
RADD-1060 Intake UX: Validate button, field highlights, create-anyway + builder support
intake surfaces learn validation. A read endpoint (GET /items/validation-context?project&form&type) tells the client whether bindings govern the draft and the strictest mode;IntakeSubmitShell(both form pages) andNewItemModalrender Validate instead of Submit when governed. Click →POST .../validatewith…
1669c5ce -
RADD-1059 ai.validate: an AI judgment node returning structured, field-targeted findings
a sibling ofai.classify(ai/automation_node.pyis the north star): nodeai.validate, gate-kind, portspass/fail/unavailable. Params:prompt(the admin's quality bar, e.g. "an IT report needs the affected system, what they tried, and when it started"), theincludecontext toggles,max_findings,…
800f6df1 -
RADD-1058 Savepoint validate-and-create + hook-inverted enforcement in create_item
validation runs against a REAL row, briefly: begin_nested →items.service.create_item(events row included — it rolls back too) → resolve applicable bindings → validation walks → on pass, release the savepoint (item stands, one round trip, auto-create-on-pass); on fail, roll back and return findings. New endpoint…
e135d78a -
RADD-1057 Validate trigger + binding index + a findings-collecting walk mode
atrigger.validatesentinel trigger (joinsmanual/schedule— not in the event catalog). Its node params carry the binding: form ids, issue-type ids, optional project scope + condition, andmode(advisory | required). Bindings sync to an index tableautomation_validationson every rule write, mirroring…
ac8624b8 -
RADD-1060 Intake UX: Validate button, field highlights, create-anyway + builder support
intake surfaces learn validation. A read endpoint (GET /items/validation-context?project&form&type) tells the client whether bindings govern the draft and the strictest mode;IntakeSubmitShell(both form pages) andNewItemModalrender Validate instead of Submit when governed. Click →POST .../validatewith…
12e59eac -
RADD-1059 ai.validate: an AI judgment node returning structured, field-targeted findings
a sibling ofai.classify(ai/automation_node.pyis the north star): nodeai.validate, gate-kind, portspass/fail/unavailable. Params:prompt(the admin's quality bar, e.g. "an IT report needs the affected system, what they tried, and when it started"), theincludecontext toggles,max_findings,…
335b8321 -
RADD-1058 Savepoint validate-and-create + hook-inverted enforcement in create_item
validation runs against a REAL row, briefly: begin_nested →items.service.create_item(events row included — it rolls back too) → resolve applicable bindings → validation walks → on pass, release the savepoint (item stands, one round trip, auto-create-on-pass); on fail, roll back and return findings. New endpoint…
9ebae11a -
RADD-1057 Validate trigger + binding index + a findings-collecting walk mode
atrigger.validatesentinel trigger (joinsmanual/schedule— not in the event catalog). Its node params carry the binding: form ids, issue-type ids, optional project scope + condition, andmode(advisory | required). Bindings sync to an index tableautomation_validationson every rule write, mirroring…
3a9801e7 -
RADD-1055 Settings → Notifications: the matrix + subscriptions page
the 10×2 checkbox grid inNotificationPrefsPanel(mounted on /settings/profile) becomes a dedicated /settings/notifications page: a defaults matrix — rows = event kinds, columns = own / participating / my teams — each cell a compact 4-state control (off / inbox / email / both), plus a subscriptions section: add a…
b5793640 -
RADD-1054 Channel-aware delivery: channel decided at write time, mailer/digest read the row
the resolver's verdict is stamped on the notification row at creation —inbox bool+email bool(replacing the mailer's per-user Python filter againstemail_types_by_userand the mute check increate_notification). Email-only is now expressible: the row exists as the delivery log butGET /notificationsand…
9c5d871b -
RADD-1053 Fan-out widening: subscribers join the recipient set; pages move into the consumer
notify/consumer.recipient_idsunions a third source: subscribers —notification_rulesrows where (scope=project ∧ scope_id=item's project) ∨ (scope=team ∧ scope_id=item's team) ∨ (scope=space ∧ scope_id=page's space), indexed on (scope, scope_id). New handled kinds: item.created (ambient, for subscribers), generic…
e0caf8bb -
RADD-1052 Notification rules model + pure channel resolver
anotification_rulestable —(user_id, scope, scope_id NULL, channels JSONB)wherescope∈ own | participating | teams | project | space | team,scope_idset only for the last three, andchannelsis a sparse map of event kind → off/inbox/email/both. A pure resolver (planner-style, unit-tested like…
d7cfd0f4 -
RADD-1053 Fan-out widening: subscribers join the recipient set; pages move into the consumer
notify/consumer.recipient_idsunions a third source: subscribers —notification_rulesrows where (scope=project ∧ scope_id=item's project) ∨ (scope=team ∧ scope_id=item's team) ∨ (scope=space ∧ scope_id=page's space), indexed on (scope, scope_id). New handled kinds: item.created (ambient, for subscribers), generic…
53ab895c -
RADD-1055 Settings → Notifications: the matrix + subscriptions page
the 10×2 checkbox grid inNotificationPrefsPanel(mounted on /settings/profile) becomes a dedicated /settings/notifications page: a defaults matrix — rows = event kinds, columns = own / participating / my teams — each cell a compact 4-state control (off / inbox / email / both), plus a subscriptions section: add a…
547e0917 -
RADD-1054 Channel-aware delivery: channel decided at write time, mailer/digest read the row
the resolver's verdict is stamped on the notification row at creation —inbox bool+email bool(replacing the mailer's per-user Python filter againstemail_types_by_userand the mute check increate_notification). Email-only is now expressible: the row exists as the delivery log butGET /notificationsand…
a873475e -
RADD-1053 Fan-out widening: subscribers join the recipient set; pages move into the consumer
notify/consumer.recipient_idsunions a third source: subscribers —notification_rulesrows where (scope=project ∧ scope_id=item's project) ∨ (scope=team ∧ scope_id=item's team) ∨ (scope=space ∧ scope_id=page's space), indexed on (scope, scope_id). New handled kinds: item.created (ambient, for subscribers), generic…
15a66780 -
RADD-1052 Notification rules model + pure channel resolver
anotification_rulestable —(user_id, scope, scope_id NULL, channels JSONB)wherescope∈ own | participating | teams | project | space | team,scope_idset only for the last three, andchannelsis a sparse map of event kind → off/inbox/email/both. A pure resolver (planner-style, unit-tested like…
39884423
Changes from v0.32.0 to v0.33.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.
-
Developer guide
- Architecture: the kernel and plugins
- Develop, test and deploy
- Events and consumers
- Permissions and access control
- The MCP server
- The query language for developers
- The REST API and authentication
- Write a backend plugin
- Write a page editor extension
- Write a plugin user interface
- Write an automation node
-
Release notes
- 0.36.4
- 0.36.3
- 0.36.2
- 0.36.1
- 0.36.0
- 0.35.0
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.1
- 0.31.0
- 0.30.0
- 0.29.0
- 0.28.0
- 0.27.0
- 0.26.0
- 0.25.1
- 0.25.0
- 0.24.1
- 0.24.0
- 0.23.1
- 0.23.0
- 0.22.0
- 0.21.0
- 0.20.0
- 0.19.0
- 0.18.1
- 0.18.0
- 0.17.2
- 0.17.1
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.1
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.2
- 0.3.0
- 0.2.0
- 0.1.0
-
User guide
- AI features
- Attachments
- Automations
- Cycles and releases
- Instance settings
- Intake forms and the portal
- Notifications and the inbox
- Personal settings
- Project settings
- Projects
- Reports and dashboards
- Search and the query language
- Start here
- The application window
- The card designer
- The roadmap
- The service desk
- The wiki
- Time logging and the timesheet
- Views
- Work items