Garry Tan and capy-ai[bot]
5f9b7ef209
Let the design lint check one section of a running app for crowded rows, cramped help text, loud notes and small tap targets ( #4138 )
...
* feat(design-lint): --scope app measures one app section for row spacing, flush help copy, loud notes and small targets (GST-1741 PR 1)
Adds an opt-in, render-only app profile to gstack-design-lint: its own
scheduler (lib/design-lint/render-app.ts) and probes
(lib/design-lint/render-probe-app.ts on window.__gstackLintApp), five
app-only rules at ask (row-crowding, copy-flush-under-list,
note-in-row-weight, small-hit-area, section-overflow), --within matched
through open shadow roots, readiness and state assertions, a LINT_APP
verdict with exit 0 clean / 1 open / 4 incomplete / 3 usage, --waivers,
URL redaction everywhere and private trace files for probe errors.
Behavior change: --url with no browser now exits 4 with
RENDER_UNAVAILABLE under every scope. Page and component output is
otherwise byte-identical to e58be61 (test/design-lint-scope-guard.test.ts).
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* test(design-lint): app profile scope, label-target and select-in-row cases (GST-1741 PR 1)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* fix(design-lint): app rows read laid-out unboxed lists, and subpixel noise never fires a threshold (GST-1741 PR 1)
Measured against six real qm builds from the probe: the shipped access list
(flex rows, no border) slipped past row-crowding, and 8px padding read as 7.99px
and fired. Rows that set an avatar, text and control side by side now count as
a list of rows; thresholds ignore the last 0.05px.
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* fix: pre-landing review fixes (GST-1741 PR 1)
Redact secret-looking #fragment parameters like query ones; keep two --url states whose redacted names match as two states (name~2) and refuse only the same URL twice; a trace that cannot be written keeps the state PROBE_ERROR instead of crashing to exit 1; a section selector the browser refuses no longer holds the soft readiness wait, and a NOT_READY without --wait-for names the section.
Review-Finding: p1/specialist-batched#1 reader=security
Review-Finding: p1/specialist-batched#2 reader=testing
Review-Finding: p1/red-team#1 reader=red-team
Review-Finding: p1/red-team#2 reader=red-team
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* fix: a generated state name never collides with a literal one (GST-1741 PR 1)
Names for --url states are given out from the set of names already used, so /p, /p#x and /p~2 measure as three states. Review-loop exception a-7c954c6c661f.
Review-Finding: p2/outside-voice#1 reader=outside-voice
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* docs: design-lint usage and project map name --scope app (GST-1741 PR 1)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
* Describe the app section check in everyday words in the changelog
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
2026-11-07 19:56:12 +00:00
..
2026-11-03 17:08:30 +00:00
2026-10-04 07:58:41 -07:00
2026-09-14 14:32:45 -07:00
2026-10-16 23:09:23 +00:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-04 07:58:41 -07:00
2026-10-02 11:11:00 -07:00
2026-10-19 18:26:20 +00:00
2026-10-02 11:11:00 -07:00
2026-10-04 07:58:41 -07:00
2026-08-14 09:28:56 -07:00
2026-10-18 17:06:36 +00:00
2026-10-02 11:11:00 -07:00
2026-10-26 17:35:04 +00:00
2026-10-17 00:56:33 +00:00
2026-10-06 18:07:50 +00:00
2026-10-06 18:07:50 +00:00
2026-10-26 09:33:07 +00:00
2026-08-14 22:02:07 -07:00
2026-11-02 05:24:30 +00:00
2026-10-10 22:33:01 +00:00
2026-11-07 05:51:12 +00:00
2026-11-07 09:53:38 +00:00
2026-10-08 07:02:02 +00:00
2026-11-05 02:30:04 +00:00
2026-10-31 15:33:39 +00:00
2026-10-26 12:00:20 +00:00
2026-10-25 03:56:50 +00:00
2026-10-27 21:21:50 +00:00
2026-04-19 05:44:39 +08:00
2026-11-03 17:08:30 +00:00
2026-10-25 01:25:19 +00:00
2026-10-01 11:57:48 -07:00
2026-10-11 03:10:06 +00:00
2026-05-29 08:35:00 -07:00
2026-11-07 19:49:19 +00:00
2026-11-07 06:02:49 +00:00
2026-09-22 14:57:52 -04:00
2026-10-17 03:32:16 +00:00
2026-10-27 10:16:08 +00:00
2026-09-14 14:32:45 -07:00
2026-10-04 07:58:41 -07:00
2026-10-28 05:45:54 +00:00
2026-11-04 23:46:23 +00:00
2026-11-06 18:07:57 +00:00
2026-11-06 21:58:23 +00:00
2026-11-02 05:53:59 +00:00
2026-11-02 08:12:24 +00:00
2026-11-03 18:44:36 +00:00
2026-10-20 04:47:11 +00:00
2026-10-01 11:57:48 -07:00
2026-10-03 01:19:03 -07:00
2026-10-17 03:32:16 +00:00
2026-10-03 01:19:03 -07:00
2026-11-07 06:52:04 +00:00
2026-10-31 09:54:03 +00:00
2026-10-03 01:19:03 -07:00
2026-10-17 03:32:16 +00:00
2026-11-05 00:43:21 +00:00
2026-11-07 06:52:04 +00:00
2026-10-06 18:07:50 +00:00
2026-11-07 19:56:12 +00:00
2026-08-29 10:10:35 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-04 07:58:41 -07:00
2026-10-04 07:58:41 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-10-18 06:03:18 +00:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-06 18:07:50 +00:00
2026-10-07 23:29:05 +00:00
2026-10-02 11:11:00 -07:00
2026-10-29 10:29:23 +00:00
2026-10-03 18:49:34 -07:00
2026-10-04 07:58:41 -07:00
2026-11-07 06:52:04 +00:00
2026-10-25 23:39:42 +00:00
2026-10-27 09:59:09 +00:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-19 07:26:49 +00:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 07:54:09 -07:00
2026-11-02 15:08:48 +00:00
2026-10-03 07:54:09 -07:00
2026-10-19 07:26:49 +00:00
2026-09-14 14:32:45 -07:00
2026-10-03 01:19:03 -07:00
2026-11-01 16:01:55 +00:00
2026-10-19 07:26:49 +00:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-23 18:05:39 +00:00
2026-09-14 15:14:58 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-25 13:27:07 -04:00
2026-10-01 13:55:16 -07:00
2026-10-27 19:40:06 +00:00
2026-10-27 19:40:06 +00:00
2026-10-23 18:35:59 +00:00
2026-10-23 18:35:59 +00:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-08 22:40:22 -07:00
2026-10-27 03:04:06 +00:00
2026-11-04 23:59:00 +00:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-19 07:26:49 +00:00
2026-10-20 02:13:39 +00:00
2026-10-20 02:13:39 +00:00
2026-10-20 18:05:16 +00:00
2026-10-23 18:35:59 +00:00
2026-10-29 00:16:09 +00:00
2026-11-01 16:01:55 +00:00
2026-11-01 16:01:55 +00:00
2026-11-02 23:05:47 +00:00
2026-10-03 07:54:09 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-10-19 07:26:49 +00:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 01:19:03 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-10-27 19:40:06 +00:00
2026-10-19 09:52:57 +00:00
2026-10-04 07:58:41 -07:00
2026-10-26 16:55:25 +00:00
2026-11-01 15:32:09 +00:00
2026-10-20 18:45:38 +00:00
2026-11-01 15:32:09 +00:00
2026-11-04 23:59:00 +00:00
2026-11-01 15:32:09 +00:00
2026-11-01 15:32:09 +00:00
2026-11-02 15:08:48 +00:00
2026-10-26 16:55:25 +00:00
2026-10-17 00:56:33 +00:00
2026-10-27 19:40:06 +00:00
2026-10-17 02:10:12 +00:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-04 07:58:41 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-25 13:27:07 -04:00
2026-09-22 14:57:52 -04:00
2026-10-18 01:37:29 +00:00
2026-09-08 22:40:22 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-11-02 09:26:46 +00:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-11-07 06:52:04 +00:00
2026-10-06 18:07:50 +00:00
2026-11-04 22:19:08 +00:00
2026-10-08 08:00:08 +00:00
2026-11-07 19:56:12 +00:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 11:57:48 -07:00
2026-09-22 14:57:52 -04:00
2026-10-19 19:22:29 +00:00
2026-10-06 18:07:50 +00:00
2026-05-26 16:50:03 -07:00
2026-08-15 09:37:04 -07:00
2026-09-06 08:54:25 -07:00
2026-09-14 14:32:45 -07:00
2026-10-20 19:02:57 +00:00
2026-10-20 19:02:57 +00:00
2026-10-19 07:26:49 +00:00
2026-10-08 08:00:08 +00:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-23 18:35:59 +00:00
2026-09-22 14:57:52 -04:00
2026-10-04 07:58:41 -07:00
2026-09-25 13:27:07 -04:00
2026-09-24 17:27:14 -04:00
2026-10-06 18:07:50 +00:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 01:19:03 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-11-03 22:44:59 +00:00
2026-10-06 18:07:50 +00:00
2026-09-22 14:57:52 -04:00
2026-11-01 15:47:35 +00:00
2026-11-01 15:32:09 +00:00
2026-10-20 18:23:57 +00:00
2026-10-29 01:58:13 +00:00
2026-10-08 08:00:08 +00:00
2026-10-29 01:58:13 +00:00
2026-10-18 00:37:43 +00:00
2026-03-14 07:17:17 -05:00
2026-03-14 07:17:17 -05:00
2026-03-14 07:17:17 -05:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-10-20 18:23:57 +00:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-10-19 09:52:57 +00:00
2026-09-29 06:07:35 -07:00
2026-09-22 14:57:52 -04:00
2026-10-02 11:11:00 -07:00
2026-08-29 10:10:35 -07:00
2026-03-30 22:07:50 -06:00
2026-03-30 22:07:50 -06:00
2026-08-29 10:10:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-03-17 20:12:55 -05:00
2026-09-08 22:40:22 -07:00
2026-03-17 20:12:55 -05:00
2026-03-16 01:45:50 -05:00
2026-03-16 01:45:50 -05:00
2026-03-14 01:17:36 -05:00
2026-10-19 07:26:49 +00:00
2026-09-26 18:57:53 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-11-02 14:39:24 +00:00
2026-10-16 22:00:32 +00:00
2026-11-02 14:49:46 +00:00
2026-10-19 07:26:49 +00:00
2026-10-19 07:26:49 +00:00
2026-09-25 12:06:45 -04:00
2026-09-24 17:27:14 -04:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-10-01 13:55:16 -07:00
2026-09-24 01:53:58 -04:00
2026-09-29 06:07:35 -07:00
2026-09-25 13:27:07 -04:00
2026-10-29 00:16:09 +00:00
2026-09-24 01:53:58 -04:00
2026-10-04 07:58:41 -07:00
2026-10-04 07:58:41 -07:00
2026-10-01 13:55:16 -07:00
2026-10-04 07:58:41 -07:00
2026-10-01 13:55:16 -07:00
2026-10-04 07:58:41 -07:00
2026-10-04 07:58:41 -07:00
2026-10-04 07:58:41 -07:00
2026-09-24 01:53:58 -04:00
2026-09-25 13:27:07 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-10-19 07:26:49 +00:00
2026-10-19 07:26:49 +00:00
2026-09-14 14:32:45 -07:00
2026-10-31 04:53:38 +00:00
2026-10-19 07:26:49 +00:00
2026-10-19 07:26:49 +00:00
2026-10-27 19:40:06 +00:00
2026-10-28 02:58:29 +00:00
2026-11-07 09:53:38 +00:00
2026-10-03 01:19:03 -07:00
2026-10-19 07:26:49 +00:00
2026-10-26 16:55:25 +00:00
2026-10-31 04:53:38 +00:00
2026-09-25 13:27:07 -04:00
2026-10-06 18:07:50 +00:00
2026-09-22 14:57:52 -04:00
2026-10-16 22:00:32 +00:00
2026-11-03 01:40:07 +00:00