Piloter la frise au clavier, à la vim
Les flèches décalaient déjà une phase, mais rien ne permettait de la choisir :
`selection` n'était posée qu'au clic, si bien qu'il fallait la souris pour
commencer. Elle devient `curseur`, désigne une ligne — celle d'un projet en est
une, d'où l'on plie, renomme et ajoute — et survit à Échap, sans quoi elle ne
pourrait servir de point de départ au déplacement suivant. `dessiner` le
normalise, la ligne du projet servant de refuge quand la sienne disparaît.
Deux couches qui ne se recouvrent pas : les flèches modifient, les lettres
déplacent et commandent. Aucun raccourci documenté ne change de sens. Les
touches se taisent dès que le clavier est à quelqu'un d'autre — une saisie, un
dialogue, le menu, un glisser —, faute de quoi `a` dans un nom créerait une
phase. AltGr est toléré : sur un clavier français `{` et `}` n'existent qu'avec
lui, et Windows le présente comme Ctrl+Alt.
Les phases étant triées par date, `o` et `O` insèrent dans le temps et non dans
un rang. `P` reste hors de cette famille : un projet naît sans position.
Le curseur se peint dans la colonne des libellés, seul endroit qui porte une
ligne pour chaque position atteignable — projet plié, projet masqué, ligne de
projet. Et `?` ouvre la table des raccourcis, qui ne se devinent pas.
Décision 26.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
48
README.md
48
README.md
@@ -101,7 +101,7 @@ Une fois un projet en place :
|
||||
| Clic sur une barre ou son nom | Ouvre le panneau de détail |
|
||||
| Clic sur une autre barre, panneau ouvert | Bascule le panneau sur cette phase |
|
||||
| Clic sur un nom de phase hors écran | Ramène la frise sur elle |
|
||||
| `←` `→` | Décale d'un jour la phase sélectionnée |
|
||||
| `←` `→` | Décale d'un jour la phase du curseur |
|
||||
| `Maj` + `←` `→` | Allonge ou raccourcit d'un jour |
|
||||
| `Échap` | Annule le glisser en cours, ou ferme le panneau |
|
||||
| Clic dans une zone vide | Ferme le panneau ouvert |
|
||||
@@ -111,6 +111,49 @@ Une fois un projet en place :
|
||||
Faire défiler jusqu'au bord droit élargit la frise vers le futur, et jusqu'au bord gauche
|
||||
vers le passé. Le bouton **Aujourd'hui** ramène la vue sur la date du jour.
|
||||
|
||||
### Au clavier, à la vim
|
||||
|
||||
La frise a un **curseur** : la ligne sur laquelle portent les raccourcis. Il se pose en cliquant une
|
||||
barre ou un nom, ou à la première frappe de `j`, et il se voit à la ligne bleutée dans la colonne de
|
||||
gauche. Il tient aussi sur la ligne d'un **projet**, position d'où l'on plie, renomme et ajoute.
|
||||
|
||||
Le bouton **`?`** de la barre d'outils, ou la touche `?`, ouvre la liste complète. En résumé :
|
||||
|
||||
| Touche | Effet |
|
||||
|---|---|
|
||||
| `j` `k` | Ligne suivante, précédente — projets traversés |
|
||||
| `h` `l` | Phase précédente, suivante **du même projet**, sans déborder sur le voisin |
|
||||
| `{` `}` | Projet précédent, suivant |
|
||||
| `gg` `G` | Première, dernière ligne |
|
||||
| `Entrée` `e` | Ouvre le volet sur la ligne du curseur et saisit le nom |
|
||||
| `Espace` | Statut suivant : à venir, en cours, terminé, bloqué |
|
||||
| `A` `a` | Ajoute une phase à la fin, au début du projet |
|
||||
| `o` `O` | En ajoute une juste après, juste avant celle du curseur |
|
||||
| `P` | Ajoute un projet |
|
||||
| `dd` | Supprime la phase — ou le projet depuis sa ligne |
|
||||
| `za` | Plie ou déplie le projet |
|
||||
| `zR` `zM` | Déplie tout, plie tout |
|
||||
| `zz` | Recentre la frise sur le curseur |
|
||||
| `w` `b` | Un mois plus tard, plus tôt |
|
||||
| `W` `B` | Un an plus tard, plus tôt |
|
||||
| `ga` | Revient à aujourd'hui |
|
||||
| `gm` | Bascule entre la frise et la vue par mois |
|
||||
|
||||
Les phases étant rangées par date, `o` et `O` insèrent **dans le temps** et non dans une liste : la
|
||||
nouvelle phase se pose bord à bord avec sa voisine. `P`, lui, ne dépend pas du curseur : un projet
|
||||
naît hors de toute ligne, et la vue revient à la frise si on était dans la liste par mois.
|
||||
|
||||
Deux garde-fous. Ces touches **se taisent pendant une saisie** — dans un champ, une note, un
|
||||
dialogue ou le menu contextuel, elles écrivent la lettre qu'elles portent. Et `dd` demande toujours
|
||||
confirmation, comme le bouton **Supprimer**.
|
||||
|
||||
Le volet ouvert **suit le curseur** : `j` et `k` font alors défiler les phases une à une dans le
|
||||
panneau de détail, ce qui est le moyen le plus rapide de relire tout un projet. Pour cela, ouvrir le
|
||||
volet d'un **clic sur une barre** — `Entrée` et `e`, eux, placent la frappe dans le champ « Nom », où
|
||||
les raccourcis se taisent.
|
||||
|
||||
`Échap` referme le volet sans déplacer le curseur, et la frappe suivante repart de là.
|
||||
|
||||
### Les notes
|
||||
|
||||
Un projet **et** une phase portent chacun des notes, en bas de leur panneau. Elles y prennent toute
|
||||
@@ -278,10 +321,11 @@ données. Aucune dépendance de part ni d'autre, les lanceurs intégrés à Node
|
||||
| `build.sh` | Compile les binaires des cinq plateformes dans `dist/` |
|
||||
| `js/model.js` | Données et règles métier : CRUD, validation, bornes, référence, dérive, tags, regroupement par mois |
|
||||
| `js/storage.js` | Dialogue avec le serveur, sauvegarde debouncée, indicateur d'état |
|
||||
| `js/timeline.js` | Rendu de la frise : échelle, couloirs, barres, jalons, pli/dépli |
|
||||
| `js/timeline.js` | Rendu de la frise : échelle, couloirs, barres, jalons, pli/dépli, curseur |
|
||||
| `js/mois.js` | Rendu de la vue par mois : groupes, lignes, ancrage sur le mois courant |
|
||||
| `js/tags.js` | Pastilles de tags, partagées par les deux vues |
|
||||
| `js/drag.js` | Glisser et redimensionner les barres |
|
||||
| `js/clavier.js` | Table des raccourcis à la vim, préfixes `g` `z` `d`, garde-fou de saisie |
|
||||
| `js/markdown.js` | Analyse du markdown des notes, aplatissement pour les infobulles. Sans DOM, donc testable sous Node |
|
||||
| `js/notes.js` | Rendu du markdown en DOM et bloc de notes — aperçu, barre d'outils, saisie — partagé par les deux panneaux |
|
||||
| `js/detail.js` | Panneau de détail d'une phase |
|
||||
|
||||
Reference in New Issue
Block a user