Skip to content

fix(cli): route remaining status output through Fluent - #7499

Merged
singlerider merged 2 commits into
zeroclaw-labs:masterfrom
silas-qiao:fix/status-fluent-i18n
Jun 17, 2026
Merged

fix(cli): route remaining status output through Fluent#7499
singlerider merged 2 commits into
zeroclaw-labs:masterfrom
silas-qiao:fix/status-fluent-i18n

Conversation

@silas-qiao

@silas-qiao silas-qiao commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Base branch: master
  • What changed and why:
    • Routes the remaining bare zeroclaw status CLI strings through the existing Fluent/i18n path in src/main.rs.
    • Adds the missing English cli-status-* Fluent keys needed for trace storage, heartbeat, memory, security detail lines, cost tracking, channel configuration words, and peripherals status.
    • Preserves the current status output layout and behavior; this patch only changes where user-facing strings come from.
  • Scope boundary: Does not redesign the zeroclaw status layout, does not reintroduce or change Web UI status lines, and does not add non-English translations in this pass.
  • Blast radius: Affects only the CLI status output path and English CLI Fluent resources.
  • Linked issue(s): Related [Feature]: Route zeroclaw status output through CLI i18n #7099. Related feat(nix): add flake.nix (contains rust app + web ui) #5987.
  • Labels: enhancement, priority:p3, core

Validation Evidence (required)

cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test
  • Commands run and tail output:
cargo fmt --all -- --check
passed locally after formatting the touched files

cargo clippy --all-targets -- -D warnings
...
Checking zeroclaw-runtime v0.8.0-beta-2 (D:\work\claw\zeroclaw\github\zeroclaw\crates\zeroclaw-runtime)
Checking zeroclaw-hardware v0.8.0-beta-2 (D:\work\claw\zeroclaw\github\zeroclaw\crates\zeroclaw-hardware)
Checking zeroclaw-channels v0.8.0-beta-2 (D:\work\claw\zeroclaw\github\zeroclaw\crates\zeroclaw-channels)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 6m 26s

cargo test
user-ran locally after the patch; reported all tests passing

cargo build --bin zeroclaw
Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.77s

.\target\debug\zeroclaw.exe status
🦀 ZeroClaw Status

Version:     0.8.0-beta-2
Workspace:   C:\Users\10244347\.zeroclaw\data
Config:      C:\Users\10244347\.zeroclaw\config.toml

🤖 ModelProvider:      qwen.default
   Model:         qwen3.5-35b-a3b
📊 Observability:  langfuse
🧾 Trace storage:  rolling (state/runtime-trace.jsonl)
🛡️  Agents:        default=Supervised
⚙️  Runtime:       native
🔴 Service:       stopped
💓 Heartbeat:      disabled
🧠 Memory:         none (auto-save: on)
...
Peripherals:
  Enabled:   no
  Boards:    0
  • Beyond CI — what did you manually verify? Verified the built zeroclaw status output still renders with the same layout and values while the previously bare strings now resolve through Fluent-backed keys. Did not verify non-English locale overrides in this pass; missing locale-specific keys fall back to English by design.
  • If any command was intentionally skipped, why: No repo validation steps were intentionally skipped. cargo test evidence in this note is user-run rather than captured in this session.

Security & Privacy Impact (required)

  • New permissions, capabilities, or file system access scope? No
  • New external network calls? No
  • Secrets / tokens / credentials handling changed? No
  • PII, real identities, or personal data in diff, tests, fixtures, or docs? No
  • If any Yes, describe the risk and mitigation:

Compatibility (required)

  • Backward compatible? Yes
  • Config / env / CLI surface changed? No
  • If No or Yes to either: exact upgrade steps for existing users: None.

Rollback (required for risk: medium and risk: high)

Low-risk PR: git revert <sha> is sufficient.

Supersede Attribution (required only when Supersedes # is used)

  • Superseded PRs + authors (#<pr> by @<author>, one per line):
  • Scope materially carried forward:
  • Co-authored-by trailers added in commit messages for incorporated contributors? (Yes/No)
  • If No, why (inspiration-only, no direct code/design carry-over):

@github-actions github-actions Bot added the core Auto scope: root src/*.rs files changed. label Jun 11, 2026
@silas-qiao
silas-qiao force-pushed the fix/status-fluent-i18n branch from 4a90664 to 4a6e9c8 Compare June 11, 2026 12:48
@silas-qiao
silas-qiao force-pushed the fix/status-fluent-i18n branch from 4a6e9c8 to 3e84db9 Compare June 11, 2026 13:03

@Audacity88 Audacity88 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @silas-qiao. I checked head 3e84db9 against the current PR body, #7099, the linked #5987 context, the status diff, and the visible CI. The Fluent migration itself is moving in the right direction: trace storage, heartbeat, memory, security details, cost tracking, channel status words, and peripherals now resolve through the CLI Fluent path, and the patch is whitespace-clean.

🔴 Blocking — Fixes #7099 would close the Web UI follow-up too early

#7099 is the tracker for the broader zeroclaw status i18n debt, and its acceptance criteria specifically include routing the Web UI status diagnostics from #5987 through the CLI i18n path.

This PR is based on current master, where #5987 is still open, so those Web UI status lines are not present in this diff. The PR body also scopes them out explicitly: "does not reintroduce or change Web UI status lines." That makes this a useful partial slice, but not a complete Fixes #7099 change.

Please either include the Web UI status migration once that code is available on this branch, or adjust the PR body so #7099 stays open for the #5987 follow-up. In practice, that means replacing Fixes #7099 with a non-closing reference such as Related #7099 unless this PR also completes the remaining acceptance criteria.

Once that tracking mismatch is corrected, I expect the code path to be straightforward to re-review.

@WareWolf-MoonWall WareWolf-MoonWall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review: head 3e84db91. Audacity88 has an active CHANGES_REQUESTED — not approving over it per protocol. Commenting to confirm the code quality is sound and the only required change is the issue tracker reference.

✅ The Fluent migration itself is correct

The 19 new Fluent keys in crates/zeroclaw-runtime/locales/en/cli.ftl correctly cover the remaining bare strings: trace storage, heartbeat, memory, security detail lines, cost tracking, channel config words, and peripherals status. Every new t("cli-status-*", fallback) call in src/main.rs is paired with a matching key and the fallback string matches the pre-existing English literal, so missing-key degradation is invisible. The layout and output values are confirmed unchanged by the author's live zeroclaw status run. Validation evidence (fmt, clippy, test, build) is complete and literal.

🔴 Supporting @Audacity88's blocker — change Fixes #7099 to Related #7099

#7099 tracks the full zeroclaw status i18n debt including Web UI status diagnostics from #5987. This PR explicitly scopes out the Web UI lines ("does not reintroduce or change Web UI status lines"). Closing #7099 here would mark that remaining work as done when it isn't. The one-word fix is: replace Fixes #7099 with Related #7099 in the PR body. Once that's updated, this PR should be straightforward to approve.

@silas-qiao

Copy link
Copy Markdown
Contributor Author

Updated the PR body to use Related #7099 instead of Fixes #7099.

This PR only covers the remaining bare zeroclaw status strings present on current master. The broader #7099 tracker should stay open for the separate Web UI status i18n follow-up tied to #5987.

The code in this PR is unchanged.

@silas-qiao

Copy link
Copy Markdown
Contributor Author

Re-review: head 3e84db91. Audacity88 has an active CHANGES_REQUESTED — not approving over it per protocol. Commenting to confirm the code quality is sound and the only required change is the issue tracker reference.

✅ The Fluent migration itself is correct

The 19 new Fluent keys in crates/zeroclaw-runtime/locales/en/cli.ftl correctly cover the remaining bare strings: trace storage, heartbeat, memory, security detail lines, cost tracking, channel config words, and peripherals status. Every new t("cli-status-*", fallback) call in src/main.rs is paired with a matching key and the fallback string matches the pre-existing English literal, so missing-key degradation is invisible. The layout and output values are confirmed unchanged by the author's live zeroclaw status run. Validation evidence (fmt, clippy, test, build) is complete and literal.

🔴 Supporting @Audacity88's blocker — change Fixes #7099 to Related #7099

#7099 tracks the full zeroclaw status i18n debt including Web UI status diagnostics from #5987. This PR explicitly scopes out the Web UI lines ("does not reintroduce or change Web UI status lines"). Closing #7099 here would mark that remaining work as done when it isn't. The one-word fix is: replace Fixes #7099 with Related #7099 in the PR body. Once that's updated, this PR should be straightforward to approve.

@WareWolf-MoonWall @Audacity88 I have updated. Please check it again.

@Audacity88 Audacity88 added bug Something isn't working risk: low labels Jun 13, 2026

@Audacity88 Audacity88 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewing head 3e84db91 after the body-only update. I checked the current PR body update, #7099, #5987, my prior request-changes review, WareWolf-MoonWall's comment review, the current diff, and the green CI snapshot.

The update resolves the body-reference blocker from my June 11 review by keeping #7099 and #5987 open as Related references. This approval clears only that blocker; it is not a merge-readiness review.

✅ Resolved — #7099 now stays open for the Web UI/status follow-up

The body now says Linked issue(s): Related #7099. Related #5987., so it no longer claims to close #7099. That matches the actual slice here: this PR routes the remaining current zeroclaw status CLI strings through Fluent, while #7099 can continue tracking the broader status-output i18n debt and the Web UI diagnostic work tied to #5987.

🟢 What looks good — The Fluent migration is a clean focused slice

The code path still looks sound on current head. The new English cli-status-* keys cover the status labels and status words this diff moves out of bare println! strings, and the t(...) / ta(...) fallbacks preserve the existing English output shape when a key is missing. The author-provided status smoke plus green CI are enough for this low-risk CLI i18n slice. I do not see a remaining blocker from my prior review.

@singlerider singlerider left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at head 3e84db91 against current master. Clean, focused i18n slice. Approving.

🟢 The Fluent migration follows the localization rule

The diff replaces the remaining bare println! literals in zeroclaw status with t() / ta() Fluent calls — trace storage, heartbeat cadence, memory, allowed roots/commands, and the status words (on/off/disabled/(none)) — and adds 19 matching cli-status-* keys to crates/zeroclaw-runtime/locales/en/cli.ftl. Each call carries an English fallback (e.g. t("cli-status-word-disabled", "disabled")), so the existing English output shape is preserved when a key is missing. That is exactly the AGENTS.md localization pattern — user-facing strings routed through Fluent rather than hardcoded literals.

🟢 Scope and references are honest

This is correctly scoped to the current zeroclaw status strings, with the body using Related #7099 / Related #5987 rather than claiming to close the broader status-output i18n / Web UI diagnostic debt — which @Audacity88's prior block was about and which is now resolved. CI is green and the branch is MERGEABLE / CLEAN.

@Audacity88 cleared his earlier changes-requested and approved at this head. Approving — the strings move out of bare literals into Fluent with safe fallbacks, the scope is a clean slice, and the references are accurate.

@Audacity88

Copy link
Copy Markdown
Collaborator

@silas-qiao this is approved and the prior tracking-reference issue is resolved. It's currently blocked only because master moved and the branch now conflicts in src/main.rs and crates/zeroclaw-runtime/locales/en/cli.ftl.

Could you merge current master into fix/status-fluent-i18n and resolve the conflict? The intended resolution should keep this PR's Fluent-backed zeroclaw status strings while preserving the current master status formatting changes. After that, CI should rerun and we can take another quick look.

@singlerider
singlerider merged commit 77b536f into zeroclaw-labs:master Jun 17, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working core Auto scope: root src/*.rs files changed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants