bots-garden/mini-mepublic Fork
⑂ 53ad5d2
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

🛟 Updated.

k33g committed 2026-10-21T07:46:33+02:00 Browse files
53ad5d2 parent: f0565c3
modified .tickets/issues/0112-add-a-help-window-in-tui-mode-for-the-ui-shortcu.yaml +13 -1
@@ -12,4 +12,16 @@ labels:
1212 milestone: v0.9.0
1313 body: ""
1414 tasks: []
15-comments: []
15+comments:
16+ - id: 1
17+ author:
18+ name: k33g
19+ email: ph.charriere@gmail.com
20+ createdAt: 2026-10-21T12:00:00.000Z
21+ body: |
22+ Not implemented. A written guide of every window key now exists, read
23+ from internal/tui (events.go, question.go, picker.go, paste.go):
24+ guides/tui-keyboard-shortcuts.md (EN) and guides/raccourcis-clavier-tui.md
25+ (FR), grouped by situation. It can serve as the content of this help
26+ window; today F1 prints a one-line key summary
27+ (internal/tui/commands.go help()).
@@ -12,4 +12,16 @@ labels:
12 milestone: v0.9.012 milestone: v0.9.0
13 body: ""13 body: ""
14 tasks: []14 tasks: []
15-comments: []15+comments:
16+ - id: 1
17+ author:
18+ name: k33g
19+ email: ph.charriere@gmail.com
20+ createdAt: 2026-10-21T12:00:00.000Z
21+ body: |
22+ Not implemented. A written guide of every window key now exists, read
23+ from internal/tui (events.go, question.go, picker.go, paste.go):
24+ guides/tui-keyboard-shortcuts.md (EN) and guides/raccourcis-clavier-tui.md
25+ (FR), grouped by situation. It can serve as the content of this help
26+ window; today F1 prints a one-line key summary
27+ (internal/tui/commands.go help()).
modified README.md +3 -1
@@ -165,7 +165,9 @@ The `demos/` directory holds ready-made set-ups (most with a README explaining h
165165
166166 - [Documentation](docs/README.md) — tutorials, how-to guides, reference and explanations, in English and French.
167167 - [Release notes](release-notes/README.md) — what changed in each version, in English and French.
168-- [`guides/`](guides/) — practical guides; for now, the agent settings for small models, in [English](guides/agent-settings-for-small-models.md) and [French](guides/reglages-agents-petits-modeles.md): timeouts, `maxTurns`, `maxOutput`, `agentsMd.maxChars`, context compression, sampling — what each one does, its default, and how to set it for a small local model.
168+- [`guides/`](guides/) — practical guides:
169+ - the agent settings for small models, in [English](guides/agent-settings-for-small-models.md) and [French](guides/reglages-agents-petits-modeles.md): timeouts, `maxTurns`, `maxOutput`, `agentsMd.maxChars`, context compression, sampling — what each one does, its default, and how to set it for a small local model;
170+ - the keyboard shortcuts of the window (`mm -tui`), in [English](guides/tui-keyboard-shortcuts.md) and [French](guides/raccourcis-clavier-tui.md): typing, sending, stopping a turn, recalling questions, the pickers, pastes, permissions, the agent's questions, copy and mouse.
169171 - The `skills/` directory: Markdown procedures the agent can load with its `read_skill` tool.
170172 - `agent.lsp.yaml`: the same agent with a language server behind an `lsp` tool (definition, references, hover, symbols, diagnostics, rename) — see [Navigate and refactor code with a language server](docs/en/how-to/navigate-code-with-lsp.md).
171173 - `fetchContentTool: true` in `agent.dmr.yaml`: the built-in `fetch_content` tool, which fetches a web page as Markdown (honouring its `robots.txt`) and can save it to a file without showing it — see [Fetch a web page as Markdown](docs/en/how-to/fetch-a-web-page.md).
@@ -165,7 +165,9 @@ The `demos/` directory holds ready-made set-ups (most with a README explaining h
165 165
166 - [Documentation](docs/README.md) — tutorials, how-to guides, reference and explanations, in English and French.166 - [Documentation](docs/README.md) — tutorials, how-to guides, reference and explanations, in English and French.
167 - [Release notes](release-notes/README.md) — what changed in each version, in English and French.167 - [Release notes](release-notes/README.md) — what changed in each version, in English and French.
168-- [`guides/`](guides/) — practical guides; for now, the agent settings for small models, in [English](guides/agent-settings-for-small-models.md) and [French](guides/reglages-agents-petits-modeles.md): timeouts, `maxTurns`, `maxOutput`, `agentsMd.maxChars`, context compression, sampling — what each one does, its default, and how to set it for a small local model.168+- [`guides/`](guides/) — practical guides:
169+ - the agent settings for small models, in [English](guides/agent-settings-for-small-models.md) and [French](guides/reglages-agents-petits-modeles.md): timeouts, `maxTurns`, `maxOutput`, `agentsMd.maxChars`, context compression, sampling — what each one does, its default, and how to set it for a small local model;
170+ - the keyboard shortcuts of the window (`mm -tui`), in [English](guides/tui-keyboard-shortcuts.md) and [French](guides/raccourcis-clavier-tui.md): typing, sending, stopping a turn, recalling questions, the pickers, pastes, permissions, the agent's questions, copy and mouse.
169 - The `skills/` directory: Markdown procedures the agent can load with its `read_skill` tool.171 - The `skills/` directory: Markdown procedures the agent can load with its `read_skill` tool.
170 - `agent.lsp.yaml`: the same agent with a language server behind an `lsp` tool (definition, references, hover, symbols, diagnostics, rename) — see [Navigate and refactor code with a language server](docs/en/how-to/navigate-code-with-lsp.md).172 - `agent.lsp.yaml`: the same agent with a language server behind an `lsp` tool (definition, references, hover, symbols, diagnostics, rename) — see [Navigate and refactor code with a language server](docs/en/how-to/navigate-code-with-lsp.md).
171 - `fetchContentTool: true` in `agent.dmr.yaml`: the built-in `fetch_content` tool, which fetches a web page as Markdown (honouring its `robots.txt`) and can save it to a file without showing it — see [Fetch a web page as Markdown](docs/en/how-to/fetch-a-web-page.md).173 - `fetchContentTool: true` in `agent.dmr.yaml`: the built-in `fetch_content` tool, which fetches a web page as Markdown (honouring its `robots.txt`) and can save it to a file without showing it — see [Fetch a web page as Markdown](docs/en/how-to/fetch-a-web-page.md).
modified docs/en/how-to/use-the-window-mode.md +1 -0
@@ -85,5 +85,6 @@ A recalled question is the text mm stored: an `@path` question comes back with i
8585
8686 - [Command line](../reference/cli.md) — the `-tui` flag and the window-mode specifics
8787 - [Slash commands](../reference/slash-commands.md) — the keys of the window
88+- [Keyboard shortcuts of the window](../../../guides/tui-keyboard-shortcuts.md) — every key, grouped by what you are doing
8889 - [Configuration file](../reference/configuration.md) — `tui` and `permissions`
8990 - [Architecture: one loop, three front ends](../explanation/architecture.md) — why the window is a third front end on the same sink
@@ -85,5 +85,6 @@ A recalled question is the text mm stored: an `@path` question comes back with i
85 85
86 - [Command line](../reference/cli.md) — the `-tui` flag and the window-mode specifics86 - [Command line](../reference/cli.md) — the `-tui` flag and the window-mode specifics
87 - [Slash commands](../reference/slash-commands.md) — the keys of the window87 - [Slash commands](../reference/slash-commands.md) — the keys of the window
88+- [Keyboard shortcuts of the window](../../../guides/tui-keyboard-shortcuts.md) — every key, grouped by what you are doing
88 - [Configuration file](../reference/configuration.md) — `tui` and `permissions`89 - [Configuration file](../reference/configuration.md) — `tui` and `permissions`
89 - [Architecture: one loop, three front ends](../explanation/architecture.md) — why the window is a third front end on the same sink90 - [Architecture: one loop, three front ends](../explanation/architecture.md) — why the window is a third front end on the same sink
modified docs/fr/how-to/use-the-window-mode.md +1 -0
@@ -85,5 +85,6 @@ Une question rappelée est le texte que mm a enregistré : une question avec `@c
8585
8686 - [Ligne de commande](../reference/cli.md) — l'option `-tui` et les spécificités du mode fenêtre
8787 - [Commandes slash](../reference/slash-commands.md) — les touches de la fenêtre
88+- [Raccourcis clavier de la fenêtre](../../../guides/raccourcis-clavier-tui.md) — toutes les touches, regroupées selon ce que vous faites
8889 - [Fichier de configuration](../reference/configuration.md) — `tui` et `permissions`
8990 - [Architecture : une boucle, trois façades](../explanation/architecture.md) — pourquoi la fenêtre est une troisième façade sur le même puits
@@ -85,5 +85,6 @@ Une question rappelée est le texte que mm a enregistré : une question avec `@c
85 85
86 - [Ligne de commande](../reference/cli.md) — l'option `-tui` et les spécificités du mode fenêtre86 - [Ligne de commande](../reference/cli.md) — l'option `-tui` et les spécificités du mode fenêtre
87 - [Commandes slash](../reference/slash-commands.md) — les touches de la fenêtre87 - [Commandes slash](../reference/slash-commands.md) — les touches de la fenêtre
88+- [Raccourcis clavier de la fenêtre](../../../guides/raccourcis-clavier-tui.md) — toutes les touches, regroupées selon ce que vous faites
88 - [Fichier de configuration](../reference/configuration.md) — `tui` et `permissions`89 - [Fichier de configuration](../reference/configuration.md) — `tui` et `permissions`
89 - [Architecture : une boucle, trois façades](../explanation/architecture.md) — pourquoi la fenêtre est une troisième façade sur le même puits90 - [Architecture : une boucle, trois façades](../explanation/architecture.md) — pourquoi la fenêtre est une troisième façade sur le même puits
added guides/raccourcis-clavier-tui.md +105 -0
new file mode 100644
@@ -0,0 +1,105 @@
1+# Raccourcis clavier de la fenêtre (`mm -tui`)
2+
3+*[English version](tui-keyboard-shortcuts.md)*
4+
5+> Toutes les touches que la fenêtre (`mm -tui`) comprend, regroupées selon ce que vous êtes en train de faire. **F1** en affiche une version courte dans la fenêtre. La barre d'état en bas rappelle toujours `F1 help · Ctrl-Y copy · F2 mouse · Ctrl-C quit`.
6+
7+## La fenêtre en deux parties
8+
9+Deux endroits peuvent recevoir les touches : la **zone de saisie** en bas, où vous tapez, et la **conversation** au-dessus. **Tab** fait passer le focus de l'un à l'autre. Au démarrage, le focus est sur la zone de saisie. Quand il est sur la conversation, les lettres ne font rien : appuyez sur Tab pour écrire à nouveau.
10+
11+## Écrire et envoyer
12+
13+| Touche | Effet |
14+|---|---|
15+| `Entrée` | Envoie le contenu de la zone. Une zone vide n'envoie rien. |
16+| `Ctrl-J` ou `Alt-Entrée` | Un saut de ligne dans la zone, sans envoyer. Un terminal ne distingue pas `Maj-Entrée` de `Entrée` : il envoie. |
17+| `←` `→` | Déplacent le curseur ; en début ou en fin de ligne, passent à la ligne précédente ou suivante. |
18+| `↑` `↓` | Passent à la rangée du dessus ou du dessous dans la zone — une ligne longue se replie sur plusieurs rangées. Sur la première rangée, `↑` rappelle votre question précédente (voir plus bas). |
19+| `Début` `Fin` | Début ou fin de la ligne. |
20+| `Retour arrière` `Suppr` | Effacent le caractère avant ou sous le curseur. Un collage replié (`[Pasted #1 · …]`) s'efface d'un bloc. |
21+| `Échap` | Quand rien ne tourne : vide la zone. |
22+
23+## Pendant que l'agent travaille
24+
25+| Touche | Effet |
26+|---|---|
27+| `Échap` | Arrête la réponse en cours (comme `/abort`) et affiche `🛑 Aborting…`. Appuyé à nouveau quand le tour ne s'arrête pas, il vous indique d'utiliser Ctrl-C. |
28+| `Ctrl-C` | Arrête la réponse en cours. Si elle a déjà reçu l'ordre de s'arrêter et ne l'a pas fait, `Ctrl-C` ferme mm. |
29+| `Entrée` | Arrête la réponse en cours et envoie ce que vous avez tapé une fois qu'elle est arrêtée : vous pouvez changer d'avis sans attendre. |
30+
31+## Rappeler une question précédente
32+
33+Demande `sessions.enabled: true` dans le YAML de l'agent.
34+
35+| Touche | Effet |
36+|---|---|
37+| `↑` (première rangée de la zone) | Remet votre question précédente dans la zone ; encore une fois pour celle d'avant — cette session d'abord, puis les sessions précédentes du projet. |
38+| `↓` (dernière rangée de la zone) | Revient vers la question la plus récente ; au-delà, rend ce que vous étiez en train de taper. |
39+| `Échap` | Efface la question rappelée, pour taper autre chose. |
40+
41+Une question rappelée peut être modifiée avant d'être envoyée. Sans rien à rappeler, `↑` et `↓` font défiler la conversation.
42+
43+## Se déplacer dans la conversation
44+
45+| Touche | Effet |
46+|---|---|
47+| `PgUp` `PgDn` | Une page vers le haut ou le bas, où que soit le focus. |
48+| `↑` `↓` | Une ligne, quand le focus est sur la conversation (`Tab`). |
49+| `Début` `Fin` | Haut ou bas de la conversation, quand le focus est dessus. `Fin` suit aussi à nouveau la réponse pendant qu'elle s'écrit. |
50+| Molette | Trois lignes vers le haut ou le bas — seulement après `F2` (voir plus bas). |
51+| `Ctrl-L` | Efface la conversation affichée. Ce dont l'agent se souvient n'est pas touché : c'est `/new` qui le fait. |
52+
53+## Compléter une commande, un fichier ou un skill
54+
55+Taper `/` au début de la zone, ou `@` ou `$` n'importe où, ouvre une liste de choix au-dessus de la zone : commandes, fichiers et dossiers, skills.
56+
57+| Touche | Effet |
58+|---|---|
59+| `↑` `↓` | Se déplacent dans la liste. |
60+| `Tab` | Complète avec le choix en surbrillance. |
61+| `Entrée` | Envoie quand ce que vous avez tapé est déjà complet ; sinon complète, comme `Tab`. |
62+| `Échap` | Ferme la liste jusqu'à ce que vous tapiez autre chose. |
63+
64+## Coller un texte long
65+
66+Collez comme d'habitude avec votre terminal (`Cmd-V`, `Ctrl-Maj-V`, le clic droit…). Un collage n'envoie jamais rien, même s'il contient des sauts de ligne. Au-delà de 3 lignes ou de 200 caractères, il s'affiche comme un seul jeton, `[Pasted #1 · 42 lines · 1.2k chars]` ; l'agent reçoit le texte complet. `Retour arrière` ou `Suppr` retire le jeton, et le texte avec lui.
67+
68+## Répondre à une permission
69+
70+Avec `yolo: false` (ou un outil MCP marqué `ask`), la zone est remplacée par une question comme `? bash: rm -rf build`. Seules ces touches marchent jusqu'à votre réponse :
71+
72+| Touche | Réponse |
73+|---|---|
74+| `a` | Autoriser cet appel, une fois. |
75+| `s` | Autoriser cet outil pour le reste de la session. |
76+| `r` ou `Échap` | Refuser cet appel. |
77+| `n` | Ne jamais autoriser cet outil dans cette session. |
78+
79+## Répondre aux questions de l'agent
80+
81+Quand l'agent vous pose une question (son outil `ask_user`), un petit formulaire remplace la zone. La ligne sous la question rappelle les touches.
82+
83+| Type de question | Touches |
84+|---|---|
85+| Un choix | `↑` `↓` (ou `Tab`) pour se déplacer, `Entrée` pour choisir — ou `1` à `9` pour choisir directement. |
86+| Plusieurs choix | `↑` `↓` pour se déplacer, `Espace` pour cocher ou décocher, `Entrée` pour envoyer (au moins un coché). |
87+| Oui ou non | `y` (ou `o`) oui, `n` non — ou `←` `→` puis `Entrée`. |
88+| Texte libre | Tapez, `Retour arrière` pour corriger, `Entrée` pour envoyer. |
89+| Toutes | `Échap` refuse de répondre. |
90+
91+## Copier, souris, aide, quitter
92+
93+| Touche | Effet |
94+|---|---|
95+| `Ctrl-Y` | Copie la dernière réponse dans le presse-papiers, en texte brut (comme `/copy` ; `/copy 2` celle d'avant, `/copy all` toute la conversation). |
96+| `F2` | Active ou désactive la capture de la souris. **Désactivée** (par défaut) : sélectionnez le texte à la souris comme dans n'importe quel terminal. **Activée** : la molette fait défiler la conversation, et `Maj`+glisser sélectionne. La barre d'état indique l'état. |
97+| `F1` | Les commandes et les principales touches, dans la conversation (comme `/help`). |
98+| `Ctrl-C` | Ferme mm quand rien ne tourne. `/quit` fait de même. |
99+
100+## Bon à savoir
101+
102+- **Les touches dépendent du terminal.** `Alt-Entrée`, `Début`, `Fin` et les touches de fonction dépendent de la façon dont le terminal les transmet ; sur un portable Mac, il faut souvent `Fn` pour `F1`, `F2`, `Début` et `Fin`. `Ctrl-J` marche toujours pour un saut de ligne.
103+- **La fenêtre a besoin d'un vrai terminal.** `mm -tui | tee log.txt`, ou toute exécution où l'entrée ou la sortie n'est pas un terminal, revient au mode ligne, où aucune de ces touches ne s'applique.
104+
105+Voir aussi : [Utiliser le mode fenêtre](../docs/fr/how-to/use-the-window-mode.md), [Commandes et touches (référence)](../docs/fr/reference/slash-commands.md).
new file mode 100644
@@ -0,0 +1,105 @@
1+# Raccourcis clavier de la fenêtre (`mm -tui`)
2+
3+*[English version](tui-keyboard-shortcuts.md)*
4+
5+> Toutes les touches que la fenêtre (`mm -tui`) comprend, regroupées selon ce que vous êtes en train de faire. **F1** en affiche une version courte dans la fenêtre. La barre d'état en bas rappelle toujours `F1 help · Ctrl-Y copy · F2 mouse · Ctrl-C quit`.
6+
7+## La fenêtre en deux parties
8+
9+Deux endroits peuvent recevoir les touches : la **zone de saisie** en bas, où vous tapez, et la **conversation** au-dessus. **Tab** fait passer le focus de l'un à l'autre. Au démarrage, le focus est sur la zone de saisie. Quand il est sur la conversation, les lettres ne font rien : appuyez sur Tab pour écrire à nouveau.
10+
11+## Écrire et envoyer
12+
13+| Touche | Effet |
14+|---|---|
15+| `Entrée` | Envoie le contenu de la zone. Une zone vide n'envoie rien. |
16+| `Ctrl-J` ou `Alt-Entrée` | Un saut de ligne dans la zone, sans envoyer. Un terminal ne distingue pas `Maj-Entrée` de `Entrée` : il envoie. |
17+| `←` `→` | Déplacent le curseur ; en début ou en fin de ligne, passent à la ligne précédente ou suivante. |
18+| `↑` `↓` | Passent à la rangée du dessus ou du dessous dans la zone — une ligne longue se replie sur plusieurs rangées. Sur la première rangée, `↑` rappelle votre question précédente (voir plus bas). |
19+| `Début` `Fin` | Début ou fin de la ligne. |
20+| `Retour arrière` `Suppr` | Effacent le caractère avant ou sous le curseur. Un collage replié (`[Pasted #1 · …]`) s'efface d'un bloc. |
21+| `Échap` | Quand rien ne tourne : vide la zone. |
22+
23+## Pendant que l'agent travaille
24+
25+| Touche | Effet |
26+|---|---|
27+| `Échap` | Arrête la réponse en cours (comme `/abort`) et affiche `🛑 Aborting…`. Appuyé à nouveau quand le tour ne s'arrête pas, il vous indique d'utiliser Ctrl-C. |
28+| `Ctrl-C` | Arrête la réponse en cours. Si elle a déjà reçu l'ordre de s'arrêter et ne l'a pas fait, `Ctrl-C` ferme mm. |
29+| `Entrée` | Arrête la réponse en cours et envoie ce que vous avez tapé une fois qu'elle est arrêtée : vous pouvez changer d'avis sans attendre. |
30+
31+## Rappeler une question précédente
32+
33+Demande `sessions.enabled: true` dans le YAML de l'agent.
34+
35+| Touche | Effet |
36+|---|---|
37+| `↑` (première rangée de la zone) | Remet votre question précédente dans la zone ; encore une fois pour celle d'avant — cette session d'abord, puis les sessions précédentes du projet. |
38+| `↓` (dernière rangée de la zone) | Revient vers la question la plus récente ; au-delà, rend ce que vous étiez en train de taper. |
39+| `Échap` | Efface la question rappelée, pour taper autre chose. |
40+
41+Une question rappelée peut être modifiée avant d'être envoyée. Sans rien à rappeler, `↑` et `↓` font défiler la conversation.
42+
43+## Se déplacer dans la conversation
44+
45+| Touche | Effet |
46+|---|---|
47+| `PgUp` `PgDn` | Une page vers le haut ou le bas, où que soit le focus. |
48+| `↑` `↓` | Une ligne, quand le focus est sur la conversation (`Tab`). |
49+| `Début` `Fin` | Haut ou bas de la conversation, quand le focus est dessus. `Fin` suit aussi à nouveau la réponse pendant qu'elle s'écrit. |
50+| Molette | Trois lignes vers le haut ou le bas — seulement après `F2` (voir plus bas). |
51+| `Ctrl-L` | Efface la conversation affichée. Ce dont l'agent se souvient n'est pas touché : c'est `/new` qui le fait. |
52+
53+## Compléter une commande, un fichier ou un skill
54+
55+Taper `/` au début de la zone, ou `@` ou `$` n'importe où, ouvre une liste de choix au-dessus de la zone : commandes, fichiers et dossiers, skills.
56+
57+| Touche | Effet |
58+|---|---|
59+| `↑` `↓` | Se déplacent dans la liste. |
60+| `Tab` | Complète avec le choix en surbrillance. |
61+| `Entrée` | Envoie quand ce que vous avez tapé est déjà complet ; sinon complète, comme `Tab`. |
62+| `Échap` | Ferme la liste jusqu'à ce que vous tapiez autre chose. |
63+
64+## Coller un texte long
65+
66+Collez comme d'habitude avec votre terminal (`Cmd-V`, `Ctrl-Maj-V`, le clic droit…). Un collage n'envoie jamais rien, même s'il contient des sauts de ligne. Au-delà de 3 lignes ou de 200 caractères, il s'affiche comme un seul jeton, `[Pasted #1 · 42 lines · 1.2k chars]` ; l'agent reçoit le texte complet. `Retour arrière` ou `Suppr` retire le jeton, et le texte avec lui.
67+
68+## Répondre à une permission
69+
70+Avec `yolo: false` (ou un outil MCP marqué `ask`), la zone est remplacée par une question comme `? bash: rm -rf build`. Seules ces touches marchent jusqu'à votre réponse :
71+
72+| Touche | Réponse |
73+|---|---|
74+| `a` | Autoriser cet appel, une fois. |
75+| `s` | Autoriser cet outil pour le reste de la session. |
76+| `r` ou `Échap` | Refuser cet appel. |
77+| `n` | Ne jamais autoriser cet outil dans cette session. |
78+
79+## Répondre aux questions de l'agent
80+
81+Quand l'agent vous pose une question (son outil `ask_user`), un petit formulaire remplace la zone. La ligne sous la question rappelle les touches.
82+
83+| Type de question | Touches |
84+|---|---|
85+| Un choix | `↑` `↓` (ou `Tab`) pour se déplacer, `Entrée` pour choisir — ou `1` à `9` pour choisir directement. |
86+| Plusieurs choix | `↑` `↓` pour se déplacer, `Espace` pour cocher ou décocher, `Entrée` pour envoyer (au moins un coché). |
87+| Oui ou non | `y` (ou `o`) oui, `n` non — ou `←` `→` puis `Entrée`. |
88+| Texte libre | Tapez, `Retour arrière` pour corriger, `Entrée` pour envoyer. |
89+| Toutes | `Échap` refuse de répondre. |
90+
91+## Copier, souris, aide, quitter
92+
93+| Touche | Effet |
94+|---|---|
95+| `Ctrl-Y` | Copie la dernière réponse dans le presse-papiers, en texte brut (comme `/copy` ; `/copy 2` celle d'avant, `/copy all` toute la conversation). |
96+| `F2` | Active ou désactive la capture de la souris. **Désactivée** (par défaut) : sélectionnez le texte à la souris comme dans n'importe quel terminal. **Activée** : la molette fait défiler la conversation, et `Maj`+glisser sélectionne. La barre d'état indique l'état. |
97+| `F1` | Les commandes et les principales touches, dans la conversation (comme `/help`). |
98+| `Ctrl-C` | Ferme mm quand rien ne tourne. `/quit` fait de même. |
99+
100+## Bon à savoir
101+
102+- **Les touches dépendent du terminal.** `Alt-Entrée`, `Début`, `Fin` et les touches de fonction dépendent de la façon dont le terminal les transmet ; sur un portable Mac, il faut souvent `Fn` pour `F1`, `F2`, `Début` et `Fin`. `Ctrl-J` marche toujours pour un saut de ligne.
103+- **La fenêtre a besoin d'un vrai terminal.** `mm -tui | tee log.txt`, ou toute exécution où l'entrée ou la sortie n'est pas un terminal, revient au mode ligne, où aucune de ces touches ne s'applique.
104+
105+Voir aussi : [Utiliser le mode fenêtre](../docs/fr/how-to/use-the-window-mode.md), [Commandes et touches (référence)](../docs/fr/reference/slash-commands.md).
added guides/tui-keyboard-shortcuts.md +105 -0
new file mode 100644
@@ -0,0 +1,105 @@
1+# Keyboard shortcuts of the window (`mm -tui`)
2+
3+*[Version française](raccourcis-clavier-tui.md)*
4+
5+> Every key the window (`mm -tui`) understands, grouped by what you are doing. **F1** shows a short version inside the window. The status bar at the bottom always shows `F1 help · Ctrl-Y copy · F2 mouse · Ctrl-C quit`.
6+
7+## The window in two parts
8+
9+The window has two places that can take the keys: the **box** at the bottom, where you type, and the **conversation** above it. **Tab** moves the focus from one to the other. At start-up the focus is on the box. While the focus is on the conversation, letters do nothing: press Tab to type again.
10+
11+## Type and send
12+
13+| Key | What it does |
14+|---|---|
15+| `Enter` | Sends what is in the box. An empty box sends nothing. |
16+| `Ctrl-J` or `Alt-Enter` | A new line in the box, without sending. `Shift-Enter` cannot be told apart from `Enter` by a terminal, so it sends. |
17+| `←` `→` | Move the cursor; at the start or end of a line, go to the previous or next line. |
18+| `↑` `↓` | Move to the row above or below in the box — a long line wraps over several rows. On the first row, `↑` recalls your previous question (see below). |
19+| `Home` `End` | Start or end of the line. |
20+| `Backspace` `Delete` | Delete the character before or under the cursor. A collapsed paste (`[Pasted #1 · …]`) is deleted whole. |
21+| `Esc` | When nothing is running: clears the box. |
22+
23+## While the agent is working
24+
25+| Key | What it does |
26+|---|---|
27+| `Esc` | Stops the answer in progress (same as `/abort`) and says `🛑 Aborting…`. Pressed again when the turn does not stop, it tells you to use Ctrl-C. |
28+| `Ctrl-C` | Stops the answer in progress. If it has already been asked to stop and has not, `Ctrl-C` closes mm. |
29+| `Enter` | Stops the answer in progress and sends what you typed once it has stopped: you can change your mind without waiting. |
30+
31+## Recall an earlier question
32+
33+Needs `sessions.enabled: true` in the agent's YAML.
34+
35+| Key | What it does |
36+|---|---|
37+| `↑` (first row of the box) | Puts your previous question in the box; again for the one before — this session first, then the project's earlier sessions. |
38+| `↓` (last row of the box) | Goes back towards the newest question; past it, gives back what you were typing. |
39+| `Esc` | Clears the recalled question, to type something else. |
40+
41+A recalled question can be edited before you send it. With nothing to recall, `↑` and `↓` scroll the conversation instead.
42+
43+## Move through the conversation
44+
45+| Key | What it does |
46+|---|---|
47+| `PgUp` `PgDn` | One page up or down, wherever the focus is. |
48+| `↑` `↓` | One line, when the focus is on the conversation (`Tab`). |
49+| `Home` `End` | Top or bottom of the conversation, when the focus is on it. `End` also follows the answer again as it is written. |
50+| Mouse wheel | Three lines up or down — only after `F2` (see below). |
51+| `Ctrl-L` | Clears the displayed conversation. What the agent remembers is not touched: `/new` does that. |
52+
53+## Complete a command, a file or a skill
54+
55+Typing `/` at the start of the box, `@` or `$` anywhere opens a list of choices above the box: commands, files and folders, skills.
56+
57+| Key | What it does |
58+|---|---|
59+| `↑` `↓` | Move in the list. |
60+| `Tab` | Completes with the highlighted choice. |
61+| `Enter` | Sends when what you typed is already complete; otherwise completes, like `Tab`. |
62+| `Esc` | Closes the list until you type something else. |
63+
64+## Paste long text
65+
66+Paste as usual with your terminal (`Cmd-V`, `Ctrl-Shift-V`, the right click…). A paste never sends anything, even when it holds line breaks. Longer than 3 lines or 200 characters, it shows as one token, `[Pasted #1 · 42 lines · 1.2k chars]`; the agent receives the whole text. `Backspace` or `Delete` removes the token, and the text with it.
67+
68+## Answer a permission
69+
70+With `yolo: false` (or an MCP tool marked `ask`), the box is replaced by a question such as `? bash: rm -rf build`. Only these keys work until you answer:
71+
72+| Key | Answer |
73+|---|---|
74+| `a` | Allow this call, once. |
75+| `s` | Allow this tool for the rest of the session. |
76+| `r` or `Esc` | Refuse this call. |
77+| `n` | Never allow this tool in this session. |
78+
79+## Answer the agent's questions
80+
81+When the agent asks you something (its `ask_user` tool), a small form replaces the box. The line under the question reminds you of the keys.
82+
83+| Kind of question | Keys |
84+|---|---|
85+| Pick one | `↑` `↓` (or `Tab`) to move, `Enter` to choose — or `1` to `9` to choose directly. |
86+| Pick several | `↑` `↓` to move, `Space` to tick or untick, `Enter` to send (at least one ticked). |
87+| Yes or no | `y` (or `o`) yes, `n` no — or `←` `→` then `Enter`. |
88+| Free text | Type, `Backspace` to correct, `Enter` to send. |
89+| Any | `Esc` declines to answer. |
90+
91+## Copy, mouse, help, quit
92+
93+| Key | What it does |
94+|---|---|
95+| `Ctrl-Y` | Copies the last answer to the clipboard, as plain text (same as `/copy`; `/copy 2` the one before, `/copy all` the whole conversation). |
96+| `F2` | Turns mouse capture on or off. **Off** (the default): select text with the mouse as in any terminal. **On**: the wheel scrolls the conversation, and `Shift`+drag selects. The status bar says which. |
97+| `F1` | The commands and the main keys, in the conversation (same as `/help`). |
98+| `Ctrl-C` | Closes mm when nothing is running. `/quit` does the same. |
99+
100+## Good to know
101+
102+- **Keys depend on the terminal.** `Alt-Enter`, `Home`, `End` and the function keys depend on how the terminal reports them; on a Mac laptop, `Fn` is often needed for `F1`, `F2`, `Home` and `End`. `Ctrl-J` always works for a new line.
103+- **The window needs a real terminal.** `mm -tui | tee log.txt`, or any run where the input or the output is not a terminal, falls back to the line mode, where none of these keys apply.
104+
105+See also: [How to use the window mode](../docs/en/how-to/use-the-window-mode.md), [Slash commands and keys (reference)](../docs/en/reference/slash-commands.md).
new file mode 100644
@@ -0,0 +1,105 @@
1+# Keyboard shortcuts of the window (`mm -tui`)
2+
3+*[Version française](raccourcis-clavier-tui.md)*
4+
5+> Every key the window (`mm -tui`) understands, grouped by what you are doing. **F1** shows a short version inside the window. The status bar at the bottom always shows `F1 help · Ctrl-Y copy · F2 mouse · Ctrl-C quit`.
6+
7+## The window in two parts
8+
9+The window has two places that can take the keys: the **box** at the bottom, where you type, and the **conversation** above it. **Tab** moves the focus from one to the other. At start-up the focus is on the box. While the focus is on the conversation, letters do nothing: press Tab to type again.
10+
11+## Type and send
12+
13+| Key | What it does |
14+|---|---|
15+| `Enter` | Sends what is in the box. An empty box sends nothing. |
16+| `Ctrl-J` or `Alt-Enter` | A new line in the box, without sending. `Shift-Enter` cannot be told apart from `Enter` by a terminal, so it sends. |
17+| `←` `→` | Move the cursor; at the start or end of a line, go to the previous or next line. |
18+| `↑` `↓` | Move to the row above or below in the box — a long line wraps over several rows. On the first row, `↑` recalls your previous question (see below). |
19+| `Home` `End` | Start or end of the line. |
20+| `Backspace` `Delete` | Delete the character before or under the cursor. A collapsed paste (`[Pasted #1 · …]`) is deleted whole. |
21+| `Esc` | When nothing is running: clears the box. |
22+
23+## While the agent is working
24+
25+| Key | What it does |
26+|---|---|
27+| `Esc` | Stops the answer in progress (same as `/abort`) and says `🛑 Aborting…`. Pressed again when the turn does not stop, it tells you to use Ctrl-C. |
28+| `Ctrl-C` | Stops the answer in progress. If it has already been asked to stop and has not, `Ctrl-C` closes mm. |
29+| `Enter` | Stops the answer in progress and sends what you typed once it has stopped: you can change your mind without waiting. |
30+
31+## Recall an earlier question
32+
33+Needs `sessions.enabled: true` in the agent's YAML.
34+
35+| Key | What it does |
36+|---|---|
37+| `↑` (first row of the box) | Puts your previous question in the box; again for the one before — this session first, then the project's earlier sessions. |
38+| `↓` (last row of the box) | Goes back towards the newest question; past it, gives back what you were typing. |
39+| `Esc` | Clears the recalled question, to type something else. |
40+
41+A recalled question can be edited before you send it. With nothing to recall, `↑` and `↓` scroll the conversation instead.
42+
43+## Move through the conversation
44+
45+| Key | What it does |
46+|---|---|
47+| `PgUp` `PgDn` | One page up or down, wherever the focus is. |
48+| `↑` `↓` | One line, when the focus is on the conversation (`Tab`). |
49+| `Home` `End` | Top or bottom of the conversation, when the focus is on it. `End` also follows the answer again as it is written. |
50+| Mouse wheel | Three lines up or down — only after `F2` (see below). |
51+| `Ctrl-L` | Clears the displayed conversation. What the agent remembers is not touched: `/new` does that. |
52+
53+## Complete a command, a file or a skill
54+
55+Typing `/` at the start of the box, `@` or `$` anywhere opens a list of choices above the box: commands, files and folders, skills.
56+
57+| Key | What it does |
58+|---|---|
59+| `↑` `↓` | Move in the list. |
60+| `Tab` | Completes with the highlighted choice. |
61+| `Enter` | Sends when what you typed is already complete; otherwise completes, like `Tab`. |
62+| `Esc` | Closes the list until you type something else. |
63+
64+## Paste long text
65+
66+Paste as usual with your terminal (`Cmd-V`, `Ctrl-Shift-V`, the right click…). A paste never sends anything, even when it holds line breaks. Longer than 3 lines or 200 characters, it shows as one token, `[Pasted #1 · 42 lines · 1.2k chars]`; the agent receives the whole text. `Backspace` or `Delete` removes the token, and the text with it.
67+
68+## Answer a permission
69+
70+With `yolo: false` (or an MCP tool marked `ask`), the box is replaced by a question such as `? bash: rm -rf build`. Only these keys work until you answer:
71+
72+| Key | Answer |
73+|---|---|
74+| `a` | Allow this call, once. |
75+| `s` | Allow this tool for the rest of the session. |
76+| `r` or `Esc` | Refuse this call. |
77+| `n` | Never allow this tool in this session. |
78+
79+## Answer the agent's questions
80+
81+When the agent asks you something (its `ask_user` tool), a small form replaces the box. The line under the question reminds you of the keys.
82+
83+| Kind of question | Keys |
84+|---|---|
85+| Pick one | `↑` `↓` (or `Tab`) to move, `Enter` to choose — or `1` to `9` to choose directly. |
86+| Pick several | `↑` `↓` to move, `Space` to tick or untick, `Enter` to send (at least one ticked). |
87+| Yes or no | `y` (or `o`) yes, `n` no — or `←` `→` then `Enter`. |
88+| Free text | Type, `Backspace` to correct, `Enter` to send. |
89+| Any | `Esc` declines to answer. |
90+
91+## Copy, mouse, help, quit
92+
93+| Key | What it does |
94+|---|---|
95+| `Ctrl-Y` | Copies the last answer to the clipboard, as plain text (same as `/copy`; `/copy 2` the one before, `/copy all` the whole conversation). |
96+| `F2` | Turns mouse capture on or off. **Off** (the default): select text with the mouse as in any terminal. **On**: the wheel scrolls the conversation, and `Shift`+drag selects. The status bar says which. |
97+| `F1` | The commands and the main keys, in the conversation (same as `/help`). |
98+| `Ctrl-C` | Closes mm when nothing is running. `/quit` does the same. |
99+
100+## Good to know
101+
102+- **Keys depend on the terminal.** `Alt-Enter`, `Home`, `End` and the function keys depend on how the terminal reports them; on a Mac laptop, `Fn` is often needed for `F1`, `F2`, `Home` and `End`. `Ctrl-J` always works for a new line.
103+- **The window needs a real terminal.** `mm -tui | tee log.txt`, or any run where the input or the output is not a terminal, falls back to the line mode, where none of these keys apply.
104+
105+See also: [How to use the window mode](../docs/en/how-to/use-the-window-mode.md), [Slash commands and keys (reference)](../docs/en/reference/slash-commands.md).