refactor: architecture modules indépendants — nettoyage CORE, registry enrichi, page modules dynamique

- Supprimer les modules services et logs du CORE (déplacés dans viewServices et viewLogs)
- Enrichir modules/module.go : interface Registry avec NavItemDef, RunOnTarget, StreamOnTarget
- Réécrire modules/loader.go : NewLoader accepte *db.DB, *sshpool.Pool, *crypto.Encryptor
- Ajouter migration 005 : colonnes nav_* sur la table modules + suppression services/logs DB
- Mettre à jour db.go (repairSchema) pour ajout idempotent des colonnes nav_*
- Mettre à jour settings.go : GetModules retourne les champs nav, ajout GetRegistryModules et InstallRegistryModule
- Mettre à jour main.go : NewLoader avec les bons arguments, ajout routes /api/registry/modules
- Mettre à jour modules.html : section Store avec liste des modules Forgejo
- Mettre à jour app.js : sidebar dynamique (nav_href depuis DB), modulesPage avec store
- Mettre à jour pages.css : styles pour store de modules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
enzo 2026-03-22 03:34:17 +01:00
parent 91cf788221
commit ec7d120ef6
15 changed files with 460 additions and 997 deletions

View file

@ -961,3 +961,26 @@
}
.shortcut-icon-sel { padding: .4rem .5rem; font-size: .85rem; }
.shortcut-label, .shortcut-href { font-size: .85rem; }
/* ── Store de modules ────────────────────────────────────────────────────────── */
.section-desc { color: var(--neu-text-muted); font-size: .85rem; margin: -.25rem 0 .75rem; }
.section-desc a { color: var(--neu-primary); text-decoration: none; }
.section-desc a:hover { text-decoration: underline; }
.module-version { font-size: .75rem; color: var(--neu-text-muted); margin-left: .5rem; }
.module-repo-link { font-size: .75rem; color: var(--neu-text-muted); text-decoration: none; display: block; margin-top: .2rem; }
.module-repo-link:hover { color: var(--neu-primary); }
.installed-badge {
padding: .2rem .6rem;
border-radius: 1rem;
font-size: .75rem;
font-weight: 600;
background: color-mix(in srgb, var(--neu-success) 15%, transparent);
color: var(--neu-success);
}
.rebuild-notice {
display: flex;
align-items: center;
gap: .75rem;
padding: 1rem;
font-size: .875rem;
}