[{"data":1,"prerenderedAt":77},["ShallowReactive",2],{"case-dev-build-log-silent-auto-update-en":3,"blog-list-en":13},{"slug":4,"title":5,"summary":6,"date":7,"featured":8,"seoDescription":9,"series":10,"seriesOrder":11,"html":12},"dev-build-log-silent-auto-update","After Leaving Electron, Silent Updates Had to Be Ours","After the move to Tauri, electron-updater was gone and the stock updater didn't match Launcher, Core, and Shell. Checks and downloads moved into the tray; apply is a silent overwrite after you confirm. It ships in 1.3.0.","2026-08-28",false,"DevPeek dev log: building our own silent updater after Electron. The tray checks and downloads in the background; a click runs a silent install. Windows / macOS in 1.3.0.","dev-build-log",4,"\u003Ch2>The last thing you want mid-session is a restart prompt\u003C/h2>\n\u003Cp>Proxy up, \u003Ca href=\"/en/docs/mock/\">Mock\u003C/a> and \u003Ca href=\"/en/docs/param-transform/\">param transform\u003C/a> still running, morning captures still in the list—and a dialog asks if you want to restart now. The session dies before the new build is even installed.\u003C/p>\n\u003Cp>Checking and downloading can happen in the background. Replacing files still needs a click. A running process can&#39;t overwrite itself, so that restart is unavoidable—just don&#39;t do it while you&#39;re capturing.\u003C/p>\n\u003Ch2>Stock updaters broke when the shell changed\u003C/h2>\n\u003Cp>The \u003Ca href=\"/en/blog/dev-build-log-electron-to-tauri/\">Tauri piece\u003C/a> already said: close the main window and the tray plus Core keep the proxy running. Fine for debugging, awkward for updates.\u003C/p>\n\u003Cp>The old path was \u003Cstrong>electron-updater\u003C/strong>, tied to the Electron main process. Swap the shell and that path is gone. Tauri ships an updater too; we looked at it. It assumes the window \u003Cem>is\u003C/em> the app. Ours is just a thin window on the Core URL. Close it and the tray still has to update Launcher and Core. It also isn&#39;t one binary: Launcher, Core, and Shell all have to move.\u003C/p>\n\u003Cp>v1.2.1 already switched to a full installer. After the directory layout changed, deltas weren&#39;t worth it. What was still missing: check in the background, tell you when the file is ready, stop all three processes after you click, then install. That belongs in the \u003Cstrong>Launcher\u003C/strong>. It outlives the window and knows whether Core is up.\u003C/p>\n\u003Ch2>Download in the background; overwrite after you click\u003C/h2>\n\u003Cp>On Windows and macOS it checks about a minute and a half after start, then every few hours. A newer version downloads in the background, gets verified, and is cached. The proxy keeps working; no progress modal. When it&#39;s done, a small “update ready” tip appears—apply now, or dismiss and keep working.\u003C/p>\n\u003Cp>Click apply and the install itself skips the wizard: Windows overwrites in place; macOS replaces the app, then brings the tray back. The pause is that restart. The check and download already finished.\u003C/p>\n\u003Cp>We didn&#39;t try swapping files under a live proxy. Overwrite the disk while those three processes are still running and you can land on a half-written tree. Stop them first.\u003C/p>\n\u003Ch2>The updater has to dodge the proxy too\u003C/h2>\n\u003Cp>DevPeek is often the system proxy. If check and download went through that same proxy, the request would hit the running app, and restart can deadlock. Those two steps skip the system proxy and talk to the feed directly.\u003C/p>\n\u003Cp>Before install, restore the system proxy. Applying kills Launcher, Core, and the window. If the OS still points at a port that just vanished, browsers and phones look offline for those seconds. \u003Ca href=\"/en/docs/proxy-ssl/\">Don&#39;t leave a stale proxy on exit\u003C/a> applies here too.\u003C/p>\n\u003Cp>The window only tells the tray the cached package is good. The tray restores the system proxy, waits until it and the proxy and the window are gone, then overwrites silently. If install fails halfway, the next launch finishes or rolls back.\u003C/p>\n\u003Ch2>What you&#39;ll actually notice\u003C/h2>\n\u003Cp>Background silent update is Windows and macOS this round. Linux still uses Check for Updates in About. Lite can show “update ready” if the tray is running, but Lite can&#39;t install the desktop build—replacing files is still the tray.\u003C/p>\n\u003Cul>\n\u003Cli>No “restart now?” dialog in the middle of a session\u003C/li>\n\u003Cli>The package downloads in the background; the tray shows “update ready”\u003C/li>\n\u003Cli>You only pause after you click; the tray comes back on its own\u003C/li>\n\u003Cli>Check for Updates in About stays, if you want to trigger it yourself\u003C/li>\n\u003C/ul>\n\u003Ch2>It comes with 1.3.0\u003C/h2>\n\u003Cp>Background silent update ships in 1.3.0. Current installers still follow the \u003Ca href=\"/changelog/\">changelog\u003C/a>.\u003C/p>\n\u003Cp>After 1.3.0 is out, if apply fails after a ready tip, or the system proxy isn&#39;t restored, tell us the OS and Standard vs Lite on \u003Ca href=\"https://github.com/GYPengDev/devpeek/discussions\">GitHub Discussions\u003C/a>.\u003C/p>\n\u003Ch2>Same thread as the earlier posts\u003C/h2>\n\u003Cp>\u003Ca href=\"/en/blog/dev-build-log-sqljs-to-better-sqlite3/\">Moving capture history from sql.js to native SQLite\u003C/a> was about storage that survives a long session.\u003Cbr>\u003Ca href=\"/en/blog/dev-build-log-electron-to-tauri/\">Swapping the desktop shell from Electron to Tauri\u003C/a> was about a shell that was too heavy.\u003Cbr>\u003Ca href=\"/en/blog/dev-build-log-ws-mock-dsl/\">The WebSocket Mock DSL\u003C/a> was about keeping a light long-lived mock light.\u003Cbr>This one: don&#39;t interrupt a capture session for an update. Finish the quiet work first, then ask before the restart.\u003C/p>\n\u003Ch2>Related docs\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"/en/docs/install/\">Install &amp; preferences\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"/en/docs/proxy-ssl/\">Proxy &amp; SSL certificates\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"/changelog/\">Changelog\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"/en/docs/faq/\">FAQ\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cp>\u003Ca href=\"/en/\">Download the current DevPeek\u003C/a> and keep using Check for Updates in About. Background silent update comes with 1.3.0. \u003Ca href=\"https://github.com/GYPengDev/devpeek/discussions\">GitHub Discussions\u003C/a> if something&#39;s off.\u003C/p>\n",{"items":14},[15,16,23,30,37,44,50,58,64,71],{"slug":4,"title":5,"summary":6,"date":7,"featured":8,"seoDescription":9,"series":10,"seriesOrder":11},{"slug":17,"title":18,"summary":19,"date":20,"featured":8,"seoDescription":21,"series":10,"seriesOrder":22},"dev-build-log-ws-mock-dsl","Why We Designed a WebSocket Mock DSL Instead of YAML, JSON, or JS","Lightweight WebSocket Mock shouldn't feel heavier than HTTP Mock. YAML, JSON, and JS all work—but they're wordy for connect, login, heartbeat. We built a short DSL to keep lightweight Mock light.","2026-08-13","DevPeek dev log: why WebSocket Mock uses a custom Flow DSL. YAML, JSON, and JS handle heavy cases; sequential lightweight scripts get a shorter text format.",3,{"slug":24,"title":25,"summary":26,"date":27,"featured":8,"seoDescription":28,"series":10,"seriesOrder":29},"dev-build-log-electron-to-tauri","DevPeek Architecture: Dropping Electron for Tauri","A debugging proxy shouldn't ship a whole Chromium just to open a window. We moved business logic into Core and swapped the desktop shell for Tauri—lighter installs, leaner background use, and the tray brings the UI back after you close the window.","2026-08-08","DevPeek dev log: moving the desktop shell from Electron to Tauri—business stays in Core, the shell handles windows and OS features, with smaller footprint and lower resource use.",2,{"slug":31,"title":32,"summary":33,"date":34,"featured":8,"seoDescription":35,"series":10,"seriesOrder":36},"dev-build-log-sqljs-to-better-sqlite3","Why We Moved Capture History from sql.js to Native SQLite","Early DevPeek stored captures in JavaScript-based SQLite (sql.js); busy sessions ate RAM and stuttered the list. Native SQLite keeps memory flat so the proxy can run all day.","2026-08-05","DevPeek dev log: moving capture storage from sql.js to native SQLite—fixing memory growth and list lag on all-day debugging sessions.",1,{"slug":38,"title":39,"summary":40,"date":41,"featured":8,"seoDescription":42,"series":43,"seriesOrder":29},"mock-map-route-split-api","New API Is Live, Frontend Hasn't Shipped? Debug with Forward Rules","After a service split, the frontend still hits the old API while orders already live on the new service. DevPeek Forward Rules forward specific endpoints to the new host without code changes; if the new service isn't ready, Mock gets the page working first.","2026-07-26","Microservice integration and API host migration: use DevPeek Forward Rules for API forwarding—point old-host requests to the new service without changing the frontend. Mock when migration isn't done. Includes a hands-on demo.","api-debug-new-tricks",{"slug":45,"title":46,"summary":47,"date":48,"featured":8,"seoDescription":49,"series":43,"seriesOrder":36},"api-param-encryption-debug","H5 API Encrypted? Decrypt It On the Fly with DevPeek","Stuck with AES-encrypted API params during integration? Set the key and IV once in DevPeek Param Transform, and see plaintext automatically — you can even edit and re-encrypt on resend.","2026-07-18","Use DevPeek Param Transform to auto-decrypt AES-GCM encrypted H5 API requests. Supports two-way transform, plaintext editing, and debug replay.",{"slug":51,"title":52,"summary":53,"date":54,"featured":55,"seoDescription":56,"series":57,"seriesOrder":29},"h5-debug-console-mock","H5 Debug in Practice (2): Android WebView White Screen—From Console Remote Debug to Mock Validation","A campaign H5 white-screened on some Android devices after a button tap—all requests returned 200, but the page showed nothing. Using DevPeek Console to capture WebView runtime logs, remote eval to confirm a polyfill override, then Mock to verify the fallback UI under error conditions.","2026-07-13",true,"DevPeek H5 debug practice part 2: troubleshoot Android WebView white screen via Console remote debug to locate a JavaScript polyfill conflict, then use Mock to verify page fallback behavior under abnormal API responses.","h5-debug",{"slug":59,"title":60,"summary":61,"date":62,"featured":55,"seoDescription":63,"series":57,"seriesOrder":36},"wechat-h5-storage-debug","H5 Debug in Practice (1): WeChat H5 Local Cache—Debug It on Desktop","After switching test accounts in a WeChat official-account H5, the avatar still showed the old user—capture had the new token, stale data stayed in localStorage. This post walks through a real joint-debug case and how to view and edit localStorage, sessionStorage, and IndexedDB in WeChat WebView from your PC.","2026-07-11","DevPeek H5 debug: locate localStorage, sessionStorage, and IndexedDB cache issues in WeChat H5—compared with vConsole and remote debug, with real WebView debugging workflow.",{"slug":65,"title":66,"summary":67,"date":68,"featured":55,"seoDescription":69,"series":70,"seriesOrder":29},"why-we-built-devpeek-h5-debug","Why We Built DevPeek (2): That H5 Page in the App—Debug It on Your PC","Param transform fixed login, but the activity H5 only broke inside the App WebView. Remote debug and capture lived in different windows—so we folded mirroring and our own debug panels into DevPeek.","2026-07-10","DevPeek origin series, part 2: in-app H5 bugs that only show on real devices, the split between remote debug and capture, and how the Debug tab mirrors pages with built-in DOM, Console, and Network panels.","origin",{"slug":72,"title":73,"summary":74,"date":75,"featured":55,"seoDescription":76,"series":70,"seriesOrder":36},"why-we-built-devpeek","Why We Built DevPeek (1): HTTPS Decrypted, Body Still Gibberish","The night before a release, TLS was already open—but changing one request field still meant digging up encrypt/decrypt scripts. That pushed us toward a proxy tool with business-layer crypto built in—and DevPeek started there.","2026-07-09","DevPeek origin series, part 1: the manual request-body encrypt/decrypt grind—and why we set out to build a proxy tool that owns business-layer crypto.",1787966602261]