2 Commits
Author SHA1 Message Date
Jason 3abbdf28a1 fix(sessions): don't evict loaded images whose waiters haven't taken them
With every cached image in use, a newly loaded entry (refs 0) was the only
evictable one and got revoked before its waiting hook acquired it, leaving
the image stuck on the loading placeholder; two loads finishing together
could also evict each other. Count pending waiters per image and skip
images that still have one when evicting.
2026-10-04 00:05:19 +08:00
736622b324 feat(sessions): redesign the session reader with structured transcripts (#7825)
Rebuild the session page around structured transcripts.

- Session list: project groups start collapsed and remember the ones
  expanded by hand; unchanged session files reuse their parsed metadata.
- Backend: all nine agents' transcripts parse into structured blocks
  (text, thinking, tool call / result, image, event, step); the Codex
  rollout parser is rewritten. New commands stream transcripts over a
  Channel, serve full block content, image bytes and Finder reveal behind
  validated content refs, and export a session as a Markdown file; a
  transcript cache (8 entries / 96 MB) keyed by source fingerprints.
  open_external now only allows http, https and mailto.
- Reader: turns laid out as prompt -> execution steps -> final reply, with
  steps folded into a one-line summary, failures always shown, each
  agent's native symbols and verbs, all / conversation / changes filters,
  a conversation outline, in-session find, Markdown rendering (ported
  from #6332), image lightbox and copy / export as Markdown.
- Review follow-ups: clippy, Codex 0.119-0.128 duplicate steps and late
  failure status, Grok Build in-progress refresh, full arguments for long
  shell commands, and shared block helpers across the parsers.

Co-authored-by: bigben446 <bigben446@users.noreply.github.com>
Co-authored-by: Jason <farion1231@gmail.com>
2026-10-03 23:29:00 +08:00