# `MingaEditor.GitStatus.Panel`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/git_status/panel.ex#L1)

Editor-owned shell state for the Git status panel.

The Git porcelain extension owns the commands and rendering, but core shell state still needs a stable shape for GUI emission, dirty tracking, and disabled-extension fallbacks.

# `repo_state`

```elixir
@type repo_state() :: :normal | :not_a_repo | :loading
```

# `t`

```elixir
@type t() :: %MingaEditor.GitStatus.Panel{
  ahead: non_neg_integer(),
  behind: non_neg_integer(),
  branch: String.t() | nil,
  entries: [Minga.Git.StatusEntry.t()],
  entry_base_path: String.t() | nil,
  last_commit_message: String.t() | nil,
  repo_state: repo_state(),
  stash_count: non_neg_integer() | nil
}
```

# `new`

```elixir
@spec new(t() | map()) :: t()
```

Builds a panel from extension or core panel data.

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

Converts the stored panel to a plain map for wire encoders.

---

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