# `DalaDev.Tui.Devices`
[🔗](https://github.com/ohhi-vn/dala_dev/blob/main/lib/dala_dev/tui/devices.ex#L1)

Device discovery and status for the TUI.

Wraps `DalaDev.Discovery.Android` and `DalaDev.Discovery.IOS` to provide
a unified device list with rich status information including node
connectivity, distribution ports, and remote node metadata.

# `t`

```elixir
@type t() :: %DalaDev.Tui.Devices{
  device_struct: map() | nil,
  dist_port: pos_integer() | nil,
  error: String.t() | nil,
  host_ip: String.t() | nil,
  id: String.t(),
  name: String.t(),
  node: atom() | nil,
  platform: :android | :ios,
  serial: String.t() | nil,
  status: :discovered | :unauthorized | :tunneled | :connected | :error,
  type: :device | :emulator | :simulator | :physical,
  version: String.t() | nil
}
```

# `display_name`

```elixir
@spec display_name(t()) :: String.t()
```

Returns a short display name for a device.

# `from_device`

```elixir
@spec from_device(DalaDev.Device.t()) :: t()
```

Converts a `%DalaDev.Device{}` into a TUI device entry.

Public for testing.

# `list`

```elixir
@spec list() :: [t()]
```

Lists all discovered devices across Android and iOS.

Returns a list of `%DalaDev.Tui.Devices{}` structs with rich metadata.

# `list_android`

```elixir
@spec list_android() :: [t()]
```

Lists Android devices via ADB.

# `list_connected_nodes`

```elixir
@spec list_connected_nodes() :: [t()]
```

Lists nodes connected via Erlang distribution that aren't already
in the discovered device list.

# `list_ios`

```elixir
@spec list_ios() :: [t()]
```

Lists iOS devices and simulators.

# `node_name`

```elixir
@spec node_name(t()) :: atom() | nil
```

Gets the node name for a device using DalaDev.Device conventions.

# `platform_icon`

```elixir
@spec platform_icon(t()) :: String.t()
```

Returns the platform icon.

# `status_icon`

```elixir
@spec status_icon(t()) :: String.t()
```

Returns the status icon for a device.

# `status_label`

```elixir
@spec status_label(t()) :: String.t()
```

Returns a human-readable status label.

# `summary`

```elixir
@spec summary(t()) :: String.t()
```

Returns a one-line summary of the device.

---

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