Cached semantic sidebar content published by an extension.
Extensions update snapshots when their own state changes. Layout, TUI rendering, and GUI emit code read these values directly from the sidebar registry, so frame rendering never calls arbitrary extension callbacks.
Summary
Types
Semantic row rendered by generic sidebar surfaces.
Sidebar loading/error state.
Cached snapshot state.
Functions
Builds a snapshot and derives fingerprints when they are not provided.
Returns true when two snapshots differ only by selection/focus state.
Types
@type row() :: %{ optional(:id) => String.t(), optional(:text) => String.t(), optional(:icon) => String.t() | nil, optional(:indent) => non_neg_integer(), optional(:selected?) => boolean(), optional(:active?) => boolean(), optional(:badge) => String.t() | nil, optional(:git_status) => atom() | String.t() | nil, optional(:diagnostic_count) => non_neg_integer() }
Semantic row rendered by generic sidebar surfaces.
@type status() :: :ready | :loading | :error | :empty
Sidebar loading/error state.
@type t() :: %MingaEditor.Extension.Sidebar.Snapshot{ active_id: String.t() | nil, message: String.t() | nil, rows: [row()], selected_id: String.t() | nil, selection_fingerprint: non_neg_integer(), status: status(), structural_fingerprint: non_neg_integer() }
Cached snapshot state.