Give readable content its own text size (#3637)

* feat(app): separate content typography from interface size

Readable prose benefits from its own scale without inflating navigation and controls. Preserve existing users’ rendered size during migration while giving fresh desktop installs a 15px content default.

* test(app): cover independent content typography

The appearance journey now verifies that changing interface size leaves content size intact. Timeline traversal yields when a test deliberately holds the requested page, so the helper no longer waits on its own gate.

* test(desktop): cover independent content typography

The desktop appearance regression follows the renamed Interface control and verifies it does not alter Content size.
This commit is contained in:
Mohamed Boudra
2026-08-21 12:35:23 +02:00
committed by GitHub
parent c032df5b3d
commit 602860625c
31 changed files with 419 additions and 99 deletions
+10 -3
View File
@@ -2047,13 +2047,18 @@ export const ar: TranslationResources = {
interfaceFont: "خط الواجهة",
interfaceFontHint: "تستخدم عبر التطبيق. اتركه فارغًا للإعداد الافتراضي للنظام",
interfaceFontAccessibility: "عائلة خطوط الواجهة",
baseSize: "الحجم الأساسي",
baseSizeAccessibility: "حجم الخط الأساسي",
interfaceSize: "حجم الواجهة",
interfaceSizeHint: "يُستخدم للتنقل وعناصر التحكم والتسميات",
interfaceSizeAccessibility: "حجم خط الواجهة",
contentSize: "حجم المحتوى",
contentSizeHint: "يُستخدم لنص الدردشة وملفات Markdown المعروضة",
contentSizeAccessibility: "حجم خط المحتوى",
codeFont: "خط الكود",
codeFontHint:
"تستخدم في الكود والاختلافات والمخرجات الطرفية. اتركه فارغًا للإعداد الافتراضي للنظام",
codeFontAccessibility: "عائلة خطوط الكود",
codeSize: "حجم الكود",
codeSizeHint: "يُستخدم للكود والفروقات ومخرجات الطرفية",
codeSizeAccessibility: "حجم خط الكود",
},
syntax: {
@@ -2061,7 +2066,9 @@ export const ar: TranslationResources = {
highlightTheme: "تسليط الضوء على الموضوع",
highlightThemeHint: "ألوان التعليمات البرمجية، مستقلة عن سمة التطبيق",
highlightThemeAccessibility: "تسليط الضوء على الموضوع:{{value}}",
previewAccessibility: "معاينة مباشرة لموضوع بناء الجملة وخط التعليمات البرمجية",
previewAccessibility:
"معاينة مباشرة لطباعة المحتوى وموضوع بناء الجملة وخط التعليمات البرمجية",
previewContent: "معاينة المحتوى والرمز",
},
},
shortcuts: {
+9 -3
View File
@@ -2111,13 +2111,18 @@ export const en = {
interfaceFont: "Interface font",
interfaceFontHint: "Used across the app. Leave empty for the system default",
interfaceFontAccessibility: "Interface font family",
baseSize: "Base size",
baseSizeAccessibility: "Base font size",
interfaceSize: "Interface size",
interfaceSizeHint: "Used for navigation, controls, and labels",
interfaceSizeAccessibility: "Interface font size",
contentSize: "Content size",
contentSizeHint: "Used for chat text and rendered Markdown",
contentSizeAccessibility: "Content font size",
codeFont: "Code font",
codeFontHint:
"Used in code, diffs, and the terminal output. Leave empty for the system default",
codeFontAccessibility: "Code font family",
codeSize: "Code size",
codeSizeHint: "Used for code, diffs, and terminal output",
codeSizeAccessibility: "Code font size",
},
syntax: {
@@ -2125,7 +2130,8 @@ export const en = {
highlightTheme: "Highlight theme",
highlightThemeHint: "Colors for code, independent of the app theme",
highlightThemeAccessibility: "Highlight theme: {{value}}",
previewAccessibility: "Live preview of the syntax theme and code font",
previewAccessibility: "Live preview of content typography, syntax theme, and code font",
previewContent: "Readable content and code preview",
},
},
shortcuts: {
+10 -3
View File
@@ -2098,13 +2098,18 @@ export const es: TranslationResources = {
interfaceFontHint:
"Utilizado en toda la aplicación. Déjelo vacío para el valor predeterminado del sistema.",
interfaceFontAccessibility: "Familia de fuentes de interfaz",
baseSize: "Tamaño base",
baseSizeAccessibility: "Tamaño base de la fuente",
interfaceSize: "Tamaño de interfaz",
interfaceSizeHint: "Se usa en la navegación, los controles y las etiquetas",
interfaceSizeAccessibility: "Tamaño de fuente de interfaz",
contentSize: "Tamaño de contenido",
contentSizeHint: "Se usa en el texto del chat y el Markdown renderizado",
contentSizeAccessibility: "Tamaño de fuente de contenido",
codeFont: "Fuente de código",
codeFontHint:
"Se utiliza en código, diferencias y salida del terminal. Déjelo vacío para el valor predeterminado del sistema.",
codeFontAccessibility: "Familia de fuentes de código",
codeSize: "Tamaño del código",
codeSizeHint: "Se usa en código, diferencias y la salida del terminal",
codeSizeAccessibility: "Tamaño de fuente del código",
},
syntax: {
@@ -2112,7 +2117,9 @@ export const es: TranslationResources = {
highlightTheme: "Tema destacado",
highlightThemeHint: "Colores para el código, independientemente del tema de la aplicación.",
highlightThemeAccessibility: "Tema destacado:{{value}}",
previewAccessibility: "Vista previa en vivo del tema de sintaxis y fuente del código",
previewAccessibility:
"Vista previa en vivo de la tipografía de contenido, el tema de sintaxis y la fuente del código",
previewContent: "Vista previa de contenido y código",
},
},
shortcuts: {
+10 -3
View File
@@ -2102,13 +2102,18 @@ export const fr: TranslationResources = {
interfaceFontHint:
"Utilisé dans toute l'application. Laisser vide pour la valeur par défaut du système",
interfaceFontAccessibility: "Famille de polices d'interface",
baseSize: "Taille de base",
baseSizeAccessibility: "Taille de base de la police",
interfaceSize: "Taille de l'interface",
interfaceSizeHint: "Utilisée pour la navigation, les contrôles et les libellés",
interfaceSizeAccessibility: "Taille de police de l'interface",
contentSize: "Taille du contenu",
contentSizeHint: "Utilisée pour le texte du chat et le Markdown rendu",
contentSizeAccessibility: "Taille de police du contenu",
codeFont: "Police de code",
codeFontHint:
"Utilisé dans le code, les différences et la sortie du terminal. Laisser vide pour la valeur par défaut du système",
codeFontAccessibility: "Famille de polices de code",
codeSize: "Taille du code",
codeSizeHint: "Utilisée pour le code, les diffs et la sortie du terminal",
codeSizeAccessibility: "Taille de la police du code",
},
syntax: {
@@ -2116,7 +2121,9 @@ export const fr: TranslationResources = {
highlightTheme: "Thème de surbrillance",
highlightThemeHint: "Couleurs du code, indépendamment du thème de l'application",
highlightThemeAccessibility: "Thème phare:{{value}}",
previewAccessibility: "Aperçu en direct du thème de syntaxe et de la police de code",
previewAccessibility:
"Aperçu en direct de la typographie du contenu, du thème de syntaxe et de la police de code",
previewContent: "Aperçu du contenu et du code",
},
},
shortcuts: {
+10 -3
View File
@@ -2065,13 +2065,18 @@ export const ja: TranslationResources = {
interfaceFontHint:
"アプリ全体で使用されます。システムデフォルトにするには空のままにしてください",
interfaceFontAccessibility: "インターフェースフォントファミリー",
baseSize: "基本サイズ",
baseSizeAccessibility: "基本フォントサイズ",
interfaceSize: "インターフェースサイズ",
interfaceSizeHint: "ナビゲーション、コントロール、ラベルに使用されます",
interfaceSizeAccessibility: "インターフェースのフォントサイズ",
contentSize: "コンテンツサイズ",
contentSizeHint: "チャットテキストとレンダリングされた Markdown に使用されます",
contentSizeAccessibility: "コンテンツのフォントサイズ",
codeFont: "コードフォント",
codeFontHint:
"コード、差分、ターミナル出力で使用されます。システムデフォルトにするには空のままにしてください",
codeFontAccessibility: "コードフォントファミリー",
codeSize: "コードサイズ",
codeSizeHint: "コード、差分、ターミナル出力に使用されます",
codeSizeAccessibility: "コードフォントサイズ",
},
syntax: {
@@ -2079,7 +2084,9 @@ export const ja: TranslationResources = {
highlightTheme: "ハイライトテーマ",
highlightThemeHint: "コード用の色、アプリのテーマとは独立しています",
highlightThemeAccessibility: "ハイライトテーマ: {{value}}",
previewAccessibility: "構文ハイライトテーマとコードフォントのライブプレビュー",
previewAccessibility:
"コンテンツの文字組み、構文ハイライトテーマ、コードフォントのライブプレビュー",
previewContent: "コンテンツとコードのプレビュー",
},
},
shortcuts: {
+9 -3
View File
@@ -2058,13 +2058,18 @@ export const ko: TranslationResources = {
interfaceFont: "인터페이스 글꼴",
interfaceFontHint: "앱 전체에 사용됩니다. 시스템 기본값을 사용하려면 비워 두세요",
interfaceFontAccessibility: "인터페이스 글꼴 패밀리",
baseSize: "기본 크기",
baseSizeAccessibility: "기본 글꼴 크기",
interfaceSize: "인터페이스 크기",
interfaceSizeHint: "탐색, 컨트롤 및 레이블에 사용됩니다",
interfaceSizeAccessibility: "인터페이스 글꼴 크기",
contentSize: "콘텐츠 크기",
contentSizeHint: "채팅 텍스트와 렌더링된 Markdown에 사용됩니다",
contentSizeAccessibility: "콘텐츠 글꼴 크기",
codeFont: "코드 글꼴",
codeFontHint:
"코드, diff, 터미널 출력에 사용됩니다. 시스템 기본값을 사용하려면 비워 두세요",
codeFontAccessibility: "코드 글꼴 패밀리",
codeSize: "코드 크기",
codeSizeHint: "코드, diff 및 터미널 출력에 사용됩니다",
codeSizeAccessibility: "코드 글꼴 크기",
},
syntax: {
@@ -2072,7 +2077,8 @@ export const ko: TranslationResources = {
highlightTheme: "강조 테마",
highlightThemeHint: "앱 테마와 독립적인 코드 색상",
highlightThemeAccessibility: "강조 테마: {{value}}",
previewAccessibility: "구문 테마와 코드 글꼴의 실시간 미리보기",
previewAccessibility: "콘텐츠 타이포그래피, 구문 테마, 코드 글꼴의 실시간 미리보기",
previewContent: "콘텐츠 및 코드 미리보기",
},
},
shortcuts: {
+10 -3
View File
@@ -2081,13 +2081,18 @@ export const ptBR: TranslationResources = {
interfaceFont: "Fonte da interface",
interfaceFontHint: "Usada em todo o app. Deixe vazio para usar o padrão do sistema",
interfaceFontAccessibility: "Família da fonte da interface",
baseSize: "Tamanho base",
baseSizeAccessibility: "Tamanho base da fonte",
interfaceSize: "Tamanho da interface",
interfaceSizeHint: "Usado na navegação, nos controles e nos rótulos",
interfaceSizeAccessibility: "Tamanho da fonte da interface",
contentSize: "Tamanho do conteúdo",
contentSizeHint: "Usado no texto do chat e no Markdown renderizado",
contentSizeAccessibility: "Tamanho da fonte do conteúdo",
codeFont: "Fonte de código",
codeFontHint:
"Usada em código, diffs e saída do terminal. Deixe vazio para usar o padrão do sistema",
codeFontAccessibility: "Família da fonte de código",
codeSize: "Tamanho do código",
codeSizeHint: "Usado em código, diffs e saída do terminal",
codeSizeAccessibility: "Tamanho da fonte de código",
},
syntax: {
@@ -2095,7 +2100,9 @@ export const ptBR: TranslationResources = {
highlightTheme: "Tema de destaque",
highlightThemeHint: "Cores para código, independentes do tema do app",
highlightThemeAccessibility: "Tema de destaque: {{value}}",
previewAccessibility: "Prévia ao vivo do tema de sintaxe e da fonte de código",
previewAccessibility:
"Prévia ao vivo da tipografia de conteúdo, do tema de sintaxe e da fonte de código",
previewContent: "Prévia de conteúdo e código",
},
},
shortcuts: {
+9 -3
View File
@@ -2084,13 +2084,18 @@ export const ru: TranslationResources = {
interfaceFontHint:
"Используется во всём приложении. Оставьте поле пустым, чтобы использовать системный шрифт.",
interfaceFontAccessibility: "Семейство интерфейсных шрифтов",
baseSize: "Базовый размер",
baseSizeAccessibility: "Базовый размер шрифта",
interfaceSize: "Размер интерфейса",
interfaceSizeHint: "Используется для навигации, элементов управления и подписей",
interfaceSizeAccessibility: "Размер шрифта интерфейса",
contentSize: "Размер содержимого",
contentSizeHint: "Используется для текста чата и отображаемого Markdown",
contentSizeAccessibility: "Размер шрифта содержимого",
codeFont: "Шрифт кода",
codeFontHint:
"Используется для кода, диффов и вывода терминала. Оставьте поле пустым, чтобы использовать системный шрифт.",
codeFontAccessibility: "Семейство шрифтов кода",
codeSize: "Размер кода",
codeSizeHint: "Используется для кода, диффов и вывода терминала",
codeSizeAccessibility: "Размер шрифта кода",
},
syntax: {
@@ -2099,7 +2104,8 @@ export const ru: TranslationResources = {
highlightThemeHint: "Цвета кода, не зависящие от темы приложения",
highlightThemeAccessibility: "Тема подсветки: {{value}}",
previewAccessibility:
"Предварительный просмотр темы синтаксиса и шрифта кода в реальном времени.",
"Предварительный просмотр типографики содержимого, темы синтаксиса и шрифта кода в реальном времени.",
previewContent: "Предварительный просмотр содержимого и кода",
},
},
shortcuts: {
+9 -3
View File
@@ -2023,12 +2023,17 @@ export const zhCN: TranslationResources = {
interfaceFont: "界面字体",
interfaceFontHint: "用于整个应用。留空则使用系统默认",
interfaceFontAccessibility: "界面字体族",
baseSize: "基础字号",
baseSizeAccessibility: "基础字号",
interfaceSize: "界面字号",
interfaceSizeHint: "用于导航、控件和标签",
interfaceSizeAccessibility: "界面字体大小",
contentSize: "内容字号",
contentSizeHint: "用于聊天文本和渲染后的 Markdown",
contentSizeAccessibility: "内容字体大小",
codeFont: "代码字体",
codeFontHint: "用于代码、diff 和终端输出。留空则使用系统默认",
codeFontAccessibility: "代码字体族",
codeSize: "代码字号",
codeSizeHint: "用于代码、差异和终端输出",
codeSizeAccessibility: "代码字号",
},
syntax: {
@@ -2036,7 +2041,8 @@ export const zhCN: TranslationResources = {
highlightTheme: "高亮主题",
highlightThemeHint: "代码配色,独立于应用主题",
highlightThemeAccessibility: "高亮主题:{{value}}",
previewAccessibility: "语法主题和代码字体的实时预览",
previewAccessibility: "内容排版、语法主题和代码字体的实时预览",
previewContent: "内容和代码预览",
},
},
shortcuts: {