feat: add Russian localization and independent STT languages
CI / Typecheck, tests, lint (push) Canceled after 0s
CI / Standalone (mac-arm64) (push) Canceled after 0s
CI / Standalone (linux-x64) (push) Canceled after 0s
CI / Standalone (windows-x64) (push) Canceled after 0s

This commit is contained in:
2026-10-25 17:18:44 +03:00
parent b277ee3e0f
commit a50ca4b867
93 changed files with 3261 additions and 904 deletions
+7 -4
View File
@@ -1,4 +1,6 @@
"use client";
import { useI18n } from "@/components/i18n";
import type { CompactionDetails } from "@/src/core";
@@ -19,11 +21,11 @@ export interface CompactionDividerData {
* history was just summarized; the cut divider below carries the seam.
* Inert since release polish 2026-10-06 — plain text, no affordance. */
export function CompactionMomentDivider({ data: _data }: { data: CompactionDividerData }) {
const { t } = useI18n();
return (
<div className="flex w-full items-center justify-center py-1">
<span data-testid="compaction-divider" className="px-1.5 text-xs text-muted-foreground/70">
Context compacted
</span>
{t("Context compacted")}</span>
</div>
);
}
@@ -35,12 +37,13 @@ export function CompactionMomentDivider({ data: _data }: { data: CompactionDivid
* since release polish 2026-10-06 — the token count stays, the summary
* is inspectable only in provider logs. */
export function CompactionCutDivider({ data }: { data: CompactionDividerData }) {
const kTok = data.details.tokensBefore > 0 ? ` · ${Math.round(data.details.tokensBefore / 1000)}k tok` : "";
const { t } = useI18n();
const kTok = data.details.tokensBefore > 0 ? t(" · {v0}k tok", { v0: Math.round(data.details.tokensBefore / 1000) }) : "";
return (
<div data-testid="compaction-cut-divider" className="my-4 flex w-full items-center gap-3">
<span className="h-0 flex-1 border-t-2 border-dotted border-border/50" aria-hidden />
<span className="rounded-full border border-border/80 px-2.5 py-0.5 text-xs font-medium uppercase tracking-wide text-muted-foreground">
History compacted{kTok}
{t("History compacted")}{kTok}
</span>
<span className="h-0 flex-1 border-t-2 border-dotted border-border/50" aria-hidden />
</div>