Commit Graph

273 Commits

Author SHA1 Message Date
Antigravity
a2d8d90e3d fix(sidebar): largeur nettement plus grande, graduée par breakpoint
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
+32px (320->352) était trop subtil. Élargit franchement sur desktop :
- < 768px (mobile overlay) : w-80 (320px)
- >= 768px : w-[22rem] (352px)
- >= 1024px : w-[26rem] (416px)
- >= 1536px : w-[30rem] (480px)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 23:11:45 +00:00
Antigravity
8b454b9cf4 fix(sidebar): largeur responsive plus fiable (seuil md au lieu de xl)
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 6m16s
CI / Deploy production (on server) (push) Successful in 22s
La sidebar restait à 320px en production car l'élargissement ne se
déclenchait qu'à partir du breakpoint xl (1280px). Abaisse le seuil à
md (768px) pour couvrir tous les écrans desktop en production.

- < 768px (mobile, overlay) : w-80 (320px)
- >= 768px : w-[22rem] (352px)
- >= 1536px : w-[26rem] (416px)

Le fallback Suspense du layout est aligné pour éviter tout décalage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 23:00:51 +00:00
Antigravity
36b5724b72 fix: sidebar hauteur — chaîne de dépendance au lieu de 100vh redondant
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 6m11s
CI / Deploy production (on server) (push) Successful in 22s
Root cause (expert analysis): h-screen sur aside ET parent = 2 calculs
100vh indépendants → 1px de différence en prod (subpixel, scrollbar).

Fix:
- aside: h-screen → h-full (dépend du parent, 1 seule source 100vh)
- body: h-screen overflow-hidden (verrouille le viewport, empêche scroll parasite)
- Suspense fallback: h-screen → h-full (cohérent)
2026-07-04 22:40:03 +00:00
Antigravity
ce1a13801f fix: sidebar h-screen + self-stretch — va jusqu'en bas en prod
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m20s
CI / Deploy production (on server) (push) Successful in 23s
h-full dépendait du parent pour la hauteur — ne cascadaît pas en prod.
h-screen (100vh) + self-stretch force la hauteur pleine indépendamment.
Suspense fallback aussi mis à h-screen pour éviter le flash.
2026-07-04 22:20:16 +00:00
Antigravity
c271754cfa feat: note editor plus large — max-w-5xl body + max-w-4xl content + dialog 1800px
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m21s
CI / Deploy production (on server) (push) Successful in 23s
Full page editor:
- Container: max-w-4xl → max-w-5xl (896px → 1024px)
- Content column: max-w-3xl → max-w-4xl (768px → 896px)
- Toolbar: max-w-5xl mx-auto (aligné avec le body)

Dialog editor:
- max-w 1600px → 1800px, 95vw → 97vw
- Hauteur 90vh → 92vh

Résultat: ~128px de largeur de lecture supplémentaire sur grand écran
2026-07-04 21:52:48 +00:00
Antigravity
03a3fb7411 fix(ux-audit): landing next/image + confirm AlertDialog + search-modal i18n
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Landing page:
- <img> → next/image avec width/height (CLS fix)
- padding nav responsive px-4 sm:px-8

note-card:
- confirm() natif → AlertDialog (non-bloquant, stylable)
- showLeaveDialog state + dialog component

search-modal (20 chaînes FR → i18n):
- useLanguage ajouté
- 20 strings FR hardcoded → t('searchModal.*')
- Clés ajoutées dans en.json + fr.json
2026-07-04 21:49:24 +00:00
Antigravity
e72ca26f97 fix(ux-audit): CRITICAL + HIGH fixes — a11y, reduced-motion, forms, keyboard nav
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 6m24s
CI / Deploy production (on server) (push) Successful in 23s
Global (globals.css):
- prefers-reduced-motion: désactive toutes les animations/transitions
- focus-visible:ring global sur tous les éléments interactifs

Search modal:
- role="dialog" + aria-modal="true" + aria-label
- onClick backdrop ferme la modale

Insights peek:
- DOMPurify.sanitize() sur dangerouslySetInnerHTML (XSS fix)

Login form:
- autoComplete="email" / "current-password"
- htmlFor sur tous les labels

Register form:
- autoComplete="name" / "email" / "new-password"
- htmlFor sur tous les labels

GridCard (notes-list-views):
- Actions visibles sur mobile (opacity-100 sm:opacity-0)
- aria-sort sur colonne triable
- role="button" + tabIndex + onKeyDown sur lignes table

Editorial view:
- role="button" + tabIndex + onKeyDown sur articles
- Menu trigger aria-label + visible mobile

Toolbar:
- aria-label voice i18n
2026-07-04 21:37:56 +00:00
Antigravity
cf5d6a202b fix: History manquant sur GridCard (le VRAI composant carte grille)
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 6m17s
CI / Deploy production (on server) (push) Successful in 22s
Root cause: le mode grille utilise GridCard dans notes-list-views.tsx,
PAS NoteCard de note-card.tsx. Toutes les fixes précédentes étaient
sur le mauvais composant.

Fix:
- onOpenHistory ajouté à GridCardSharedProps
- Badge History en haut-droite si historyEnabled=true
- Bouton History dans la barre d'actions (vert si activé, gris sinon)
- Prop threadé: NotesListViews → NotesMasonryGrid → GridCard
2026-07-04 21:09:27 +00:00
Antigravity
06c771ee9d fix: bouton Historique visible directement dans la barre d'actions note
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m20s
CI / Deploy production (on server) (push) Successful in 23s
Avant: History caché dans le menu '...' (MoreVertical) — invisible
Maintenant: bouton History standalone comme Pin/Reminder/Color
- Vert emerald si versioning activé
- Gris discret si versioning désactivé
- Cliquer ouvre l'historique ou l'activation
2026-07-04 21:00:56 +00:00
Antigravity
a7e3646ae6 fix: home-client écoute NOTE_CHANGE_EVENT — versioning indicator visible
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Root cause: home-client.tsx n'écoutait PAS NOTE_CHANGE_EVENT.
Quand versioning était activé depuis l'éditeur, emitNoteChange était dispatché
mais personne ne mettait à jour la liste des notes → historyEnabled restait false
sur les cartes/liste.

Fix: useEffect qui écoute NOTE_CHANGE_EVENT et patch les notes + pinnedNotes
avec les champs mis à jour (historyEnabled, etc.).
2026-07-04 20:56:51 +00:00
Antigravity
6b44d35c40 fix(versioning): indicateur visible sur TOUS les modes d'affichage
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Card view:
- Badge plus visible: bg-emerald-500/15 + border + backdrop-blur
- Position top-2.5 end-2.5 (top-right corner, bien visible)

Table/list view (notes-list-views.tsx):
- Icône History 11px text-emerald-500 à côté du titre (comme Pin)
- Present sur toutes les lignes du tableau

Editorial view (notes-editorial-view.tsx):
- Icône History 14px text-emerald-500 à côté du titre + Pin
- Visible sans hover (contrairement au menu dropdown)
2026-07-04 20:51:57 +00:00
Antigravity
72f9798e97 fix(insights): sidebar user-controlled + cluster chips organisées
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m25s
CI / Deploy production (on server) (push) Successful in 23s
Sidebar (UX: User Freedom):
- Visible par défaut sur /insights (pas caché par le système)
- Toggle via bouton hamburger: toggle-insights-sidebar event
- Préférence persistée en localStorage (insights-sidebar-collapsed)
- User décide: voir ou cacher le sidebar

Cluster chips:
- Triées par taille (plus grand cluster en premier)
- Compteur de notes par cluster (badge arrondi)
- max-w-[120px] sur le nom pour éviter overflow
- padding/gap plus compacts (px-2.5 py-1 gap-1.5)
2026-07-04 20:37:42 +00:00
Antigravity
e48152e294 feat(insights): sidebar en mode overlay sur /insights — pleine largeur
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
AGENTS.md: 'pas la liste carnets sur /insights'
- sidebar.tsx: isImmersiveRoute sur /insights → fixed overlay au lieu de relative
- Toutes tailles d'écran: sidebar caché par défaut, s'ouvre en drawer
- Bouton hamburger visible sur desktop + mobile (pas lg:hidden)
- Insights prend 100% de la largeur → graphe + dashboard plus spacious
2026-07-04 20:32:35 +00:00
Antigravity
d48312dfc2 feat(insights): peek panel au clic sur un nœud — slide droite, contenu note
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
- handleNoteClick fetch la note + ouvre peek panel au lieu de naviguer
- Panel fixed right (left en RTL), spring animation (stiffness 340 damping 34)
- Header avec titre + boutons Maximize2 (ouvrir note complète) et X (fermer)
- Content rendu en read-only via dangerouslySetInnerHTML
- prefers-reduced-motion: animation désactivée
- responsive: w-full sur mobile, 50vw/640px max sur desktop
2026-07-04 20:29:21 +00:00
Antigravity
10101e5918 fix(deploy): retire sanity-check qui bloquait le deploy (vars pas toutes dans Gitea)
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m39s
CI / Deploy production (on server) (push) Failing after 3s
2026-06-28 14:55:44 +00:00
Antigravity
030baac309 fix(sidebar): largeur w-80 fixe (était w-72 sous 1024px) + spacing prototype
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
- w-72 lg:w-80 → w-80 (32px de plus sous 1024px, aligné prototype)
- py-4 → py-5 (rail plus aéré)
- gap-3 → gap-[18px] (logo→nav)
- gap-1.5 → gap-2 (boutons nav)
- mb-1 → mb-2 (logo)
- w-[3px] → w-1 (indicateur actif plus visible)
2026-06-28 13:44:02 +00:00
Antigravity
89d2ffad46 fix: emitNoteChange après enableNoteHistory — carte se met à jour
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m21s
CI / Deploy production (on server) (push) Failing after 4s
enableNoteHistory() mettait à jour la DB mais ne notifiait pas la home page.
L'éditeur fetch la note à jour (historyEnabled=true) → icône visible.
La home gardait les données en cache (historyEnabled=false) → pas d'icône.

Fix: emitNoteChange({ type: 'updated', note: { ...note, historyEnabled: true } })
dispatché après les 2 points d'appel dans note-document-info-panel.tsx.
2026-06-28 10:02:33 +00:00
Antigravity
a1b39959de fix: icône versioning déplacée top-3 end-3 + visibilité renforcée
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
L'icône était à bottom-3 end-3, masquée par la barre d'actions (bottom-0 full-width).
Déplacée en top-3 end-3 avec badge vert (bg-emerald-500/10 + text-emerald-600)
pour être visible d'un coup d'œil.
2026-06-28 09:58:08 +00:00
Antigravity
334fce5fc1 feat: indicateur versioning sur cartes + toolbar éditeur
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m35s
CI / Deploy production (on server) (push) Failing after 3s
Note card:
- Icône History en overlay bottom-right (visible si historyEnabled=true)
- Discrète: text-muted-foreground/50, ne pollue pas l'UI
- Tooltip 'Historique des versions activé'

Toolbar éditeur:
- Icône History à côté du statut Saved/Dirty
- Visible seulement en sm+ (desktop)
- cursor-help + tooltip

i18n:
- notes.historyEnabledTooltip ajouté aux 15 locales (FR/EN traduits, 13 EN placeholder)
2026-06-28 09:45:29 +00:00
Antigravity
1fc790f0c7 feat(insights): bouton Fit view sur le graphe — reset zoom + clear focus
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m21s
CI / Deploy production (on server) (push) Failing after 2s
- zoomRef stocke le behavior d3.zoom pour accès externe au useEffect
- handleFitView: d3.zoomIdentity reset (600ms transition) + clear selectedClusterId
- Bouton Maximize2 en haut à droite du graphe avec aria-label
- cursor-pointer + focus-visible:ring pour a11y
2026-06-28 09:28:36 +00:00
Antigravity
b3fb46fc52 feat(insights): UX gap closure — i18n, network graph, recalc panel, toasts
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m6s
CI / Deploy production (on server) (push) Has been skipped
Bugs fixes:
- network-graph.tsx: 2 strings hardcoded FR → props i18n (untitledLabel, resetFocusLabel)
- Panneau recalcul: clés i18n réutilisées avec mauvais sens → nouvelles clés recalcSystem.*
- 13 locales: section insightsView.* complète (67 clés × 13 = 871 traductions)

UX features:
- Hint /insights ≠ /graph (semanticGraphLegend + lien vers /graph)
- Toasts succès/échec/zéro-clusters après analyse (analysisSuccess/Failed/NoClusters)
- État vide différencié: emptyNeedMoreNotes si < 10 notes
- Tips contextuels sections Bridge Notes et Suggestions

Sprint:
- 4 epics marqués done (3,4,5,6 — toutes stories terminées)
- sprint-status.yaml last_updated corrigé
2026-06-28 08:06:05 +00:00
Antigravity
96e7902f01 feat: publication IA (magazine/brief/essay) + fixes critique
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m22s
CI / Deploy production (on server) (push) Has been skipped
Publication IA:
- 4 templates (magazine, brief, essay, simple) avec CSS riche
- Rewrite IA (article/exercises/tutorial/reference/mixed)
- Modération avec timeout 12s + fallback safe
- Quotas publish_enhance par tier (basic=2, pro=15, business=100)
- Détection contenu stale (hash)
- Migration DB publishedContent/publishedTemplate/publishedSourceHash

Fixes:
- cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast
- _isShared ajouté au type Note (champ virtuel serveur)
- callout colors PDF export: extraction fonction pure testable
- admin/published: guard note.userId null
- Cmd+S fonctionne en mode dialog (pas seulement fullPage)

i18n:
- 23 clés publish* traduites dans les 15 locales
- Extension Web Clipper: 13 locales mise à jour

Tests:
- callout-colors.test.ts (6 tests)
- note-visible-in-view.test.ts (5 tests)
- entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs
- 199/199 tests passent

Tracker: user-stories.md sync avec sprint-status.yaml
2026-06-28 07:32:57 +00:00
Antigravity
902fe95a69 fix: PublishDialog sorti du toolbar div — position fixed correcte
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m16s
CI / Deploy production (on server) (push) Successful in 21s
2026-06-20 17:40:34 +00:00
Antigravity
52c4cb1dee feat: chunks recherche (snippets) + script migration
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
1. Recherche: fetchChunkSnippets() — après le classement RRF existant,
   récupère les passages précis qui matchent depuis NoteEmbeddingChunk.
   Pur affichage, AUCUN changement de classement.

2. Script migration: scripts/migrate-chunk-embeddings.ts
   Indexe toutes les notes existantes en fragments.
   Batch de 10, barre de progression.
   Usage: npx tsx scripts/migrate-chunk-embeddings.ts

3. Memory Echo chunk-level: à faire (US restante)
2026-06-20 17:07:38 +00:00
Antigravity
e9e829e579 fix: TOUTES les clés i18n manquantes ajoutées — 0 erreur
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m15s
CI / Deploy production (on server) (push) Successful in 37s
- general.continue/send
- structuredViews.tagApplied/filterDone/filterTodo/propertyStatus
- wizard.taskA/taskB
- richTextEditor.preview*Tip (7 clés SlashPreview)
- wizard.* au niveau racine (48 clés FR + 48 EN)
- Total: 0 clé manquante pour FR et EN
- 0 erreur TypeScript
2026-06-20 17:01:04 +00:00
Antigravity
128aa842f1 fix: SlashPreview i18n + Note type isPublic/publicSlug
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m15s
CI / Deploy production (on server) (push) Successful in 22s
- SlashPreview: 30+ chaînes FR → t() avec fallback
- SlashPreview accepte t en prop
- Note type: ajout isPublic/publicSlug/publishedAt (élimine les erreurs TS)
- NoteType: richtext déjà présent (confirmé)
2026-06-20 16:41:53 +00:00
Antigravity
35c79ffd1c fix: Outline se met à jour en temps réel quand les titres changent
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m39s
CI / Deploy production (on server) (push) Successful in 21s
Ajout d'un listener editor.on('update') dans OutlineView.
Avant: le sommaire était figé au moment de l'insertion.
Maintenant: il se recalcule à chaque ajout/modif/suppression de titre.
2026-06-20 16:28:54 +00:00
Antigravity
87efb807f3 perf: debounce getHTML() dans onUpdate — 400ms au lieu de chaque frappe
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
getHTML() traverse tout le document ProseMirror à chaque transaction.
Sur les notes longues (500+ blocs), cela causait des lags visibles.
Maintenant debounced à 400ms via setTimeout + clearTimeout.
Le wikilink detection reste synchrone (réactif).
2026-06-20 16:27:30 +00:00
Antigravity
ce596fa947 fix: i18n complet — mobile, backlinks, undo/redo, content-area
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
- mobile-action-sheet.tsx: 15 chaînes → t()
- wikilinks-backlinks-panel.tsx: 3 chaînes → t() + import useLanguage
- note-content-area.tsx: 'Cliquez pour éditer' → t()
- undo-redo-feedback-extension.ts: strings → options configurables
- i18n FR/EN: 11 nouvelles clés (mobile.*, editor.*)
- SlashPreview et SlashCommand: déjà OK (i18n via localCommands)
2026-06-20 16:25:49 +00:00
Antigravity
af277f418a fix: console.log retirés du code production + i18n slash menu
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m31s
CI / Deploy production (on server) (push) Successful in 21s
- Retiré tous les console.log de rich-text-editor.tsx (2)
- Retiré console.log qui fuitait le contenu utilisateur dans chart-suggestions-dialog.tsx
- Commenté tous les console.log dans notes.ts (9 appels)
- i18n: slashCharts, slashLivingBlock, frequentCommands traduits
2026-06-20 16:18:27 +00:00
Antigravity
e07af2084b fix: i18n slash menu — Suggest Charts, Living Block, Fréquents traduits
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Plus de texte en dur dans le slash menu. Tout passe par t().
Clés ajoutées dans FR/EN: slashCharts, slashLivingBlock, frequentCommands.
2026-06-20 16:15:41 +00:00
Antigravity
018db001b4 feat: sélection texte → Toggle/Callout dans le BubbleMenu
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Quand l'utilisateur sélectionne du texte (1 ou plusieurs paragraphes),
la barre flottante affiche deux boutons:
- ChevronsRightLeft → enveloppe dans un Toggle
- MessageSquareWarning → enveloppe dans un Callout
Le contenu sélectionné devient le contenu du bloc.
2026-06-20 16:14:07 +00:00
Antigravity
af3f130549 fix: suppression raccourcis clavier inutiles — slash menu uniquement
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m4s
CI / Deploy production (on server) (push) Has been skipped
Les blocs (toggle, callout, outline, columns, math) n'ont plus de
raccourcis clavier. Insertion via le menu / uniquement, comme Notion.
Plus de confusion pour l'utilisateur.
2026-06-20 15:55:15 +00:00
Antigravity
ee70e74bf5 fix: 5 bugs critiques de l'éditeur (Phase 1 audit)
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m39s
CI / Deploy production (on server) (push) Successful in 22s
1. replaceAll (Find & Replace) — une seule transaction ProseMirror
   au lieu d'un forEach cassé. Tous les matchs sont maintenant remplacés.

2. Link Preview unwrap — deleteNode() au lieu de clearer les attrs
   qui laissaient un nœud fantôme invisible dans le document.

3. Conversion Markdown → richtext — breaks: true dans marked.parse()
   Les simple newlines sont maintenant convertis en <br>.
   + préserve les blocs custom (toggle, callout, math, columns,
   outline, link-preview) en commentaires HTML lors de l'export MD.

4. emitNoteChange exercices — shape corrigée (type:'created' attend
   un objet Note, pas noteId/notebookId séparés).

5. Raccourcis clavier sans conflit :
   Cmd+Shift+C → Cmd+Alt+C (callout, avant: copier)
   Cmd+Shift+O → Cmd+Alt+O (outline, avant: historique/signets)
   Cmd+Shift+L → Cmd+Alt+L (colonnes, avant: lock screen macOS)
2026-06-20 15:48:18 +00:00
Antigravity
17594124b0 feat: modération IA automatique à la publication
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m30s
CI / Deploy production (on server) (push) Failing after 0s
- contentModerationService branché dans /api/notes/publish
- blocked → 403, publication refusée, toast d'explication
- flagged → publié mais admins notifiés pour révision
- safe → publication normale
- PublishDialog gère les 3 cas (succès normal, flagged, blocked)
- i18n FR/EN
2026-06-20 07:51:44 +00:00
Antigravity
1774544385 fix: import Brain manquant dans admin-sidebar
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1s
CI / Deploy production (on server) (push) Has been skipped
2026-06-20 07:39:02 +00:00
Antigravity
3f3d37ebeb feat: pages publiées utilisateur (settings) + fix import Shield dupliqué
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 0s
CI / Deploy production (on server) (push) Has been skipped
- /settings/published : l'utilisateur voit ses notes publiées
  - Copier le lien, ouvrir, dépublier
  - API /api/user/published
- Onglet 'Mes pages' (Globe) dans la nav settings
- Fix: import Shield dupliqué dans admin-sidebar.tsx
- i18n FR/EN
2026-06-20 07:21:02 +00:00
Antigravity
722cb905e4 feat: panel admin pages publiées + force-dépublier + nav
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 0s
CI / Deploy production (on server) (push) Has been skipped
- /admin/published : liste toutes les notes publiées
- Bouton dépublier (force) pour chaque note
- Notification envoyée au propriétaire quand dépublié par admin
- API GET /api/admin/published (liste) + DELETE (force unpublish)
- Liens signalements affichés si notifications
- Onglet 'Pages publiées' dans sidebar admin (icône Shield)
- i18n FR/EN
- Fix: report page params Promise unwrap
2026-06-20 07:11:41 +00:00
Antigravity
a6cdcba76f feat: publication pages — design moderne + modération IA + signalement
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Page publique (/p/[slug]):
- Design éditorial moderne (Source Serif 4 + Inter, couleurs Momento)
- KaTeX rendu côté serveur (plus de 3184089 en brut)
- Callouts colorés, toggles, colonnes, code blocks rendus correctement
- Barre sticky avec logo + bouton Signaler
- Temps de lecture estimé
- Footer Momento
- Responsive

Modération:
- content-moderation.service.ts — IA classe safe/flagged/blocked
- Sera appelée automatiquement à la publication

Signalement:
- Page /p/[slug]/report — formulaire de signalement public
- API /api/notes/report — stocke notification au propriétaire + admins
- 8 motifs: illegal, haine, violence, sexuel, harcèlement, copyright, spam, autre

i18n: FR/EN
2026-06-19 22:11:51 +00:00
Antigravity
1d614dd9c0 feat: Publication de pages — notes publiques sur URL
Some checks failed
CI / Lint, Unit Tests & Build (push) Successful in 5m0s
CI / Deploy production (on server) (push) Failing after 40s
- Migration: champs isPublic + publicSlug + publishedAt sur Note
- Route publique /p/[slug] — rendu SSR sans auth, prose styled
- Server actions: publishNote / unpublishNote / getPublishedNote
- API /api/notes/publish — toggle publication + génération slug
- PublishDialog — modal avec lien copiable + bouton dépublier
- Bouton Globe dans le toolbar (vert si publiée)
- i18n FR/EN
- Pattern inspiré de BrainstormSession.isPublic
2026-06-19 22:03:53 +00:00
Antigravity
299836bd74 cleanup: audit complet — code mort supprimé, erreurs TS corrigées, i18n wizard ajouté
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m0s
CI / Deploy production (on server) (push) Successful in 1m2s
Supprimé:
- memento-note/memento-note/ (dossier fantôme, 7 erreurs TS)
- tiptap-subpage-extension.tsx + toutes ses références (feature retirée)

Corrigé:
- tiptap-columns-extension.tsx: PMNode import type → import value
- study-plan/route.ts: title null → string conversion
- csv/route.ts: paramètre implicit any

Ajouté:
- Section wizard.* complète (33 clés) dans fr.json + en.json
- generalContinue + structuredViewsTagApplied dans fr/en
2026-06-19 21:53:10 +00:00
Antigravity
723f7ef432 design: OrganizeNotebookDialog → modal centré au lieu de slider
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m24s
CI / Deploy production (on server) (push) Has been skipped
Cohérent avec Wizard, Planning, Exercices — tous en modal centré.
Scale animation au lieu de slide x. max-h-85vh avec scroll interne.
2026-06-19 21:29:27 +00:00
Antigravity
dd28b4f0bd design: OrganizeNotebookDialog redesign — propre et cohérent
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
- Panneau latéral avec fond memento-paper (cohérent avec l'app)
- Cartes de groupes avec bordures subtiles + hover brand-accent
- Boutons primary en brand-accent (bronze) au lieu de bg-ink
- Icônes dans des pastilles arrondies bg-brand-accent/10
- Animations fluides (spring, stagger)
- Dark mode supporté (dark:bg-zinc-900)
- Footer propre avec actions contextuelles par étape
2026-06-19 21:24:35 +00:00
Antigravity
52d213da67 revert: toolbar restaurée à l'état 85b7e6e — le redesign cassait tout
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
Le redesign du toolbar a détruit le layout existant. Restauration
à la version précédente qui fonctionnait (organize restauré + CSV).
2026-06-19 21:22:19 +00:00
Antigravity
c9b98065b6 fix: toolbar carnet redesign — propre et cohérent
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
- Layout mode (Grid/List/Table/Kanban) déplacé à droite
- Sort à droite avec icône compacte
- Toutes les actions IA (Résumé, Planning, Organiser) + CSV dans un menu ⋯
- Plus de boutons éparpillés — tout est dans un seul dropdown
- Layout respecte le design system existant
2026-06-19 21:19:56 +00:00
Antigravity
85b7e6e396 fix: restore OrganizeNotebookDialog — crée sous-carnets + déplace notes
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled
L'ancien organisateur (OrganizeNotebookDialog) est supérieur au mien :
- Crée des sous-carnets réels
- Déplace les notes vers ces sous-carnets
- Détecte les sous-carnets existants
- Plan éditable avant exécution (renommer, retirer notes)
Mon NotebookOrganizerDialog ne faisait que suggérer des tags.
Restauration du bouton batch.organize avec Sparkles.
2026-06-19 21:13:14 +00:00
Antigravity
6084077b54 fix: organisateur IA — apply tag utilise syncNoteLabels au lieu de properties
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m1s
CI / Deploy production (on server) (push) Successful in 1m2s
- applyTag faisait un PATCH sur /api/notes/[id]/properties avec { tags: [...] }
  mais l'API properties attend { properties: { propId: value } }
- Maintenant: PATCH /api/ai/organize-notebook qui appelle syncNoteLabels()
- Les tags sont appliqués comme LABELS (système existant) sur les notes
- Merge avec labels existants (n'écrase pas)
2026-06-19 21:06:17 +00:00
Antigravity
2ec31a3de5 fix: toolbar carnet nettoyé — un seul organisateur, i18n corrigé
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m5s
CI / Deploy production (on server) (push) Has been skipped
- Ancien bouton 'Organiser' (batch.organize) supprimé — doublon
- Nouvel organisateur (structuredViews.organizer) consolidé avec Planning + Résumé
- Actions IA regroupées avec séparateurs visuels
- Icônes plus petites (14px au lieu de 16px) pour gagner de la place
- Clé i18n corrigée : structuredViews.organizer au lieu de wizard.organizer
- CSV Import/Export maintenu dans la même zone
- OrganizeNotebookDialog marqué unused
2026-06-19 20:58:47 +00:00
Antigravity
2ec2654282 revert: sous-page retirée — doublon avec carnets + wikilinks
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m0s
CI / Deploy production (on server) (push) Successful in 1m4s
Momento a déjà une hiérarchie Carnets → Notes + wikilinks [[note]].
Les sous-pages créent une deuxième hiérarchie conflictuelle.
2026-06-19 20:42:09 +00:00
Antigravity
c21cbf84a1 revert: champ Relation retiré — doublon avec wikilinks [[note]]
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m38s
CI / Deploy production (on server) (push) Successful in 1m5s
Le champ Relation reproduit ce que les wikilinks font déjà.
Momento est centré sur les notes, pas sur les bases de données.
Ajoute de la complexité pour un bénéfice nul.
2026-06-19 20:29:33 +00:00