You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(i18n): localize collab notification titles; add service-storage translation bundle
Fixes three symptoms observed on a zh-CN workspace:
- the bell title 'sys_file "repro.png" assigned to you' was a hardcoded
English literal built from the raw object API name — assignment and
@mention titles now resolve through i18n (messages.assignedToYou /
mentionedYou / mentionedYouAnonymous) in the RECIPIENT's locale, with the
object named by its translated label (objects.{name}.label → def label →
API name); every step degrades best-effort to English.
- sys_file / sys_upload_session had no translation bundle, so the file
detail page (labels + Pending Upload / Committed / Deleted status
pipeline) rendered English on every locale — service-storage now ships
its own ADR-0029 D8 bundle (en / zh-CN / ja-JP / es-ES) loaded on
kernel:ready, mirroring service-messaging.
(The third symptom — unread state never clearing — is an objectui fix:
the console wrote sys_notification_receipt via the generic data API,
which ADR-0103 made read-only; it must use POST /api/v1/notifications/read.)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(runtime): mount the in-app notifications REST routes (ADR-0030)
handleNotification (GET /notifications, POST /notifications/read[/all]) and its
discovery entry existed, but dispatcher-plugin never registered server.<verb>()
mounts for them — so only the cloud hosts' hono catch-all reached the handler;
the standalone / `os dev` server 404'd every /api/v1/notifications* request.
That was the real reason unread notifications never cleared: the console's
direct sys_notification_receipt write is rejected by ADR-0103's engine-owned
gate, and this REST fallback — the intended path — was unreachable. Mounting
the three routes makes mark-read persist in every deployment. Guarded by the
dispatcher-plugin route-registration regression test.
Verified end-to-end in the showcase example: POST /notifications/read/all → 200,
receipts flip delivered→read server-side, and the bell badge stays cleared
across the inbox poll (previously it flipped every row back to unread).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0 commit comments