rendering
a native terminal, no browser inside
output is parsed by libghostty-vt, the terminal core of ghostty, on the connection's own thread, and drawn with direct2d and directwrite straight into the window at the display's refresh rate. every glyph advances by whole cells, so text stays on the character grid at any display scaling.
glyphs
box drawing without seams
font outlines for box, block and powerline characters only meet the cell edges at a few sizes. resesh draws them itself as whole-pixel rectangles and paths, following ghostty's sprite font, so they join at every zoom level.
background tabs
nothing drawn that nobody sees
only the selected tab in each pane draws, and nothing draws while the window is minimized. output is still parsed, so command tracking, notifications and history keep working for background tabs.
rewind
seekable terminal history
every 10 seconds or 1 mib of output, the terminal serializes its full state as a keyframe. rewind jumps to the nearest keyframe and replays only what followed, so scrubbing is exact without replaying the whole session.
highlighting
decorations that follow scrollback
highlight rules run incrementally during output. matches stay attached to their rows as old lines are trimmed, so follow-mode logs such as journalctl -f don't redraw unchanged decorations.
output
batched, timestamped output
ssh output is batched every 16 ms or 32 kb before reaching the terminal, and each read keeps its arrival time, so line timestamps and recordings stay accurate under heavy output.
history
full-text search that forgets properly
history lives in one sqlite database with an fts5 trigram index kept in step by triggers, so any substring search stays fast at tens of thousands of commands. deletes run with secure_delete, then merge the index and truncate the write-ahead log, so removed text does not linger on disk.
compare
a diff built for device output
a myers line diff with a bounded edit budget, then word-level marks where addresses and paths count as one word. timestamps and numbers can be masked before comparing, so counters that always move don't bury the real change.
storage
atomic json, secrets elsewhere
sessions, identities and workspaces are written atomically with a backup copy, and an unreadable file is kept aside instead of replaced. session files with duplicate ids or invalid local directory or argument values also use backup recovery. passwords and passphrases live in windows credential manager and are never written to disk by resesh.