mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-08-10 07:11:18 +02:00
Docs: regrouper livraisons par familles fonctionnelles dans chaque mois
This commit is contained in:
+302
-116
@@ -2,138 +2,324 @@
|
||||
|
||||
## Janvier 2026 (8 commits)
|
||||
|
||||
- Site public affichant le contenu de la DB + fichiers
|
||||
- Formulaire de soumission séparé → écriture en base
|
||||
- Première version des contrôleurs TFE (création, édition)
|
||||
- Structure initiale du projet : routing, templates, DB SQLite
|
||||
- Schéma de base de données (theses, auteurs, formats, langues, etc.)
|
||||
### Structure initiale
|
||||
- Schéma SQLite : tables theses, auteurs, formats, langues, tags, fichiers
|
||||
- Monorepo : organisation en dossiers (formulaire, templates, src, admin)
|
||||
- Justfile, .gitignore, documentation (READMEs)
|
||||
- Nginx config + déploiement fonctionnel
|
||||
- Système de recherche sécurisé
|
||||
|
||||
## Février 2026 (29 commits)
|
||||
|
||||
- Formulaire admin + formulaire étudiant (partage)
|
||||
- Soumissions étudiant via liens de partage (share links)
|
||||
- Système de visibilité : Libre / Interne / Interdit
|
||||
- Pages statiques éditables (À propos) → début du CMS
|
||||
- Gestion des fichiers uploadés (stockage, affichage)
|
||||
- Export CSV des TFE
|
||||
- Import CSV des TFE
|
||||
- Structure admin : index, navigation, table listant les TFE
|
||||
- Base du système de licences (CC2r)
|
||||
### Formulaire & soumission
|
||||
- Formulaire admin (ajout/édition TFE)
|
||||
- Formulaire étudiant via liens de partage (share links)
|
||||
- Structure formulaire : champs obligatoires, validation
|
||||
- Uploads de fichiers (stockage, affichage)
|
||||
|
||||
### Visibilité & accès
|
||||
- Système à 3 niveaux : Libre / Interne / Interdit
|
||||
- Protection par mot de passe des fichiers « Interne »
|
||||
- Authentification admin (login / session PHP)
|
||||
|
||||
### Pages statiques (début CMS)
|
||||
- Pages éditables : À propos (Markdown → HTML)
|
||||
- Templates header/footer, mise en page responsive
|
||||
- Cards en grille sur la page d'accueil
|
||||
|
||||
### Admin
|
||||
- Index admin : liste des TFE, pagination, stats
|
||||
- Export / import CSV
|
||||
- Navigation admin dynamique
|
||||
- CSS admin : composants réutilisables
|
||||
|
||||
### Sécurité
|
||||
- Auth guard pour le panneau admin
|
||||
- Correction des failles HIGH et LOW (TODO.SECURITY.md)
|
||||
|
||||
## Mars 2026 (74 commits)
|
||||
|
||||
- Édition / correction / suppression des entrées TFE dans l'admin
|
||||
- Récapitulatif admin après soumission
|
||||
- Affichage public des TFE (page tfe.php)
|
||||
- Moteur de recherche dans le répertoire (par nom)
|
||||
- Filtres par orientation, AP, année, langue, finalité
|
||||
- Système d'authentification admin (login / mot de passe / session)
|
||||
- Protection par mot de passe des fichiers « Interne »
|
||||
- Données internes : points du jury, remarques, lien BAIU, exemplaires
|
||||
- Colonnes du répertoire : années, orientations, AP, mots-clés, noms
|
||||
- Rework CSS majeur (variables, typographie, thème clair/sombre)
|
||||
- Intégration HTMX pour les interactions dynamiques
|
||||
- Upload de fichiers avec queues JS (avant FilePond)
|
||||
- Structure formulaire : champs conditionnels selon les formats
|
||||
- PDF obligatoire / optionnel selon les formats
|
||||
- Jury (promoteurices, lecteurices) dans le formulaire admin
|
||||
### Contrôleurs & architecture
|
||||
- ThesisCreateController, ThesisEditController : extraction depuis add.php/edit.php (530 lignes → contrôleurs dédiés)
|
||||
- TfeController, SearchController, HomeController : extraction depuis les pages publiques
|
||||
- SystemController : unifie status + logs en un onglet système
|
||||
- App.php : classe fondation + flash messages unifiés
|
||||
|
||||
### Répertoire & recherche
|
||||
- Répertoire en 6 colonnes : années, orientations, AP, mots-clés, noms, compte
|
||||
- Filtres combinables (AP + mot-clé + orientation simultanément)
|
||||
- Filtres HTMX sans rechargement de page, URL partageable
|
||||
- Tri matched-first dans les colonnes de filtre
|
||||
- Popover étudiant·e (pré-rendu serveur, lazy load)
|
||||
|
||||
### Page TFE publique
|
||||
- Layout complet : auteur > titre > meta + synopsis > fichiers > jury
|
||||
- Jury interne / externe affiché séparément
|
||||
- Liens hypertextes vers le répertoire sur les métadonnées
|
||||
- Open Graph / Twitter Card meta tags
|
||||
|
||||
### Base de données
|
||||
- Migrations : superviseurs multi-rôles, tags renommés depuis keywords
|
||||
- Vues SQL (v_theses_full, v_smtp_active)
|
||||
- WAL mode pour SQLite
|
||||
- Index composites (is_published, year) pour la perf
|
||||
- Auto-migration au démarrage du serveur
|
||||
|
||||
### Sémantique HTML & accessibilité
|
||||
- Refactor sémantique complet de toutes les pages publiques
|
||||
- Head partagé, nav sémantique, aria-current, skip links
|
||||
- Status badges non dépendants de la couleur (WCAG 1.4.1)
|
||||
- Autofocus premier champ invalide (WCAG 3.3.1)
|
||||
- Sous-titres WebVTT pour vidéos (WCAG 4.1.2)
|
||||
- Cibles tactiles 44×44px (WCAG 2.5.5)
|
||||
|
||||
### CSS & design
|
||||
- Suppression de tous les assets externes (self-hosting)
|
||||
- Polices : Combined (titres) → Ductus, corps en BBBDMSans
|
||||
- Variables de couleur standardisées
|
||||
- Dark mode prefers-color-scheme
|
||||
- Header plus dense, recherche pleine largeur
|
||||
- Remplacement EasyMDE (333KB) → OverType (118KB)
|
||||
- Cache-busting par filemtime
|
||||
|
||||
### Admin
|
||||
- Pagination serveur (25/page)
|
||||
- Tri des colonnes dans l'index
|
||||
- Merge status + logs → system.php avec onglets fetch()
|
||||
- Paramètres : maintenance + compte
|
||||
- Dialogue d'import CSV inline
|
||||
- Gestion des fichiers dans l'édition TFE (couverture, TFE, etc.)
|
||||
|
||||
### Formulaire
|
||||
- Partials de champs de formulaire réutilisables (fieldset-academic, fieldset-metadata, etc.)
|
||||
- Jury fieldset partagé add/edit
|
||||
- Aide contextuelle Markdown dans le formulaire
|
||||
- Mode étudiant simulé dans l'admin (?mode=student)
|
||||
|
||||
### Email & SMTP
|
||||
- SmtpRelay : client SMTP natif (socket), AUTH PLAIN, TLS
|
||||
- Test SMTP, vérification des credentials à la sauvegarde
|
||||
- Champs from_name, notify_email
|
||||
- Email de notification admin après soumission
|
||||
|
||||
### Ops
|
||||
- Déploiement : scripts unifiés, justfile
|
||||
- Renommage Posterg → XAMXAM (code, nginx, docs)
|
||||
- Rate limiting sur les endpoints partage
|
||||
- Exclusion du fichier DB et des uploads du rsync
|
||||
|
||||
## Avril 2026 (207 commits)
|
||||
|
||||
- Refonte complète des uploads : FilePond remplace les queues custom
|
||||
- Architecture d'upload asynchrone FilePond (process/revert/load/remove)
|
||||
- Pool unique TFE acceptant tous les formats (vidéo, audio, etc.)
|
||||
- Upload de masse avec barre de progression
|
||||
- Intégration PeerTube pour vidéos / audio (upload API, embed)
|
||||
- Système de brouillon automatique (autosave) pour le formulaire partage
|
||||
- Fragments HTMX partagés admin / partage (formats, fichiers, licence)
|
||||
- Extraction du JS inline en modules externes (admin-logs, clipboard, pill-search, etc.)
|
||||
- Composant pill-search pour mots-clés et langues (autocomplete HTMX)
|
||||
- Gestion des mots-clés et langues dans l'admin (rename, merge, delete)
|
||||
- TOC sidebar dans les pages admin (IntersectionObserver)
|
||||
- Tri des colonnes dans l'index admin (Auteur, Accès, etc.)
|
||||
- Liens de partage : nom éditable, expiration, dialogue d'édition
|
||||
- Obfuscation des emails en entités HTML (EmailObfuscator)
|
||||
- Récapitulatif exhaustif (partage + admin)
|
||||
- Champs conditionnels : website URL, annexes, PeerTube vs. upload direct
|
||||
- Promoteurices multiples (interne + ULB) avec ajout/suppression dynamique
|
||||
- Formulaire mobile responsive
|
||||
### Uploads & fichiers
|
||||
- **FilePond** remplace les queues custom (495 lignes de JS supprimées)
|
||||
- Architecture upload asynchrone : process / revert / load / remove
|
||||
- Pool unique TFE (tous formats : PDF, vidéo, audio)
|
||||
- Barre de progression d'upload
|
||||
- Intégration **PeerTube** : upload API, OAuth2, embed iframe
|
||||
- Vidéos/audio auto-upload vers PeerTube quand activé
|
||||
- Chiffrement credentials PeerTube + SMTP (AES-256-GCM)
|
||||
|
||||
### Fragments HTMX
|
||||
- Fragments partagés admin / partage : formats + fichiers, licence, langue-autre
|
||||
- Fragments conditionnels selon les formats cochés (Site web → URL, Vidéo → upload ou PeerTube)
|
||||
- Aide contextuelle Markdown via HTMX
|
||||
- Fragments admin wrappés avec auth guard
|
||||
|
||||
### Formulaire
|
||||
- Partials de champs unifiés : text-field, select-field, checkbox-list
|
||||
- Jury : promoteurices multiples avec ajout/suppression dynamique
|
||||
- Jury ULB conditionnel (finalité Approfondi)
|
||||
- Annexes : checkbox + fichier conditionnel
|
||||
- Contact visible / contact interne découplés
|
||||
- CC2r renommé (ex-CC4r), restructuration des licences
|
||||
- Pages statiques : Charte, Licence, À propos avec TOC sticky
|
||||
- Checkboxes admin en auto-save HTMX avec toasts de feedback
|
||||
- Backups SQLite automatisés (horaire + quotidien, cron)
|
||||
- Déploiement : recettes justfile, vérification permissions, migrations incrémentales
|
||||
- Content-Security-Policy, HSTS, SameSite cookies
|
||||
- Script de scan passif de sécu (pentest)
|
||||
- Chiffrement du mot de passe SMTP (AES-256-GCM)
|
||||
- Rate limiting sur les endpoints sensibles
|
||||
- CC4r → CC2r renommé
|
||||
- Identifiant TFE régénéré automatiquement au changement d'année
|
||||
- Validation inline des fichiers (MIME, taille) via HTMX
|
||||
|
||||
### Pages statiques CMS
|
||||
- À propos, Charte, Licence : Markdown → HTML, édition admin
|
||||
- TOC sticky dans la sidebar
|
||||
- Contenus-edit : OverType, auto-save, liens sidebar dynamiques
|
||||
- Contacts admin : grille 3 colonnes, ajout/suppression
|
||||
|
||||
### Accessibilité
|
||||
- aria-errormessage, aria-invalid, aria-describedby sur tout le formulaire
|
||||
- Cibles tactiles 44×44px minimum (WCAG 2.5.5)
|
||||
- Formulaire responsive mobile (colonnes empilées)
|
||||
|
||||
### Gestion des données
|
||||
- Mots-clés : recherche, rename, merge, delete dans l'admin
|
||||
- Langues : recherche, rename, merge bulk, dédoublonnage
|
||||
- Tri des colonnes Auteur et Accès dans l'index admin
|
||||
- Liens de partage : nom éditable, expiration, dialogue d'édition
|
||||
|
||||
### Sécurité
|
||||
- Obfuscation des emails en entités HTML (EmailObfuscator)
|
||||
- Content-Security-Policy, HSTS, SameSite cookies, COOP/CORP
|
||||
- Script de scan passif de sécurité
|
||||
- Rate limiting, flash messages sur partage
|
||||
- Corrections non-constant-time (hash_equals)
|
||||
|
||||
### CSS & refactoring
|
||||
- Architecture CSS en couches : reset → colors → typography → base → components
|
||||
- Suppression de toutes les classes BEM au profit de sélecteurs sémantiques
|
||||
- Tokens de design unifiés (couleurs, typographie, espacement)
|
||||
- Échelle fluide utopia pour typographie et espacement
|
||||
- Suppression du dark mode, unification des thèmes
|
||||
- Extraction de tous les styles inline vers CSS
|
||||
|
||||
### Logs & monitoring
|
||||
- Logging structuré pour les soumissions admin/partage
|
||||
- AdminLogger : JSON-lines
|
||||
|
||||
### Ops & déploiement
|
||||
- Déploiement automatisé (justfile) : code, dépendances, migrations
|
||||
- Vérification des permissions post-déploiement
|
||||
- Backups SQLite cron (horaire + quotidien)
|
||||
- Merge de toutes les migrations dans schema.sql
|
||||
|
||||
### Architecture code
|
||||
- Extraction des contrôleurs (create, edit, search, TFE, system)
|
||||
- Partials de formulaire réutilisables
|
||||
- Dispatcher + front controller (index.php)
|
||||
- Configuration externalisée (config/apropos.php → SQLite)
|
||||
|
||||
## Mai 2026 (156 commits)
|
||||
|
||||
- FilePond : correction crash « can't access property main », tailles en bytes
|
||||
- Fichiers temporaires FilePond survivent au rechargement de page
|
||||
- Relink de fichiers orphelins (file browser + FilePond integration)
|
||||
- Trash policy : suppression → tmp/_trash avec traçabilité
|
||||
### FilePond — corrections & hardening
|
||||
- Correction crash « can't access property main, n.status is undefined »
|
||||
- Tailles de fichiers en bytes (plus de confusion toInt('1GB') = 1)
|
||||
- Fichiers temporaires survivent au rechargement de page (session-track)
|
||||
- Guard no-JS : filepond_mode désactivé par défaut, fallback serveur
|
||||
- Relink fichiers orphelins (file browser + intégration FilePond)
|
||||
- Trash policy : suppression → tmp/_trash avec traçabilité DB
|
||||
- Storage prefix : theses/ → documents/
|
||||
- Recap admin : sections → fieldsets, fichiers en table
|
||||
- Extraction de FormBootstrap pour DRY add/edit
|
||||
- Système de colonnes thesis_status (two-phase commit lifecycle)
|
||||
- Draft autosave avec persistence session (HTMX POST/GET fragments)
|
||||
- Guard no-JS file uploads (filepond_mode désactivé par défaut)
|
||||
- Accessibilité formulaire : aria-errormessage, aria-invalid, aria-describedby
|
||||
- Cibles tactiles 44×44px minimum (WCAG 2.5.5)
|
||||
|
||||
### Autosave & brouillons
|
||||
- Brouillon automatique formulaire partage (HTMX POST/GET session)
|
||||
- Auto-save admin checkboxes avec toasts de feedback
|
||||
- Nettoyage périodique des brouillons orphelins (cron)
|
||||
- Durée TFE : colonnes DB, champs formulaire, affichage XhYm
|
||||
- Déploiement : split deploy-code/deploy-deps/deploy-migrate
|
||||
- Intégration Monolog : 4 canaux PSR-3 remplaçant 4 systèmes de log
|
||||
- Tests PHPUnit : 228 tests, couverture 21,27%
|
||||
- Remplacement Parsedown → league/commonmark
|
||||
- Remplacement client HTTP custom → Guzzle
|
||||
- Remplacement SMTP socket → PHPMailer
|
||||
- Composer.json et autoloader
|
||||
- Refactor architecture CSS : layers (reset → colors → typography → base → components)
|
||||
- Composants CSS dédiés par fichier (links, focus, forms, tables, dialog, etc.)
|
||||
- SVG icons inline via helper PHP (icon()) — plus de <img> pour icônes
|
||||
- Style global : liens regular, body light, hover violet, police BBB DM Sans
|
||||
- Page TFE : layout auteur > titre > meta + synopsis 2-col > fichiers flex
|
||||
- Répertoire : colonnes triées (match first), scrollbars discrètes, pas de chip bar mobile
|
||||
- Accordéon mobile pour les filtres du répertoire
|
||||
- Détails/summary TOC pour pages statiques (responsive)
|
||||
- Contenus-edit : auto-save, toolbar OverType, liens sidebar dynamiques
|
||||
- Gestion des contacts admin (grille 3 colonnes, suppression, réindexation)
|
||||
- Corrections d'identifiants (year-prefix mismatch), migrations PHP
|
||||
- Fix contact_interne / contact_visible (découplage complet)
|
||||
- Author name casing (COLLATE NOCASE, idHint lookup)
|
||||
- Finalité master affichée sur la page publique TFE
|
||||
- Suppression vidéos PeerTube lors de la suppression d'un TFE
|
||||
- Nettoyage logs, gitignore vendor/, icône de recherche
|
||||
- Build pipeline : biome + rolldown + lightningcss (bundling/minification)
|
||||
- Dev-watch avec chokidar-cli (reconstruction live)
|
||||
- Gzip activé dans nginx + ~730 lignes de JS inline → 15 fichiers externes
|
||||
- Scroll-position memory sur les swaps HTMX du répertoire
|
||||
- Correctifs sécu (open redirect, CSRF partage, gate session, verifyCsrf)
|
||||
- Biome lint fixes (duplicate CSS, arrow functions)
|
||||
- Contenus-edit : auto-save avec debounce, toolbar OverType
|
||||
|
||||
### Build & assets
|
||||
- **Biome** : linting + formatting CSS/JS
|
||||
- **Rolldown** : bundling JS par entrée
|
||||
- **LightningCSS** : résolution @import, minification CSS
|
||||
- Pipeline build orchestré (build.mjs)
|
||||
- Dev-watch avec chokidar-cli (reconstruction ~200ms)
|
||||
- dist/ pour les assets minifiés, .gitignore
|
||||
|
||||
### Gzip & extraction JS
|
||||
- Gzip activé dans nginx
|
||||
- ~730 lignes de JS inline → 15 fichiers externes
|
||||
- Modules : admin-logs, clipboard, pill-search, access-request
|
||||
|
||||
### Tests
|
||||
- PHPUnit setup : 228 tests, couverture 21,27%
|
||||
- Tests unitaires : Crypto, EmailObfuscator, SystemController, StudentEmail, TfeController
|
||||
- Tests intégration : Database, ShareLink, RateLimit
|
||||
- Tests validation : ThesisCreate, ThesisEdit, AutofocusField
|
||||
- PHPStan + PHP-CS-Fixer + Biome pour le linting
|
||||
|
||||
### Dépendances & modernisation
|
||||
- Composer.json avec autoloader
|
||||
- Parsedown → league/commonmark
|
||||
- Client HTTP custom → Guzzle
|
||||
- SMTP socket → PHPMailer
|
||||
|
||||
### Logging
|
||||
- **Monolog** : 4 canaux PSR-3 (app, admin, error, audit)
|
||||
- Rotation 30 jours, format JSON préservé
|
||||
- Remplace 4 systèmes de log distincts
|
||||
- LOG_LEVEL par variable d'environnement
|
||||
|
||||
### CSS — refactor architecture
|
||||
- Split en couches nommées (reset, colors, typography, base, components, utilities)
|
||||
- Un fichier par composant (links, focus, forms, tables, dialog, etc.)
|
||||
- Compatibilité backward (variables.css, common.css wrappers)
|
||||
|
||||
### UI / UX
|
||||
- SVG icons inline via helper PHP (icon()) — plus aucun <img> pour les icônes
|
||||
- Build pipeline CSS/JS
|
||||
- Dev-watch avec reconstruction live
|
||||
- Scroll-position memory sur swaps HTMX (répertoire)
|
||||
- Transition + swap fluide sur le répertoire
|
||||
- Correctifs sécurité (open redirect, CSRF partage, gate session)
|
||||
|
||||
### Divers
|
||||
- Recap admin : sections → fieldsets, fichiers en table
|
||||
- FormBootstrap : DRY entre add/edit
|
||||
- Colonne thesis_status (two-phase commit lifecycle)
|
||||
- Déploiement : split deploy-code/deploy-deps/deploy-migrate, lockfile checksum
|
||||
- Export fichiers ZIP avec LINK.txt (URLs PeerTube)
|
||||
- Correctifs : identifier year-prefix mismatch, author name casing, contact découplage v2
|
||||
- CSV import : AP aliases, OUI/NON sanitization
|
||||
- Rate limits relevés (30→300/min sur certains endpoints)
|
||||
|
||||
## Juin 2026 (82 commits)
|
||||
|
||||
- Migration icônes <img> → SVG inline (26 templates, helper icon())
|
||||
- Cleanup dialog : suppression doublons, hx-confirm sur delete
|
||||
- Refonte pages statiques (layout partagé, TOC sticky)
|
||||
- PHP upload limits → 8GB pour vidéos
|
||||
- Debug leftover crash HTMX FormData(fieldset)
|
||||
### Icônes SVG
|
||||
- Migration complète <img> → SVG inline via icon() helper PHP
|
||||
- 26 templates modifiés
|
||||
- 12 icônes SVG corrigées (fill="#000000" → fill="currentColor")
|
||||
- Icône recherche remplacée (Phosphor fill-based magnifying glass)
|
||||
|
||||
### Pages statiques & TOC
|
||||
- Refonte À propos / Charte / Licence : layout partagé en grille
|
||||
- TOC sticky → details/summary responsive (collapsible sur mobile)
|
||||
- Ancres de titres stables (CommonMark HeadingPermalinkExtension)
|
||||
- Styles liens standardisés
|
||||
|
||||
### Répertoire — polissage UX
|
||||
- Accordéon mobile pour les colonnes de filtre (≤640px)
|
||||
- Toggle, chevron, badge compteur de filtres actifs
|
||||
- Tri des colonnes : matched first, puis unmatched, puis alphabétique
|
||||
- Mots-clés : résultats viables en haut
|
||||
- Suppression de la chip bar mobile
|
||||
- Correction re-init accordéon après swap HTMX (bug DOM détaché)
|
||||
- Scroll colonnes répertoire : min-height: 0, overflow-y: auto
|
||||
- Scroll-position memory sur swaps HTMX
|
||||
|
||||
### Formulaire — accessibilité & robustesse
|
||||
- aria-errormessage, aria-invalid, aria-describedby sur tous les champs
|
||||
- Layout mobile responsive (champs empilés, 44×44px touch targets)
|
||||
- Autosave brouillon formulaire partage (session persistence)
|
||||
- Guard no-JS (filepond_mode désactivé par défaut)
|
||||
- Preserve fichiers temporaires FilePond après redirection validation
|
||||
|
||||
### Uploads & fichiers
|
||||
- PHP upload limits → 8GB (vidéos)
|
||||
- Nettoyage dialog : suppression doublons, hx-confirm sur delete
|
||||
- Type hint adminOld corrigé (string → string|array)
|
||||
- Index SQLite pour requêtes langues/tags
|
||||
- Accordéon mobile répertoire : toggle, chevron, badge actif
|
||||
- Remplacement sticky nav par details/summary TOC responsive
|
||||
- Icône recherche corrigée
|
||||
- Scroll colonnes répertoire + admin TOC duplication
|
||||
- Filtres répertoire : tri matched-first, mot-clés en haut
|
||||
- Suppression chip bar mobile
|
||||
- Accordéon re-init après HTMX swap (bug DOM détaché)
|
||||
- Gzip + extraction JS inline
|
||||
- Build pipeline CSS/JS
|
||||
- Dev-watch
|
||||
- Transition scroll + swap fluide sur répertoire
|
||||
- Correctifs sécu (csrf partage, open redirect, verifyCsrf)
|
||||
- TODO et tasks de sécu complétés
|
||||
|
||||
### Build & performance
|
||||
- Pipeline build CSS/JS (biome + rolldown + lightningcss)
|
||||
- Dev-watch chokidar-cli
|
||||
- Gzip nginx + extraction JS inline (730 lignes → 15 fichiers)
|
||||
- Biome lint fixes (CSS duplicate properties, JS arrow functions)
|
||||
|
||||
### Contenus & CMS
|
||||
- Auto-save avec OverType toolbar sur contenus-edit
|
||||
- Liens sidebar dynamiques (site ERG, code source)
|
||||
- Markdown cheatsheet : rendu réel dans la colonne d'exemple
|
||||
- Page Charte ajoutée (publique + admin)
|
||||
|
||||
### TFE — métadonnées
|
||||
- Durée : colonnes DB, champs formulaire, affichage XhYm
|
||||
- Finalité master affichée sur la page publique
|
||||
- Identifiant régénéré si mismatch année
|
||||
- Author name casing corrigé (COLLATE NOCASE, idHint lookup)
|
||||
- Suppression vidéos PeerTube lors de la suppression d'un TFE
|
||||
|
||||
### Sécurité
|
||||
- Open redirect fix : rejet des URLs protocol-relative (//evil.com)
|
||||
- CSRF sur retry-email POST
|
||||
- Gate partage fragments sur session share_active
|
||||
- Suppression App::verifyCsrf() mort
|
||||
|
||||
### Divers
|
||||
- Index SQLite pour requêtes langues/tags (contenus page)
|
||||
- Correctif logs capturés
|
||||
- Nettoyage .gitignore, vendor/
|
||||
- Cleanup dialog
|
||||
- TFE page : CC2r + licence, formatage contact court
|
||||
- Recherche : filtres finalité + format, bouton Réinitialiser neutre
|
||||
|
||||
Reference in New Issue
Block a user