Chinesezjc
e830ed7939
fix(web-search-card): surface truncation recovery, widen cardless fallback, validate wire shape, fix tail-cap
...
Address the ds-review-bot findings on the search card:
- searchCardModel dropped the result view's `content`, so a capped search's
`Full … stored at: <locator>` recovery footer vanished from the UI (the card
replaces the raw text). Thread it through as `SearchCardModel.recovery` and
render it below the card at all three sites, only when truncated.
- SearchRow's fallback body was gated on `state === 'error'`, so a settled
non-error call with no card (a successful nested run_code sub-dispatch, a
legacy generic result) showed only its summary with content lost. Widen it to
any settled call with `search === null`.
- searchCardModel trusted the `files`/`paths` shape the host wire schema only
string-checks; a malformed known-kind frame would crash SearchBlock. Validate
the full shape and fall to the generic path on mismatch.
- SearchBlock's restored tail file header added a row without consuming a tail
slot, exceeding maxLines by one and overstating the hidden count. Make it
consume a slot so the visible count holds at maxLines and `hidden` stays exact.
Correct the fixture JSDoc (now genuinely exceeds the row cap) and the Agent Note
recovery-text claim, sync the ui-conversation bilingual README with the search
row, and add an assembled keyless snapshot (apps/web/tests/search-card.snapshot.ts)
that pins the grep card's shape from the built bundles.
2026-07-30 22:40:07 +08:00
..
2026-07-25 01:58:42 +08:00
2026-07-24 23:43:10 +08:00
2026-07-25 01:58:42 +08:00
2026-07-27 14:01:15 +08:00
2026-07-27 14:01:15 +08:00
2026-07-27 14:01:15 +08:00
2026-07-23 19:48:00 +08:00
2026-07-23 19:33:30 +08:00
2026-07-23 19:48:00 +08:00
2026-07-27 21:17:49 +08:00
2026-07-27 21:17:49 +08:00
2026-07-27 21:17:49 +08:00
2026-07-24 16:36:34 +08:00
2026-07-23 00:10:53 +08:00
2026-07-24 16:36:34 +08:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 05:22:47 -07:00
2026-07-28 05:22:47 -07:00
2026-07-28 05:22:47 -07:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-27 17:38:42 +08:00
2026-07-27 17:38:42 +08:00
2026-07-27 17:38:42 +08:00
2026-07-28 14:41:51 +08:00
2026-07-28 14:41:51 +08:00
2026-07-28 14:41:51 +08:00
2026-07-25 01:58:42 +08:00
2026-07-24 23:43:10 +08:00
2026-07-25 01:58:42 +08:00
2026-07-29 21:51:01 +08:00
2026-07-29 21:51:01 +08:00
2026-07-29 21:51:01 +08:00
2026-07-28 21:51:13 +08:00
2026-07-28 21:51:13 +08:00
2026-07-28 21:51:13 +08:00
2026-07-24 13:57:16 +08:00
2026-07-22 23:07:14 +08:00
2026-07-24 13:57:16 +08:00
2026-07-28 21:51:13 +08:00
2026-07-28 21:51:13 +08:00
2026-07-28 21:51:13 +08:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:42 +08:00
2026-07-27 04:14:51 +08:00
2026-07-27 04:14:51 +08:00
2026-07-27 04:14:51 +08:00
2026-07-29 22:10:26 +08:00
2026-07-29 22:10:26 +08:00
2026-07-29 22:10:26 +08:00
2026-07-26 23:06:00 +08:00
2026-07-26 23:06:00 +08:00
2026-07-26 23:06:00 +08:00
2026-07-24 17:39:22 +08:00
2026-07-22 23:07:14 +08:00
2026-07-24 17:39:22 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-22 21:37:30 +08:00
2026-07-22 21:37:30 +08:00
2026-07-22 21:37:30 +08:00
2026-07-25 16:43:07 +08:00
2026-07-25 16:43:07 +08:00
2026-07-25 16:43:07 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-30 14:56:39 +08:00
2026-07-30 14:56:39 +08:00
2026-07-30 14:56:39 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-26 14:29:30 +08:00
2026-07-26 14:05:33 +08:00
2026-07-26 14:05:33 +08:00
2026-07-20 20:35:15 +08:00
2026-07-20 20:35:15 +08:00
2026-07-20 20:35:15 +08:00
2026-07-24 22:12:23 +08:00
2026-07-24 22:12:23 +08:00
2026-07-24 22:12:23 +08:00
2026-07-26 14:29:30 +08:00
2026-07-26 14:05:33 +08:00
2026-07-26 14:05:33 +08:00
2026-07-27 21:20:06 +08:00
2026-07-27 21:20:06 +08:00
2026-07-27 21:20:06 +08:00
2026-07-30 14:56:39 +08:00
2026-07-30 14:56:39 +08:00
2026-07-30 14:56:39 +08:00
2026-07-20 21:16:40 +08:00
2026-07-20 21:16:40 +08:00
2026-07-20 21:16:40 +08:00
2026-07-28 13:58:06 +08:00
2026-07-28 13:58:06 +08:00
2026-07-28 13:58:06 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-28 17:22:41 +08:00
2026-07-28 17:22:41 +08:00
2026-07-28 17:22:41 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 17:26:44 +08:00
2026-07-22 20:35:38 +08:00
2026-07-22 20:35:38 +08:00
2026-07-22 20:35:38 +08:00
2026-07-27 21:30:28 +08:00
2026-07-27 21:30:28 +08:00
2026-07-27 21:30:28 +08:00
2026-07-23 17:39:30 +08:00
2026-07-23 17:39:30 +08:00
2026-07-23 17:39:30 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 12:04:12 +08:00
2026-07-27 12:04:12 +08:00
2026-07-27 12:04:12 +08:00
2026-07-24 19:15:04 +08:00
2026-07-24 19:15:04 +08:00
2026-07-24 19:15:04 +08:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-25 18:27:39 +08:00
2026-07-25 18:27:39 +08:00
2026-07-25 18:27:39 +08:00
2026-07-26 01:16:41 +08:00
2026-07-26 01:16:41 +08:00
2026-07-26 01:16:41 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-30 10:34:21 +08:00
2026-07-30 10:11:38 +08:00
2026-07-30 10:11:38 +08:00
2026-07-26 01:30:14 +08:00
2026-07-26 01:30:14 +08:00
2026-07-26 01:30:14 +08:00
2026-07-29 00:39:56 +08:00
2026-07-29 00:39:56 +08:00
2026-07-29 00:39:56 +08:00
2026-07-27 12:38:11 +08:00
2026-07-27 12:38:11 +08:00
2026-07-27 12:38:11 +08:00
2026-07-26 22:53:47 +08:00
2026-07-26 22:53:47 +08:00
2026-07-26 22:53:47 +08:00
2026-07-26 03:29:22 +08:00
2026-07-26 02:43:34 +08:00
2026-07-26 03:29:22 +08:00
2026-07-26 04:24:13 +08:00
2026-07-26 04:02:38 +08:00
2026-07-26 04:24:13 +08:00
2026-07-26 15:26:52 +08:00
2026-07-26 15:26:52 +08:00
2026-07-26 15:26:52 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 03:50:22 -07:00
2026-07-27 03:50:22 -07:00
2026-07-27 03:50:22 -07:00
2026-07-29 22:27:49 +08:00
2026-07-29 22:27:49 +08:00
2026-07-29 22:27:49 +08:00
2026-07-29 21:15:48 +08:00
2026-07-29 21:15:48 +08:00
2026-07-29 21:15:48 +08:00
2026-07-29 20:16:13 +08:00
2026-07-29 20:16:13 +08:00
2026-07-29 20:16:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-28 01:41:32 +08:00
2026-07-28 01:41:32 +08:00
2026-07-28 01:41:32 +08:00
2026-07-27 15:52:35 +08:00
2026-07-27 15:52:35 +08:00
2026-07-27 15:52:35 +08:00
2026-07-30 11:34:46 +08:00
2026-07-30 11:34:46 +08:00
2026-07-30 11:34:46 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-28 17:36:44 +08:00
2026-07-28 17:36:44 +08:00
2026-07-28 17:36:44 +08:00
2026-07-29 23:17:07 +08:00
2026-07-29 23:17:07 +08:00
2026-07-29 23:17:07 +08:00
2026-07-28 19:43:56 +08:00
2026-07-28 19:43:56 +08:00
2026-07-28 19:43:56 +08:00
2026-07-28 14:24:41 +08:00
2026-07-28 14:24:41 +08:00
2026-07-28 14:24:41 +08:00
2026-07-29 16:42:10 +08:00
2026-07-29 16:42:10 +08:00
2026-07-29 16:42:10 +08:00
2026-07-30 04:12:38 +08:00
2026-07-30 04:12:38 +08:00
2026-07-30 04:12:38 +08:00
2026-07-29 14:12:01 +08:00
2026-07-29 14:12:01 +08:00
2026-07-29 14:12:01 +08:00
2026-07-30 01:07:47 +08:00
2026-07-30 01:07:47 +08:00
2026-07-30 01:07:47 +08:00
2026-07-30 00:08:59 +08:00
2026-07-30 00:01:49 +08:00
2026-07-30 00:01:49 +08:00
2026-07-30 17:03:54 +08:00
2026-07-30 17:03:54 +08:00
2026-07-30 17:03:54 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 16:20:34 +08:00
2026-07-30 16:20:34 +08:00
2026-07-30 16:20:34 +08:00
2026-07-30 22:40:07 +08:00
2026-07-30 22:40:07 +08:00
2026-07-30 22:40:07 +08:00