Skip to content

feat: add Turkish localization - #398

Open
husodrn46 wants to merge 6 commits into
steipete:mainfrom
husodrn46:feat/turkish-localization
Open

feat: add Turkish localization#398
husodrn46 wants to merge 6 commits into
steipete:mainfrom
husodrn46:feat/turkish-localization

Conversation

@husodrn46

@husodrn46 husodrn46 commented Sep 1, 2026

Copy link
Copy Markdown

Summary

Adds Turkish interface localization for CLI help, progress, and status, plus extension Options and the side panel. --language continues to control generated summary language independently.

The maintainer follow-up repairs compatibility issues across extension and CLI output:

  • Existing profiles without uiLocale retain English. Fresh installations retain Automatic; users can explicitly select English, Turkish, or Automatic.
  • Changing the interface locale in Options updates an already-open side panel, including switching back to English.
  • Parsed log data and process labels, commands, and progress values remain unchanged while surrounding controls are translated.
  • Slide sources after -- reach the parser intact, even when a filename resembles a locale option.
  • CLI status and finish-line rendering explicitly protect interpolated model identifiers, paths, and configuration values. Slides and refresh-free translate their labels separately from paths, including spaces and punctuation.
  • Raw diagnostics, provider failures, and parser errors retain their original text; known fixed application errors still translate.

Generated proof belongs in test output and the PR, so the checked-in screenshot and one-off proof document were moved out of the source tree. Contributor credit remains with @husodrn46.

Verification

  • pnpm run build and pnpm run check pass: 558 test files, 3,057 tests, 43 skipped; line coverage 94.13%, branch coverage 85.08%.
  • Independent Codex review of the full PR reports no actionable P0–P2 findings.
  • GitHub CI run 33935380465 passed all jobs: Node 24, Chromium E2E, and Firefox smoke. GitGuardian also passed.
  • The Chromium locale suite passes all four tests on the repaired source.
  • Running the same suite against the original PR revision reproduces all three extension defects: three failures, with the original Turkish options test passing.
  • Focused settings, storage binding, bootstrap, process-display, locale, slide-parser, status, refresh-free, error, and logging tests cover the repairs.
  • A built CLI smoke run extracted a slide from a synthetic video supplied after --, retained the Copy failed directory name, and printed Turkish labels.
  • Chrome and Firefox production extension builds pass.
  • Screenshots below show only synthetic settings and diagnostic data from the test harness.

Before and after

Existing profile on a Turkish browser: the original silently switches to Turkish; the repaired version preserves English.

Before After
Original legacy profile Legacy profile preserves English

Turkish diagnostic view: the original changes the raw Error: prefix to Hata:; the repaired version preserves the payload and severity while translating the UI controls.

Before After
Original diagnostic payload translated Diagnostic payload preserved

Maintainer decision

The compatibility repairs are ready for review. Acceptance of the broader Turkish localization feature remains pending; the conservative upgrade behavior above avoids silently changing existing users' interface language.

@clawsweeper

clawsweeper Bot commented Sep 1, 2026

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Sep 1, 2026
@clawsweeper

clawsweeper Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codex review: blocked before merge. Reviewed September 4, 2026, 9:28 PM ET / September 5, 2026, 01:28 UTC.

ClawSweeper review

What this changes

Adds Turkish CLI help, progress, and status text plus selectable extension interface localization, independently of the generated summary language.

Merge readiness

Blocked before merge - 3 items remain

The three previous blockers are repaired, and the interface localization remains distinct from current main. One additional display-integrity defect remains; acceptance of the broader feature is also explicitly pending.

Priority: P2
Reviewed head: 90cc057396266e054cd632f2824c4bd937b8d8d9
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) Strong recorded behavior evidence and repaired prior blockers are offset by one remaining user-content display defect.
Proof confidence 🦞 diamond lobster (5/6) ✨ media proof bonus Sufficient (linked_artifact): The captured owner-attested Chromium runs and before/after artifacts exercise production locale loading, legacy preferences, open-panel switching, and diagnostic preservation; the built CLI run additionally exercises slide extraction with Turkish labels and unchanged paths. Attachment retrieval was unavailable here, so this retains the supplied sufficient assessment without claiming firsthand media inspection.
Patch quality 🦐 gold shrimp (3/6) 1 actionable review finding remain.

Verification

Check Result Evidence
Real behavior Verified Sufficient (linked_artifact): The captured owner-attested Chromium runs and before/after artifacts exercise production locale loading, legacy preferences, open-panel switching, and diagnostic preservation; the built CLI run additionally exercises slide extraction with Turkish labels and unchanged paths. Attachment retrieval was unavailable here, so this retains the supplied sufficient assessment without claiming firsthand media inspection.
Evidence reviewed 10 items Verified checkout and applicable policy: The origin is steipete/summarize and HEAD matches the pinned PR head. The full root AGENTS.md was read; no nested AGENTS.md or applicable maintainer-note directory was found. Review remained read-only, and the final working-tree status was clean.
Current main does not contain interface localization: Current main already supports tr/turkish summary-language aliases and a Turkish output-language option, but the searched CLI, core, documentation, and extension sources contain no uiLocale, SUMMARIZE_LOCALE, or --locale implementation. Existing output-language support does not replace the proposed interface feature.
Release boundary: The supplied latest release, v0.21.11, contains the existing Turkish summary aliases but neither new localization module. The proposed interface feature is not established as shipped, and no same-repository merged replacement was established.
Findings 1 actionable finding [P2] Exclude queued prompts and source titles from DOM localization
Security None None.

How this fits together

Summarize’s CLI and browser extension present controls and progress around content extraction and summarization. The new locale layer translates interface text using CLI arguments or saved browser preferences, while summary language is configured separately.

flowchart TD
  A[CLI arguments and environment] --> C[Interface locale selection]
  B[Saved extension preferences] --> C
  C --> D[CLI labels and extension controls]
  E[Summary language setting] --> F[Generated summary]
  G[User text and diagnostic data] --> H[Unchanged content display]
  F --> H
Loading

Decision needed

Question Recommendation
Should Summarize accept Turkish interface support across the CLI and extension, including the new locale flag, environment variable, and saved preference? Accept after the content-preservation repair: Approve the current CLI and extension scope once queued prompts and source titles remain unchanged under localization.

Why: The repository owner explicitly left broader feature acceptance pending; contributing compatibility repairs does not establish acceptance of the permanent localization surface.

Before merge

  • Exclude queued prompts and source titles from DOM localization (P2) - The new body-wide scope also covers #chatQueue, #title, and the empty-state source detail, none of which excludes user/source text. With Turkish selected, queueing Try again during a response changes both its preview and tooltip to Tekrar dene, while dequeueQueuedMessage() still sends the original English text. A page titled Error is likewise displayed as Hata. Exclude these data-bearing nodes while retaining translation of surrounding controls, and add preservation regressions. This is a late discovery: the relevant scope, translator, and renderers are unchanged from the previously reviewed head.
  • Complete next step (P2) - Preserve queued prompt text and source titles under localization, add focused regressions, and obtain steipete’s acceptance of the CLI and extension locale surface.
  • Resolve maintainer decision - Resolve the maintainer decision shown above before merge.

Findings

  • [P2] Exclude queued prompts and source titles from DOM localization — apps/chrome-extension/src/entrypoints/sidepanel/index.html:9
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production versus test growth Production +1,767/−99, net +1,668; tests +513/−20, net +493 The stated CLI and extension localization scope explains the production growth, including two new translation modules.

Technical review

Best possible solution:

Localize application-owned interface text while preserving user prompts, source titles, diagnostics, legacy preferences, and the independent summary-language setting.

Do we have a high-confidence way to reproduce the issue?

Yes, from PR-head source: select Turkish and queue 'Try again' while a response is streaming; the preview and tooltip translate while the queued prompt remains English. This was not executed locally and is not claimed as a current-main failure.

Is this the best way to solve the issue?

Not fully: separating interface language from summary language and preserving legacy English are appropriate, but the body-wide translator still needs explicit exclusions for queued prompts and source titles.

Full review comments:

  • [P2] Exclude queued prompts and source titles from DOM localization — apps/chrome-extension/src/entrypoints/sidepanel/index.html:9
    The new body-wide scope also covers #chatQueue, #title, and the empty-state source detail, none of which excludes user/source text. With Turkish selected, queueing Try again during a response changes both its preview and tooltip to Tekrar dene, while dequeueQueuedMessage() still sends the original English text. A page titled Error is likewise displayed as Hata. Exclude these data-bearing nodes while retaining translation of surrounding controls, and add preservation regressions. This is a late discovery: the relevant scope, translator, and renderers are unchanged from the previously reviewed head.
    Confidence: 0.98
    Late finding: first raised on code an earlier review cycle already covered.

Overall correctness: patch is incorrect
Overall confidence: 0.96

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 589c6c2876f0.

Labels

Label changes:

  • add P2: This is a bounded localization improvement with a remaining content-display defect, not an urgent shipped regression; the previous compatibility blockers are repaired.
  • remove merge-risk: 🚨 compatibility: Current PR review selected no merge-risk labels.
  • remove P1: Current review triage priority is P2, so this older priority label is no longer current.
  • remove proof: 📸 screenshot: Current real behavior proof evidence kind is linked_artifact.

Label justifications:

  • P2: This is a bounded localization improvement with a remaining content-display defect, not an urgent shipped regression; the previous compatibility blockers are repaired.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (linked_artifact): The captured owner-attested Chromium runs and before/after artifacts exercise production locale loading, legacy preferences, open-panel switching, and diagnostic preservation; the built CLI run additionally exercises slide extraction with Turkish labels and unchanged paths. Attachment retrieval was unavailable here, so this retains the supplied sufficient assessment without claiming firsthand media inspection.
  • proof: sufficient: Contributor real behavior proof is sufficient. The captured owner-attested Chromium runs and before/after artifacts exercise production locale loading, legacy preferences, open-panel switching, and diagnostic preservation; the built CLI run additionally exercises slide extraction with Turkish labels and unchanged paths. Attachment retrieval was unavailable here, so this retains the supplied sufficient assessment without claiming firsthand media inspection.

Evidence

What I checked:

  • Verified checkout and applicable policy: The origin is steipete/summarize and HEAD matches the pinned PR head. The full root AGENTS.md was read; no nested AGENTS.md or applicable maintainer-note directory was found. Review remained read-only, and the final working-tree status was clean. (AGENTS.md:1, 90cc05739626)
  • Current main does not contain interface localization: Current main already supports tr/turkish summary-language aliases and a Turkish output-language option, but the searched CLI, core, documentation, and extension sources contain no uiLocale, SUMMARIZE_LOCALE, or --locale implementation. Existing output-language support does not replace the proposed interface feature. (packages/core/src/language.ts:68, 589c6c2876f0)
  • Release boundary: The supplied latest release, v0.21.11, contains the existing Turkish summary aliases but neither new localization module. The proposed interface feature is not established as shipped, and no same-repository merged replacement was established. (packages/core/src/language.ts:68, 1dcbff752de7)
  • Legacy-profile blocker repaired: loadSettings now distinguishes empty storage from existing profiles: missing or invalid uiLocale falls back to English for an existing profile, while fresh defaults remain Automatic. Settings regressions cover unrelated saves and explicit selection of Automatic; the browser suite covers a legacy profile on a Turkish browser. (apps/chrome-extension/src/lib/settings.ts:461, 90cc05739626)
  • Live-update and diagnostic blockers repaired: The side-panel storage listener applies changed valid locale preferences, with bootstrap and browser coverage for switching Turkish back to English. Parsed log rows and process-owned labels, commands, progress, and identifiers now receive localization exclusions; focused preservation tests cover those payloads. (apps/chrome-extension/src/entrypoints/sidepanel/bindings.ts:224, 90cc05739626)
  • Remaining user-content localization trigger: The new body-wide localization scope includes chatQueue, the source-title header, and empty-state source details. These lack exclusions: queued text and its title attribute come directly from item.text, while the observer translates dictionary matches. Queuing 'Try again' therefore displays Turkish text although dequeue still returns the original English prompt; a source title such as 'Error' is similarly rewritten. (apps/chrome-extension/src/entrypoints/sidepanel/index.html:9, 90cc05739626)

Likely related people:

  • steipete: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Exclude queued prompt text, tooltips, and source-title displays from localization, with regressions for dictionary-matching content and locale switching.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (11 earlier review cycles; latest 8 shown)
  • reviewed 2026-09-01T17:14:23.144Z sha 11ec479 :: found issues before merge. :: [P1] Preserve English for existing extension installations | [P1] Exclude daemon diagnostics from DOM localization | [P2] Apply locale updates in open side panels
  • reviewed 2026-09-02T17:42:32.632Z sha 11ec479 :: found issues before merge. :: [P1] Preserve English for existing extension installations | [P1] Exclude daemon payloads from DOM localization | [P2] Refresh locale in an open side panel
  • reviewed 2026-09-03T14:59:53.959Z sha 11ec479 :: blocked before merge. :: [P1] Preserve English for existing extension installations | [P2] Apply locale changes to an already-open side panel
  • reviewed 2026-09-03T17:54:37.345Z sha 11ec479 :: blocked before merge. :: [P1] Keep English as the documented default UI locale | [P1] Exclude parsed daemon payloads from DOM localization | [P2] Refresh locale in an already-open side panel
  • reviewed 2026-09-04T00:21:10.422Z sha 11ec479 :: blocked before merge. :: [P1] Preserve English for existing extension profiles | [P1] Exclude daemon data before observing application UI | [P2] Apply locale on storage updates in open side panels
  • reviewed 2026-09-04T11:05:14.016Z sha 11ec479 :: blocked before merge. :: [P1] Preserve English for existing extension profiles | [P1] Exclude daemon payloads from DOM localization | [P2] Apply locale updates in already-open side panels
  • reviewed 2026-09-04T13:54:38.632Z sha 11ec479 :: blocked before merge. :: [P1] Preserve English for existing extension profiles | [P2] Apply locale changes to open side panels
  • reviewed 2026-09-04T15:54:54.059Z sha 11ec479 :: blocked before merge. :: [P1] Preserve English for existing extension profiles | [P1] Exclude diagnostic payloads from DOM localization | [P2] Apply locale changes to open side panels

@husodrn46

Copy link
Copy Markdown
Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Sep 1, 2026

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@husodrn46

Copy link
Copy Markdown
Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Sep 1, 2026

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Sep 1, 2026

Copy link
Copy Markdown
Author

@clawsweeper re-review

Updated the PR with inspectable evidence: real headed Chromium regression, Turkish CLI help output, local slide/parser fixture tests, Chrome/Firefox builds, and a privacy-reviewed screenshot. The screenshot path is now docs/assets/pr398-turkish-options.png; product behavior remains unchanged since fccd6a6e.

@clawsweeper

clawsweeper Bot commented Sep 1, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

@clawsweeper clawsweeper Bot added P1 Urgent regression or broken agent/channel workflow affecting real users now. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Sep 1, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Sep 3, 2026
Keep existing profiles in English, apply locale changes to open panels,
and exclude diagnostic and process payloads from DOM translation.
Preserve CLI arguments after -- and protect interpolated values explicitly.
Add regressions and move synthetic proof from source to PR attachments.

Co-authored-by: Hüseyin Durna <76519526+husodrn46@users.noreply.github.com>
@steipete

steipete commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Pushed the compatibility repairs in 90cc057, preserving @husodrn46's contributor credit. Existing profiles keep English, locale changes reach open panels, and diagnostics/process values remain untouched. CLI rendering now preserves interpolated paths and identifiers, and slide arguments after -- stay intact.

Verification: pnpm run build and pnpm run check passed (3,057 tests); the Chromium locale suite passed all four tests, while the same suite reproduced the three defects on the original head. Both extension production builds passed. A built CLI run extracted slides from a synthetic video supplied after --, printed Turkish labels, and retained a path containing Copy failed. Independent Codex review found no actionable P0–P2 issues. The PR body includes inspected synthetic before/after screenshots.

All jobs in CI run 33935380465 passed. This PR remains open for acceptance of the broader localization feature; no merge or release was performed.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. and removed merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P1 Urgent regression or broken agent/channel workflow affecting real users now. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants