cedric and Claude Sonnet 4.6
7b831d5bc4
test: tests unitaires Vitest — format, version-utils, rate-limit
...
- Installe vitest@4 + @vitest/coverage-v8 (40 tests, 0 échec)
- lib/__tests__/format.test.js : 14 tests (formatKonstitisyon, formatDate, hasRestrictedChar)
- lib/__tests__/version-utils.test.js : 17 tests (filterVersions par texte/auteur/date, getFilterStats)
- lib/__tests__/rate-limit.test.js : 9 tests avec fake timers (limite, reset, retryAfter, keys indépendantes)
- vitest.config.mjs : environnement node, imports explicites (pas de globals)
- package.json : scripts test / test:watch / test:coverage + override XO pour les fichiers de test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 06:30:10 +04:00
cedric and Claude Sonnet 4.6
170c3c5e90
security: Content Security Policy et headers HTTP sécurité
...
- Renomme next.config.js → next.config.mjs (ESM, satisfait unicorn/prefer-module)
- Ajout de headers() avec CSP stricte :
script/style-src 'unsafe-inline' (requis Next.js + Emotion/MUI)
connect-src dynamique depuis les env vars Directus (API + WebSocket)
object-src 'none', frame-ancestors 'none', base-uri 'self'
img-src 'self' data: blob: (html2canvas / export PDF)
- Ajout X-Frame-Options, X-Content-Type-Options, Referrer-Policy,
Permissions-Policy sur toutes les routes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 21:55:40 +04:00
cedric and Claude Sonnet 4.6
dc1f115bd6
security: sanitiser la sortie marked avec DOMPurify (XSS)
...
export-pdf-button et print-button injectaient marked(content) directement
dans innerHTML / document.write. Un lien Markdown javascript: passait le
filtre hasRestrictedChar et pouvait s'exécuter.
Ajout de DOMPurify.sanitize() via import dynamique (déjà présent en dep
transitive de jspdf) sur les deux composants, avec whitelist de tags
et d'attributs stricte. markdown-renderer n'est pas touché car
react-markdown-preview utilise rehype-sanitize en interne.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 21:48:26 +04:00
cedric and Claude Sonnet 4.6
d8a63bc4d8
feat: rate limiting sur les routes d'authentification critiques
...
- Ajout de lib/rate-limit.js : fabrique de limiter en mémoire (closure +
Map avec nettoyage lazy), sans dépendance externe, réutilisable
- Ajout de middleware.js : intercepte /api/auth/register (5 req/15min)
et /api/auth/callback/credentials (10 req/5min), répond 429 + Retry-After
- Ajout de tasks/todo.md et tasks/lessons.md (suivi CLAUDE.md)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 21:30:38 +04:00
cedric
22130529f6
feat: récupère le total des votes
2026-01-24 23:35:48 +04:00
cedric
b838f46b2b
fix: change color & variant pour le total des votes
2026-01-24 22:25:53 +04:00
cedric
c2f8a4fb19
feat: ajout du nombre de vote total
2026-01-24 22:14:49 +04:00
cedric
a184665ed1
feat: simplifie la vue timeline
2026-01-24 21:34:02 +04:00
cedric
be45cc1cc0
docs: ajout de proxy_buffer et X-Forwarded-Host dans la configuration nginx
2026-01-24 17:56:56 +04:00
cedric
5ee2e3707a
build: upgrade next-auth
2026-01-24 13:42:20 +04:00
cedric
6f214f7468
feat: ajoute la possibilité de désactiver les websockets
2026-01-24 13:22:35 +04:00
cedric
8ec761b2c8
fix: ajout d'un cercle circulaire lors du chargement des commentaires
2026-01-24 12:23:04 +04:00
cedric
315c71baa4
feat: denier titre publié dans le select lors de la création d'article
2026-01-24 09:08:20 +04:00
cedric
d19fbf990b
feat: ajout de la timezone pour les exports
2026-01-24 00:40:38 +04:00
cedric
760ca0609d
docs: ajout de la documentation pour le déploiement
2026-01-23 23:23:09 +04:00
cedric
de81fbfe5c
fix: change titres sorting
2026-01-22 11:38:30 +04:00
cedric
1cf621b752
chore: renomme domaine konstitisyon.la vers konstitisyon.nu
2026-01-10 23:41:57 +04:00
cedric
e7c4343bfc
build: upgrade react-md-editor, jspdf, marked & react-virtuoso
2026-01-05 21:07:43 +04:00
cedric
2701957af8
fix: ferme les votes sur les versions obsolètes dans PDF/Print
2026-01-04 13:14:09 +04:00
cedric
e101f503d2
feat: améliorer la gestion de WebSocket Directus
2026-01-04 13:13:49 +04:00
cedric
47d58680b3
build: upgrade Mui & d'autres lib liées
2026-01-04 13:13:25 +04:00
cedric
5679d71b5b
build: upgrade date-fns vers 4.1.0
2026-01-04 13:13:03 +04:00
cedric
6134755888
fix: ajout de await à searchParams
2026-01-04 13:12:49 +04:00
cedric
7c41beb992
fix: erreur explicite lors de l'échec de connexion
2026-01-04 13:12:10 +04:00
cedric
1cedf24a65
chore: ajout de next.config
2026-01-04 13:11:59 +04:00
cedric
5249dda717
build: upgrade directus/sdk
2026-01-04 13:11:34 +04:00
cedric
21bc604fb8
refactor: replace middleware par proxy
2026-01-04 13:11:20 +04:00
cedric
2047ec0088
build: upgrade next, react & react-dom
2025-12-23 19:09:40 +04:00
cedric
d47df252e7
build: upgrade next-auth
2025-07-24 12:13:45 +04:00
cedric
af7189dd6e
fix: corrigé couleur texte markdown timeline
...
- Ajout useTheme pour accès aux couleurs Material-UI
- Utilisation theme.palette.text.secondary pour le markdown
- Compatible thèmes sombre et clair
- Texte markdown maintenant lisible sur tous fonds
2025-07-24 11:34:08 +04:00
cedric
cd8fd59a7f
fix: ajouté rendu markdown dans extraits timeline
...
- Import du composant MarkdownRenderer dans version-timeline.js
- Logique d'extrait améliorée préservant structure markdown
- Points de coupure intelligents (phrases, paragraphes, mots)
- Longueur d'extrait augmentée à 150 caractères
- Fallback vers Typography pour texte simple
2025-07-24 11:30:35 +04:00
cedric
21a38d3987
feat: upgrade vers Next.js 15.4.3 et React 19
...
- Upgrade Next.js de 14.2.3 vers 15.4.3
- Upgrade React et React DOM vers version 19
- Modification page dynamique [id] pour compatibilité Next.js 15
- Gestion asynchrone des params et searchParams
- Tests de build et développement réussis
2025-07-24 11:15:35 +04:00
cedric
b6320806c1
fix: amélioré layout table versions avec boutons actions
...
- Augmenté largeur colonne Actions: 100px → 200px
- Optimisé largeurs: Version 200px→180px, Date 120px→140px
- Ajouté flexWrap et gap réduit (0.3) pour boutons
- Hauteur minimum cellules actions: 64px
- Style compact pour bouton Comparer (minWidth auto)
2025-07-24 08:17:33 +04:00
cedric
c9cf8dcdff
feat: ajouté impression optimisée pour versions
...
- Composant PrintButton avec fenêtre popup dédiée
- Styles CSS print-optimized pour A4 avec media queries
- Support markdown complet avec rendu approprié
- Interface print avec boutons Imprimer/Fermer
- Feedback snackbar cohérent avec autres composants
- Intégré dans VersionPage, ListVersions et VersionTimeline
2025-07-24 08:08:15 +04:00
cedric
89fd63c8d7
fix: corrigé affichage erreurs vote backend
...
- Extraction message d'erreur depuis objet Directus
- Gestion fallback pour différents formats d'erreur
- Affichage correct messages extension backend en français
2025-07-24 07:51:05 +04:00
cedric
06c037a76e
fix: ajouté vérification délai vote dans VersionTimeline
...
- Calcul isVoteDisabled basé sur 3 jours après création
- Désactivation VoteButtons pour versions anciennes
- Chip visuel "Vote fermé" pour versions expirées
- Cohérence avec VersionPage et VersionComparison
2025-07-23 20:39:03 +04:00
cedric
55b41a906b
feat: ajouté support markdown dans export PDF
...
- Parser markdown avec marked pour rendu HTML complet
- Styles CSS pour éléments markdown (headings, listes, code, etc.)
- Nettoyage automatique des styles temporaires
- Fallback texte brut si parsing markdown échoue
2025-07-23 20:35:41 +04:00
cedric
19941839a6
feat: ajouté export PDF pour versions
...
- Composant ExportPdfButton avec jsPDF + html2canvas
- Support multi-pages avec formatage professionnel
- Intégré dans VersionPage, ListVersions et VersionTimeline
- Métadonnées complètes: nom, auteur, date, statut vote
- Dynamic imports pour optimiser bundle size
2025-07-23 20:31:55 +04:00
cedric
0a1ab064d7
fix: ajouté feedback visuel pour bouton partage en-tête
...
- Notifications snackbar pour partage natif et copie presse-papier
- Gestion erreurs avec messages appropriés
- Fallback complet pour navigateurs plus anciens
2025-07-23 20:14:53 +04:00
cedric
db8b5dd1c2
feat: synchronisé votes entre header et comparaison
...
- État voteRefreshKey partagé pour forcer refresh des VoteButtons
- Props onVoteResult passées à VersionComparison
- Clés uniques pour chaque VoteButtons (header/comparison)
- Snackbar local dans VersionComparison si pas de callback parent
2025-07-23 20:13:07 +04:00
cedric
f00b7c827d
fix: ajouté feedback visuel pour votes sur VersionPage
...
- Callback onVoteResult pour VoteButtons avec notifications
- Snackbar pour confirmer succès/erreur des votes
- État snackbar avec gestion des messages
2025-07-23 20:10:01 +04:00
cedric
4964938485
fix: ajouté variables NEXT_PUBLIC pour footer côté client
...
- Variables NEXT_PUBLIC_APP_FOOTER_TEXT/URL dans .env.sample
- Supprimé console.log debug dans Footer
2025-07-23 20:06:34 +04:00
cedric
6dc1bf5a6f
fix: ajouté 'use client' au composant VersionPage
2025-07-23 19:59:51 +04:00
cedric
8f272d931c
fix: corrigé chemin import auth.js dans route dynamique
2025-07-23 19:58:32 +04:00
cedric
91332724a3
feat: intégré bouton partage dans ListVersions et VersionTimeline
...
- Ajout ShareButton dans colonnes Actions table et cards timeline
- Génération URLs partageables vers versions spécifiques
- Support partage natif avec fallback copie presse-papier
2025-07-23 19:54:20 +04:00
cedric
529452b0fb
feat: créé route dynamique et page version individuelle
...
- Route app/dashboard/versions/[id]/ pour URLs spécifiques
- Composant VersionPage avec affichage et partage natif
- Support modes comparison/content via paramètre URL
2025-07-23 19:54:10 +04:00
cedric
2a9c0497d9
feat: intègre CopyButton dans VersionComparison
2025-07-23 19:45:38 +04:00
cedric
0c7b097cb0
feat: intègre CopyButton dans ListVersions
2025-07-23 19:45:30 +04:00
cedric
ff8da3010d
feat: intègre CopyButton dans VersionTimeline
2025-07-23 19:45:21 +04:00
cedric
7831ab473b
feat: ajoute composant CopyButton
2025-07-23 19:45:06 +04:00
cedric
1ce038054e
feat: intègre recherche et filtres dans ListVersions
2025-07-23 18:50:23 +04:00
cedric
65e6498802
feat: ajoute composant VersionFilters
2025-07-23 18:50:16 +04:00
cedric
502ac388af
feat: ajoute composant VersionSearch
2025-07-23 18:50:07 +04:00
cedric
5a5264fb7a
feat: ajoute utilitaires de filtrage des versions
2025-07-23 18:49:54 +04:00
cedric
60d7972420
deps: ajoute use-debounce pour recherche
2025-07-23 18:49:38 +04:00
cedric
870f07669e
refactor: utilise VoteButtons dans VersionComparison
2025-07-23 18:21:34 +04:00
cedric
1ef29e517c
refactor: utilise VoteButtons dans VersionTimeline
2025-07-23 18:21:24 +04:00
cedric
5c3311ca5f
feat: ajoute composant VoteButtons réutilisable
2025-07-23 18:21:12 +04:00
cedric
2cf7273f29
feat: améliore interface VersionDialog
2025-07-23 17:41:15 +04:00
cedric
e5b2671289
feat: ajoute bascule table/timeline dans ListVersions
2025-07-23 17:41:00 +04:00
cedric
824408afa9
feat: ajoute composant VersionTimeline
2025-07-23 17:40:45 +04:00
cedric
bf87b08fa9
deps: ajoute @mui/lab
2025-07-23 17:39:02 +04:00
cedric
f7dcc837d2
feat: ajoute affichage auteur pour toutes les versions
2025-07-23 14:30:09 +04:00
cedric
3bb26c7239
feat: améliore label légende versions obsolètes
2025-07-23 14:04:34 +04:00
cedric
709128f881
feat: améliore design cartes et légende comparaison versions
2025-07-23 13:40:34 +04:00
cedric
acabbae951
fix: corrige rendu markdown dans comparaison versions
2025-07-23 12:22:21 +04:00
cedric
09d17dafaa
feat: ajoute rendu markdown aux articles
2025-07-23 12:21:57 +04:00
cedric
f0e5e07386
feat: intègre éditeur riche pour articles uniquement
2025-07-23 12:21:43 +04:00
cedric
2d824175e2
feat: ajoute RichTextEditor avec compteur
2025-07-23 12:21:32 +04:00
cedric
715891e657
feat: ajoute MarkdownRenderer avec couleurs personnalisées
2025-07-23 12:21:10 +04:00
cedric
899cf96ef0
deps: ajoute @uiw/react-md-editor
2025-07-23 12:20:36 +04:00
cedric
247151012d
refactor: renomme LogoutCountdown en SessionExpired
2025-07-23 08:45:15 +04:00
cedric
f1c24080da
feat: supprime le compte à rebours de déconnexion
2025-07-23 08:44:07 +04:00
cedric
1c88e36a3e
WS souscription
2025-01-04 19:10:21 +04:00
cedric
0860132763
Changement de couleur de la date de version en fonction du statut du vote
2024-12-17 19:04:10 +04:00
cedric
af53eafc2d
feat: interdit le vote pour les versions de plus de 3 jours
2024-12-17 12:37:50 +04:00
cedric
4cd303a910
typo: message explicite pour une erreur lors d'un vote
2024-12-17 12:36:56 +04:00
cedric
7902537df1
refactor: versionData > versionCompare + Ajout de la date de création d'une version et de l'utilisateur qui l'a créée
2024-12-17 05:45:16 +04:00
cedric
9e78a32d8d
fix: error when no titre or article
2024-12-16 13:34:05 +04:00
cedric
e4a294dece
docs: améliore la documentation avec le schéma de la base de données
...
- Ajoute un diagramme ERD en Mermaid montrant la structure de la BDD
- Généralise la description du projet (non spécifique à Haïti)
- Réorganise la section modèle de données
- Clarifie les relations entre les entités
2024-12-16 10:19:20 +04:00
cedric
aa02a51a1b
feat: Implémentation du système de vote sur les versions
...
- Ajout des fonctions de vote dans directus.js (handleVote, getUserVote)
- Intégration des boutons de vote dans version-comparison.js
- Support de l'annulation de vote par double-clic
- Gestion des retours visuels (succès/erreur)
- Passage des props nécessaires dans list-versions.js
2024-12-16 09:14:02 +04:00
cedric
3105327735
Add vote icons to current version
2024-12-16 03:32:33 +04:00
cedric
00472914c7
Typo for VersionComparison component
2024-12-03 19:12:15 +04:00
cedric
619f2c566b
Improve VersionComparison
2024-12-03 11:51:29 +04:00
cedric
2aa14d41f6
Update directus/sdk
2024-12-03 08:00:11 +04:00
cedric
d5365596b0
Update mui dependencies
2024-12-03 07:56:11 +04:00
cedric
d5a363953b
Remove unnecessary attributes 'item' in Grid component
2024-12-01 22:55:35 +04:00
cedric
c0c556cfb8
Fix error when creating comment
2024-12-01 22:46:11 +04:00
cedric
2fc797fa9a
Change license to AGPL-3.0
2024-12-01 18:31:26 +04:00
cedric
317161750c
Change VersionComparison spaces
2024-12-01 18:29:44 +04:00
cedric
71f18d6909
Improve ListVersion component
2024-11-28 07:55:51 +04:00
cedric
3134184ece
Create VersionComparison & VersionDialog components
2024-11-28 07:55:32 +04:00
cedric
e1048d343b
Improve GetVersions component
2024-11-28 07:54:37 +04:00
cedric
a22dbe9073
Fix error payload when creating version
2024-11-28 07:53:40 +04:00
cedric
c73d673523
Create getVersion & compareVersion in lib/directus.js
2024-11-28 07:53:12 +04:00
cedric
e1036f6c9b
Move Sign into GetVersions component
2024-09-20 11:45:43 +04:00
cedric
039be335a2
Adapt Dashboard page
2024-09-15 18:05:26 +04:00
cedric
d23839b3e8
Improve Sign component
2024-09-15 18:05:26 +04:00
cedric
e1c46f53b9
Create GetVersions component
2024-09-15 18:05:25 +04:00
cedric
3cbca927c8
Create Loading component
2024-09-15 18:05:24 +04:00