🛟 Updated.
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: | ||
| 12 | 12 | milestone: v0.9.0 |
| 13 | 13 | body: "" |
| 14 | 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()). | |
| @@ -12,4 +12,16 @@ labels: | |||
| 12 | milestone: v0.9.0 | 12 | 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 | ||
| 165 | 165 | |
| 166 | 166 | - [Documentation](docs/README.md) — tutorials, how-to guides, reference and explanations, in English and French. |
| 167 | 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 | 171 | - The `skills/` directory: Markdown procedures the agent can load with its `read_skill` tool. |
| 170 | 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 | 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). |
| @@ -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 | ||
| 85 | 85 | |
| 86 | 86 | - [Command line](../reference/cli.md) — the `-tui` flag and the window-mode specifics |
| 87 | 87 | - [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 | 89 | - [Configuration file](../reference/configuration.md) — `tui` and `permissions` |
| 89 | 90 | - [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 specifics | 86 | - [Command line](../reference/cli.md) — the `-tui` flag and the window-mode specifics |
| 87 | - [Slash commands](../reference/slash-commands.md) — the keys of the window | 87 | - [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 sink | 90 | - [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 | ||
| 85 | 85 | |
| 86 | 86 | - [Ligne de commande](../reference/cli.md) — l'option `-tui` et les spécificités du mode fenêtre |
| 87 | 87 | - [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 | 89 | - [Fichier de configuration](../reference/configuration.md) — `tui` et `permissions` |
| 89 | 90 | - [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être | 86 | - [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être | 87 | - [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 puits | 90 | - [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). | ||