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

@ -208,6 +208,12 @@ func (db *DB) repairSchema() error {
{"refresh_tokens", "user_agent", "TEXT NOT NULL DEFAULT ''"},
{"refresh_tokens", "ip", "TEXT NOT NULL DEFAULT ''"},
{"refresh_tokens", "last_used_at", "DATETIME"},
// Migration 005 : colonnes de navigation des modules (ajout idempotent)
{"modules", "nav_href", "TEXT NOT NULL DEFAULT ''"},
{"modules", "nav_icon", "TEXT NOT NULL DEFAULT ''"},
{"modules", "nav_color", "TEXT NOT NULL DEFAULT ''"},
{"modules", "nav_label_key", "TEXT NOT NULL DEFAULT ''"},
{"modules", "repo_url", "TEXT NOT NULL DEFAULT ''"},
}
for _, c := range needed {
if err := db.ensureColumn(c.table, c.name, c.def); err != nil {

View file

@ -0,0 +1,10 @@
-- Migration 005 : colonnes de navigation pour les modules + nettoyage services/logs
-- Supprimer les modules services et logs (maintenant dans des repos séparés)
DELETE FROM modules WHERE id IN ('services', 'logs');
-- Ajouter les colonnes de navigation
ALTER TABLE modules ADD COLUMN nav_href TEXT NOT NULL DEFAULT '';
ALTER TABLE modules ADD COLUMN nav_icon TEXT NOT NULL DEFAULT '';
ALTER TABLE modules ADD COLUMN nav_color TEXT NOT NULL DEFAULT '';
ALTER TABLE modules ADD COLUMN nav_label_key TEXT NOT NULL DEFAULT '';
ALTER TABLE modules ADD COLUMN repo_url TEXT NOT NULL DEFAULT ''