# `MingaEditor.Renderer.Caches`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/renderer/caches.ex#L1)

Explicit render-pipeline cache state, replacing process-dictionary entries.

Each field corresponds to a former `Process.put/get` key used across the
render pipeline stages. The struct is carried on `EditorState` and on
`RenderPipeline.Input`, survives across frames, and is written back via
`EditorState.apply_render_output/2` after each pipeline run.

## Ownership by stage

- **Chrome** (`chrome_prev_*`): `RenderPipeline` — stage 5 fingerprint cache.
- **Content** (`search_decoration_cache`, `doc_highlight_cache`): consumed by
  `ContentHelpers.build_render_ctx/3`; cleared when the fingerprint changes.
  `block_render_cache` is a within-frame cache reset after each window render.
- **Emit** (`emit_prev_*`, `last_title`, `last_window_bg`):
  consumed by `Frontend.Emit` stage 7.
- **GUI chrome** (`last_gui_*`): fingerprint caches inside `Emit.GUI`.

# `t`

```elixir
@type t() :: %MingaEditor.Renderer.Caches{
  block_render_cache: %{required(term()) =&gt; term()},
  chrome_prev_fingerprint: integer() | nil,
  chrome_prev_result: term(),
  doc_highlight_cache: term(),
  emit_prev_buf_versions: %{required(term()) =&gt; non_neg_integer()},
  emit_prev_content_rects: %{required(term()) =&gt; term()},
  emit_prev_gutter_ws: %{required(term()) =&gt; non_neg_integer()},
  emit_prev_viewport_tops: %{required(term()) =&gt; non_neg_integer()},
  last_gui_agent_chat_fp: integer() | :not_visible | nil,
  last_gui_agent_context_fp: term(),
  last_gui_agent_groups_fp: integer() | nil,
  last_gui_board_fp: integer() | :dismissed | nil,
  last_gui_bottom_panel_fp: integer() | nil,
  last_gui_breadcrumb_fp: integer() | nil,
  last_gui_change_summary_fp: integer() | :hidden | nil,
  last_gui_completion_fp: integer() | nil,
  last_gui_file_tree_fp: integer() | :no_tree | nil,
  last_gui_float_popup_fp: integer() | nil,
  last_gui_git_status_fp: integer() | :no_git | nil,
  last_gui_hover_popup_fp: integer() | nil,
  last_gui_minibuffer: term(),
  last_gui_picker_fp: integer() | :closed | nil,
  last_gui_signature_help_fp: integer() | nil,
  last_gui_tab_bar_fp: integer() | nil,
  last_gui_theme: String.t() | nil,
  last_gui_which_key_fp: integer() | nil,
  last_title: String.t() | nil,
  last_window_bg: non_neg_integer() | nil,
  search_decoration_cache: term()
}
```

# `new`

```elixir
@spec new() :: t()
```

Creates a fresh Caches struct with first-frame defaults.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
