Champ de filtre en temps réel au-dessus du tableau des 404 ; ferme le panneau de détail des lignes masquées. Corrige aussi rsync via sudo pour préserver les droits static-cdn. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
110 lines
4.9 KiB
Markdown
110 lines
4.9 KiB
Markdown
# Changelog — Alpinux Static
|
|
|
|
## [1.5.2] — 2026-05-06
|
|
|
|
### Ajouté
|
|
- Erreurs 404 : champ de recherche dynamique — filtre les lignes par chemin ou adresse IP à chaque frappe, avec compteur de résultats
|
|
|
|
---
|
|
|
|
## [1.5.1] — 2026-05-06
|
|
|
|
### Corrigé
|
|
- Ignorer une IP : `/opt/static-cdn/` appartenait à `abonnelc` alors que le service tourne sous `static-cdn` — écriture de `ignored_ips.json` silencieusement impossible ; corrigé par `chown -R static-cdn` + script de déploiement mis à jour
|
|
- Ignorer une IP : invalidation du cache multi-worker gunicorn basée sur le `mtime` de `ignored_ips.json` (chaque worker re-parse dès que le fichier change)
|
|
- Bannir une IP : règle sudoers créée pour `static-cdn` (compte de service réel, pas `abonnelc`) avec chemins absolus `/usr/bin/sudo` et `/usr/bin/fail2ban-client`
|
|
|
|
---
|
|
|
|
## [1.5.0] — 2026-05-06
|
|
|
|
### Ajouté
|
|
- Onglet **Erreurs** dans la navigation : analyse des logs Apache des 7 derniers jours (fichiers `.gz` inclus)
|
|
- Tableau des erreurs 404 trié par fréquence, avec badge statut coloré (✗ actif / ✓ résolu) cliquable
|
|
- Détail par chemin (AJAX) : liste des IPs avec compteur, dernière date, referers
|
|
- Ignorer une IP (devs, tests, IPs internes) — persisté dans `ignored_ips.json`, cache invalidé
|
|
- Bannir une IP directement depuis l'interface via `fail2ban-client set global-blacklist banip`
|
|
- Section des IPs ignorées avec suppression individuelle
|
|
|
|
---
|
|
|
|
## [1.4.2] — 2026-05-06
|
|
|
|
### Corrigé
|
|
- Statistiques : la page affichait une erreur de génération alors qu'ISPConfig génère déjà le rapport GoAccess chaque nuit — `STATS_FILE` pointe maintenant directement sur le fichier ISPConfig
|
|
|
|
---
|
|
|
|
## [1.4.1] — 2026-05-06
|
|
|
|
### Corrigé
|
|
- Changelog : `TypeError` au rendu — clé `items` du dict en conflit avec la méthode Python `dict.items()` en Jinja2 (renommée `entries`)
|
|
- Sélecteur de largeur : boutons L et ∞ sans effet — `max-width:none` + `margin:auto` sur flex child rétrécissait `<main>` ; remplacé par `data-cw` sur `<html>` + sélecteurs CSS d'attribut
|
|
|
|
---
|
|
|
|
## [1.4.0] — 2026-05-06
|
|
|
|
### Ajouté
|
|
- Sélecteur de largeur du contenu dans le header : Étroit (900 px), Normal (1 200 px), Large (1 600 px), Plein — préférence mémorisée dans le navigateur
|
|
- Changelog avec numéro de version sémantique, accessible depuis le footer
|
|
|
|
### Corrigé
|
|
- Décalage de largeur entre les pages dû à l'apparition/disparition de la scrollbar (`scrollbar-gutter: stable`)
|
|
- Labels EXIF non traduits : `ResolutionUnit`, `XResolution`, `YResolution`
|
|
- Valeur numérique brute pour `ColorSpace` → libellé lisible (sRGB, Adobe RGB, Non calibré)
|
|
|
|
### Modifié
|
|
- Contenu principal en pleine largeur (suppression du `max-width` fixe sur `<main>`)
|
|
|
|
---
|
|
|
|
## [1.3.0] — 2026-05-06
|
|
|
|
### Ajouté
|
|
- Prévisualisation des fichiers depuis la corbeille (propriétés, métadonnées, téléchargement)
|
|
- Footer sur toutes les pages avec liens de navigation et numéro de version
|
|
- Stats corbeille dans le tableau de bord (nombre de fichiers, taille totale, date du plus ancien)
|
|
|
|
### Modifié
|
|
- Header compact : avatar initiale + prénom + icône déconnexion (suppression du bouton texte)
|
|
- Suppression du lien « Tableau de bord » dans la navigation (doublon avec le logo)
|
|
- `user`, `humansize`, `trash_count` centralisés dans le context processor Flask (disponibles sur toutes les pages)
|
|
|
|
---
|
|
|
|
## [1.2.0] — 2026-05-06
|
|
|
|
### Ajouté
|
|
- Corbeille : mise à la corbeille depuis `/browse`, restauration avec gestion des conflits (écraser / renommer), suppression définitive
|
|
- Purge automatique des éléments en corbeille depuis plus de 30 jours
|
|
- Badge dans la navigation indiquant le nombre d'éléments en corbeille
|
|
- Page `/trash` avec tableau partagé (mode `browse` / `trash`) et bouton « Vider la corbeille »
|
|
|
|
---
|
|
|
|
## [1.1.0] — 2026-05-06
|
|
|
|
### Ajouté
|
|
- Redimensionnement d'images depuis la prévisualisation : tailles prédéfinies, dimension libre, formats PNG/JPG/ICO
|
|
- Gestion des conflits lors du redimensionnement (backup, écraser, renommer, ignorer)
|
|
- Renommage de fichiers inline dans `/browse` et la page de prévisualisation
|
|
- Affichage des métadonnées image (dimensions, format, mode couleur, DPI, EXIF)
|
|
- Dimension libre avec contrainte de proportions (mode « carré »)
|
|
|
|
### Corrigé
|
|
- Échec du redimensionnement sur les fichiers ICO en mode palette (conversion RGBA avant LANCZOS)
|
|
- Aucune sélection de taille ou format → copie à l'identique (comportement par défaut)
|
|
|
|
---
|
|
|
|
## [1.0.0] — 2026-05-03
|
|
|
|
### Ajouté
|
|
- Upload de fichiers par glisser-déposer avec gestion des conflits (écraser, backup, renommer, ignorer)
|
|
- Parcourir les assets CDN depuis `/browse` avec fil d'Ariane
|
|
- Statistiques de consultation via GoAccess (`/stats`), générées à la demande
|
|
- Authentification SSO via AlpID (Keycloak / OpenID Connect)
|
|
- Recherche dans les fichiers
|
|
- Scripts rsync `push-assets.sh` et `pull-assets.sh` pour la synchronisation locale ↔ serveur
|
|
- Script `deploy-app.sh` pour le déploiement de l'application Flask
|