b9402532e5
fix: renommer migration soft-delete pour éviter le conflit de timestamp avec add_subject_positions_summary_function (20260326120000 → 20260326130000)
3a6bf83c34
feat: recherche de sujets sur /s — composant SearchField générique dans le design system, refactorisation de PersonalitySearch pour le réutiliser
f2b4c4b68d
fix: avatar placeholder avec initiales quand la photo de la personnalité n'existe pas
d04ff82ee3
feat: refonte page d'accueil — sujet du jour (seed déterministe par date), sections les plus actifs et derniers ajoutés, grille de cartes compactes, findSummaryById et findAllIds
12a3604db5
feat: composant FigureAvatarRow avec badge +N, read model SQL get_subject_positions_summary (CQRS), suppression du CSS mort des avatars inline
3c88550027
feat: AdminMenu sur les pages sujet et personnalité, composant ConfirmAction dans le design system, suppression de SubjectActions devenu obsolète
50c92a5675
chore: Next.js 16.2.0 stable — sortie du canary, suppression du .npmrc legacy-peer-deps
c4fb7fc342
feat: composant AdminMenu (⚙ Gérer) avec actions contextuelles, fusion dans le menu de la page position, suppression du EditLink sur la page sujet, redirect serveur après fusion, TODO.md retiré du repo
20aa53bb85
feat: page détail position et fusion de positions — page /s/[slug]/position/[positionId] avec prises de position, fusion transactionnelle via rpc SQL merge_positions, méthode findByPositionIdWithFigures, lien cliquable sur les titres de position
bfa384f605
feat: amendement des brouillons à la validation — formulaire inline avec sélection d'entités existantes (Combobox) ou édition des données de création, composant ModeToggle dans le design system, logique buildAmendments extraite et testée (9 tests)
3abe376c72
feat: champ origin obligatoire sur les brouillons — identifie quelle IA a déposé chaque draft, affiché comme badge dans la carte admin
a1ad478ace
feat: système de brouillons de prises de position — table draft_statements, API REST (GET/POST/PATCH) protégée par ADMIN_API_KEY, page admin /admin/drafts avec résolution des entités et validation en cascade via les use cases existants (createPublicFigure, createSubject, createPosition, createStatement), permission admin au rang Fondateur
e2cc74bda1
feat: édition des prises de position — use case updateStatement, formulaire partagé StatementForm, page /p/[slug]/s/[subjectSlug]/modifier/[statementId], bouton Modifier visible pour les Idéalistes