PR https://git.cafe/pingdotgg/t3code/pulls/22002 GitHub https://github.com/pingdotgg/t3code/pull/22002 main: 5808469018 (github/main fetched this turn) PR: b596b9de41e5ae4a7d570c02d764d46fcf087a48 (exact unchanged head) Linux, real Electron 44.9.3, Playwright 1.60.0, Codex gpt-6.1-sol through local proxy. Created a real git repository at /home/user/cache-verification. Created its T3 project and thread through the UI. A real Codex turn wrote the storage diagnostic page. Desktop main and PR each completed a real Codex turn reading that file. No database fixtures, mock providers, or direct storage edits. The dev runner automatically copied an empty-thread project into main at startup; that copied project was not used. All scenario state was created through the UI. main: vp i; vp run dev (background, worktree .t3); remote build:desktop; launched real Electron desktop against its Vite renderer with isolated homes. Page Store data writes Cache API takeover-cache, /cached-response=preserved-response, localStorage takeover-value=preserved-local, cookie takeover-cookie=preserved-cookie. Settings > Browser > Default options > Clear cookies and cache > Clear data. Read data after clear: caches.keys(): ["takeover-cache"] cached response: preserved-response localStorage takeover-value: null document.cookie: (empty) Original bug reproduced. PR: vp i; vp run dev --home-dir /tmp/pr22002-web-pr --no-seed (background); [dev-runner] serverPort=13773 webPort=5733. Remote build:desktop passed. Real Electron desktop backend on port 16806 with isolated T3 and Chromium homes. Settings > Integrations > Default options > Clear cookies and cache > Clear data. Read data after clear: caches.keys(): [] cached response: null localStorage takeover-value: null document.cookie: (empty) Second profile Untouched, same origin and data, after clearing Default: caches.keys(): ["takeover-cache"] cached response: preserved-response localStorage takeover-value: preserved-local document.cookie: takeover-cookie=preserved-cookie Settings > Integrations > Untouched options > Remove profile and data > Remove profile. Read data in its still-open native tab: caches.keys(): [] cached response: null localStorage takeover-value: null document.cookie: (empty) Default tab still open, empty storage as before. Both native app pages and settings were driven through Playwright/CDP. The native webview buttons and visible output were accessed over their CDP target. The clear and remove actions used the actual settings UI and desktop IPC path. Remote Blacksmith: vp test run src/preview/BrowserSession.test.ts in apps/desktop: Test Files 1 passed (1), Tests 7 passed (7). Both desktop builds passed. Existing head CI: 28 successful, 0 failing, 0 pending. No source changes, commits, or pushes needed. Startup limitations encountered: libsecret development headers missing on remote build workers (installed and builds passed); first Electron startup hung until --password-store=basic; the built production renderer failed in icons chunk with undefined.map, so final verification used the actual Vite development renderer; concurrent services overwhelmed the VM and were stopped before final verification. An initial root-checkout dev invocation selected the default T3 home, then was stopped during dependency warmup and replaced with an explicit isolated home. Not verified: macOS, Windows, native iOS/Android, remote/relay/tunnel, tab-menu Clear cookies, service-worker and IndexedDB cleanup, HTTP-cache eviction, production renderer startup, persistence across full app restart. The server-hosted browser clear implementation is separate and was not used as proof of this desktop fix.