Repousser un projet en bloc, sauf ce dont on ne décide pas

Glisser la barre résumé décale toutes les phases du même nombre de jours,
écarts conservés : un projet engagé glisse souvent, et le faire phase par
phase les déformait. Restent en place ce qui est terminé — on ne réécrit
pas le passé — et les phases à date imposée, nouveau booléen `fixed` pour
ce qui est délégué ou tenu du dehors.

D'où le format en version 6 : sans l'incrément, un binaire antérieur
effacerait ces dates imposées à la première sauvegarde.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 18:07:31 +02:00
parent 55128fd0d4
commit 4a513f9a59
15 changed files with 788 additions and 74 deletions

View File

@@ -93,9 +93,9 @@ survol de la ligne, sur son bord droit :
déclarer terminé, écarter, figer la référence, supprimer. Un clic droit sur le libellé ouvre le
même menu.
Il n'y a pas de commande séparée pour créer un **jalon** : c'est une phase dont on coche la case
« Jalon » dans le panneau, ce qui ramène sa fin sur son début. La bascule joue dans les deux sens
à tout moment.
Il n'y a pas de commande séparée pour créer un **jalon** ni pour marquer une **date imposée** : ce
sont deux cases du panneau de la phase, indépendantes l'une de l'autre comme du statut. Cocher
« Jalon » ramène la fin sur le début. Les deux bascules jouent dans les deux sens à tout moment.
La colonne se **redimensionne** en glissant la ligne qui la sépare de la frise, en haut à
gauche : un double-clic revient à la largeur d'origine. Cette largeur est propre au navigateur,
@@ -106,14 +106,15 @@ Une fois un projet en place :
| Geste | Effet |
|---|---|
| Glisser le corps d'une barre | Décale la phase, durée conservée |
| Glisser la barre résumé d'un projet | Repousse le projet entier, écarts conservés |
| Glisser la barre pâle d'un envisagé | Décale son horizon, au mois |
| Glisser le bord d'une barre | Change la date de début ou de fin |
| Glisser le bord gauche du panneau | Change sa largeur (double-clic : d'origine) |
| 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 du curseur |
| `Maj` + `←` `→` | Allonge ou raccourcit d'un jour |
| `←` `→` | Décale d'un jour la phase du curseur — ou tout le projet, sur sa ligne |
| `Maj` + `←` `→` | Allonge ou raccourcit la phase d'un jour |
| `Échap` | Annule le glisser en cours, ou ferme le panneau |
| Clic dans une zone vide | Ferme le panneau ouvert |
| `Maj` + molette | Fait défiler la frise horizontalement |
@@ -122,6 +123,33 @@ 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.
### Repousser un projet en bloc
Un projet engagé glisse dans le temps — c'est même ce qui arrive le plus souvent. Plutôt que de
reprendre ses phases une à une, on **glisse sa barre résumé** : le même nombre de jours s'applique à
toutes, jalons compris, et les écarts entre elles sont conservés au jour près. Le projet est
repoussé, il n'est pas replanifié. Les flèches `←` `→` font la même chose au jour près, curseur posé
sur la ligne du projet.
**Ce qui est terminé ne bouge pas.** Les phases finies restent où elles sont : décaler un projet,
c'est reconnaître qu'il prendra plus de temps, pas réécrire ce qu'on a déjà vécu. Sur un projet à
moitié fait, la barre s'étire donc au lieu de se déplacer — son bord gauche tient et le reste s'en
va. Un projet dont tout est terminé n'offre aucune prise, et son infobulle le dit.
**Ce dont on ne décide pas non plus.** Une phase peut porter une **date imposée** : elle est
déléguée à quelqu'un d'autre, ou tenue par un contrat, un créneau, une échéance réglementaire. La
case se coche dans son panneau, sous « Jalon », et la barre reçoit alors deux petits taquets à ses
extrémités — un cercle pour un jalon. Repousser le projet ne la repousse pas : si tout le reste
glisse, c'est le créneau qu'on rate, et le chevauchement qui apparaît est justement ce qu'on voulait
voir. Elle reste glissable seule, elle : « imposée » veut dire *indépendante du projet*, pas
*immuable*.
À ne pas confondre avec le statut **bloqué**, son voisin dans le panneau : bloqué dit que ça
n'avance pas, date imposée que l'échéance ne vous appartient pas. Une phase peut être les deux.
Le **planning de référence ne suit pas** : repousser de trois semaines affiche aussitôt une dérive
de trois semaines. C'est voulu — le geste inscrit ce qu'il coûte.
### Le cycle de vie d'un projet
On a presque toujours plus de projets imaginables que de temps pour les mener, et l'enjeu n'est pas
@@ -315,7 +343,9 @@ pour les deux vues et n'est pas enregistré.
## Ce que fait l'outil
- **Plusieurs projets**, chacun décomposé en **phases** ayant un nom, des dates de début et de fin,
un statut, des notes. Une phase peut être un **jalon** (une date unique, rendue en losange).
un statut, des notes. Une phase peut être un **jalon** (une date unique, rendue en losange), et
porter une **date imposée** quand elle est déléguée ou tenue du dehors — le décalage du projet ne
l'emporte alors pas.
- **Un cycle de vie** — envisagé, engagé, terminé, écarté — dont deux états se déduisent des
données. Ce qu'on envisage sans pouvoir encore le mener vit sur la même frise que le reste, et
ne s'y perd pas.
@@ -325,8 +355,8 @@ pour les deux vues et n'est pas enregistré.
liens. Elles occupent toute la hauteur restante du panneau, et se cochent d'un clic dans l'aperçu.
- **Une frise commune**, les projets empilés en couloirs, pour les comparer d'un coup d'œil.
- **Une barre cumulative par projet**, segmentée en teintes selon le statut de chaque phase : la
forme d'ensemble, toujours visible sur la ligne du projet et toujours rendue pareil. Elle ne se
glisse pas.
forme d'ensemble, toujours visible sur la ligne du projet et toujours rendue pareil. Elle se
glisse pour repousser le projet entier.
- **Couloirs pliables** : déplié, chaque phase occupe sa ligne sous la barre cumulative ; plié, il
ne reste que celle-ci.
- **Manipulation directe** : glisser une barre pour la décaler, tirer ses bords pour changer sa
@@ -424,7 +454,7 @@ données. Aucune dépendance de part ni d'autre, les lanceurs intégrés à Node
| `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 de phase et de projet envisagé, 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 — au lundi pour une phase, au mois pour un horizon |
| `js/drag.js` | Glisser et redimensionner les barres — au lundi pour une phase ou un projet, au mois pour un horizon |
| `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 |