TermUI.Dev.DevMode (TermUI v0.2.0)

View Source

Central coordinator for development mode features.

DevMode manages the lifecycle and state of all development tools:

  • UI Inspector - Shows component boundaries
  • State Inspector - Displays component state tree
  • Hot Reload - Updates code without restart
  • Performance Monitor - Shows FPS, memory, frame times

Usage

# Enable development mode
DevMode.enable()

# Toggle individual features
DevMode.toggle_ui_inspector()
DevMode.toggle_state_inspector()
DevMode.toggle_perf_monitor()

# Check status
DevMode.enabled?()
DevMode.ui_inspector_enabled?()

Keyboard Shortcuts (when enabled)

  • Ctrl+Shift+I: Toggle UI Inspector
  • Ctrl+Shift+S: Toggle State Inspector
  • Ctrl+Shift+P: Toggle Performance Monitor

Summary

Functions

Returns a specification to start this module under a supervisor.

Disables development mode.

Enables development mode.

Returns whether development mode is enabled.

Gets all registered components.

Gets current performance metrics.

Gets the currently selected component.

Gets the current state for rendering overlays.

Handles keyboard shortcut for development mode.

Returns whether performance monitor is enabled.

Records a frame for FPS calculation.

Records component render time.

Registers a component for inspection.

Renders development mode overlays.

Selects a component for detailed inspection.

Starts the DevMode server.

Returns whether state inspector is enabled.

Toggles hot reload.

Toggles performance monitor.

Toggles state inspector panel.

Toggles UI inspector overlay.

Returns whether UI inspector is enabled.

Unregisters a component.

Updates component state for inspection.

Types

bounds()

@type bounds() :: %{x: integer(), y: integer(), width: integer(), height: integer()}

component_info()

@type component_info() :: %{
  module: module(),
  state: term(),
  render_time: integer(),
  bounds: bounds()
}

metrics()

@type metrics() :: %{
  fps: float(),
  frame_times: [integer()],
  memory: integer(),
  process_count: integer()
}

state()

@type state() :: %{
  enabled: boolean(),
  ui_inspector: boolean(),
  state_inspector: boolean(),
  perf_monitor: boolean(),
  hot_reload: boolean(),
  selected_component: term() | nil,
  components: %{required(term()) => component_info()},
  metrics: metrics()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

disable()

@spec disable() :: :ok

Disables development mode.

enable()

@spec enable() :: :ok

Enables development mode.

enabled?()

@spec enabled?() :: boolean()

Returns whether development mode is enabled.

get_components()

@spec get_components() :: %{required(term()) => component_info()}

Gets all registered components.

get_metrics()

@spec get_metrics() :: metrics()

Gets current performance metrics.

get_selected_component()

@spec get_selected_component() :: term() | nil

Gets the currently selected component.

get_state()

@spec get_state() :: state()

Gets the current state for rendering overlays.

handle_shortcut(key, modifiers)

@spec handle_shortcut(atom(), [atom()]) :: :handled | :not_handled

Handles keyboard shortcut for development mode.

perf_monitor_enabled?()

@spec perf_monitor_enabled?() :: boolean()

Returns whether performance monitor is enabled.

record_frame(frame_time_us)

@spec record_frame(integer()) :: :ok

Records a frame for FPS calculation.

record_render_time(id, time_us)

@spec record_render_time(term(), integer()) :: :ok

Records component render time.

register_component(id, module, state, bounds)

@spec register_component(term(), module(), term(), bounds()) :: :ok

Registers a component for inspection.

render_overlays(state, area)

@spec render_overlays(state(), bounds()) :: term()

Renders development mode overlays.

Returns render nodes for UI inspector, state inspector, and performance monitor.

select_component(id)

@spec select_component(term()) :: :ok

Selects a component for detailed inspection.

start_link(opts \\ [])

Starts the DevMode server.

state_inspector_enabled?()

@spec state_inspector_enabled?() :: boolean()

Returns whether state inspector is enabled.

toggle_hot_reload()

@spec toggle_hot_reload() :: boolean()

Toggles hot reload.

toggle_perf_monitor()

@spec toggle_perf_monitor() :: boolean()

Toggles performance monitor.

toggle_state_inspector()

@spec toggle_state_inspector() :: boolean()

Toggles state inspector panel.

toggle_ui_inspector()

@spec toggle_ui_inspector() :: boolean()

Toggles UI inspector overlay.

ui_inspector_enabled?()

@spec ui_inspector_enabled?() :: boolean()

Returns whether UI inspector is enabled.

unregister_component(id)

@spec unregister_component(term()) :: :ok

Unregisters a component.

update_component_state(id, state)

@spec update_component_state(term(), term()) :: :ok

Updates component state for inspection.