Commit Graph

28 Commits

Author SHA1 Message Date
Etienne Delvarre c518e01738 Fix hero image persistence: file upload instead of NocoDB base64
NocoDB LongText field has ~95KB limit, hero image is ~456KB base64.
New approach: POST /api/hero-upload saves image as file in /public/uploads/,
NocoDB stores only the path. Docker volume configured for persistence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:49:43 +02:00
Etienne Delvarre 751db0c85c Add inline comments on text passages
Collaborative annotation system:
- Select text + click "Commenter" → enter author (E/M) + comment
- Highlighted text with author-colored underline (green=Etienne, terra=Myriam)
- Click highlighted passage → popup shows comment, author, date
- Delete comment from popup
- Comments stored as marks in HTML (no separate table needed)
- Custom TipTap Mark extension loaded via esm.sh

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:42:14 +02:00
Etienne Delvarre 0b763ae9f4 Fix TipTap loading: use esm.sh instead of non-existent UMD builds
TipTap 2.x is ESM-only, no UMD on CDN. Use esm.sh to serve
ES modules from npm, expose as window globals.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:36:05 +02:00
Etienne Delvarre 709d9e0ce6 Add Rédaction view: Binder + TipTap editor
Phase 1 of Solution 3 (Scrivener-inspired writing environment):
- Binder panel: scenes grouped by act, status indicators, word counts
- TipTap rich text editor with toolbar (bold, italic, headings, lists, blockquote)
- Auto-save after 1.5s of inactivity
- New NocoDB table "Contenu" (SceneId, Texte, Mots)
- API routes: GET/PUT /api/contenu/:sceneId, GET /api/contenu (word counts)
- Total word count in binder footer
- Navigation: Vision / Frise / Rédaction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:32:40 +02:00
Etienne Delvarre 73dd0e0625 Increase Express JSON body limit to 5MB
Default 100KB was silently rejecting hero image uploads (~456KB base64).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:22:15 +02:00
Etienne Delvarre e4fe3a6c64 Vision layout overhaul: moodboard + expandable list items
- Replace Inspirations with Moodboard (image cards with labels)
- Tags and Moodboard on same row (two columns)
- Ce qu'on veut/ne veut pas: items now support title + expandable
  description (click "développer" to add detail text)
- Backwards compatible: old plain-string list items auto-migrate
- Fix hero-meta default height to 400px
- Moodboard images resized to 400px, JPEG 0.8 quality

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:20:36 +02:00
Etienne Delvarre 90e07ae692 Increase default hero banner height to 400px
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:11:10 +02:00
Etienne Delvarre cf7e8e1144 Soften three-words text color on hero banner
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:09:33 +02:00
Etienne Delvarre 07f2952b89 Fix hero image persistence: separate image and meta storage
Image base64 stored in hero-image section (raw), position/height
in hero-meta section (small JSON). Fixes save failure caused by
oversized JSON payload when wrapping base64 inside JSON.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 10:58:35 +02:00
Etienne Delvarre 5f60ba2829 Hero image: drag to reposition + adjustable height
- Click and drag the hero image vertically to adjust framing
- Height slider appears on hover below the banner
- Position (Y%) and height saved to NocoDB as JSON
- Backwards compatible with legacy base64-only format
- Upload button moved to top-right controls overlay

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 10:52:21 +02:00
Etienne Delvarre faa8da6820 Hero banner — plus haut (280px) + image de fond uploadable
- Hauteur 280px (était 180px)
- Clic sur la bannière ouvre un sélecteur de fichier
- Image redimensionnée (max 1600px) et stockée en base64 dans NocoDB
- Indicateur "Cliquer pour changer l'image" au survol
- Texte reste éditable (clic ne déclenche pas l'upload)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 09:17:36 +02:00
Etienne Delvarre 0574b9ab1e Vision éditable — contenu chargé depuis NocoDB
- Nouvelle table NocoDB Vision (9 sections : trois-mots, phrase, synopsis, tags, listes, inspirations)
- Routes API /api/vision GET + PATCH dans server.js
- Frontend : contenteditable sur les champs texte, sauvegarde auto au blur
- Tags, listes et inspirations : ajout/suppression/édition en place
- Indicateur "Enregistré" discret en bas à droite
- Variable NOCODB_VISION_TABLE_ID ajoutée

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 08:49:26 +02:00
Etienne Delvarre 8f3635908d Frise : augmenter la hauteur par défaut du champ Résumé
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 19:49:51 +02:00
Etienne Delvarre 149ea95af2 Vision : remplacer contenu réel par placeholders inspirants
Myriam doit découvrir la page et se sentir invitée à écrire
son propre contenu — pas lire un synopsis qu'elle n'a pas validé.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 19:46:03 +02:00
Etienne Delvarre b308e1026c Corriger tous les accents manquants sur la page Vision
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 18:33:25 +02:00
Etienne Delvarre 7a6c430256 Vision en premiere page par defaut
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 18:30:55 +02:00
Etienne Delvarre 89d68e0c84 Vision : retirer max-width pour occuper toute la largeur
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 18:29:55 +02:00
Etienne Delvarre 9529565c1c Ajouter page Vision avec contenu reel RdB
Navigation sidebar Frise/Vision. Page Vision statique avec :
- Banniere trois mots fondateurs (gracieux/ingenieux/chaleureux)
- Synopsis complet
- Tags ambiance/themes
- Ce qu'on veut / ne veut pas
- 12 references d'inspiration
- Citation en filigrane

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 18:27:44 +02:00
Etienne Delvarre 8471e477db Recentrer les titres d'actes quand peu de cartes visibles après filtrage
Recalcule la largeur de chaque section d'acte dans applyFilters()
en comptant uniquement les cartes visibles (non filtrées).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 18:00:40 +02:00
Etienne Delvarre bb4edde5dc Add filter bar (personnage, statut, type, search)
Filters hide non-matching cards via CSS class. Filter options
are populated dynamically from NocoDB data and column options.
Clear button resets all filters.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 17:53:04 +02:00
Etienne Delvarre 4d6c9c531a Show more summary text on cards (3 lines → 8 lines)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 16:54:44 +02:00
Etienne Delvarre 37d6c16c57 Make Acte 3 olive color greener
Light: #7a5c40 → #6a7a42, Dark: #a08a6a → #8aaa5a

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 16:34:24 +02:00
Etienne Delvarre 717f20cc73 Acte-based card colors + larger fonts and cards
- Card top border now reflects the Acte color (blue-grey, brown, terra, olive)
  instead of the Type
- Increased card width to 260px, title to 18px, summary to 15px, badges to 13px
- Bumped acte labels, topbar title, sidebar logo, button sizes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 16:30:47 +02:00
Etienne Delvarre 58390deb1e Increase font sizes and card dimensions 2026-05-28 16:15:19 +02:00
Etienne Delvarre 68b880041f Frise horizontale + mode sombre
Cartes cote a cote (defilement horizontal infini)
Zone En attente separee en bas
Dark mode toggle avec persistence localStorage
2026-05-28 13:56:25 +02:00
Etienne Delvarre 1c28953394 Fix auth gate — protect index.html behind login 2026-05-28 13:49:14 +02:00
Etienne Delvarre 50d5ac518d Add package-lock.json, fix Dockerfile npm install 2026-05-28 13:46:19 +02:00
Etienne Delvarre ce95a02012 Initial commit — TdB RdB frise narrative
Express.js + NocoDB + SortableJS drag-and-drop
Design V2 (Playfair Display + Lora, palette chaude)
Auth cookie, proxy NocoDB, édition en modal

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-28 13:39:47 +02:00