* feat(settings): add editor font size setting for chat input and code editor Adds an 'Editor font size' control in Settings > Appearance that sets an absolute px font size for the chat input textarea and the in-app CodeMirror editor. Mirrors the existing terminalFontSize lifecycle. - New store field editorFontSize (default 13, clamp 9-32, step 1) in useUIStore with narrow selectors at each consumer. - Persistence wired through appearanceAutoSave, desktop + runtime API types, and persistence.ts read/normalize. - Settings UI row (NumberInput) with reset to 13, VisibleSetting union entry, OpenChamberPage registration, and search index entry appearance.editor-font-size. - Applied as a post-zoom absolute override on the chat input textarea and on the CodeMirror theme's content rule, leaving gutter/line-number chrome at its existing hardcoded sizes (matches terminal scope). - All 10 locales translated (en, es, fr, ja, ko, pl, pt-BR, uk, zh-CN, zh-TW); no English placeholders in non-English dictionaries. Refs #1325 * fix(codemirror): use unitless lineHeight so it scales with editor font size The & rule in the CodeMirror theme set lineHeight to 1.5rem (~24px), which does not scale when editorFontSize is increased (e.g., 28-32px). This causes overlapping lines at larger font sizes. Change to unitless 1.5, which scales proportionally with whatever fontSize resolves to (dynamic prop or --text-code fallback). Matches browser best practice for proportional leading. Review comment: https://github.com/openchamber/openchamber/pull/2065 --------- Co-authored-by: bashrusakh <bashrusakh@users.noreply.github.com> Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
bashrusakh
Bohdan Triapitsyn
parent
bfaf62e222
commit
e0229917f8
@@ -11,7 +11,7 @@ export function createFlexokiCodeMirrorTheme(
|
||||
// When syntax colors are provided elsewhere (e.g. the Shiki decoration
|
||||
// extension), pass `{ syntaxColors: false }` to keep only the editor UI theme
|
||||
// (gutters, selection, cursor) and avoid a competing token color source.
|
||||
options?: { syntaxColors?: boolean },
|
||||
options?: { syntaxColors?: boolean; fontSize?: number },
|
||||
): Extension {
|
||||
const isDark = theme.metadata.variant === 'dark';
|
||||
|
||||
@@ -19,12 +19,14 @@ export function createFlexokiCodeMirrorTheme(
|
||||
const highlights = theme.colors.syntax.highlights || {};
|
||||
const tokens = theme.colors.syntax.tokens || {};
|
||||
|
||||
const contentFontSize = options?.fontSize ? `${options.fontSize}px` : 'var(--text-code)';
|
||||
|
||||
const ui = EditorView.theme({
|
||||
'&': {
|
||||
backgroundColor: 'var(--background)',
|
||||
color: theme.colors.syntax.base.foreground,
|
||||
fontSize: 'var(--text-code)',
|
||||
lineHeight: '1.5rem',
|
||||
fontSize: contentFontSize,
|
||||
lineHeight: '1.5',
|
||||
position: 'relative' as const,
|
||||
},
|
||||
'.cm-scroller': {
|
||||
|
||||
Reference in New Issue
Block a user