Skip to content

feat(ui): expose AGPL license + source link in-app #28

@aliceout

Description

@aliceout

Contexte

Nodea est passé sous AGPL-3.0-or-later. Côté légal, l'obligation §13 (offrir le source aux utilisateurs d'une instance modifiée) est déjà satisfaite par le repo public `aliceout/Nodea`, donc rien de bloquant. Mais c'est une courtoisie standard dans l'écosystème AGPL de rendre l'info triviale à trouver pour quiconque utilise une instance — et de rappeler aux self-hosters qui modifieraient le code leur propre obligation §13.

Proposition

Ajouter une mention visible dans l'app, avec :

  • Le nom de la licence (`AGPL-3.0-or-later`)
  • Un lien vers le repo GitHub officiel (`https://github.com/aliceout/Nodea\`)
  • Idéalement le hash de commit de la version déployée (pour qu'un user puisse retrouver exactement la version qui tourne — c'est précisément ce que §13 demande de rendre accessible)

Emplacement — à arbitrer

Deux options possibles :

  1. Footer discret présent partout dans l'app (sous le sidebar ou en bas de main). Pro : toujours visible, zéro friction. Con : pollue un peu l'UI déjà chargée.
  2. Page "À propos" dédiée accessible depuis Settings ou un lien dans le footer minimal. Pro : ne charge pas l'UI principale. Con : un clic de plus pour trouver.

Option 2 paraît plus propre — une section "À propos" peut aussi accueillir le numéro de version, le lien docs, le contact, etc. Le footer ne garderait qu'un petit "Nodea — AGPL · source" linkifié.

Commit hash de la version déployée

Pour injecter le SHA courant au build :

```ts
// vite.config.ts
import { execSync } from 'node:child_process';

const commitSha = execSync('git rev-parse --short HEAD').toString().trim();
define: { COMMIT_SHA: JSON.stringify(commitSha) }
```

Côté back (Hono), exposer `GET /version` → `{ commit, tag?, licenseSpdx: 'AGPL-3.0-or-later' }`. La page "À propos" interroge cet endpoint.

À livrer

  • Page / composant "À propos" (TSX, atoms existants)
  • Route React Router dédiée (`/flow/about` ou `/about`) — à voir selon #27 (URL figée à `/flow`)
  • Lien visible depuis la sidebar ou Settings
  • Injection du commit SHA au build (web)
  • Endpoint `GET /version` côté API (optionnel mais propre)
  • i18n FR + EN pour les labels

Non-objectifs

  • Pas un "legal corner" bavard. On affiche la licence + le lien, pas le texte complet.
  • Pas d'acceptation / consentement utilisateur (ce n'est pas un CLA).

Relations

  • Dépend du choix de routing dans #27.
  • Peut être intégré au refactor design #26 si la réorganisation des menus inclut déjà une page À propos.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions