fix(review): App-Kontrolle – 3 Funde behoben (v1.4.17)
Komplett-Check nach den UX-Umbauten (Typecheck + Produktions-Build + Code-Review): - Tastenkürzel (V/L/G/...) lösen jetzt ebenfalls die Auto-Bearbeitung aus — vorher umgingen sie ensureEditing und der erste Strich wurde nicht gesynct - ensureEditing feuert nicht mehr mehrfach parallel (editingLoading-Guard) - Onboarding-Tour aktualisiert: Schritt "Bearbeitung starten" (Button existiert nicht mehr) → "Einfach loszeichnen"; Symbol-Schritt erwähnt Tap-to-place Geprüft, ohne Befund: Auto-Save-Gating, Status-Zeile, flache Sidebar, Linientyp-Dialog inkl. Gefahrenzone, Demo-Seite, Produktions-Build (Exit 0). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lageplan",
|
"name": "lageplan",
|
||||||
"version": "1.4.16",
|
"version": "1.4.17",
|
||||||
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
|
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -396,8 +396,9 @@ export default function AppPage() {
|
|||||||
const ensureEditing = useCallback(() => {
|
const ensureEditing = useCallback(() => {
|
||||||
if (!currentProject || presentationLocked || !roleCanEdit) return
|
if (!currentProject || presentationLocked || !roleCanEdit) return
|
||||||
if (isEditingByMe || editingBy) return // ich zeichne schon / jemand anderes hält den Lock
|
if (isEditingByMe || editingBy) return // ich zeichne schon / jemand anderes hält den Lock
|
||||||
|
if (editingLoading) return // Lock-Anfrage läuft bereits — nicht doppelt feuern
|
||||||
handleStartEditing({ silent: true })
|
handleStartEditing({ silent: true })
|
||||||
}, [currentProject, presentationLocked, roleCanEdit, isEditingByMe, editingBy, handleStartEditing])
|
}, [currentProject, presentationLocked, roleCanEdit, isEditingByMe, editingBy, editingLoading, handleStartEditing])
|
||||||
|
|
||||||
// Werkzeugwechsel auf ein Zeichen-Tool übernimmt vorab den Lock (rechtzeitig vor dem Zeichnen)
|
// Werkzeugwechsel auf ein Zeichen-Tool übernimmt vorab den Lock (rechtzeitig vor dem Zeichnen)
|
||||||
const handleDrawModeChange = useCallback((mode: DrawMode) => {
|
const handleDrawModeChange = useCallback((mode: DrawMode) => {
|
||||||
@@ -799,7 +800,7 @@ export default function AppPage() {
|
|||||||
onRedo: handleRedo,
|
onRedo: handleRedo,
|
||||||
onSave: handleSaveProject,
|
onSave: handleSaveProject,
|
||||||
onDelete: handleFeaturesChange,
|
onDelete: handleFeaturesChange,
|
||||||
onToolChange: setDrawMode,
|
onToolChange: handleDrawModeChange, // Auto-Bearbeitung greift auch bei Tastenkürzeln
|
||||||
onHelpOpen: useCallback(() => setIsShortcutHelpOpen(true), []),
|
onHelpOpen: useCallback(() => setIsShortcutHelpOpen(true), []),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -34,11 +34,9 @@ const TOUR_STEPS: TourStep[] = [
|
|||||||
position: 'bottom',
|
position: 'bottom',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Bearbeitung starten',
|
title: 'Einfach loszeichnen',
|
||||||
icon: <Lock className="w-5 h-5 text-green-500" />,
|
icon: <Lock className="w-5 h-5 text-green-500" />,
|
||||||
description: 'Klicke auf «Bearbeitung starten» um die Karte zu bearbeiten. Nur ein Benutzer gleichzeitig kann bearbeiten — andere sehen deine Änderungen live.',
|
description: 'Wähle ein Werkzeug und zeichne los — die Bearbeitung startet automatisch. Zeichnet gerade jemand anderes, siehst du dessen Änderungen live und die Karte ist solange gesperrt.',
|
||||||
targetSelector: '[data-tour="edit-toggle"]',
|
|
||||||
position: 'bottom',
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Zeichenwerkzeuge',
|
title: 'Zeichenwerkzeuge',
|
||||||
@@ -62,9 +60,9 @@ const TOUR_STEPS: TourStep[] = [
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Symbole (Drag & Drop)',
|
title: 'Symbole platzieren',
|
||||||
icon: <LayoutGrid className="w-5 h-5 text-orange-500" />,
|
icon: <LayoutGrid className="w-5 h-5 text-orange-500" />,
|
||||||
description: 'Rechts findest du taktische Feuerwehr-Symbole. Deine eigenen Symbole stehen zuoberst. Ziehe Symbole per Drag & Drop auf die Karte. Klicke auf ein platziertes Symbol um es zu drehen, skalieren oder löschen.',
|
description: 'Rechts findest du taktische Feuerwehr-Symbole. Deine eigenen Symbole stehen zuoberst. Symbol antippen und dann auf die Karte tippen — oder per Drag & Drop ziehen. Platzierte Symbole kannst du drehen, skalieren oder löschen.',
|
||||||
targetSelector: '[data-tour="sidebar"]',
|
targetSelector: '[data-tour="sidebar"]',
|
||||||
position: 'left',
|
position: 'left',
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user