authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-05 01:49:06-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-05 01:49:06-07:00
log5b7f6bcfbcd5f150a67f323e0ec5aeb70b3c4009
tree17e98514b2f9554b33936dfeaa57cd5fe4fe7f5d
parent45f5a5ffb3257d510f249b14c36a514beff2868a
signature Signed by PGP key B5690EEEBB952194

refactor(mobile): remove write-only terminal font cache (#10058)


3 files changed, 1 insertions(+), 27 deletions(-)

apps/mobile/src/features/settings/appearance/AppearancePreferencesProvider.tsx+1-3
......@@ -37,7 +37,6 @@ import {
3737 getMobileUniwindThemeName,
3838 type MobileThemeRuntimeState,
3939} from "../../../lib/mobileThemeRuntime";
40import { cacheTerminalFontSize } from "../../terminal/terminalUiState";
4140
4241interface AppearancePreferencesContextValue {
4342 /** Effective values with base-size derivation applied. Use this for rendering. */
......@@ -143,8 +142,7 @@ export function AppearancePreferencesProvider(props: { readonly children: ReactN
143142 useLayoutEffect(() => {
144143 selectedThemeIdsRef.current = themeIds;
145144 syncThemeRuntime(runtimeState);
146 cacheTerminalFontSize(appearance.terminalFontSize);
147 }, [appearance.terminalFontSize, runtimeState, syncThemeRuntime, themeIds]);
145 }, [runtimeState, syncThemeRuntime, themeIds]);
148146
149147 const setThemeIdForAppearance = useCallback(
150148 (appearance: MobileThemeAppearance, value: MobileThemeId) => {
apps/mobile/src/features/terminal/terminalUiState.test.ts-10
......@@ -2,9 +2,7 @@ import { beforeEach, describe, expect, it } from "vite-plus/test";
22import { EnvironmentId, ThreadId } from "@t3tools/contracts";
33
44import {
5 cacheTerminalFontSize,
65 cacheTerminalGridSize,
7 getCachedTerminalFontSize,
86 getCachedTerminalGridSize,
97 resetTerminalUiStateCaches,
108} from "./terminalUiState";
......@@ -14,14 +12,6 @@ describe("terminalUiState", () => {
1412 resetTerminalUiStateCaches();
1513 });
1614
17 it("caches terminal font size using the shared normalization rules", () => {
18 expect(getCachedTerminalFontSize()).toBeNull();
19 expect(cacheTerminalFontSize(8.5)).toBe(8.5);
20 expect(getCachedTerminalFontSize()).toBe(8.5);
21 expect(cacheTerminalFontSize(100)).toBe(14);
22 expect(getCachedTerminalFontSize()).toBe(14);
23 });
24
2515 it("stores terminal grid sizes per terminal target", () => {
2616 const primaryTarget = {
2717 environmentId: EnvironmentId.make("env-1"),
apps/mobile/src/features/terminal/terminalUiState.ts-14
......@@ -1,7 +1,5 @@
11import type { EnvironmentId, ThreadId } from "@t3tools/contracts";
22
3import { DEFAULT_TERMINAL_FONT_SIZE, normalizeTerminalFontSize } from "./terminalPreferences";
4
53export interface TerminalGridSize {
64 readonly cols: number;
75 readonly rows: number;
......@@ -14,22 +12,11 @@ export interface TerminalUiStateTarget {
1412}
1513
1614const terminalGridSizeCache = new Map<string, TerminalGridSize>();
17let cachedTerminalFontSize: number | null = null;
1815
1916function terminalUiStateKey(target: TerminalUiStateTarget): string {
2017 return `${target.environmentId}:${target.threadId}:${target.terminalId}`;
2118}
2219
23export function getCachedTerminalFontSize(): number | null {
24 return cachedTerminalFontSize;
25}
26
27export function cacheTerminalFontSize(value: number | null | undefined): number {
28 const normalized = normalizeTerminalFontSize(value ?? DEFAULT_TERMINAL_FONT_SIZE);
29 cachedTerminalFontSize = normalized;
30 return normalized;
31}
32
3320export function getCachedTerminalGridSize(target: TerminalUiStateTarget): TerminalGridSize | null {
3421 return terminalGridSizeCache.get(terminalUiStateKey(target)) ?? null;
3522}
......@@ -47,6 +34,5 @@ export function cacheTerminalGridSize(
4734}
4835
4936export function resetTerminalUiStateCaches() {
50 cachedTerminalFontSize = null;
5137 terminalGridSizeCache.clear();
5238}