My-Weekly-ToDo-List/package.json
mARTin-B78 2042c54b2d
Some checks are pending
Playwright Tests / test (push) Waiting to run
Test and SonarQube / quality (push) Waiting to run
feat: Aufgaben per Touch zwischen Zeitslots verschieben (Mobile-Drag-and-Drop)
M3 aus TODO.md, nach v1.126.0 als gemeldete Luecke aufgenommen und jetzt geschlossen:
Aufgaben liessen sich bislang nur am Desktop per Maus verschieben, weil WeeklyView.tsx
ausschliesslich natives HTML5-Drag nutzte (draggable/onDragStart/onDrop), das auf
Touch-Geraeten grundsaetzlich nicht feuert.

Neuer Long-Press-Mechanismus, keine neue Dependency:
- GridTaskBlock bekommt onTouchStart/onTouchMove (handleTaskTouchStart/
  handleTaskTouchMovePending) -- 200ms Halten ohne wesentliche Fingerbewegung
  aktiviert den Drag (Vibration als Feedback, wie beim bestehenden Muster)
- Zwei-Phasen-Architektur identisch zum bereits vorhandenen Touch-Long-Press fuer
  "Termin per Ziehen anlegen" (upgradeToDragListeners/handleTouchStart weiter oben in
  derselben Datei): passiver Timer zum Aktivieren, danach ein document-weiter,
  nicht-passiver touchmove-Listener nur waehrend des aktiven Drags (blockiert Scrollen
  nur dann, nicht davor)
- handleDrop akzeptiert jetzt e: DragEvent | null -- der Touch-Pfad ruft dieselbe
  Funktion direkt auf (kein natives DragEvent vorhanden), decideTaskDrop (v1.126.0)
  unveraendert wiederverwendet, keine eigene Entscheidungslogik, keine geaenderte
  API-Payload

Echt verifiziert, nicht nur angenommen: lokale Instanz mit Wegwerf-Postgres (Docker)
aufgesetzt, Testnutzer + Task geseedet, per Playwright ein echter Touch-Drag simuliert
(dispatchte TouchEvent-Objekte, 200ms Halten, schrittweise Bewegung, Loslassen) --
Task landete nachweislich per DB-Abfrage auf dem neuen Zeitslot. Derselbe Aufbau mit
dragTo() bestaetigt: der Desktop-Pfad (Maus) funktioniert unveraendert weiter.

Ausserdem: Typecheck, Lint (0 Fehler), 100 Unit-Tests, Produktions-Build -- alle gruen.

v1.127.0

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:22:32 +02:00

86 lines
2.7 KiB
JSON

{
"name": "my-weekly-todo-list",
"version": "1.127.0",
"description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view",
"main": "index.js",
"scripts": {
"dev": "echo \"\\n ✦ My Weekly ToDo List v$(node -p \"require('./package.json').version\") — dev mode\\n\" && next dev -H 0.0.0.0 -p 3000",
"build": "next build",
"start": "echo \"\\n ✦ My Weekly ToDo List v$(node -p \"require('./package.json').version\") — production\\n\" && next start",
"lint": "next lint",
"type-check": "tsc --noEmit",
"test": "npm run test:unit",
"test:unit": "node --experimental-strip-types --test tests/unit/*.test.ts",
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui",
"test:debug": "playwright test tests/debug",
"sonar": "todo-sonar-scan"
},
"keywords": [
"nextjs",
"todo",
"calendar",
"weekly-view",
"task-management"
],
"author": "My Weekly To Do List Team",
"license": "MIT",
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^7.2.0",
"@fortawesome/free-brands-svg-icons": "^7.2.0",
"@fortawesome/free-solid-svg-icons": "^7.2.0",
"@fortawesome/react-fontawesome": "^3.2.0",
"@mdi/js": "^7.4.47",
"@mdi/react": "^1.6.1",
"@next-auth/prisma-adapter": "^1.0.7",
"@notionhq/client": "^5.14.0",
"@prisma/client": "5.22.0",
"@react-pdf/renderer": "^4.4.0",
"@tiptap/extension-link": "^3.20.0",
"@tiptap/extension-placeholder": "^3.20.0",
"@tiptap/extension-underline": "^3.20.0",
"@tiptap/react": "^3.20.0",
"@tiptap/starter-kit": "^3.20.0",
"@types/bcryptjs": "^2.4.6",
"@types/nodemailer": "^8.0.1",
"bcryptjs": "^3.0.3",
"date-fns": "^2.30.0",
"google-auth-library": "^10.9.1",
"googleapis": "^170.1.0",
"ical.js": "^2.2.1",
"lucide-react": "^0.563.0",
"next": "15.5.24",
"next-auth": "^4.24.15",
"nodemailer": "^10.0.8",
"postcss-cli": "^11.0.1",
"prisma": "5.22.0",
"react": "^18.2.0",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^18.2.0",
"tsdav": "^2.1.8",
"web-push": "^3.6.7",
"zustand": "^4.4.0"
},
"overrides": {
"@auth/core": "0.41.3",
"nodemailer": "^10.0.8",
"next": {
"postcss": "^8.5.28"
},
"google-auth-library": "^10.9.1"
},
"devDependencies": {
"@playwright/test": "^1.58.0",
"@types/node": "^20.0.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"autoprefixer": "^10.4.19",
"eslint": "^8.0.0",
"eslint-config-next": "15.5.24",
"postcss": "^8.5.28",
"tailwindcss": "^3.4.1",
"typescript": "^5.0.0"
}
}