feat: Digest mail notifications - eXIP7.3.0.22 - integration into feature/mips - #648
Conversation
…ns - EXO-90072 - eXIP7.3.0.22 (#644) > **Depends on Meeds-io/commons#782** (the legacy `makeDigest` hook becomes a concrete deprecated no-op there). Until it is merged this branch does not compile against the feature branch, hence the draft. Task EXO-90072, spec 50469 §5. ## What - `MailTemplateProvider`: the `makeDigest` override and the `buildDigestMsg` helpers are removed; the mail `CommentTemplateBuilder` only held a `buildDigestMsg` override, so it is gone and `TaskCommentPlugin` uses the plain `TemplateBuilder`. - `PushTemplateProvider`: the two no-op `makeDigest` overrides. - `TaskNotification_en.properties`: the 12 `Notification.digest.{one,more}.*` keys and 5 `Notification.label.*` keys (and, one.other, more.other, task, tasks) read only by the removed code (verified by grep over Java, gtmpl, JS, Vue). The same keys are removed in the 40 locale files of the bundle. - Tests: `testMakeDigest` removed (it only asserted the removed bodies). Untouched: `TaskDigestLinePlugin`, its Kernel declaration and its `digest.*` keys (the new digest of the eXIP), every `makeMessage` path. ## Checked `services` and `webapps` build; the 17 notification tests are green (the DAO container tests fail identically on the base branch locally, stale social snapshot). N2 (addon, no schema, no security). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 5beb448)
467bc66 to
d66e427
Compare
AI review — Round #1 — eXIP 7.3.0.22 Digest mail notifications (task category)Reviewed as one delivery with the 18 sibling PRs, against Tech Spec note 50469 and board 8372, at head 🟢 Nit — Verified conform: category Classification: N1 by aggregation with the eXIP (the diff itself touches no REST/DAO/schema/ACL surface). Compiles only once commons#786 is on Nexus. 🤖 Generated with Claude Code |
…tions - EXO-89484 - eXIP7.3.0.22 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
AI review — Round #2 (independent review, Architects Lead's reviewer)Independent pass at 🟡 Medium — the task notifications carry no
return NotificationInfo.instance()
.to(new LinkedList<>(receivers))
...
.with(NotificationUtils.CREATOR.getKey(), notificationCreator) // the actor is a parameter, never `from`
.key(getKey()).end();The capture excludes the actor only through Fix: 🟢 Nit — Verified conform: category Classification: N1 by aggregation with the eXIP (the diff itself touches no REST/DAO/schema/ACL surface). Compiles once commons#786 is on Nexus. Approver ≠ author, never on the AI review alone; 🤖 Generated with Claude Code |
…XO-90072 - eXIP7.3.0.22 Prior this change, the task notification plugins declared five "daily" values and one "weekly" value in their defaultConfig collection. Both readers of that collection — NotificationPluginContainer.getDefaultActivePlugins and JPAUserSettingServiceImpl.getDefaultSettings — compare each value to UserSetting.FREQUENCY.INSTANTLY, and FREQUENCY holds INSTANTLY alone since the legacy digest engine was removed, so getFrequecy("daily") returns null and the value is silently ignored: configuration left dead by that removal. After this commit, those values are gone and only "Instantly" remains where it was declared; the defaultConfig field of TaskCompletedPlugin is dropped whole rather than left as an empty collection, "weekly" being the only value it held. The default activation of every plugin is unchanged: an ignored value and an absent value give the same empty result in both readers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Thanks for the pass. Answers to both points, at head 🟡 No
|
AI review — Round #3 (follow-up, final for the code)Independent review, Architects Lead's reviewer, at head Status of the previous rounds
New findingsNone. The only hunk since the last round is the configuration cleanup. Verified conform (unchanged from Round #2, re-checked at head): category All findings from the previous rounds are resolved or withdrawn on this PR; nothing outstanding from the AI review side on the code. The Classification: N1 by aggregation with the eXIP (the diff itself touches no REST/DAO/schema/ACL surface). Compiles once commons#786 is on Nexus. Approver ≠ author, never on the AI review alone. 🤖 Generated with Claude Code |
eXIP 7.3.0.22 — Digest mail notifications · integration into
feature/mipsThe
taskscategory (assignment, coworker, mention) declared in Kernel XML, its email line plugin, and the removal of the legacymakeDigestoverrides and of the superseded translation keys.The 3 commit(s) replayed from
feature/experience4bb3c0bdfeat: Declare the Tasks digest mail notifications category - EXO-89484 (feat: Declare the Tasks digest mail notifications category - EXO-89484 - eXIP7.3.0.22 #640)5fd77e64feat: Digest email lines for task notifications - EXO-89486_EXO-89487 (feat: Digest email lines for task notifications - EXO-89486_EXO-89487 - eXIP7.3.0.22 #642)d66e427ffix: Remove the legacy digest bodies and keys of the task notifications - EXO-90072 (fix: Remove the legacy digest bodies and keys of the task notifications - EXO-90072 - eXIP7.3.0.22 #644)47 files changed, 339 insertions(+), 1341 deletions(-)
How this branch was built
exip-7.3.0.22-mipsstarts fromorigin/feature/mipsand replays only the commits taggedeXIP7.3.0.22(git cherry-pick -x, the original reference is in every message). The FB version-bump commit (Task-87990) and the commits of the other eXIPs present onfeature/experienceare deliberately left out — nopom.xmlis touched.Merge order
makeDigestis still an abstract method ofcommons-apionfeature/mips; the other 18 PRs remove their overrides, so they only compile once commons is merged: commons#786 first (wait for the Nexus snapshot), then social#6093, then the 17 addons in any order.Classification
N1 for the whole eXIP (Liquibase schema and JPA entities, the commons notification dispatcher, new REST endpoints, mass email sending). Approver ≠ author: this PR must be approved by an Architect / Senior Developer who knows it is N1, not on the AI review alone.
Already validated on
feature/experienceEvery US of the board (project 8372) is "Tested & Validated" by the PO, the legacy engine cleanup (EXO-90072, 19 repositories) included. Full functional test plan: capture, daily and weekly contents, timezones, catch-up at startup, safety cleanup, and non-regression of the instant notifications.
Knowledge: TODO — eng-standards PR to open (
/domain-doccommons + social) before leaving draft🤖 Generated with Claude Code