Expand roadmap candidates with a batch of UI/UX proposals
Organized §3 into subsections (quick wins, repo interface, search, personalization, federation, collaboration, scale) now that it's grown past a flat list. Includes a note recommending chroma (server-side Go) over a client-side syntax-highlighting library, given gitfed's strict CSP and no-external-JS-dependency posture, and flags two candidates (repo sidebar, docs "website mode") as needing explicit discussion before commit since they lean toward the feature-parity-with-GitHub approach §6 already says to avoid by default.
1 files changed
+91 −7
M
ROADMAP.md
+91 −7
ROADMAP.md
@@ -68,6 +68,71 @@ qui ne sont pas des manques identifiés aujourd'hui. Ratio effort/valeur
indicatif entre parenthèses, pour se souvenir pourquoi l'ordre est
celui-là la prochaine fois qu'on rouvre ce document.
+### Petits gains (effort minime, presque pas de décision de design)
+
+- **Bouton de connexion en style CTA** (accent, plus visible que les
+ autres liens de la barre de nav). *(effort très faible)*.
+- **Affichage plus compact de la liste des commits**. *(effort très
+ faible — ajustements CSS)*.
+- **Nombre total de commits affiché sur le bouton "Commits"** de la page
+ repo (`git rev-list --count`). *(effort très faible)*.
+- **Icônes par type de fichier** dans l'arborescence de la page repo, à
+ la place de l'icône générique actuelle — le sprite SVG existe déjà, il
+ s'agit d'ajouter des symboles et un mapping extension → icône.
+ *(effort faible)*.
+
+### Interface du dépôt
+
+- **Dropdown de branches** sur la page repo pour parcourir l'arborescence
+ d'une autre branche que celle par défaut — aujourd'hui le nom de
+ branche n'est qu'un texte statique, aucune navigation possible.
+ *(effort moyen)*.
+- **Pagination de la liste des commits** — plafonnée en dur à 200
+ aujourd'hui (`maxCommitsShown`), rien de visible au-delà. *(effort
+ moyen)*.
+- **Switch de langue directement dans la preview d'un README** quand un
+ fichier sœur existe (`README.md` / `README.fr.md`) — aucune détection
+ de ce type n'existe aujourd'hui, à construire. *(effort moyen)*.
+- **Coloration syntaxique des blocs de code.** Recommandation : plutôt
+ qu'une lib JS côté client (HighlightJS envisagé au départ), une
+ bibliothèque Go **côté serveur** type
+ [chroma](https://github.com/alecthomas/chroma) — gitfed a un CSP
+ strict (un seul script inline, hashé) ; ajouter une lib JS externe
+ casse cette posture ou oblige à l'intégrer entièrement dans le blob
+ hashé. chroma produit le HTML coloré à la génération, sans JS client,
+ cohérent avec le "un seul binaire Go, aucune dépendance externe" déjà
+ revendiqué. *(effort moyen)*.
+- **Détection heuristique du type de licence** (MIT, Apache-2.0, GPL,
+ ...) par le contenu plutôt que se contenter d'afficher le fichier
+ brut — une heuristique simple (quelques chaînes caractéristiques par
+ licence courante) plutôt qu'un matching complet façon SPDX/licensee,
+ qui est un projet à part entière pour un gain marginal ici. *(effort
+ faible-moyen)*.
+
+### Recherche & découverte
+
+- **Recherche de dépôts par description**, pas seulement par nom.
+ *(effort faible — la donnée existe déjà)*.
+- **Preview en direct dans la recherche** (debounce ~300ms, résultats
+ affichés sous le champ sans changer de page) — la recherche actuelle
+ ne fait que naviguer vers `/search`, aucun live-preview aujourd'hui.
+ Nécessite un petit point d'entrée JSON en plus de la page existante.
+ *(effort moyen)*. À ne pas confondre avec la recherche de code
+ ci-dessous — celle-ci ne porterait que sur les dépôts déjà listés par
+ nom/description, pas sur leur contenu.
+- **Recherche de code** (pas seulement par nom de dépôt/sujet).
+ *(effort élevé — indexation à construire, faible valeur tant que le
+ nombre de dépôts reste petit)*.
+
+### Personnalisation
+
+- **Thème clair/sombre/système** — aujourd'hui une seule palette sombre
+ fixe (`render.go`), aucune bascule. Bien cadré (redéfinir chaque
+ token en version claire, mécanisme de bascule, persistance) et sans
+ risque architectural. *(effort moyen)*.
+
+### Fédération & import
+
- **Mirroring continu** depuis un dépôt externe (re-fetch périodique,
gestion de credentials vers l'externe, conflits si quelqu'un pousse
localement sur un miroir censé être lecture seule) — explicitement
@@ -76,10 +141,9 @@ celui-là la prochaine fois qu'on rouvre ce document.
- **Webhooks sortants** sur push ou fusion de MR (appel HTTP vers une
URL configurée). *(effort moyen, valeur moyenne-élevée si un usage CI
ou notifications externes se confirme)*.
-- **Recherche de dépôts par description**, pas seulement par nom.
- *(effort faible — la donnée existe déjà)*.
-- **Export/archive** d'une branche ou d'un tag en `.tar.gz`/`.zip`
- via `git archive`. *(effort faible)*.
+
+### Collaboration & notifications
+
- **Statistiques de dépôt** (nombre de commits, contributeurs, langage
dominant) sur la page repo. *(effort faible-moyen, surtout
cosmétique)*.
@@ -93,13 +157,33 @@ celui-là la prochaine fois qu'on rouvre ce document.
de vérifier l'identité d'un contributeur sans exposer de matériel
sensible. Pas fait avec la première version des pages de profil,
faute de besoin confirmé.
-- **Recherche de code** (pas seulement par nom de dépôt/sujet).
- *(effort élevé — indexation à construire, faible valeur tant que le
- nombre de dépôts reste petit)*.
+
+### Organisation à plus grande échelle
+
+- **Export/archive** d'une branche ou d'un tag en `.tar.gz`/`.zip`
+ via `git archive`. *(effort faible)*.
- **ACL par équipe/organisation**, en plus de l'ACL par personne
actuelle. *(effort élevé — nouveau modèle de données, faible valeur
tant que l'instance reste utilisée par peu de monde)*.
+### À discuter avant de s'engager (tension avec le principe du §6)
+
+- **Section latérale d'informations complémentaires** sur la page repo
+ (nombre de commits, licence détectée, lien vers la doc — façon
+ GitHub/GitLab "About"). Pas un gros morceau technique une fois les
+ briques ci-dessus faites (licence, nombre de commits), mais c'est un
+ vrai changement de layout (la page repo est mono-colonne aujourd'hui)
+ et exactement le genre d'ajout que le §6 dit vouloir éviter par
+ défaut. À faire si l'usage le justifie vraiment, pas par défaut.
+- **Mode « site web » pour un dossier `docs/`** — navigation générée
+ depuis l'arborescence, rendu en pages persistantes plutôt qu'en
+ explorateur de fichiers, switch de langue intégré (voir la preview
+ README ci-dessus). De loin le plus gros morceau de cette liste : plus
+ proche d'un mini générateur de site de documentation que d'une
+ fonctionnalité de forge git. Pas un refus, mais à traiter comme un
+ projet à part entière si retenu un jour, pas comme une ligne de
+ roadmap parmi d'autres.
+
## 4. Pages de profil (livré, v1.1.0)
Page publique `/u/<username>` façon GitLab : bio en markdown éditée