Jinwoo Hong
cb848647e5
fix(browser-preview): require explicit preview capabilities (STA-5758) ( #16921 )
...
* fix(browser-preview): require explicit preview capabilities (STA-5758)
Scope document reads to approved directories, confirm external links before opening them, revoke grants with tab lifecycle, and keep document-preview session state rollback-safe across mixed client/runtime versions.
* Harden document preview lifecycle and permissions
* Document preview DNS prefetch residual
* Make preview E2E guest focus explicit
* fix(browser-preview): entry-file-only authority for root-level docs, contained chip layout, re-issued gate paths (STA-5758)
A grant whose document directory is its own request base — a doc at the
workspace root, or outside any workspace — now reads nothing but the entry
file until the reader approves a directory, at both the lexical and the
canonical containment pass. The DNS-prefetch residual can only beacon what
the page can read, and a root-level document could previously read the
whole worktree silently.
The identity chip's host badge overflowed the chip's layout box under
squeeze (Linux CI): every row member can now shrink and truncate, verified
by a width sweep in isolated Chromium down to ~120px chips.
The Allow banner says what it grants: 'Allow folder', reading files in the
named directory, for the life of the preview.
The reliability-gate manifest command, testFiles entry, assertion refs and
dated evidence naming the deleted doc-preview-external-link-bridge.test.ts
are re-issued at doc-preview-external-link-confirmation.test.ts with a
fresh 189/189 run; the focus-gate assertion text follows the shipped gate.
* fix(browser-preview): hide the chip identity row below 24rem instead of clipping it, ellipsize the host badge, catalog the new i18n keys (STA-5758)
CI's preview pane leaves the chip ~40px: no truncation shows anything
there, so the Workspace-file label and host badge now hide whole below a
24rem container threshold sized so that visible implies contained. The
badge text gains an inner text box — text directly inside the flex pill
clipped both ends with no ellipsis. The e2e geometry oracle asserts
containment when the row shows and the threshold when it does not.
verify:localization-catalog: the hardening's new preview keys (and the
renamed allowDirectory) join en.json via sync:localization-catalog.
* feat(browser-preview): batch blocked folders into one access decision (STA-5758)
Sequential per-folder banners trained the allow reflex without adding
judgment — a reader cannot weigh assets/ against data/. The banner now
accumulates every folder a load surfaces, names them (three, then a
count, full list in the title), and grants exactly that set with one
Allow-N-folders click and one reload. Dismiss fences the whole named
set. The map lives behind a ref with a version tick so a dismissal
fences an offer landing in the same event batch.
2026-08-28 00:42:07 -04:00
..
2026-08-15 00:54:20 -07:00
2026-08-26 16:49:31 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-26 16:49:31 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-26 16:49:31 -07:00
2026-08-26 16:49:31 -07:00
2026-08-26 16:49:31 -07:00
2026-08-26 16:49:31 -07:00
2026-08-26 16:49:31 -07:00
2026-08-16 20:35:34 -07:00
2026-08-19 14:12:44 -07:00
2026-08-16 20:35:34 -07:00
2026-08-26 15:09:22 -07:00
2026-08-13 22:48:24 -07:00
2026-07-18 23:40:01 -07:00
2026-07-16 19:11:34 -07:00
2026-07-16 19:11:34 -07:00
2026-08-13 22:48:24 -07:00
2026-08-27 08:49:02 -07:00
2026-08-27 08:49:02 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-19 16:31:57 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-16 18:43:11 -07:00
2026-08-19 16:31:57 -07:00
2026-08-19 16:31:57 -07:00
2026-08-19 16:31:57 -07:00
2026-08-19 16:31:57 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-19 16:31:57 -07:00
2026-08-17 12:44:39 -07:00
2026-08-20 12:53:44 -07:00
2026-08-17 12:44:39 -07:00
2026-08-19 16:31:57 -07:00
2026-08-19 16:31:57 -07:00
2026-08-13 23:15:21 -07:00
2026-08-17 12:44:39 -07:00
2026-08-25 15:36:51 -07:00
2026-08-19 16:31:57 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-09 17:05:00 -07:00
2026-08-09 17:05:00 -07:00
2026-08-17 12:44:39 -07:00
2026-08-25 15:36:51 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-17 12:44:39 -07:00
2026-08-19 16:31:57 -07:00
2026-08-12 21:33:18 -07:00
2026-08-25 15:36:51 -07:00
2026-08-22 21:34:39 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-07 01:29:37 -07:00
2026-08-11 16:37:53 -07:00
2026-05-30 13:23:50 -07:00
2026-05-30 13:23:50 -07:00
2026-05-15 18:39:32 -07:00
2026-05-31 09:33:31 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-05-17 22:24:38 -07:00
2026-08-15 17:59:29 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-28 00:27:01 -04:00
2026-08-19 13:06:54 -07:00
2026-08-25 15:36:51 -07:00
2026-08-20 00:22:59 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-28 00:27:01 -04:00
2026-08-28 00:27:01 -04:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-27 08:49:02 -07:00
2026-08-27 08:49:02 -07:00
2026-08-15 00:54:20 -07:00
2026-08-28 00:27:01 -04:00
2026-08-15 00:54:20 -07:00
2026-08-28 00:27:01 -04:00
2026-04-30 17:19:07 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-27 08:49:02 -07:00
2026-08-27 08:49:02 -07:00
2026-08-27 08:49:02 -07:00
2026-08-27 00:26:55 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-15 17:59:29 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-05-17 22:24:38 -07:00
2026-08-25 15:36:51 -07:00
2026-08-15 17:59:29 -07:00
2026-08-05 01:26:38 -07:00
2026-08-25 15:36:51 -07:00
2026-07-23 18:35:31 -07:00
2026-08-25 15:36:51 -07:00
2026-08-15 17:59:29 -07:00
2026-08-19 16:31:57 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-19 16:31:57 -07:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-19 14:12:44 -07:00
2026-08-15 17:59:29 -07:00
2026-08-20 00:22:59 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-11 16:37:53 -07:00
2026-08-13 22:48:24 -07:00
2026-06-19 17:14:55 -07:00
2026-08-10 20:41:01 -07:00
2026-08-07 01:29:37 -07:00
2026-08-07 01:29:37 -07:00
2026-08-16 18:32:20 -07:00
2026-08-16 18:32:20 -07:00
2026-08-16 18:32:20 -07:00
2026-08-16 18:32:20 -07:00
2026-08-16 18:32:20 -07:00
2026-08-27 18:18:50 -07:00
2026-08-22 21:34:39 -07:00
2026-08-27 18:18:50 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-07-03 14:12:18 -07:00
2026-07-03 14:12:18 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-07-09 22:12:04 -07:00
2026-07-27 16:40:29 -07:00
2026-07-27 16:40:29 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:27:01 -04:00
2026-08-28 00:27:01 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-08-28 00:42:07 -04:00
2026-05-17 22:24:38 -07:00
2026-05-17 22:24:38 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 00:31:31 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-28 00:27:01 -04:00
2026-08-28 00:27:01 -04:00
2026-06-29 22:38:29 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-07-13 20:48:00 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-15 17:59:29 -07:00
2026-08-15 17:59:29 -07:00
2026-07-23 18:35:31 -07:00
2026-08-15 17:59:29 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00