# GreenAsh v0.1.0 - Table of Contents

> A keyboard-driven LiveView console to probe your Ash resources — zero UI code.

## Pages

- [GreenAsh](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [GreenAsh](GreenAsh.md): GreenAsh — une console de test « écran vert » (LiveView, 100 % clavier, style
AS400) générée par introspection depuis vos resources Ash, sans code d'UI.

- Core
  - [GreenAsh.Actor](GreenAsh.Actor.md): Gestion de l'« acteur » de la console : l'enregistrement Ash au nom duquel les
actions sont exécutées (pour éprouver les policies). Stocké en session HTTP
(une LiveView ne peut pas écrire la session via le socket : cf.
`GreenAsh.ActorController`) et rethreadé dans tous les appels Ash.

  - [GreenAsh.Command](GreenAsh.Command.md): Parseur + application de la ligne de commande `:` (façon Vim), partagé par
tous les écrans. Les chemins sont construits à partir de la base de montage
(`base`) fournie par l'hôte, et les resources résolues parmi `domains`.
  - [GreenAsh.Field](GreenAsh.Field.md): Introspection d'une action Ash -> specs de champs -> type de widget HTML.
  - [GreenAsh.Registry](GreenAsh.Registry.md): Découverte, au runtime, des resources / actions Ash à partir de la liste de
domaines fournie par l'hôte (via la macro de routeur), et résolution
module <-> slug / clé primaire pour les routes de la console.

- Web Integration
  - [GreenAsh.ActorController](GreenAsh.ActorController.md): Écrit/efface l'acteur de la console en session, puis redirige.
Sollicité par la commande `:actor` des LiveViews (qui ne peuvent pas écrire la
session via le socket).

  - [GreenAsh.Components](GreenAsh.Components.md): Composants d'UI auto-contenus de la console : la feuille de style « terminal
vert » plein écran, un `<.input>` générique (piloté par un champ de formulaire
AshPhoenix) et un `<.button>`. Aucune dépendance aux composants de l'hôte.

  - [GreenAsh.OnMount](GreenAsh.OnMount.md): `on_mount` posé par la macro de routeur : injecte dans chaque LiveView la liste
de domaines, la base de montage et l'acteur courant (résolu depuis la session).
  - [GreenAsh.Router](GreenAsh.Router.md): Intégration au routeur de l'hôte.
  - [GreenAsh.Web](GreenAsh.Web.md): Point d'entrée `use GreenAsh.Web, :live_view` pour les LiveViews de la console.
N'importe rien de l'application hôte : uniquement Phoenix.LiveView, les
composants de la lib et un helper de chemin relatif à la base de montage.

- LiveViews
  - [GreenAsh.Live.Menu](GreenAsh.Live.Menu.md): Menu principal, façon AS400 : plein écran, options numérotées, ligne de
commande `Option ===>` et navigation clavier. Deux niveaux découverts
automatiquement (resources -> actions). Une action `:create` ouvre l'écran de
saisie, `:read` une liste ; `:update`/`:destroy` renvoient vers une liste.

  - [GreenAsh.Live.Screen](GreenAsh.Live.Screen.md): Moteur générique : rend un écran de saisie exécutable pour UNE action Ash,
entièrement par introspection. La resource/action viennent de la route ; les
champs sont déduits par `GreenAsh.Field` et le formulaire par `AshPhoenix.Form`.
Un `:id` (token de PK) charge un enregistrement pour une action update.

  - [GreenAsh.Live.Subfile](GreenAsh.Live.Subfile.md): Subfile AS400 : liste des enregistrements d'une action `:read`, avec colonne
"Opt" par ligne (codes dérivés des actions : update/destroy/afficher), filtre
(arguments de la read action, côté requête), tri de colonne et pagination.
Toutes les lectures/suppressions passent l'acteur courant.

## Mix Tasks

- Mix Tasks
  - [mix green_ash.install](Mix.Tasks.GreenAsh.Install.md): Installs GreenAsh: mounts the console in your router

