diff --git a/CHANGELOG.md b/CHANGELOG.md index 78b4424..19826e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V ## [Unreleased] +## [0.11.1] - 2026-10-30 + +### Changed +- Triage am Handy: unter der Karte zwei große Knöpfe „← Wegwerfen“ und „Aufgabe →“ (wie Wischen), darunter ein Viererblock wie im Gedrückthalten-Menü: Auf Liste, Mit Termin, Als Notiz, Später. Die Warteschlange ist am Handy zugeklappt; „Warteschlange anzeigen“ klappt sie auf und scrollt hin. + ## [0.11.0] - 2026-10-30 ### Added @@ -285,7 +290,8 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V - Geteilte Listen (Einkaufs-, Pack- und Checklisten) mit `#Kategorie`-Gruppierung, Mengenangaben und Echtzeit-Abhaken. - Benutzer-, Gruppen- und Admin-Verwaltung (Ersteinrichtungs-Assistent, Einladungscodes, Profilbilder, persönliche API-Keys & Webhook-Ingest `/api/v1/webhooks/ingest`, JSON-Datenexport) sowie CSS-Theme-Engine mit 4 Themes (`Dark`, `Light`, `High Contrast`, `Soft`) und PWA-Unterstützung. -[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.11.0...dev +[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.11.1...dev +[0.11.1]: https://git.dsit.me/sandrodach/MindSift/compare/v0.11.0...v0.11.1 [0.11.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.10.0...v0.11.0 [0.10.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.9.0...v0.10.0 [0.9.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.8.0...v0.9.0 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 98b9a94..21a6e2d 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "mindsift-frontend", - "version": "0.11.0", + "version": "0.11.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mindsift-frontend", - "version": "0.11.0", + "version": "0.11.1", "license": "Unlicense", "dependencies": { "@fontsource-variable/inter": "5.3.0", diff --git a/frontend/package.json b/frontend/package.json index 3e487a6..8bd2c5f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "mindsift-frontend", "private": true, - "version": "0.11.0", + "version": "0.11.1", "license": "Unlicense", "type": "module", "scripts": { diff --git a/frontend/src/features/triage/TriageDeck.tsx b/frontend/src/features/triage/TriageDeck.tsx index 41a178c..3e1cfb3 100644 --- a/frontend/src/features/triage/TriageDeck.tsx +++ b/frontend/src/features/triage/TriageDeck.tsx @@ -18,6 +18,9 @@ import { Edit3, Layers, MoreHorizontal, + ArrowLeft, + ArrowRight, + ChevronDown, } from 'lucide-react'; import { SharedList, Thought } from '../../lib/types'; import { addDays, formatDue } from '../../lib/due'; @@ -227,6 +230,9 @@ export const TriageDeck: React.FC = ({ const [cards, setCards] = useState(deck); const [lastTriaged, setLastTriaged] = useState(null); const [showDateModal, setShowDateModal] = useState(false); + // Phones: the waiting queue is folded until asked for + const [showQueueMobile, setShowQueueMobile] = useState(false); + const queueRef = useRef(null); const [taskDueDate, setTaskDueDate] = useState(() => addDays(1)); const [showListSelector, setShowListSelector] = useState(false); @@ -725,70 +731,96 @@ export const TriageDeck: React.FC = ({ )} - {/* Mobile Quick Action Buttons under the card (Touch targets >= 44px) */} -
- + {/* Phones: the swipe actions on top (← discard, → task), below a 2×2 block like the long-press sheet */} +
+
+ + +
- +
+ - + - + + + +
{/* Primary Triage Decision Bar: Hidden on mobile (handled via Mobile Quick Actions / Swipe), shown on Desktop */} @@ -881,8 +913,23 @@ export const TriageDeck: React.FC = ({ {/* Waiting Quick Dump Queue List (Touch-sized & Swipeable Left/Right) */} {cards.length > 1 && ( -
-
+
+ {/* Phones: the queue stays folded so the card and its buttons fit on the screen */} + {!showQueueMobile && ( + + )} +
Warteschlange ({cards.length - 1}) @@ -892,7 +939,7 @@ export const TriageDeck: React.FC = ({
-
+
{cards.slice(1).map((item) => (