Gitfed
bastien-mrq/gitfed/ Commits/ 41fb26c

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.

bastien-mrq 2026-07-29 11:52 commit 41fb26c4eaf5c3efcb18383009d39b9606813305 parent 2091729085b86b621effec6c4a3c1883440c2754
1 files changed +91 −7
M ROADMAP.md +91 −7
ROADMAP.md
diff --git a/ROADMAP.md b/ROADMAP.md index e1f52a5..24d6ac8 100644 --- a/ROADMAP.md +++ b/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