Skip to content

feat(menubar): translate the tray popover, settings and Capacity Dock - #1703

Open
shanhe0814 wants to merge 1 commit into
getagentseal:mainfrom
shanhe0814:cursor/menubar-zh-ce11
Open

shanhe0814 wants to merge 1 commit into
getagentseal:mainfrom
shanhe0814:cursor/menubar-zh-ce11

Conversation

@shanhe0814

Copy link
Copy Markdown

Summary

Follow-up to #1608, closes the remaining items in #1646.

  • Popover, General settings and Capacity Dock are now translated (en, fr, ja, ko, zh-Hans, zh-Hant), reusing the macOS menu bar Localizable.strings wherever the same English string exists.
  • Settings → General → Language picks the language; "System" follows Windows. The choice is written to the shared ~/.config/codeburn/config.json, so the tray follows the desktop app's language without a restart.
  • zh-Hant uses the macOS zh-Hant strings instead of falling back to zh-Hans.
  • "Show today's cost in tray" is translated.
  • Builds on feat(windows): localize the Windows tray into Simplified Chinese #1608's i18n.rs for the tray menu; no duplicate catalogs.

Testing / Verification

  • I have tested this locally against real data (not just unit tests)
  • npx tsc --noEmit in windows/ passes
  • UI change: before and after screenshots attached below

Popover

English / 简体中文 / 繁體中文
image7
image
image5

Settings → General

English / 简体中文 / 繁體中文
image6
image2
image4

Tray menu and Capacity Dock

image1 image3

@shanhe0814
shanhe0814 requested a review from iamtoruk as a code owner October 9, 2026 16:56
iamtoruk added a commit that referenced this pull request Oct 10, 2026
…nd follow-ups (#1733)

* fix(pr): a subagent whose description names a PR folds into that PR

A subagent run folded into whatever PR its parent's last pr-link carried, so
review runs for #1703, #1712, #1728 and #1729 landed on a stale closed #24.
The Agent description ("Review PR 1729 ...") is now read from the subagent's
.meta.json at report time; a single PR it names outranks the carried PR.

* fix(pr): date each PR by its own turns and count its agent runs

Every PR row carried the whole session's first and last timestamp, so one
long orchestrator session stamped the same span and "1 session" on all of
them. Rows now span their first to last attributed turn or folded run, and
a new `runs` field counts contributing sessions plus folded subagent runs.

* feat(pr): local one-shot, follow-up rounds, review runs, merge time and cost split per PR

Each PR row now carries signals read from cached commands, no GitHub calls:
openedAt (gh pr create paired with the PR's first pr-link), follow-up rounds
(pushes naming its --head branch, or from a run whose description names it,
in 10-minute bursts), oneShot only when the open and its branch were seen,
reviewRuns and reviewCostUSD, mergedAt and timeToMergeMs, a build/review/fixes
cost split that sums to the row, and linkEvidence to flag pr-link-only rows.

* feat(session-why): PRs the session opened, their follow-up rounds and review runs

The why view now carries prWork: each gh pr create whose output printed a PR
URL, the pushes after it on its --head branch (or from a helper whose
description names that PR) in 10-minute rounds, and the helpers that read a
PR without committing or pushing, with their cost.

* perf(pr): only parse commands that can name a push or a PR

* feat(app): local PR facts on PR cards and PR work in the session view

Each PR card gets one line of facts from the CLI's local signals: the review
run and its cost, one shot or follow-up rounds, and merge time after open.
Unknowns are left out; a pr-link-only row says so. The count shows agent runs
instead of sessions. The expanded card splits spend into building, review runs
and after first review, and lists the review runs. The session view lists the
PRs it opened and the review runs it spawned.

* perf(pr): read subagent descriptions only for PR attribution

Every report, status and menubar refresh read each subagent's .meta.json
(about 2,000 files in 30 days) and the cross-provider correlation scanned
every folded run's commands for PR signals it never uses. Sessions now carry
the sidecar path; the description is read on demand, memoized by mtime, only
for folded runs and runs that push, and correlation skips the command scan.
The by-pr footer now counts runs to match the Runs column.
@cursor
cursor Bot force-pushed the cursor/menubar-zh-ce11 branch from 5f28e78 to 90ee610 Compare October 11, 2026 01:52
Pull request 1608 already localized the tray menu, tooltip, usage row, dock menu and footer. This adds the surfaces that issue still lists: the popover, General settings, the Capacity Dock window, a language row that writes the shared config.json language, a live switch when that file changes, Traditional Chinese, and the tray-badge label.

macOS Localizable.strings is the source of truth. Windows-only sentences live in extra.json, with a real zh-Hant table instead of a Simplified copy.

Refs getagentseal#1646
@cursor
cursor Bot force-pushed the cursor/menubar-zh-ce11 branch from 90ee610 to 7f75153 Compare October 11, 2026 15:50

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant