diff --git a/frontend/package.json.md5 b/frontend/package.json.md5 index bed8925..7396e24 100755 --- a/frontend/package.json.md5 +++ b/frontend/package.json.md5 @@ -1 +1 @@ -0295a42fd931778d85157816d79d29e5 \ No newline at end of file +d0464f9da25e9356e61652e638c99ffe \ No newline at end of file diff --git a/frontend/src/store.test.ts b/frontend/src/store.test.ts index 20cd84d..f4323a2 100644 --- a/frontend/src/store.test.ts +++ b/frontend/src/store.test.ts @@ -1062,6 +1062,19 @@ describe('store appearance persistence', () => { }); }); + it('persists startup fullscreen immediately so next launch does not miss maximize preference', async () => { + const { useStore } = await importStore(); + + useStore.getState().setStartupFullscreen(true); + + const persisted = JSON.parse(storage.getItem('lite-db-storage') || '{}'); + expect(persisted.state.startupFullscreen).toBe(true); + + vi.resetModules(); + const reloaded = await importStore(); + expect(reloaded.useStore.getState().startupFullscreen).toBe(true); + }); + it('falls back to Enter when persisted AI chat send shortcut is invalid', async () => { storage.setItem('lite-db-storage', JSON.stringify({ state: { diff --git a/frontend/src/store.ts b/frontend/src/store.ts index 328210b..8d9c59c 100644 --- a/frontend/src/store.ts +++ b/frontend/src/store.ts @@ -225,6 +225,36 @@ const createDebouncedPersistStorage = ( }; }; +const writePersistedStatePatch = ( + patch: Record, +): void => { + if (typeof localStorage === "undefined") { + return; + } + try { + const payload = localStorage.getItem(PERSIST_STORAGE_KEY); + const raw = + payload && payload.trim() !== "" + ? (JSON.parse(payload) as Record) + : {}; + const state = unwrapPersistedAppState(raw); + localStorage.setItem( + PERSIST_STORAGE_KEY, + JSON.stringify({ + ...raw, + state: { + ...state, + ...patch, + }, + version: + typeof raw.version === "number" ? raw.version : PERSIST_VERSION, + }), + ); + } catch { + // ignore + } +}; + const resolveOceanBaseProtocol = ( raw: Record, normalizedConnectionParams: string, @@ -2654,7 +2684,11 @@ export const useStore = create()( })), setUiScale: (scale) => set({ uiScale: sanitizeUiScale(scale) }), setFontSize: (size) => set({ fontSize: sanitizeFontSize(size) }), - setStartupFullscreen: (enabled) => set({ startupFullscreen: !!enabled }), + setStartupFullscreen: (enabled) => { + const nextValue = !!enabled; + set({ startupFullscreen: nextValue }); + writePersistedStatePatch({ startupFullscreen: nextValue }); + }, setGlobalProxy: (proxy) => set((state) => ({ globalProxy: sanitizeGlobalProxy({ ...state.globalProxy, ...proxy }),