magi-code 0.80.2

Repository-aware CLI coding agent for terminal work
Documentation
# Render agent guide

## Where to look

| Task | Location |
| --- | --- |
| Frame drawing and shared pane helpers | `mod.rs` |
| Transcript pane and scroll labels | `transcript.rs` |
| Activity tree/detail projection | `activity.rs` |
| Prompt, cursor, selection, completion overlay | `prompt.rs` |
| Header and prompt footer | `header.rs`, `prompt_footer.rs` |
| Shared modal shell, sizing and tabs | `../modal_container.rs` |
| Top-modal dispatch and content geometry | `modals/mod.rs` |
| Subagent timeline and theme picker | `modals/subagent_viewer.rs`, `modals/theme.rs` |
| Side-conversation renderer | `transcript_modal.rs` |

## Local contracts

- Keep layout deterministic for the supplied state and rectangle. Guard empty areas and use saturating coordinate/scroll arithmetic.
- `render_scroll_view_persistent_impl` copies scroll state locally. Do not write widget-adjusted offsets back into application state while drawing.
- The shared scroll renderer reserves its own gutter and disables native scrollbars so they cannot appear beneath the theme.
- Preserve windowed transcript projection. Card formatting belongs in `../transcript_cards/`; selection overlays belong in `../transcript_projection.rs`.
- Reuse shared display roles for Markdown, code, diffs, and activity rather than parsing the same content per pane.
- Modal geometry helpers also serve input hit testing. Update drawing and hit targets together, including tiny areas and list windows.
- `draw_top_modal` follows `state.top_modal()`; modal renderers show workflow state rather than applying workflow changes.
- Keep modal text bounded/redacted and help labels aligned with the input binding definitions.