MingaEditor.Frontend.Capabilities (Minga v0.1.0)

Copy Markdown View Source

Frontend capabilities reported during the ready handshake.

When a frontend starts, it sends a ready event with optional capability fields. The BEAM uses these to adapt rendering strategy: skipping image commands on terminals without image support, using native floating windows on GUIs, using native floating windows, etc.

Summary

Functions

Returns the default capabilities (TUI with full RGB, monospace).

Decodes capability fields, including the capability-format-2 resource-policy tail.

Decodes capability fields under the explicitly reported capability format version.

Returns true if the frontend is a native GUI (not a terminal).

Returns true if the frontend can consume semantic render-model protocol commands.

Returns the safe production width oracle, monospace for now.

Types

color_depth()

@type color_depth() :: :mono | :color_256 | :rgb

float_support()

@type float_support() :: :emulated | :native

frontend_type()

@type frontend_type() :: :tui | :native_gui | :web

image_support()

@type image_support() :: :none | :kitty | :sixel | :native

t()

@type t() :: %MingaEditor.Frontend.Capabilities{
  color_depth: color_depth(),
  float_support: float_support(),
  frontend_type: frontend_type(),
  image_support: image_support(),
  resource_policy: MingaEditor.Frontend.ResourcePolicy.t(),
  semantic_ui: boolean(),
  text_rendering: text_rendering(),
  unicode_width: unicode_width()
}

text_rendering()

@type text_rendering() :: :monospace | :proportional

unicode_width()

@type unicode_width() :: :wcwidth | :unicode_15

Functions

default()

@spec default() :: t()

Returns the default capabilities (TUI with full RGB, monospace).

from_binary(data)

@spec from_binary(binary()) :: t()

Decodes capability fields, including the capability-format-2 resource-policy tail.

from_binary(arg1, version)

@spec from_binary(binary(), non_neg_integer()) :: t()

Decodes capability fields under the explicitly reported capability format version.

gui?(capabilities)

@spec gui?(t()) :: boolean()

Returns true if the frontend is a native GUI (not a terminal).

semantic_ui?(capabilities)

@spec semantic_ui?(t()) :: boolean()

Returns true if the frontend can consume semantic render-model protocol commands.

width_oracle(capabilities)

@spec width_oracle(t()) :: Minga.Core.WidthOracle.t()

Returns the safe production width oracle, monospace for now.