From 05d09441c3706e032c43b871473bd35b3d7535d4 Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Mon, 21 Sep 2026 18:36:37 -0400 Subject: [PATCH] test(mobile): repin the session route's closure for the editor on the page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both sides measured with `mobileWebAppRouteClosure(SESSION_ROUTE)` at base `9267423f22`, all five postinstall generators run first, the before side a scratch worktree detached at that sha: modules 4333 -> 4360 (+27) local modules 991 -> 1018 (+27) All 27 are local and none is vendored, which is the point: the editor is the app's own code, not a library. The document's 24 modules under `src/components/rich-markdown/` were reachable from nothing on the page while it rendered a plain field, and the other three are the mount, the shared toolbar, and the controller with its keyboard-inset module. Nothing leaves, because the web sibling replaces its own native file and that file was never in this closure. Named by diffing the two `local` lists, not inferred from the total. `document-style-scoping.ts` is on both sides: the terminal's mount already brings it, so the editor's second export costs no module. The generation, measured the same way on both sides: 8,028,418 -> 8,056,166 bytes (+27,748) across 109 assets against the 9 MiB ceiling, 85.1% -> 85.4%. The script count does not move (67 against the 76 the chunk fence allows for 15 routes) and neither does the entry's static closure (1,612,052 bytes against 3 MiB) — this is code the route already reached for, not a new chunk boundary. The grant census needs nothing: `openExternalLink` is the editor's only seam with a grant behind it, and the session route already declares `externalLink` for six other openers. `mobile-web-app-page-grant-call-sites.test.mjs` passes unchanged. Closure, webview-consumer and grant censuses together: 28 passed, 0 failed, exit 0. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb --- ...-web-app-session-terminal-closure.test.mjs | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/config/scripts/mobile-web-app-session-terminal-closure.test.mjs b/config/scripts/mobile-web-app-session-terminal-closure.test.mjs index cd53e1e2d01..37a0c5a6f35 100644 --- a/config/scripts/mobile-web-app-session-terminal-closure.test.mjs +++ b/config/scripts/mobile-web-app-session-terminal-closure.test.mjs @@ -219,8 +219,33 @@ const MERMAID_PACKAGE = 'node_modules/mermaid/' * and the two it reaches, `agent-session-conversation-name.ts` and `surrogate-safe-text-slice.ts`, * entered the page bundle between C7.7's measurement on `f07bf8544c` and its merge. Named by * diffing the closure at `f07bf8544c` against `2739246058`; nothing on the C7.7 side moved. + * + * Then C7.10 item C put the rich Markdown editor on the page, and the list moved again. Its own + * reading, both sides measured with `mobileWebAppRouteClosure(SESSION_ROUTE)` at base `9267423f22` + * with all five postinstall generators run first: + * + * modules 4333 -> 4360 (+27) + * local modules 991 -> 1018 (+27) + * + * Every one of the 27 is local and none is vendored, because the editor is the app's own code + * rather than a library: the document's 24 modules under `src/components/rich-markdown/` — which + * C7.6's plain field did not reach at all — plus the page's mount, the toolbar both siblings render, + * and the controller and keyboard-inset module the native component already had. Nothing leaves: + * the web sibling replaces its own native file, which was never in this closure. Named by diffing + * the two `local` lists rather than inferred from the total. + * + * `terminal-webview-html/document-style-scoping.ts` is in the reading on both sides and costs + * nothing: the terminal's own mount already brings it, and the editor's mount imports the second + * export it grew rather than a module of its own. + * + * What the generation weighs, measured the same way on both sides: 8,028,418 -> 8,056,166 bytes + * (+27,748) across 109 assets, against the 9 MiB ceiling in `verify-mobile-web-app-bundle.mjs` — + * 85.1% of it before and 85.4% after. The script count does not move at all (67, against the + * 76 the chunk fence allows for 15 routes) and neither does the entry's static closure + * (1,612,052 bytes against a 3 MiB bound): the editor is code the session route already reached + * for, not a new chunk boundary. */ -const SESSION_ROUTE_MODULES = 4333 +const SESSION_ROUTE_MODULES = 4360 /** What the page enters this route through once the route is a switch with a `.web.tsx` sibling. */ const ROUTE_ENTRY = [