From 39abab6681a720553ceda40a9ced89fa2a13a25c Mon Sep 17 00:00:00 2001 From: Diego Rodrigues de Sa e Souza Date: Fri, 11 Sep 2026 22:05:40 -0300 Subject: [PATCH] fix(dashboard): honor active compression profile in effective-pipeline preview (#12063) (#13287) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merged as part of the 39-PR owner batch of 2026-09-11, validated as a unit. Boarded into one consolidated worktree cut from `release/v3.8.51` with the other 38 — zero conflicts between them. - ESLint over every changed file: no errors (the only finding was one suppression entry the batch emptied, pruned on #13243) - `typecheck:core` clean; `check:dashboard-typecheck` OK (206 pre-existing, within baseline); `check:changelog-integrity` OK - complexity 2821 / baseline 3218 and cognitive-complexity 1272 / baseline 1437 — both under baseline - 256 assertions green: 246 under node:test and 10 under vitest, which is where `tests/unit/**/*.test.tsx` actually runs - `check-file-size`: `chatCore.ts` rebaselined 6144 → 6146 for #13278 and #13276, annotated and landed on #13243 ⚠️ base-red inherited: #12732 — the provider count (356 in the docs vs the 358 the modules define) and `open-sse/utils/stream.ts` at 3115 > frozen 3098 both reproduce on the pure tip with zero contribution from this batch. --- .../fixes/12063-compression-profile-header.md | 1 + .../compression/deriveEffectivePreviewPlan.ts | 33 ++++++++ scripts/ad-hoc/add-12063-i18n-keys.mjs | 38 +++++++++ .../combos/CompressionCombosPageClient.tsx | 17 ++++ .../context/settings/CompressionPanel.tsx | 20 ++++- src/i18n/messages/ar.json | 4 +- src/i18n/messages/az.json | 4 +- src/i18n/messages/bg.json | 4 +- src/i18n/messages/bn.json | 4 +- src/i18n/messages/cs.json | 4 +- src/i18n/messages/da.json | 4 +- src/i18n/messages/de.json | 4 +- src/i18n/messages/el.json | 4 +- src/i18n/messages/en.json | 2 + src/i18n/messages/es.json | 4 +- src/i18n/messages/et.json | 4 +- src/i18n/messages/fa.json | 4 +- src/i18n/messages/fi.json | 4 +- src/i18n/messages/fr.json | 4 +- src/i18n/messages/ga.json | 4 +- src/i18n/messages/gu.json | 4 +- src/i18n/messages/he.json | 4 +- src/i18n/messages/hi.json | 4 +- src/i18n/messages/hr.json | 4 +- src/i18n/messages/hu.json | 4 +- src/i18n/messages/id.json | 4 +- src/i18n/messages/it.json | 4 +- src/i18n/messages/ja.json | 4 +- src/i18n/messages/ko.json | 4 +- src/i18n/messages/lt.json | 4 +- src/i18n/messages/lv.json | 4 +- src/i18n/messages/mr.json | 4 +- src/i18n/messages/ms.json | 4 +- src/i18n/messages/mt.json | 4 +- src/i18n/messages/nl.json | 4 +- src/i18n/messages/no.json | 4 +- src/i18n/messages/phi.json | 4 +- src/i18n/messages/pl.json | 4 +- src/i18n/messages/pt-BR.json | 4 +- src/i18n/messages/pt.json | 4 +- src/i18n/messages/ro.json | 4 +- src/i18n/messages/ru.json | 4 +- src/i18n/messages/sk.json | 4 +- src/i18n/messages/sl.json | 4 +- src/i18n/messages/sr.json | 4 +- src/i18n/messages/sv.json | 4 +- src/i18n/messages/sw.json | 4 +- src/i18n/messages/ta.json | 4 +- src/i18n/messages/te.json | 4 +- src/i18n/messages/th.json | 4 +- src/i18n/messages/tr.json | 4 +- src/i18n/messages/uk-UA.json | 4 +- src/i18n/messages/ur.json | 4 +- src/i18n/messages/vi.json | 4 +- src/i18n/messages/zh-CN.json | 4 +- src/i18n/messages/zh-TW.json | 4 +- .../derive-effective-preview-plan.test.ts | 82 +++++++++++++++++++ 57 files changed, 341 insertions(+), 52 deletions(-) create mode 100644 changelog.d/fixes/12063-compression-profile-header.md create mode 100644 open-sse/services/compression/deriveEffectivePreviewPlan.ts create mode 100644 scripts/ad-hoc/add-12063-i18n-keys.mjs create mode 100644 tests/unit/compression/derive-effective-preview-plan.test.ts diff --git a/changelog.d/fixes/12063-compression-profile-header.md b/changelog.d/fixes/12063-compression-profile-header.md new file mode 100644 index 0000000000..b98e306f32 --- /dev/null +++ b/changelog.d/fixes/12063-compression-profile-header.md @@ -0,0 +1 @@ +- fix(dashboard): make the compression "Effective pipeline" preview honor the active profile and warn when the master switch is off (#12063) diff --git a/open-sse/services/compression/deriveEffectivePreviewPlan.ts b/open-sse/services/compression/deriveEffectivePreviewPlan.ts new file mode 100644 index 0000000000..294c004b92 --- /dev/null +++ b/open-sse/services/compression/deriveEffectivePreviewPlan.ts @@ -0,0 +1,33 @@ +import type { CompressionConfig, CompressionPipelineStep } from "./types.ts"; +import { deriveDefaultPlan, type DerivedPlan } from "./deriveDefaultPlan.ts"; + +/** Named-combo map: combo id -> its stacked pipeline (operator-defined profiles). */ +export type NamedCombos = Record; + +/** + * Derives the plan a live request would actually run, for STATIC preview surfaces (the + * Settings-page "Effective pipeline" text — issue #12063). Mirrors resolveBasePlan's + * precedence for the two layers that apply to an at-rest preview — the master switch, then an + * explicit active profile — but skips the request-scoped layers that don't apply outside a + * live call (request header, routing-combo override, auto-trigger): those need per-request + * context this static preview does not have. + * + * Precedence (mirrors strategySelector.ts's resolveBasePlan): + * 1. masterEnabled=false -> off + * 2. activeComboId resolves in combos -> that profile's stacked pipeline (an explicit + * operator choice, which resolveBasePlan gives precedence over the plain engines-derived + * default) + * 3. otherwise -> deriveDefaultPlan(engines, enabled) + */ +export function deriveEffectivePreviewPlan( + config: Pick, + combos: NamedCombos = {} +): DerivedPlan { + if (!config.enabled) return { mode: "off", stackedPipeline: [] }; + + if (config.activeComboId && combos[config.activeComboId]) { + return { mode: "stacked", stackedPipeline: combos[config.activeComboId] }; + } + + return deriveDefaultPlan(config.engines, config.enabled); +} diff --git a/scripts/ad-hoc/add-12063-i18n-keys.mjs b/scripts/ad-hoc/add-12063-i18n-keys.mjs new file mode 100644 index 0000000000..777009b5b9 --- /dev/null +++ b/scripts/ad-hoc/add-12063-i18n-keys.mjs @@ -0,0 +1,38 @@ +#!/usr/bin/env node +// One-off, scoped i18n key insertion for issue #12063 — adds exactly the two new +// contextCombos keys (activeProfileMasterSwitchOffWarning / ...Cta) as __MISSING__ +// placeholders to every non-English locale, WITHOUT touching any other pre-existing +// missing-key drift (running the full `i18n:sync-ui` would also backfill unrelated +// drift across ~1000 keys, well outside this issue's scope). +import { readFileSync, writeFileSync, readdirSync } from "node:fs"; +import { join } from "node:path"; + +const MESSAGES_DIR = join(process.cwd(), "src/i18n/messages"); +const EN = JSON.parse(readFileSync(join(MESSAGES_DIR, "en.json"), "utf8")); + +const NEW_KEYS = ["activeProfileMasterSwitchOffWarning", "activeProfileMasterSwitchOffCta"]; +const NAMESPACE = "contextCombos"; + +const enValues = Object.fromEntries(NEW_KEYS.map((k) => [k, EN[NAMESPACE][k]])); + +const files = readdirSync(MESSAGES_DIR).filter((f) => f.endsWith(".json") && f !== "en.json"); + +let changed = 0; +for (const file of files) { + const path = join(MESSAGES_DIR, file); + const data = JSON.parse(readFileSync(path, "utf8")); + if (!data[NAMESPACE]) continue; + let touched = false; + for (const key of NEW_KEYS) { + if (!(key in data[NAMESPACE])) { + data[NAMESPACE][key] = `__MISSING__:${enValues[key]}`; + touched = true; + } + } + if (touched) { + writeFileSync(path, JSON.stringify(data, null, 2) + "\n", "utf8"); + changed++; + } +} + +console.log(`[add-12063-i18n-keys] updated ${changed} locale file(s)`); diff --git a/src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx b/src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx index f4e2487d28..2d13c65969 100644 --- a/src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx +++ b/src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx @@ -3,6 +3,7 @@ // Combos screen = Compression Hub (top) + named-combos manager (below). // import { useEffect, useState } from "react"; +import Link from "next/link"; import { useTranslations } from "next-intl"; import { STACKED_PIPELINE_ENGINE_INTENSITIES } from "@/shared/validation/compressionConfigSchemas"; import { CompressionPipelineEditor } from "@/shared/components/compression/CompressionPipelineEditor"; @@ -186,6 +187,22 @@ function NamedCombosManager() {

{t("namedCombosDescription")}

+ {/* #12063: the master "Prompt Compression" switch (Settings page) is a hard kill that + runs BEFORE an active profile is even considered (strategySelector.ts resolveBasePlan). + Surface that dependency here so a selected profile is never silently inert. */} + {!compressionEnabled && activeComboId && ( +
+ {t("activeProfileMasterSwitchOffWarning")}{" "} + + {t("activeProfileMasterSwitchOffCta")} + +
+ )} +
(DEFAULT_CONFIG); const [mcpAccessibility, setMcpAccessibility] = useState(true); + // Named-combo pipelines (id -> steps), so the "Effective pipeline" preview below can match + // what a live request actually runs when an active profile is selected (#12063). + const [namedCombos, setNamedCombos] = useState({}); // #7530 — per-engine expandable guidance (tradeoffs/lossy/cache-impact); collapsed by // default so the grid stays scannable. const [expandedGuidance, setExpandedGuidance] = useState>({}); @@ -248,6 +254,16 @@ export default function CompressionPanel() { if (data && typeof data.enabled === "boolean") setMcpAccessibility(data.enabled); }) .catch(() => {}); + + fetch("/api/context/combos") + .then((r) => (r.ok ? r.json() : null)) + .then((data: { combos?: Array<{ id: string; pipeline: NamedCombos[string] }> } | null) => { + const combos = Array.isArray(data?.combos) ? data.combos : []; + const map: NamedCombos = {}; + for (const combo of combos) map[combo.id] = combo.pipeline; + setNamedCombos(map); + }) + .catch(() => {}); }, []); // Persist a merge-patch. The DB persists `engines` as one whole row, so callers that @@ -356,7 +372,7 @@ export default function CompressionPanel() { } }; - const derived = deriveDefaultPlan(config.engines, config.enabled); + const derived = deriveEffectivePreviewPlan(config, namedCombos); const derivedText = derived.mode === "off" ? t("compressionDerivedOff") diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json index cb6cea93e9..183a9f54f2 100644 --- a/src/i18n/messages/ar.json +++ b/src/i18n/messages/ar.json @@ -8670,7 +8670,9 @@ "languagePacksList": "حزم اللغات: {packs}", "dragToReorder": "اسحب لإعادة ترتيب الخطوة", "engine": "المحرك", - "intensity": "الشدة" + "intensity": "الشدة", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "لا يوجد تشغيل ضغط متاح.", diff --git a/src/i18n/messages/az.json b/src/i18n/messages/az.json index cc36a21f9a..c9ff4293ac 100644 --- a/src/i18n/messages/az.json +++ b/src/i18n/messages/az.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Dil paketləri: {packs}", "dragToReorder": "Addımın sırasını dəyişmək üçün sürükləyin", "engine": "Mühərrik", - "intensity": "İntensivlik" + "intensity": "İntensivlik", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Heç bir sıxılma icrası mövcud deyil.", diff --git a/src/i18n/messages/bg.json b/src/i18n/messages/bg.json index 3af4c4bbd2..53a43ecc88 100644 --- a/src/i18n/messages/bg.json +++ b/src/i18n/messages/bg.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Езикови пакети: {packs}", "dragToReorder": "Плъзнете, за да пренаредите стъпката", "engine": "Двигател", - "intensity": "Интензивност" + "intensity": "Интензивност", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Няма налично изпълнение на компресиране.", diff --git a/src/i18n/messages/bn.json b/src/i18n/messages/bn.json index 2e2cb3e148..ffb54ef8d6 100644 --- a/src/i18n/messages/bn.json +++ b/src/i18n/messages/bn.json @@ -8670,7 +8670,9 @@ "languagePacksList": "ভাষা প্যাক: {packs}", "dragToReorder": "ধাপের ক্রম পরিবর্তন করতে টেনে আনুন", "engine": "ইঞ্জিন", - "intensity": "তীব্রতা" + "intensity": "তীব্রতা", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "কোনো কম্প্রেশন রান উপলব্ধ নেই।", diff --git a/src/i18n/messages/cs.json b/src/i18n/messages/cs.json index e449db5dfc..df7ff0803e 100644 --- a/src/i18n/messages/cs.json +++ b/src/i18n/messages/cs.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Jazykové balíčky: {packs}", "dragToReorder": "Přetažením změňte pořadí kroku", "engine": "Modul", - "intensity": "Intenzita" + "intensity": "Intenzita", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Není k dispozici žádný běh komprese.", diff --git a/src/i18n/messages/da.json b/src/i18n/messages/da.json index bad8c41ed1..e817957613 100644 --- a/src/i18n/messages/da.json +++ b/src/i18n/messages/da.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Sprogpakker: {packs}", "dragToReorder": "Træk for at omarrangere trin", "engine": "Motor", - "intensity": "Intensitet" + "intensity": "Intensitet", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Ingen komprimeringskørsel tilgængelig.", diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json index 1ae330f33f..b50c224873 100644 --- a/src/i18n/messages/de.json +++ b/src/i18n/messages/de.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Sprachpakete: {packs}", "dragToReorder": "Ziehen, um Schritt neu anzuordnen", "engine": "Engine", - "intensity": "Intensität" + "intensity": "Intensität", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Kein Komprimierungsdurchlauf verfügbar.", diff --git a/src/i18n/messages/el.json b/src/i18n/messages/el.json index eb5715202a..a7fd7bc3bc 100644 --- a/src/i18n/messages/el.json +++ b/src/i18n/messages/el.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Πακέτα γλώσσας: {packs}", "dragToReorder": "Σύρετε για αναδιάταξη βήματος", "engine": "Μηχανή", - "intensity": "Ένταση" + "intensity": "Ένταση", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Δεν υπάρχει διαθέσιμη εκτέλεση συμπίεσης.", diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index f385c9b698..795ae04cee 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -8660,6 +8660,8 @@ "contextEditingNote": "Currently available for Claude (Anthropic) only. It is a delegated mode: the provider clears old tool-use blocks server-side — we do not rewrite the message. It does not affect other providers.", "namedCombos": "Named combos", "namedCombosDescription": "Save different pipelines and assign them to specific routing combos.", + "activeProfileMasterSwitchOffWarning": "The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "Turn it on in Settings", "comboNamePlaceholder": "Combo name", "descriptionPlaceholder": "Description", "nameRequired": "Enter a combo name before saving.", diff --git a/src/i18n/messages/es.json b/src/i18n/messages/es.json index 16a4b8e4b3..1d2f539aeb 100644 --- a/src/i18n/messages/es.json +++ b/src/i18n/messages/es.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Language packs: {packs}", "dragToReorder": "Drag to reorder step", "engine": "Engine", - "intensity": "Intensity" + "intensity": "Intensity", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "No compression run available.", diff --git a/src/i18n/messages/et.json b/src/i18n/messages/et.json index 110848da00..200b177135 100644 --- a/src/i18n/messages/et.json +++ b/src/i18n/messages/et.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Keelepaketid: {packs}", "dragToReorder": "Lohistage etapi järjekorra muutmiseks", "engine": "Mootor", - "intensity": "Intensiivsus" + "intensity": "Intensiivsus", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Ühtegi tihenduskäivitust pole saadaval.", diff --git a/src/i18n/messages/fa.json b/src/i18n/messages/fa.json index db4c8c1ed5..1f00f515c3 100644 --- a/src/i18n/messages/fa.json +++ b/src/i18n/messages/fa.json @@ -8670,7 +8670,9 @@ "languagePacksList": "بسته‌های زبان: {packs}", "dragToReorder": "برای تغییر ترتیب مرحله بکشید", "engine": "موتور", - "intensity": "شدت" + "intensity": "شدت", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "هیچ اجرای فشرده‌سازی موجود نیست.", diff --git a/src/i18n/messages/fi.json b/src/i18n/messages/fi.json index 5b9c6550d3..4a1a88098f 100644 --- a/src/i18n/messages/fi.json +++ b/src/i18n/messages/fi.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Kielipaketit: {packs}", "dragToReorder": "Vedä järjestääksesi vaiheen uudelleen", "engine": "Moottori", - "intensity": "Voimakkuus" + "intensity": "Voimakkuus", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Pakkausajoa ei ole saatavilla.", diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json index dbb8f3080f..1de3c1a998 100644 --- a/src/i18n/messages/fr.json +++ b/src/i18n/messages/fr.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Packs de langue : {packs}", "dragToReorder": "Faites glisser pour réorganiser l'étape", "engine": "Moteur", - "intensity": "Intensité" + "intensity": "Intensité", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Aucune exécution de compression disponible.", diff --git a/src/i18n/messages/ga.json b/src/i18n/messages/ga.json index fe4d250d81..ea270b0054 100644 --- a/src/i18n/messages/ga.json +++ b/src/i18n/messages/ga.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Pacáistí teanga: {packs}", "dragToReorder": "Tarraing chun céim a atheagrú", "engine": "Inneall", - "intensity": "Déine" + "intensity": "Déine", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Níl aon rith comhbhrú ar fáil.", diff --git a/src/i18n/messages/gu.json b/src/i18n/messages/gu.json index 8170c354f8..60c163447d 100644 --- a/src/i18n/messages/gu.json +++ b/src/i18n/messages/gu.json @@ -8670,7 +8670,9 @@ "languagePacksList": "ભાષા પેક: {packs}", "dragToReorder": "પગલાંનો ક્રમ બદલવા માટે ખેંચો", "engine": "એન્જિન", - "intensity": "તીવ્રતા" + "intensity": "તીવ્રતા", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "કોઈ કમ્પ્રેશન રન ઉપલબ્ધ નથી.", diff --git a/src/i18n/messages/he.json b/src/i18n/messages/he.json index 2f24bed1c6..9db4315147 100644 --- a/src/i18n/messages/he.json +++ b/src/i18n/messages/he.json @@ -8670,7 +8670,9 @@ "languagePacksList": "חבילות שפה: {packs}", "dragToReorder": "גרור כדי לשנות את סדר השלבים", "engine": "מנוע", - "intensity": "עוצמה" + "intensity": "עוצמה", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "אין הרצת דחיסה זמינה.", diff --git a/src/i18n/messages/hi.json b/src/i18n/messages/hi.json index 21fe170a08..e9670d7747 100644 --- a/src/i18n/messages/hi.json +++ b/src/i18n/messages/hi.json @@ -8670,7 +8670,9 @@ "languagePacksList": "भाषा पैक: {packs}", "dragToReorder": "चरण का क्रम बदलने के लिए खींचें", "engine": "इंजन", - "intensity": "तीव्रता" + "intensity": "तीव्रता", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "कोई कंप्रेशन रन उपलब्ध नहीं है।", diff --git a/src/i18n/messages/hr.json b/src/i18n/messages/hr.json index 25be340a78..5dfeb52342 100644 --- a/src/i18n/messages/hr.json +++ b/src/i18n/messages/hr.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Jezični paketi: {packs}", "dragToReorder": "Povucite za promjenu redoslijeda koraka", "engine": "Motor", - "intensity": "Intenzitet" + "intensity": "Intenzitet", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nije dostupno nijedno pokretanje kompresije.", diff --git a/src/i18n/messages/hu.json b/src/i18n/messages/hu.json index ce9a32f11f..39dce97236 100644 --- a/src/i18n/messages/hu.json +++ b/src/i18n/messages/hu.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Nyelvi csomagok: {packs}", "dragToReorder": "Húzza a lépés átrendezéséhez", "engine": "Motor", - "intensity": "Intenzitás" + "intensity": "Intenzitás", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nem áll rendelkezésre tömörítési futtatás.", diff --git a/src/i18n/messages/id.json b/src/i18n/messages/id.json index 8740284970..5f9a9f7459 100644 --- a/src/i18n/messages/id.json +++ b/src/i18n/messages/id.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Paket bahasa: {packs}", "dragToReorder": "Seret untuk menyusun ulang langkah", "engine": "Mesin", - "intensity": "Intensitas" + "intensity": "Intensitas", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Tidak ada proses kompresi yang tersedia.", diff --git a/src/i18n/messages/it.json b/src/i18n/messages/it.json index 933fb3fae9..bc41744b5b 100644 --- a/src/i18n/messages/it.json +++ b/src/i18n/messages/it.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Pacchetti lingua: {packs}", "dragToReorder": "Trascina per riordinare il passaggio", "engine": "Motore", - "intensity": "Intensità" + "intensity": "Intensità", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nessuna esecuzione di compressione disponibile.", diff --git a/src/i18n/messages/ja.json b/src/i18n/messages/ja.json index 9fbdb3e596..c18f7d9ffa 100644 --- a/src/i18n/messages/ja.json +++ b/src/i18n/messages/ja.json @@ -8670,7 +8670,9 @@ "languagePacksList": "言語パック: {packs}", "dragToReorder": "ドラッグしてステップを並べ替え", "engine": "エンジン", - "intensity": "強度" + "intensity": "強度", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "利用可能な圧縮実行はありません。", diff --git a/src/i18n/messages/ko.json b/src/i18n/messages/ko.json index 41e016f4b3..302795b997 100644 --- a/src/i18n/messages/ko.json +++ b/src/i18n/messages/ko.json @@ -8670,7 +8670,9 @@ "languagePacksList": "언어 팩: {packs}", "dragToReorder": "드래그하여 단계 순서 변경", "engine": "엔진", - "intensity": "강도" + "intensity": "강도", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "사용 가능한 압축 실행이 없습니다.", diff --git a/src/i18n/messages/lt.json b/src/i18n/messages/lt.json index fef4aac3a4..a7f795dc1f 100644 --- a/src/i18n/messages/lt.json +++ b/src/i18n/messages/lt.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Kalbų paketai: {packs}", "dragToReorder": "Vilkite, kad pakeistumėte veiksmo vietą", "engine": "Variklis", - "intensity": "Intensyvumas" + "intensity": "Intensyvumas", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nėra pasiekiamų glaudinimo vykdymo duomenų.", diff --git a/src/i18n/messages/lv.json b/src/i18n/messages/lv.json index 3ccd19b276..4c035ded7e 100644 --- a/src/i18n/messages/lv.json +++ b/src/i18n/messages/lv.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Valodas pakas: {packs}", "dragToReorder": "Velciet, lai pārkārtotu soli", "engine": "Dzinējs", - "intensity": "Intensitāte" + "intensity": "Intensitāte", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nav pieejama saspiešanas izpilde.", diff --git a/src/i18n/messages/mr.json b/src/i18n/messages/mr.json index 57ccc41b02..27778d5ba6 100644 --- a/src/i18n/messages/mr.json +++ b/src/i18n/messages/mr.json @@ -8670,7 +8670,9 @@ "languagePacksList": "भाषा पॅक्स: {packs}", "dragToReorder": "पायरीचा क्रम बदलण्यासाठी ड्रॅग करा", "engine": "इंजिन", - "intensity": "तीव्रता" + "intensity": "तीव्रता", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "कोणताही कॉम्प्रेशन रन उपलब्ध नाही.", diff --git a/src/i18n/messages/ms.json b/src/i18n/messages/ms.json index e517898eba..0854540494 100644 --- a/src/i18n/messages/ms.json +++ b/src/i18n/messages/ms.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Pek bahasa: {packs}", "dragToReorder": "Seret untuk menyusun semula langkah", "engine": "Enjin", - "intensity": "Keamatan" + "intensity": "Keamatan", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Tiada larian pemampatan tersedia.", diff --git a/src/i18n/messages/mt.json b/src/i18n/messages/mt.json index e38989ac65..41f1f5f343 100644 --- a/src/i18n/messages/mt.json +++ b/src/i18n/messages/mt.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Pakketti tal-lingwa: {packs}", "dragToReorder": "Iddreggja biex tibdel l-ordni tal-pass", "engine": "Magna", - "intensity": "Intensità" + "intensity": "Intensità", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Ebda eżekuzzjoni tal-kompressjoni mhi disponibbli.", diff --git a/src/i18n/messages/nl.json b/src/i18n/messages/nl.json index 840a9f55ad..436f67a31f 100644 --- a/src/i18n/messages/nl.json +++ b/src/i18n/messages/nl.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Taalpakketten: {packs}", "dragToReorder": "Sleep om stap opnieuw te ordenen", "engine": "Engine", - "intensity": "Intensiteit" + "intensity": "Intensiteit", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Geen compressierun beschikbaar.", diff --git a/src/i18n/messages/no.json b/src/i18n/messages/no.json index 1669a0e22d..141764faa5 100644 --- a/src/i18n/messages/no.json +++ b/src/i18n/messages/no.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Språkpakker: {packs}", "dragToReorder": "Dra for å endre rekkefølge på trinn", "engine": "Motor", - "intensity": "Intensitet" + "intensity": "Intensitet", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Ingen komprimeringskjøring tilgjengelig.", diff --git a/src/i18n/messages/phi.json b/src/i18n/messages/phi.json index 66462d6665..51bf3f513a 100644 --- a/src/i18n/messages/phi.json +++ b/src/i18n/messages/phi.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Mga language pack: {packs}", "dragToReorder": "I-drag upang muling isaayos ang hakbang", "engine": "Engine", - "intensity": "Intensity" + "intensity": "Intensity", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Walang available na compression run.", diff --git a/src/i18n/messages/pl.json b/src/i18n/messages/pl.json index aefac8bb31..6de7a9c3d2 100644 --- a/src/i18n/messages/pl.json +++ b/src/i18n/messages/pl.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Pakiety językowe: {packs}", "dragToReorder": "Przeciągnij, aby zmienić kolejność kroku", "engine": "Silnik", - "intensity": "Intensywność" + "intensity": "Intensywność", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Brak dostępnego przebiegu kompresji.", diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json index 07fe84dc06..b4921bee21 100644 --- a/src/i18n/messages/pt-BR.json +++ b/src/i18n/messages/pt-BR.json @@ -8674,7 +8674,9 @@ "languagePacksList": "Pacotes de idioma: {packs}", "dragToReorder": "Arraste para reordenar a etapa", "engine": "Engine", - "intensity": "Intensidade" + "intensity": "Intensidade", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nenhuma execução de compressão disponível.", diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json index 75e6702150..48992b62ab 100644 --- a/src/i18n/messages/pt.json +++ b/src/i18n/messages/pt.json @@ -8671,7 +8671,9 @@ "languagePacksList": "Pacotes de idioma: {packs}", "dragToReorder": "Arraste para reordenar o passo", "engine": "Motor", - "intensity": "Intensidade" + "intensity": "Intensidade", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nenhuma execução de compressão disponível.", diff --git a/src/i18n/messages/ro.json b/src/i18n/messages/ro.json index acc77fba37..63bea8addc 100644 --- a/src/i18n/messages/ro.json +++ b/src/i18n/messages/ro.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Pachete de limbi: {packs}", "dragToReorder": "Trageți pentru a reordona pasul", "engine": "Motor", - "intensity": "Intensitate" + "intensity": "Intensitate", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nicio rulare de compresie disponibilă.", diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json index 16599f30d5..22aa6ba84e 100644 --- a/src/i18n/messages/ru.json +++ b/src/i18n/messages/ru.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Языковые пакеты: {packs}", "dragToReorder": "Перетащите для изменения порядка шагов", "engine": "Движок", - "intensity": "Интенсивность" + "intensity": "Интенсивность", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Нет доступных запусков сжатия.", diff --git a/src/i18n/messages/sk.json b/src/i18n/messages/sk.json index bc2a07bd26..5da7c79959 100644 --- a/src/i18n/messages/sk.json +++ b/src/i18n/messages/sk.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Jazykové balíčky: {packs}", "dragToReorder": "Potiahnutím zmeníte poradie kroku", "engine": "Engine", - "intensity": "Intenzita" + "intensity": "Intenzita", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Nie je k dispozícii žiadny beh kompresie.", diff --git a/src/i18n/messages/sl.json b/src/i18n/messages/sl.json index d8745cd43c..e3fbf05ce1 100644 --- a/src/i18n/messages/sl.json +++ b/src/i18n/messages/sl.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Jezikovni paketi: {packs}", "dragToReorder": "Povlecite, da spremenite vrstni red koraka", "engine": "Mehanizem", - "intensity": "Intenzivnost" + "intensity": "Intenzivnost", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Na voljo ni nobene izvedbe stiskanja.", diff --git a/src/i18n/messages/sr.json b/src/i18n/messages/sr.json index 1351067319..355c7ac85c 100644 --- a/src/i18n/messages/sr.json +++ b/src/i18n/messages/sr.json @@ -8645,7 +8645,9 @@ "languagePacksList": "Језички пакети: {packs}", "dragToReorder": "Превуците да преместите корак", "engine": "Механизам", - "intensity": "Интензитет" + "intensity": "Интензитет", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Нема доступног извршавања компресије.", diff --git a/src/i18n/messages/sv.json b/src/i18n/messages/sv.json index 9f7b861b4d..8735d3ee6a 100644 --- a/src/i18n/messages/sv.json +++ b/src/i18n/messages/sv.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Språkpaket: {packs}", "dragToReorder": "Dra för att ändra ordning på steg", "engine": "Motor", - "intensity": "Intensitet" + "intensity": "Intensitet", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Ingen komprimeringskörning tillgänglig.", diff --git a/src/i18n/messages/sw.json b/src/i18n/messages/sw.json index 67d4eeef13..f4ccf25ebd 100644 --- a/src/i18n/messages/sw.json +++ b/src/i18n/messages/sw.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Vifurushi vya lugha: {packs}", "dragToReorder": "Buruta ili kupanga upya hatua", "engine": "Injini", - "intensity": "Ukali" + "intensity": "Ukali", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Hakuna uendeshaji wa mbano unaopatikana.", diff --git a/src/i18n/messages/ta.json b/src/i18n/messages/ta.json index 50a7a22ec4..83c6a6151d 100644 --- a/src/i18n/messages/ta.json +++ b/src/i18n/messages/ta.json @@ -8670,7 +8670,9 @@ "languagePacksList": "மொழிப் பொதிகள்: {packs}", "dragToReorder": "படியை மறுவரிசைப்படுத்த இழுக்கவும்", "engine": "எஞ்சின்", - "intensity": "தீவிரம்" + "intensity": "தீவிரம்", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "சுருக்க இயக்கம் எதுவும் கிடைக்கவில்லை.", diff --git a/src/i18n/messages/te.json b/src/i18n/messages/te.json index 89cf776a1c..9d263d3c46 100644 --- a/src/i18n/messages/te.json +++ b/src/i18n/messages/te.json @@ -8670,7 +8670,9 @@ "languagePacksList": "భాషా ప్యాక్‌లు: {packs}", "dragToReorder": "దశను క్రమబద్ధీకరించడానికి డ్రాగ్ చేయండి", "engine": "ఇంజిన్", - "intensity": "తీవ్రత" + "intensity": "తీవ్రత", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "ఎటువంటి కంప్రెషన్ రన్ అందుబాటులో లేదు.", diff --git a/src/i18n/messages/th.json b/src/i18n/messages/th.json index cd37c4deef..c86a8da842 100644 --- a/src/i18n/messages/th.json +++ b/src/i18n/messages/th.json @@ -8670,7 +8670,9 @@ "languagePacksList": "แพ็กภาษา: {packs}", "dragToReorder": "ลากเพื่อจัดลำดับขั้นตอนใหม่", "engine": "เอนจิน", - "intensity": "ความเข้ม" + "intensity": "ความเข้ม", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "ไม่มีการรันการบีบอัดที่พร้อมใช้งาน", diff --git a/src/i18n/messages/tr.json b/src/i18n/messages/tr.json index bf69d9a97a..3a8bcaa0b8 100644 --- a/src/i18n/messages/tr.json +++ b/src/i18n/messages/tr.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Dil paketleri: {packs}", "dragToReorder": "Adımı yeniden sıralamak için sürükleyin", "engine": "Motor", - "intensity": "Yoğunluk" + "intensity": "Yoğunluk", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Kullanılabilir sıkıştırma çalışması yok.", diff --git a/src/i18n/messages/uk-UA.json b/src/i18n/messages/uk-UA.json index 798444a859..b517d5bf0b 100644 --- a/src/i18n/messages/uk-UA.json +++ b/src/i18n/messages/uk-UA.json @@ -8670,7 +8670,9 @@ "languagePacksList": "Мовні пакети: {packs}", "dragToReorder": "Перетягніть, щоб змінити порядок кроків", "engine": "Рушій", - "intensity": "Інтенсивність" + "intensity": "Інтенсивність", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Немає доступних запусків стиснення.", diff --git a/src/i18n/messages/ur.json b/src/i18n/messages/ur.json index 057aaf7e7a..6b244f374c 100644 --- a/src/i18n/messages/ur.json +++ b/src/i18n/messages/ur.json @@ -8670,7 +8670,9 @@ "languagePacksList": "زبان کے پیک: {packs}", "dragToReorder": "مرحلے کو دوبارہ ترتیب دینے کے لیے گھسیٹیں", "engine": "انجن", - "intensity": "شدت" + "intensity": "شدت", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "کوئی کمپریشن رن دستیاب نہیں ہے۔", diff --git a/src/i18n/messages/vi.json b/src/i18n/messages/vi.json index 424194f49e..1b139d36d2 100644 --- a/src/i18n/messages/vi.json +++ b/src/i18n/messages/vi.json @@ -8674,7 +8674,9 @@ "languagePacksList": "Gói ngôn ngữ: {packs}", "dragToReorder": "Kéo để sắp xếp lại bước", "engine": "Bộ máy", - "intensity": "Cường độ" + "intensity": "Cường độ", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "Chưa có lượt nén nào.", diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index db568e53b6..d5f97f5896 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -8670,7 +8670,9 @@ "languagePacksList": "语言包:{packs}", "dragToReorder": "拖动以重新排序步骤", "engine": "引擎", - "intensity": "强度" + "intensity": "强度", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "没有可用的压缩运行记录。", diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json index 18844dc69c..94493313f9 100644 --- a/src/i18n/messages/zh-TW.json +++ b/src/i18n/messages/zh-TW.json @@ -8670,7 +8670,9 @@ "languagePacksList": "語言包:{packs}", "dragToReorder": "拖曳以重新排序步驟", "engine": "引擎", - "intensity": "強度" + "intensity": "強度", + "activeProfileMasterSwitchOffWarning": "__MISSING__:The active profile below will not run until the master \"Prompt Compression\" switch is turned on.", + "activeProfileMasterSwitchOffCta": "__MISSING__:Turn it on in Settings" }, "compressionStudio": { "noRun": "無可用的壓縮執行記錄。", diff --git a/tests/unit/compression/derive-effective-preview-plan.test.ts b/tests/unit/compression/derive-effective-preview-plan.test.ts new file mode 100644 index 0000000000..a2cf53553a --- /dev/null +++ b/tests/unit/compression/derive-effective-preview-plan.test.ts @@ -0,0 +1,82 @@ +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { + DEFAULT_COMPRESSION_CONFIG, + type CompressionConfig, +} from "@omniroute/open-sse/services/compression/types.ts"; +import { selectCompressionPlan } from "@omniroute/open-sse/services/compression/strategySelector.ts"; +import { deriveEffectivePreviewPlan } from "@omniroute/open-sse/services/compression/deriveEffectivePreviewPlan.ts"; + +// Issue #12063: the dashboard shows an "active profile" selected (e.g. "Standard Savings", +// pipeline rtk:standard -> caveman:full on /dashboard/context/combos), but the Settings-page +// "Effective pipeline" preview disagreed with what a live request actually runs, because it +// was computed as deriveDefaultPlan(config.engines, config.enabled) -- which never consults +// config.activeComboId, unlike the real per-request resolver (resolveBasePlan). +// deriveEffectivePreviewPlan() closes that gap for static preview surfaces. + +const namedCombos = { + "standard-savings": [ + { engine: "rtk", intensity: "standard" }, + { engine: "caveman", intensity: "full" }, + ], +}; + +test("issue #12063: preview matches the real runtime plan when a profile is active", () => { + const config: CompressionConfig = { + ...DEFAULT_COMPRESSION_CONFIG, + enabled: true, + activeComboId: "standard-savings", + // No individual engine toggled on the Settings page grid. + }; + + const realRuntimePlan = selectCompressionPlan( + config, + /* comboId */ null, + /* estimatedTokens */ 50_000, + undefined, + undefined, + namedCombos, + /* header */ null + ); + assert.equal(realRuntimePlan.mode, "stacked"); + assert.deepEqual(realRuntimePlan.stackedPipeline, namedCombos["standard-savings"]); + + const previewPlan = deriveEffectivePreviewPlan(config, namedCombos); + assert.equal(previewPlan.mode, realRuntimePlan.mode); + assert.deepEqual(previewPlan.stackedPipeline, realRuntimePlan.stackedPipeline); +}); + +test("master switch off => off, regardless of an active profile", () => { + const config: CompressionConfig = { + ...DEFAULT_COMPRESSION_CONFIG, + enabled: false, + activeComboId: "standard-savings", + }; + assert.deepEqual(deriveEffectivePreviewPlan(config, namedCombos), { + mode: "off", + stackedPipeline: [], + }); +}); + +test("activeComboId set but unresolved in combos => falls back to the engines map", () => { + const config: CompressionConfig = { + ...DEFAULT_COMPRESSION_CONFIG, + enabled: true, + activeComboId: "does-not-exist", + engines: { rtk: { enabled: true, level: "standard" } }, + }; + const preview = deriveEffectivePreviewPlan(config, namedCombos); + assert.equal(preview.mode, "rtk"); +}); + +test("no active profile => matches deriveDefaultPlan(engines, enabled) exactly", () => { + const config: CompressionConfig = { + ...DEFAULT_COMPRESSION_CONFIG, + enabled: true, + activeComboId: null, + engines: { caveman: { enabled: true, level: "full" } }, + }; + const preview = deriveEffectivePreviewPlan(config, namedCombos); + assert.equal(preview.mode, "standard"); + assert.deepEqual(preview.stackedPipeline, []); +});