feat: Add adjustable text size setting to interface (#19186)

* Add adjustable text size setting to interface

Introduces a user-configurable text size (scale) setting, accessible via a slider in the interface settings. Updates CSS and Sidebar chat item components to respect the new --app-text-scale variable, and persists the setting in the store. Adds related i18n strings and ensures the text scale is applied globally and clamped to allowed values.

* Refactor text scale logic into utility module

Moved all text scale related constants and functions from components and stores into a new utility module (src/lib/utils/text-scale.ts). Updated imports and usage in Interface.svelte and index.ts to use the new module, improving code organization and reusability.

* Adjust sidebar chat scaling without extra classes

keep sidebar markup using existing Tailwind utility classes so chat items render identically pre-feature
move all text-scale sizing into app.css under the #sidebar-chat-item selectors
change the root font-size multiplier to use 1rem instead of an explicit 16px so browser/user preferences propagate

* Update Switch.svelte

Adjust toggles from fixed pixel to rem to scale with the text size

* Update Interface.svelte

Updated label from 'Text Scale' to 'UI Scale'.
Added padding around slider

* Update app.css

Added comments
This commit is contained in:
davecrab
2025-11-19 00:55:52 -05:00
committed by GitHub
parent 720af637e6
commit 7762fa5ddf
7 changed files with 216 additions and 5 deletions
@@ -401,8 +401,7 @@
{:else}
<a
id="sidebar-chat-item"
class=" w-full flex justify-between rounded-xl px-[11px] py-[6px] {id === $chatId ||
confirmEdit
class=" w-full flex justify-between rounded-xl px-[11px] py-[6px] {id === $chatId || confirmEdit
? 'bg-gray-100 dark:bg-gray-900 selected'
: selected
? 'bg-gray-100 dark:bg-gray-950 selected'
@@ -436,7 +435,7 @@
draggable="false"
>
<div class=" flex self-center flex-1 w-full">
<div dir="auto" class="text-left self-center overflow-hidden w-full h-[20px] truncate">
<div dir="auto" class=" text-left self-center overflow-hidden w-full h-[20px] truncate">
{title}
</div>
</div>