feat(sse): full language parity for output styles (es/de/fr/it/ru/zh + autoDetect) (#12289)

* feat(sse): add it/ru/zh caveman output instructions

* fix(sse): expose the dormant terse-prose translations through the catalog

* feat(sse): translate less-code to es/de/fr/it/ru/zh

* feat(sse): translate ponytail to es/de/fr/it/ru/zh

* feat(sse): translate i-have-adhd to es/de/fr/it/ru/zh

* test(sse): anchor wave-2 output-style translations to their own language

* feat(dashboard): offer every output-style language in the default-language selector

* feat(sse): let autoDetect pick the output-style instruction language

* docs(compression): consolidate the output-style tables and record full language parity
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-09-01 11:13:26 -03:00
committed by GitHub
parent fe5f4b0ef9
commit abbbca216d
11 changed files with 278 additions and 36 deletions

View File

@@ -4,6 +4,7 @@ import { useEffect, useMemo, useState } from "react";
import { useTranslations } from "next-intl";
import { SegmentedControl } from "@/shared/components";
import CompressionSettingsTab from "@/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab";
import { outputStyleLanguages } from "../../../../../../open-sse/services/compression/outputStyles/catalog.ts";
type AnalyticsSummary = {
totalRequests: number;
@@ -125,6 +126,12 @@ export default function CavemanContextPageClient() {
];
const previewPrompt = `[OmniRoute Caveman Output Mode]\n${t(`preview.${outputMode.intensity}`)}`;
// Rule packs drive the input engines; output styles can instruct in more
// languages (e.g. vi has no pack). The default-language selector offers both.
const languageOptions = [
...new Set([...languagePacks.map((pack) => pack.language), ...outputStyleLanguages()]),
].sort();
return (
<div className="mx-auto flex max-w-6xl flex-col gap-6">
<header className="flex flex-col gap-2">
@@ -186,9 +193,9 @@ export default function CavemanContextPageClient() {
onChange={(event) => updateLanguageConfig({ defaultLanguage: event.target.value })}
className="rounded-lg border border-border bg-bg px-3 py-2 text-sm"
>
{languagePacks.map((pack) => (
<option key={pack.language} value={pack.language}>
{pack.language}
{languageOptions.map((lang) => (
<option key={lang} value={lang}>
{lang}
</option>
))}
</select>