Commit graph

52 Commits

Autor SHA1 Nachricht Datum
Claude Dev
0aa2cd09a1 fix(tutorial): Maussimulation fuer Toggle-Schieberegler in Schritt 6+7
Cursor bewegt sich jetzt zum sichtbaren Toggle-Switch statt zum
versteckten Checkbox-Input. Klick-Animation (Scale-Pulse) zeigt
die Betaetigung visuell an.

Neue Hilfsmethoden: _clickAtCursor() und _cursorToToggle()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 18:16:13 +01:00
Claude Dev
a136e0625f Fix tutorial leaving tiles extremely small after completion
GridStack v12 removeInternalForSave() deletes w/h properties from
save() output when they equal minW/minH (or 1). This caused
_removeDemoView() to pass h:undefined to grid.update(), which
GridStack then defaulted to h:1, shrinking all tiles.

Fix: save layout by reading node properties directly instead of
using _grid.save(false), ensuring w and h are always preserved.
2026-03-23 23:41:33 +01:00
Claude Dev
c8279bc69b Tutorial: Schritt 21 Spotlight verzögert + Schritt 23 Demo entfernt
- Schritt 21: deferSpotlight verhindert falschen initialen Rahmen
- Schritt 23: Kein disableNav/Demo mehr, normaler Step mit Weiter-Button
2026-03-23 23:34:25 +01:00
Claude Dev
3e3273470b Telegram: Eigene Kategorie statt Ausrichtungs-Kategorisierung
- source_rules: t.me -> telegram in DOMAIN_CATEGORY_MAP
- components: telegram Label in _categoryLabels
- CSS: cat-telegram Badge in Telegram-Blau (#0088cc)
- DB: 106 bestehende Telegram-Quellen auf Kategorie telegram gesetzt
- Tutorial: Telegram in Quellenübersicht-Erklaerung aufgenommen
2026-03-23 23:14:59 +01:00
Claude Dev
360f6bb872 Tutorial: Timeline Spotlight-Fix + Karten-Marker pulsieren
Schritt 21: Spotlight+Bubble werden 300ms nach GridStack-Update neu
positioniert. Kein falscher Rahmen mehr auf der Karte.

Schritt 23: Alle Marker pulsieren kurz (scale 1.8x) bevor der Cursor
sie besucht, damit Nutzer sieht was anklickbar ist.
2026-03-23 23:08:01 +01:00
Claude Dev
073c11431d Tutorial Schritt 21: Bubble unter Kachel, Kachel hoeher, scrollIntoView
- position: bottom statt top (Bubble verschwindet nicht mehr oben)
- Kachel auf min h=5 vergroessert (Detail-Panel passt rein)
- scrollIntoView auf die Kachel damit alles sichtbar ist
2026-03-23 23:02:23 +01:00
Claude Dev
7a804f762c Tutorial: Kein Springen bei allen Steps - Bubble erst nach Clamp sichtbar
Nicht-Modal-Steps: visible nach requestAnimationFrame Clamp+Arrow
Modal-Steps: visible nach 450ms Reposition + Clamp+Arrow
Kein Step zeigt die Bubble mehr an der falschen Position.
2026-03-23 22:58:53 +01:00
Claude Dev
66ecde1d61 Tutorial: Kein sichtbarer Sprung bei Modal-Steps
Bubble wird bei Modal-Steps erst unsichtbar positioniert, dann nach
450ms (wenn Modal-Transition abgeschlossen) korrekt repositioniert
und erst dann sichtbar gemacht.
2026-03-23 22:55:14 +01:00
Claude Dev
e9d1f2ddb3 Wording: Neue Lage -> Neuer Fall, Analyse -> Recherche
Dashboard:
- Button: + Neuer Fall (statt + Neue Lage)
- Modal-Titel: Neuen Fall anlegen
- Dropdown: Recherche - Thema analysieren (statt Analyse - Thema recherchieren)
- Empty-State: neuen Fall statt neue Lage

Tutorial:
- Alle Referenzen auf Neue Lage -> Neuer Fall
- Analyse/Recherche -> Recherche
- Fake-Dropdown: vollstaendige Optionsbeschreibungen
2026-03-23 22:42:56 +01:00
Claude Dev
b712dd5572 Tutorial: Bubble-Reposition nach Modal-Transition (450ms Delay)
Modal braucht Zeit fuer CSS-Transition. Erste Positionierung war falsch
weil getBoundingClientRect() waehrend Animation falsche Werte liefert.
Jetzt wird nach 450ms nochmal komplett repositioniert inkl. Clamp + Arrow.
2026-03-23 22:37:28 +01:00
Claude Dev
ea96947d0f Tutorial: Modal-Bubble immer rechts vom Modal positionieren
Links ist die Sidebar, rechts ist immer der bessere Platz.
Bubble-Breite passt sich an spaceRight an (min 260px).
2026-03-23 22:35:38 +01:00
Claude Dev
17681e62fb Tutorial: Modals automatisch schliessen bei Zurueck-Navigation
_enterStep schliesst alle offenen Modals wenn der neue Step kein
Modal-Step ist. Verhindert Blur auf Seitenleiste und haengengebliebene
Modals bei Rueckwaerts-Navigation (z.B. Schritt 4 -> 2).
2026-03-23 22:31:12 +01:00
Claude Dev
fe62cbbaee Tutorial: Vollstaendige Neupositionierung bei Fenstergroessen-Aenderung
_onResize fuehrt jetzt alle Positionierungsschritte durch:
- Spotlight-Update
- Modal-Scroll zum bubbleTarget
- Bubble-Positionierung mit dynamischer Breite
- Viewport-Clamping (oben + unten)
- Pfeil-Alignment auf Ziel-Element
2026-03-23 22:28:07 +01:00
Claude Dev
1159fe04a0 Tutorial: Pfeil zeigt dynamisch auf Ziel-Element
CSS: --arrow-top Variable fuer left/right Pfeile
JS: Berechnet Pfeil-Position relativ zum bubbleTarget nach Clamping
Pfeil bleibt immer zwischen 18px vom Rand der Bubble
2026-03-23 22:26:56 +01:00
Claude Dev
d299cdbdf4 Tutorial: Bubble wird oben und unten im Viewport geclampt
Verhindert dass Schritt 10 und andere Steps mit weit unten liegenden
Feldern unter den Viewport rutschen.
2026-03-23 22:25:56 +01:00
Claude Dev
7662332714 Tutorial: Bubble-Breite passt sich dynamisch an Platz neben Modal an
Bubble wird auf verfuegbaren Platz (min 260px) verkleinert und immer
auf der Seite mit mehr Platz positioniert. Kein top-Fallback mehr der
die Bubble aus dem Bildschirm schiebt.
2026-03-23 22:24:20 +01:00
Claude Dev
0ffc9b6fb6 Tutorial Schritt 3: Kein Auto-Open mehr, Modal oeffnet erst bei Weiter
Step zeigt nur den Button mit Erklaerung. Modal oeffnet sich erst
beim Klick auf Weiter (im onExit wenn naechster Step ein Modal-Step ist).
2026-03-23 22:21:39 +01:00
Claude Dev
485a527bf6 Tutorial: Race-Condition bei Neustart behoben
- start(forceRestart) awaited jetzt API.resetTutorialState()
- _startInternal awaited API.saveTutorialState(step 0)
- stop() ueberspringt State-Save wenn _isRestarting flag gesetzt
- start() kann jetzt auch bei laufendem Tutorial Restart ausfuehren
2026-03-23 22:17:15 +01:00
Claude Dev
383fe1ca8c Tutorial: Modal-Scroll mit scrollIntoView + scrollTop-Fallback
scrollIntoView scrollt den naechsten scrollbaren Container (modal-body).
Zusaetzlich wird scrollTop direkt gesetzt als Fallback via offsetTop-Berechnung.
2026-03-23 22:14:35 +01:00
Claude Dev
fc5846e878 Tutorial: Modal-Flash beseitigt + Bubble korrekt am Modal positioniert
- Step 3 onExit schliesst Modal nicht mehr wenn naechster Step Modal ist
- Bubble-Positionierung fuer Modal-Steps: prueft Platz links/rechts vom
  Modal statt vom Formularfeld, faellt auf top zurueck bei schmalen Screens
2026-03-23 22:10:20 +01:00
Claude Dev
186efd6aab Tutorial: Modal scrollt automatisch zum Feld beim Betreten jedes Schritts
_enterStep scrollt jetzt bei Modal-Steps zum bubbleTarget bevor
die Bubble positioniert wird. Damit ist das Formularfeld immer
zentriert sichtbar wenn der Schritt erscheint.
2026-03-23 22:04:48 +01:00
Claude Dev
2a8f395b32 Tutorial: Bubble bei Modal-Steps horizontal am Modal ausrichten, vertikal am Feld
Verhindert dass die Bubble ganz links am Rand landet wenn das
Formularfeld breiter als der verfuegbare Platz ist.
2026-03-23 22:03:35 +01:00
Claude Dev
412f869210 Tutorial: Server-State bei Neustart korrekt zuruecksetzen
- forceRestart ruft API.resetTutorialState() auf
- _startInternal setzt Server-State auf Step 0 bei Neustart
- Chat zeigt jetzt 1/31 statt altem Stand
2026-03-23 21:57:10 +01:00
Claude Dev
d2afd102e0 Tutorial: Modal-Felder zentriert scrollen in Schritten 5-10
- _scrollModalTo scrollt Element in die Mitte des sichtbaren Bereichs
- _scrollModalAndReposition repositioniert Bubble nach Scroll
- Alle Modal-Simulationen nutzen zentriertes Scrolling
- Schritt 4+5 nutzen jetzt _scrollModalTo statt manuelles scrollTo
2026-03-23 21:55:48 +01:00
Claude Dev
52358a4f2a Tutorial: bubbleTarget - Pfeil zeigt auf spezifische Formularfelder statt aufs gesamte Modal
Jeder Modal-Schritt hat jetzt ein bubbleTarget:
- Schritt 4: Titel-Feld
- Schritt 5: Typ-Dropdown
- Schritt 6: International-Toggle
- Schritt 7: Sichtbarkeit
- Schritt 8: Aktualisierungsmodus
- Schritt 9: Aufbewahrung
- Schritt 10: Benachrichtigungen
2026-03-23 21:53:20 +01:00
Claude Dev
69922b0566 Tutorial: Spotlight ausblenden bei Modal-Oeffnung in Schritt 3 2026-03-23 21:52:17 +01:00
Claude Dev
c6b154dbba Tutorial Patch 2: Pfeile, Cursor-Z-Index, Modal-Scroll, Karteninteraktion, Layout-Demo, Theme-Toggle
- Schritt 3: Bubble repositioniert sich auf Modal nach Oeffnung
- Schritt 5: Cursor-Z-Index ueber Dropdown (999999)
- Schritt 7ff: Modal scrollt automatisch zu Feldern (async scrollModalTo)
- Schritt 20: Goldener Rahmen um gesamte Faktencheck-Kachel
- Schritt 21: Timeline-Kachel wird temporaer vergroessert
- Schritt 23: Alle Karteninteraktionen deaktiviert (kein Zoom/Click)
- Schritt 25: Drag nach rechts + zurueck, dann Resize vom Original
- Schritt 26: Theme-Toggle-Simulation (hell/dunkel/zurueck)
- Schritt 27: Button bleibt sichtbar nach Quellenverwaltung-Oeffnung
- Spotlight ausgeblendet waehrend Layout-Demo
2026-03-23 21:48:14 +01:00
Claude Dev
584183951f Tutorial: Umfassende Verbesserungen an Schritten 5,8+,11,20-26,28,31,32
- Schritt 5: Simuliertes Dropdown statt einfachem Wechsel
- Ab Schritt 8: Verbessertes Modal-Scrolling fuer alle Formularfelder
- Schritt 11: Cursor-Demo zwischen Alle/Eigene Filtern
- Schritt 20: Status-Durchlauf statt Scroll-Sprung
- Schritt 21: Quellenübersicht nach Timeline/Karte verschoben
- Schritt 22: Timeline mit Cursor-Navigation durch Zeitpunkte
- Schritt 23: Cursor zeigt Orte einlesen + Vollbild Buttons
- Schritt 24: Z-Index Fix fuer Bubble ueber Vollbild-Karte
- Schritt 25/26: Kombinierte Drag+Resize Demo
- Schritt 28/31: Position hoeher (position:top statt right/left)
- Schritt 32: Bubble tiefer zentriert (55% statt 50%)
- 6 neue Simulationsfunktionen hinzugefuegt
2026-03-23 21:23:07 +01:00
Claude Dev
5e194d43e0 feat: Tutorial-Fortschritt serverseitig persistieren (Resume/Restart)
- Neuer Router /api/tutorial mit GET/PUT/DELETE für Fortschritt pro User
- DB-Migration: tutorial_step + tutorial_completed in users-Tabelle
- Resume-Dialog bei abgebrochenem Tutorial (Fortsetzen/Neu starten)
- Chat-Hinweis passt sich dem Tutorial-Status dynamisch an
- API-Methoden: getTutorialState, saveTutorialState, resetTutorialState

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 22:51:06 +01:00
Claude Dev
e230248f61 Tutorial Karte: Echte Map in Kachel + Zwei-Step-Flow mit Legende
Kachel-Ansicht (Step 17):
- Echte Leaflet-Map mit OSM-Tiles und 3 Markern direkt in der Kachel
  (statt grauem Platzhalter), gezoomt auf Hamburg
- Orte einlesen + Vollbild-Buttons werden nacheinander gehighlightet
- Erklaerung der Geoparsing-Funktion in der Bubble

Vollbild-Ansicht (Step 18 - neu):
- Oeffnet Karten-Vollbild, startet bei Europa-Zoom, fliegt auf Hamburg
- Bubble erklaert Legende detailliert (Farben + Kategorien + Artikelanzahl)
- Cursor besucht alle 3 Marker nacheinander, oeffnet jeweiliges Popup
  fuer 2.5s (Burchardkai -> Innenstadt -> Elbe)
- Nach Demo: Weiter-Button erscheint

Refactoring:
- Marker-Erstellung und Legende in wiederverwendbare Methoden extrahiert
  (_createDemoMarkers, _addDemoLegend)
- Gemeinsame Konstanten fuer Locations, Farben, Labels

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:48:14 +01:00
Claude Dev
3b1e6c1496 Tutorial: Highlight-Leak bei Step-Wechsel verhindern
Problem: Wenn der Nutzer waehrend einer laufenden Demo auf Weiter klickt,
lief die async Demo im Hintergrund weiter und setzte Highlights auf
Elemente des alten Steps (z.B. Beschreibungsfeld blieb umrahmt).

Fix:
- _exitStep setzt _demoRunning = false (bricht laufende Demo ab)
- _highlightSub prueft _isActive bevor es Highlights setzt
- _highlightSub schreibt nicht mehr in _cleanupFns (vereinfacht)
- _clearSubHighlights entfernt zuverlaessig alle Highlights per
  querySelectorAll

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:43:59 +01:00
Claude Dev
e183f23350 Tutorial: Fehlende _enableNavAfterDemo Methode wiederherstellen
Die Methode wurde bei einem frueheren Cleanup versehentlich entfernt.
Sie wird von allen 12 Demo-Methoden und _runDemo aufgerufen um nach
Demo-Ende das Pulsieren zu stoppen und Zurueck/Weiter-Buttons einzublenden.
Ohne diese Methode blieb "Demo laeuft..." fuer immer stehen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:34:40 +01:00
Claude Dev
2e1dc9a60e Tutorial: _runDemo komplett ueberarbeitet mit dreifacher Absicherung
_runDemo hat jetzt drei Sicherheitsnetze:
1. .then() - Wenn Demo-Promise resolved aber _demoRunning noch true:
   Navigation wird trotzdem freigegeben
2. .catch() - Bei Fehler: Navigation wird sofort freigegeben
3. Fallback-Timeout (30s) - Falls Demo komplett haengt: Automatische
   Freigabe nach 30 Sekunden

done()-Funktion ist idempotent (kann mehrfach aufgerufen werden).
Handles auch den Fall dass fn.call() kein Promise zurueckgibt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:31:35 +01:00
Claude Dev
0c9ee1c144 Tutorial: Alle Demos mit _runDemo() absichern gegen haengenbleibende Navigation
Neuer Helfer _runDemo(fn): Fuehrt async Demo-Methoden aus und faengt
alle Fehler ab. Bei Fehler wird _demoRunning zurueckgesetzt und
_enableNavAfterDemo aufgerufen, sodass der Weiter-Button immer erscheint.

Alle 12 Demo-Aufrufe (FormTitleDesc, TypeSwitch, FormSources,
FormVisibility, FormRefresh, FormRetention, FormNotifications,
MapDemo, Drag, Resize, SourcesInfoIcon, SourcesActions) verwenden
jetzt _runDemo statt direktem Aufruf.

Zusaetzlich:
- _cursorToElement gibt sichere Fallback-Koordinaten zurueck wenn
  Element nicht sichtbar (getBoundingClientRect width/height = 0)
- _simulateFormTitleDesc wartet 600ms auf Modal-Rendering

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:22:30 +01:00
Claude Dev
a0f0315768 Tutorial: Resize per CSS-Scale statt width/height, OSM-Tiles wie echte App
Resize-Demo (Schritt 25):
- Nutzt jetzt CSS transform:scale() statt width/height-Aenderung
- GridStack wird gar nicht beruehrt, Kachel bleibt nach Demo
  exakt in Originalgroesse (kein Schrumpfen mehr)

Karte (Schritt 23):
- Verwendet jetzt tile.openstreetmap.de (gleiche Quelle wie echte App)
- Kein Dark/Light-Tile-Unterschied mehr (App nutzt auch nur einen Server)
- Tiles laden jetzt korrekt statt grauem Hintergrund

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:09:57 +01:00
Claude Dev
c2d08f460d Tutorial: Pulsierender Rand bei Demos, Weiter-Button erst nach Abschluss
Waehrend automatischer Demos (disableNav-Steps):
- Bubble-Rand pulsiert gold (animation: tutorial-bubble-pulse)
- Statt Vor/Zurueck-Buttons wird "Demo laeuft..." angezeigt
- Nach Abschluss der Demo: Pulsieren stoppt, Zurueck/Weiter erscheinen

Bei normalen Steps (keine Demo):
- Zurueck/Weiter-Buttons sind sofort sichtbar, kein Pulsieren

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:03:16 +01:00
Claude Dev
47b0ec306f Tutorial Karte: Z-Index-Fix, Chat-Button verstecken, Tile-Rendering
- Fullscreen-Overlay z-index auf 9998 (ueber Chat-Button 9999 -> Chat
  wird mit display:none versteckt waehrend Karten-Step)
- Map-Container bekommt explizite flex:1 + min-height:400px damit
  Leaflet die Container-Groesse korrekt erkennt
- Mehrere invalidateSize-Aufrufe (100/300/600ms) vor dem Zoom
- flyTo erst nach 1200ms (Tiles muessen erst laden bei Zoom 5)
- Bubble target auf .map-fullscreen-header statt ganzen Overlay
- fsContainer Styles werden beim Schliessen zurueckgesetzt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:53:46 +01:00
Claude Dev
4a1ab67703 Tutorial: Umfangreiche visuelle Korrekturen
Step 17 (Lagebild): Quellenverweise [1]-[5] jetzt in Gold (var(--accent))
wie echte Links im Original.

Step 20 (Faktencheck-Detail): Scrollt beim Betreten ans Ende der
Faktencheck-Liste um auch unbestaetigte/widerlegte Eintraege zu zeigen,
scrollt dann zurueck nach oben.

Step 22 (Timeline): Komplett ueberarbeitete Demo-Timeline mit echtem
Achsen-basiertem Layout (ht-axis, ht-points, ht-day-markers, ht-detail-panel)
statt einfacher Listenansicht. Entspricht dem Original-Rendering.

Step 23 (Karte): Startet jetzt bei Europa-Zoom (Zoom 5), dann animierter
flyTo auf Hamburg (Zoom 13, 2.5s Dauer). Marker und Legende wie bisher.

Step 25 (Resize): Stellt exakte Originalgroesse nach Demo wieder her,
entfernt CSS-Werte erst nach 100ms damit GridStack uebernehmen kann.

Step 27+30 (Bubble-Position): Post-Render-Check verhindert dass Bubbles
unter den Viewport-Rand rutschen, verschiebt sie automatisch nach oben.

Layout: Tutorial erzwingt Standard-Layout beim Start (DEFAULT_LAYOUT),
stellt das vom Nutzer angepasste Layout nach Tutorial-Ende wieder her.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:37:57 +01:00
Claude Dev
4aaf0c1d5e Tutorial: Quellenverwaltung in zwei Steps aufteilen mit manuellem Weiterklick
Step 28 (Quellendetails): Cursor faehrt zum Info-Icon, Tooltip wird
angezeigt und bleibt stehen bis der Nutzer manuell auf Weiter klickt.
So hat der Nutzer Zeit, den Tooltip in Ruhe zu lesen.

Step 29 (Quellen verwalten): Cursor zeigt + Quelle Button und
Ausschliessen Button nacheinander, mit Erklaerungen in der Bubble.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:24:05 +01:00
Claude Dev
6c72190f86 Tutorial: Karten-Platzhalter in normaler Kachelansicht zurueckbringen
Die Karten-Kachel zeigte nur grau, weil die Leaflet-Map erst im
Vollbild-Step erstellt wird. Jetzt zeigt die Kachel wieder einen
visuellen Platzhalter mit Globus-Icon und erkannten Orten.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:22:03 +01:00
Claude Dev
014e968daf Tutorial: GridStack initialisieren bei Demo-View Injektion
Ohne GridStack-Init werden alle Kacheln uebereinander gestapelt,
da die Positionierung fehlt. Jetzt wird LayoutManager.init()
aufgerufen und ein Compact-Layout erzwungen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:21:30 +01:00
Claude Dev
71610f437a Tutorial: Spotlight bei Modal-Steps ausblenden
Bei Steps die auf ein Modal zeigen (#modal-new, #modal-sources) wird
der Spotlight-Overlay nicht angezeigt. Das Modal hat bereits einen
eigenen Abdunkelungs-Hintergrund, der zusaetzliche Spotlight-Shadow
verdunkelte das Formular unlesbar.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:18:23 +01:00
Claude Dev
35ea612d5d Tutorial: Quellenverwaltung mit Cursor-Demo und Tooltip-Anzeige
Quellen-Modal-Step (22) ist jetzt eine interaktive Demo:
- Wartet bis Quellen per API geladen sind (max 3s)
- Cursor faehrt zum ersten Info-Icon einer Quelle
- Tooltip wird manuell erzeugt und zeigt Typ, Sprache, Ausrichtung
- Tooltip bleibt 3s sichtbar, dann Cursor weiter zu:
- "+ Quelle" Button wird gehighlightet (neue Quellen hinzufuegen)
- "Ausschliessen" Button der ersten Quelle wird gehighlightet
- Alle Funktionen werden in der Bubble-Beschreibung erklaert

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:12:18 +01:00
Claude Dev
3a2ea7a8c7 Tutorial: Karte im Vollbild mit Markern, echte Drag/Resize-Animationen
Karte (Step 17):
- Oeffnet jetzt die Karten-Vollbild-Ansicht mit eigenem Leaflet-Map
- Zoomt auf Hamburg (Zoom 13) mit 3 farbcodierten Markern
- Cursor faehrt zu Markern, oeffnet Popups (Burchardkai, Innenstadt)
- Legende erklaert Kategorien (Hauptereignisort/Erwaehnt/Kontext)
- Funktionen Orte einlesen + Vollbild werden in der Bubble erklaert
- Map wird beim Step-Exit sauber aus dem Fullscreen entfernt

Drag-Demo (Step 18):
- Kachel bewegt sich jetzt visuell per CSS transform mit dem Cursor
- 150px nach rechts, dann zurueck - echte Verschiebe-Animation
- Kachel erhaelt erhoehten z-index waehrend der Animation

Resize-Demo (Step 19):
- Kachel aendert visuell Breite/Hoehe mit dem Cursor
- 80px breiter + 50px hoeher, dann zurueck
- Echte Groessenaenderung sichtbar statt nur Cursor-Bewegung

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:09:23 +01:00
Claude Dev
6d09c0a5fa Tutorial: Formular Feld fuer Feld erklaeren + Klicks blockieren
Formular-Steps komplett ueberarbeitet (Steps 2-9):
- Step 3: Titel + Beschreibung mit Tipp-Animation
- Step 4: Art der Lage (Live vs Recherche) mit Cursor-Demo + Erklaerung
- Step 5: Quellen (International + Telegram) einzeln gehighlightet + erklaert
- Step 6: Sichtbarkeit (Oeffentlich/Privat) mit Toggle-Demo
- Step 7: Aktualisierung + Intervall, Hinweis auf Creditverbrauch
- Step 8: Aufbewahrung erklaert
- Step 9: E-Mail-Benachrichtigungen (alle 3 Optionen einzeln gehighlightet)

Jedes Feld wird mit Cursor angesteuert, gehighlightet und erklaert.
Modal-Body scrollt automatisch zu den jeweiligen Feldern.

Klick-Blockierung: Waehrend des Tutorials sind alle Dashboard-Elemente
nicht anklickbar (pointer-events:none auf body.tutorial-active).
Nur die Tutorial-Bubble mit Navigation bleibt bedienbar.

Duplikate der alten Methoden entfernt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:05:17 +01:00
Claude Dev
1a372343bc Tutorial: Formular live mit Cursor ausfuellen statt statisch vorab
Step 3 ist jetzt eine interaktive Demo:
- Cursor faehrt zum Titel-Feld, tippt "Explosion in Hamburger Hafen"
  Zeichen fuer Zeichen ein
- Cursor wechselt zur Beschreibung, tippt Kurztext
- Modal scrollt nach unten, Cursor wechselt Aktualisierung auf Auto
- Jedes Feld wird beim Ausfuellen gehighlightet
- _simulateTyping(): Neue Helfer-Methode fuer Zeichen-fuer-Zeichen-Eingabe
- Step 4 (Typ-Wechsel) scrollt Modal zurueck nach oben zum Typ-Feld

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:28:49 +01:00
Claude Dev
1ea62ba901 Tutorial: Modals sauber schliessen bei Zurueck-Navigation und Abbruch
- _stepTimeout() ersetzt setTimeout in onEnter-Callbacks: Wird beim
  Step-Wechsel automatisch gecancelt, kein verspaetetes Modal-Oeffnen mehr
- _exitStep() raeumt alle Step-Timer auf bevor onExit laeuft
- stop() schliesst alle Modals (modal-new, modal-sources) und setzt
  Formular-Inputs zurueck
- Sources-Button-Step hat jetzt onExit zum Modal-Schliessen
- Behebt: Modal bleibt offen bei Zurueck-Klick, Modal erscheint erneut
  nach Zurueck-Navigation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:22:57 +01:00
Claude Dev
77e83efae0 Tutorial: Echte Leaflet-Karte mit Hamburg-Markern statt Platzhalter
- Initialisiert eine echte Leaflet-Map auf Hamburg (Zoom 13) mit 3 Demo-Markern:
  Burchardkai Terminal (Hauptereignisort), Hamburg Innenstadt, Elbe/Hafengebiet
- Farbcodierte Marker mit Legende (Hauptereignisort/Erwaehnt/Kontext)
- Marker-Popups mit Artikelanzahl, Hauptmarker oeffnet automatisch
- Karten-Step ist jetzt eine interaktive Demo (disableNav):
  Cursor faehrt zum Marker und klickt ihn, dann werden Geoparse-Button
  und Vollbild-Button nacheinander gehighlightet
- Theme-abhaengige Tile-Layer (dark/light)
- Map wird beim Tutorial-Ende sauber entfernt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:06:52 +01:00
Claude Dev
5289bbf29b Tutorial: Spotlight und Bubble auf sichtbaren Viewport-Bereich beschraenken
- Spotlight wird auf den sichtbaren Teil des Elements geclippt statt
  ueber den Viewport hinauszuragen
- Bubble-Position nutzt sichtbaren Elementbereich statt voller Rect
- Demo-Summary-Text gekuerzt, damit er in die Lagebild-Kachel passt
- Behebt das Problem, dass bei grossen Kacheln (Lagebild, Timeline, Karte)
  die Sprechblase ausserhalb des sichtbaren Bereichs landete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:04:02 +01:00
Claude Dev
b33e635746 Tutorial Step 4: Virtuelle Maus-Demo fuer Lage-Typ-Wechsel
Cursor faehrt zum Select-Feld, wechselt von Live-Monitoring zu Recherche
und zurueck. Nav-Buttons erst nach Demo-Ende aktiv.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:01:25 +01:00