Shared log records and small text helpers for `jk`.
This crate keeps the first shared contract narrow: a rendered `jj` log body plus semantic records
for navigation, selection preservation, and inline expansion.
The rendered text remains opaque `jj` output. Structured fields exist only where the TUI needs
stable state that cannot be recovered safely from terminal text.