Complete long-lived state owned by MingaEditor.Renderer.Server.
Renderer caches, font registration, frontend acknowledgement state, resident
windows, observed buffer monitors, and coalesced frame credit live here. Public
transitions centralize lifecycle cleanup so window close, buffer replacement,
reset, and exact monitor :DOWN all discard the same state.
Summary
Functions
Retains immutable text presentations from one acknowledged frontend frame.
Prepares derived highlights from this attempt's immutable sources.
Installs presentation updates before any submission can be rejected or coalesced.
Reserves a fresh generation from the live frontend connection owner.
Resets frontend state after the transport connection itself was abandoned.
Returns the protected read capability owned by this renderer generation.
Applies an ordered frontend visibility lifecycle transition.
Types
@type frame_credit() :: :idle | {:scheduled, reference(), MingaEditor.Renderer.FrameAttempt.t(), non_neg_integer(), frame_successor() | nil} | {:awaiting_ack, MingaEditor.Renderer.AckLease.t(), frame_successor() | nil}
@type frame_successor() :: MingaEditor.Renderer.FrameAttempt.t()
@type generation_reserver() :: (-> pos_integer())
@type pipeline() :: (MingaEditor.RenderPipeline.Input.t() -> MingaEditor.RenderPipeline.Input.t())
@type t() :: %MingaEditor.Renderer.State{ ack_timeout_ms: pos_integer(), caches: MingaEditor.Renderer.Caches.t(), editor_pid: editor_ref(), font_registry: MingaEditor.UI.FontRegistry.t(), frame_credit: frame_credit(), generation_reserver: generation_reserver() | nil, highlight_cache: MingaEditor.Renderer.HighlightCache.t(), highlights: MingaEditor.Renderer.Submission.highlights(), message_store: MingaEditor.UI.Panel.MessageStore.t() | nil, observed_buffers: MingaEditor.Renderer.ObservedBuffers.t(), pipeline: pipeline(), rejection_state: MingaEditor.Renderer.RejectionState.t(), require_ack?: boolean(), resident_windows: %{ optional(MingaEditor.Window.id()) => MingaEditor.Renderer.ResidentWindowState.t() }, semantic_tokens: MingaEditor.Renderer.Submission.semantic_tokens(), text_presentations: MingaEditor.Renderer.TextPresentations.t() }
Functions
@spec accept_intent(t(), MingaEditor.RenderPipeline.Intent.t()) :: {:accepted, t()} | {:blocked, t()}
@spec acknowledge_text_presentations(t(), MingaEditor.RenderPipeline.Input.t()) :: t()
Retains immutable text presentations from one acknowledged frontend frame.
@spec advance_credit(t()) :: {:idle, t()} | {:schedule, t(), MingaEditor.Renderer.FrameAttempt.t()}
@spec await_ack(t(), MingaEditor.Renderer.AckLease.t()) :: t()
@spec awaiting_lease(t()) :: MingaEditor.Renderer.AckLease.t() | nil
@spec coalesce_frame(t(), MingaEditor.Renderer.FrameAttempt.t()) :: :idle | {:coalesced, t(), MingaEditor.Renderer.FrameAttempt.t() | nil}
@spec consume_adaptation(t(), MingaEditor.Renderer.AckLease.t()) :: {:ok, t(), MingaEditor.RenderPipeline.Intent.t()} | :error
@spec consume_render_token(t(), reference()) :: {:ok, t(), MingaEditor.Renderer.FrameAttempt.t(), non_neg_integer()} | :stale
@spec latest_successor(t(), MingaEditor.Renderer.FrameAttempt.t()) :: MingaEditor.Renderer.FrameAttempt.t()
@spec prepare_highlights(t(), MingaEditor.RenderPipeline.Intent.t()) :: {t(), MingaEditor.Renderer.HighlightCache.highlights()}
Prepares derived highlights from this attempt's immutable sources.
@spec receive_submission(t(), MingaEditor.Renderer.Submission.t()) :: {t(), MingaEditor.RenderPipeline.Intent.t()}
Installs presentation updates before any submission can be rejected or coalesced.
@spec reconcile_windows(t(), MingaEditor.RenderPipeline.Intent.t()) :: t()
@spec record_adaptation( t(), non_neg_integer(), non_neg_integer(), MingaEditor.Frontend.ResourcePolicy.adaptation_descriptor(), MingaEditor.RenderPipeline.Intent.t() ) :: {:ok, t()} | {:error, t()}
@spec reserve_recovery_generation(t()) :: pos_integer()
Reserves a fresh generation from the live frontend connection owner.
@spec reset_connection( t(), non_neg_integer(), MingaEditor.Renderer.ResidentWindowState.hydration_reason() ) :: t()
Resets frontend state after the transport connection itself was abandoned.
@spec reset_frontend( t(), non_neg_integer(), MingaEditor.Renderer.ResidentWindowState.hydration_reason() ) :: t()
@spec schedule_frame(t(), MingaEditor.Renderer.FrameAttempt.t(), reference()) :: t()
@spec terminal_failure(t()) :: MingaEditor.Renderer.RejectionState.terminal() | nil
@spec terminal_failure(t(), non_neg_integer(), atom()) :: t()
@spec text_interaction_reader(t()) :: MingaEditor.Renderer.TextInteractionIndex.Reader.t()
Returns the protected read capability owned by this renderer generation.
@spec text_presentation_state( t(), MingaEditor.Window.id(), non_neg_integer(), :active | :discarded ) :: {:ok, t()} | {:error, :unknown, t()}
Applies an ordered frontend visibility lifecycle transition.