Skip to content

Every hotclm notification reaches a zh-CN reader in English — the notify nodes use inline title/message, the one-language path, instead of a localized template #172

Open

Description

@objectstack-fleet

Filing gate: ① user-visible defect, reproduced on @objectstack 18.2.0 (the 18.2 upgrade pass, hotclm PR #155).

Symptom. Every notification hotclm's own flows send is English, whatever the reader's language: "Due in 7 days: 更新保险凭证 | This contract obligation is due on 2026-11-03. Record progress, or mark it done once it is performed", "Contract approved: … has cleared every approval rung", "Instalment 4 overdue: …", "In legal review over 30 days: …" (12 topics observed in sys_notification on a zh-CN demo).

Where. Every hotclm notify node writes inline title / message: src/flows/_daily-sweep.ts (the six daily sweeps), contract-approval.flow.ts (approved / rejected), expiration-sweep.flow.ts, renewal-notice.flow.ts and signature-record.flow.ts. The 18.2 spec says what that path is (io-node-config.zod.ts, title): "One text for every recipient (not localizable — use template for per-locale content)". The localizable path is template + templateData, resolved per recipient after fan-out from the recipient's sys_user.locale, else the deployment default (service-messaging/src/recipient-locale.ts, ruling #13881), against templates an app declares in defineStack({ emailTemplates }) as (name, locale) members.

So this is app-side. The platform already ships per-recipient localization (the platform's own approval notifications are keyed text, plugin-approvals/src/approval-notification-text.ts); hotclm does not use it.

Expected. Each hotclm notification has an en and a zh-CN template member, and a zh-CN reader receives 「7 天后到期:更新保险凭证」 and so on.

Measure first. Whether the inbox channel renders the template path for the in-app bell as well as email (the recipient-locale module names sys_notification_template on the topic path for the inbox). If the inbox cannot render a declared template, that half is a platform gap and goes to objectstack, cross-linked here.

Related, not this card. The platform's approval notifications also read English on the demo. They are keyed per recipient, so that is the deployment default locale (hotclm#142: demo:zh leaves the workspace locale at English) and accounts with no locale, not a platform defect.

Business reason. Reminders (overdue payments, obligations due, review SLA) are the app's whole proactive surface; a Chinese legal or finance team reads them all in English.

Reader. hotclm execution seat (PM seat #36). Touches every flow with a notify node; serialize after #156 (flows refusals).

Duplicate search. hotclm issues, all states, "notification English / notify template / locale": 0 hits; #142 related (workspace locale), open.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions