Audio résolu par identifiant de ressource, portrait et nom du narrateur au-dessus du lecteur.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
Article et parcours (liste et carte). Corrige au passage l'audio rangé par identifiant de ressource, qui n'avait jamais de lecteur : useAudioResource le résout.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011VxSQeGQYUvPmSEoGdnidA
Miroir du Flutter, qui fait référence : la mention est posée dans ResourceViewer, partagé
par Article, Slider, Quiz et Parcours. La langue vient du contexte visiteur, le libellé du
dictionnaire d'interface existant.
Le type ResourceDTO déclare enfin `origin` : le backend l'envoyait déjà, le front ne le
lisait pas.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
/download/{instanceId}/{config}/{section} présente l'app mobile de
l'instance : nom, image principale, liens stores, dans la langue du
navigateur. Sans app mobile, redirection vers la visite web.
Le nom de l'application titre l'accueil et l'onglet, le bouton de scan
suit le réglage du manager, et le scanner lit le préfixe download.
Suggestion de contenu quand le visiteur entre dans la zone GPS d'une
section, sur activation explicite. Pas de notification système : un
navigateur ne suit pas la position en arrière-plan.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
§8.3 des CGU : la mention doit être accessible depuis l'assistant lui-même, là où
la collecte a lieu. Panneau dépliable dans l'en-tête, borné en hauteur et
défilant pour ne pas chasser le fil de conversation hors de l'écran.
Texte repris mot pour mot de DOCS/mention-information-visiteurs.md, comme la
version Dart de mymuseum-visitapp : les trois doivent rester alignés, et une
correction se fait dans le document d'abord.
FR/NL/EN avec repli sur l'anglais, alors que le reste de cette interface parle
six langues : traduire une mention de protection des données sans relecture
humaine serait pire que la servir en anglais.
npm run build vert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sans ce cas, un PDF tombait dans le rendu image par défaut et s'affichait en
image cassée — le même défaut que celui corrigé pour la vidéo le 09/08.
Réutilise le PdfViewer existant et son proxy /api/pdf (le contournement CORS
était déjà écrit), importé en dynamic({ssr:false}) comme le fait PdfSection.
npm run build ✅.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Assistant IA (débloque l'add-on sur le plan Essentiel, qui est web-only)
components/assistant/ (AssistantBubble.tsx + assistant.css),
lib/assistantSuggestions.ts + test. Suggestions dérivées du contenu réel de
l'instance, zéro configuration côté client.
Onboarding
TrialWatermark.tsx — bandeau « Aperçu » pendant l'essai.
Parcours & carte
ParcoursSection.tsx (+108), LeafletMap.tsx, map.css, MapSection.tsx :
centrage de carte et icônes corrigés (M1, M2, W2 — des champs que le client
saisissait sans qu'ils aient le moindre effet).
ResourceViewer.tsx : rendu des ressources d'étape.
API
client.ts (+44) et types.ts (+41) alignés sur les nouveaux champs backend.
Fix du build
lib/geo.ts — helper getGeoPointLatLng(). Les 7 erreurs venaient d'un unknown non
narrowé. ⚠️ Ce type d'erreur est INVISIBLE en next dev : seul npm run build le voit.
npm run build ✅.
Reste ouvert : W1 — LeafletMap a toujours un TileLayer en dur, un client qui choisit
« Google Hybrid » voit de l'OSM.