f706726eeb
A header A−/value/A+ control scales the whole UI, persisted per user and restored on login from any booth — cloning the theme-pref pattern end to end. - DB: users.font_scale (migration 0014; percent, 100 = base, NOT NULL default). - Server: PUT /api/auth/font-scale (auth-guarded; clamps to 80–160, snaps to a 10-step); fontScale flows through sessionView → login + /me. - Client: setFontScalePref + applyFontScale; applied in App alongside theme; FontScaleToggle in the header; i18n sq+en. Scaling uses CSS `zoom` on the root, NOT root font-size: the app's type is pinned in px (text-[12px] etc., ~230 spots), which a font-size change would not scale — so the dense Active-sessions / Live-feed logs stayed tiny. `zoom` scales everything uniformly (text, spacing, icons) like the browser's Ctrl+/−, which is the readability win for operators who need larger text. Tests: 4 font-scale auth-route cases (persist + /me, clamp/snap, 400, default-100). Full workspace build/lint/test green. Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
6 lines
432 B
SQL
6 lines
432 B
SQL
-- Per-user UI font scale (PERCENT of base; 100 = base). Persisted like `theme`/`language`
|
||
-- so an operator's chosen text size is restored on the next login from any booth. Additive
|
||
-- ALTER ADD COLUMN — backward-compatible; existing users default to 100 (base). The client
|
||
-- clamps to 80–160 in steps of 10. Printed tickets are unaffected (server-rendered).
|
||
ALTER TABLE `users` ADD `font_scale` integer DEFAULT 100 NOT NULL;
|