Commit Graph

43 Commits

Author SHA1 Message Date
Etienne Delvarre 4a38f4c24c Fix légende Binder + persistance vue active au refresh
- Binder en flex column pour que la légende apparaisse
- Vue active sauvegardée dans localStorage, restaurée au chargement

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 17:49:35 +02:00
Etienne Delvarre f715f83918 Légende statuts dans le Binder + màj statuts CSS
- Légende en bas du Binder (points colorés + labels)
- CSS statuts alignés sur NocoDB (Validée, À étudier, Abandonnée, En conflit)
- Suppression référence Germe/Posée dans le code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 17:42:23 +02:00
Etienne Delvarre 526b598769 Bug commentaires + statuts + ajout personnage depuis l'app
- Fix parseHTML commentaires (attributs perdus au rechargement)
- Statut: Posée → Validée, Germe supprimé (17 fiches migrées)
- Bouton "+" pour ajouter un personnage directement depuis le formulaire
- Zone "Après l'histoire" sur la frise (couleur prune)
- Icône frise harmonisée (symbole plat)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 17:32:00 +02:00
Etienne Delvarre e5706aa50a Ajout zone "Après l'histoire" + icône frise harmonisée
- Nouvelle section frise avec couleur prune (#8a6a8a)
- CSS light + dark theme
- Option ajoutée dans NocoDB
- Icône frise: sablier emoji remplacé par symbole plat

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 16:19:52 +02:00
Etienne Delvarre 970c190fd6 Baisse luminosité mode clair — palette moyenne
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 16:13:10 +02:00
Etienne Delvarre dc81db3c2d fix: comment deletion targets the clicked comment span, not cursor selection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 15:31:45 +02:00
Etienne Delvarre eebb9cfa69 feat: moodboard card reordering via drag handle
Grip handle (⠿) appears on hover, drag to reorder cards.
Separate from image repositioning (which uses direct mousedown on image).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:55:33 +02:00
Etienne Delvarre 7466616675 fix: moodboard no-repeat + higher res uploads (1200px instead of 400px)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:53:47 +02:00
Etienne Delvarre 405a249ed0 feat: larger moodboard cards (220px) + mouse wheel zoom on images
- Cards wider for better visual presence
- Scroll wheel zooms in/out (100-400%)
- Drag sensitivity adjusts with zoom level
- Zoom level persisted per image

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:48:43 +02:00
Etienne Delvarre e896d91681 fix: update visionData cache immediately before network save
Prevents stale reads when renderMoodboard runs after saveVisionSection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:41:53 +02:00
Etienne Delvarre 4c31b3ad97 fix: moodboard drag — dead zone, reduced sensitivity, no drag/dblclick conflict
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:35:01 +02:00
Etienne Delvarre 9ee2960b77 feat: reorganize Vision layout + moodboard image drag repositioning
- Phrase + Tags side by side (2 columns)
- Moodboard full width
- Synopsis full width
- On veut / On ne veut pas as separate cards (2 columns)
- Moodboard images: drag to reposition in any direction (2D)
- Double-click to replace image, single-click to upload on empty

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:30:07 +02:00
Etienne Delvarre e95eedd1b8 revert: use background-size cover for hero banner (square images + drag)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 14:02:25 +02:00
Etienne Delvarre e1c5d4516d fix: hero image full width with background-size 100% auto
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 13:56:48 +02:00
Etienne Delvarre a4cde29a9e Simplify tags: free text only, no categories
Remove type system (ambiance/epoque/rythme/genre/theme).
Tags are now plain strings. Old format auto-migrated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 12:56:45 +02:00
Etienne Delvarre 1f0087c73b Simplify moodboard: free images + editable captions
- Remove category/label system, replace with free text captions
- Click image area to upload, caption editable below
- Images uploaded as files to server (same as hero, avoids NocoDB limit)
- Wider cards (160px min), cleaner layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 12:55:53 +02:00
Etienne Delvarre ea396c7bde Hero image: use contain instead of cover (show full image)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 12:52:54 +02:00
Etienne Delvarre 951eb2ce25 Fix hero image zoom on theme switch
Use background-image instead of background shorthand to prevent
background-size: cover from being reset when toggling dark/light.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-29 11:51:54 +02:00
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 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 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