From 2bb0dec7445b8c4661dfc9edb1283534f0b987ad Mon Sep 17 00:00:00 2001 From: Sandro Date: Sun, 1 Nov 2026 18:18:56 +0100 Subject: [PATCH] fix(tasks): a task opened by a link does not open again on every return to the tab Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 8 +++++++- README.md | 2 +- frontend/package-lock.json | 4 ++-- frontend/package.json | 2 +- frontend/src/App.tsx | 1 + frontend/src/features/triage/TasksView.tsx | 7 +++++++ 6 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64a8b40..614e872 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.49.1] - 2026-11-01 + +### Fixed +- Aufgaben: Nach dem Sprung zu einer Aufgabe (z. B. über das Abzeichen „Erweitert“ in einer Notiz) öffnete sich deren Detailfenster bei jedem Zurückwechseln in den Aufgaben-Reiter erneut. + ## [0.49.0] - 2026-11-01 ### Changed @@ -760,7 +765,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.49.0...dev +[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.49.1...dev +[0.49.1]: https://git.dsit.me/sandrodach/MindSift/compare/v0.49.0...v0.49.1 [0.49.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.48.0...v0.49.0 [0.48.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.47.0...v0.48.0 [0.47.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.46.0...v0.47.0 diff --git a/README.md b/README.md index 8d5b920..e486fb9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Self-Hosted](https://img.shields.io/badge/100%25-Self--Hosted-2563eb?style=flat-square)](#) [![Docker](https://img.shields.io/badge/Deployment-Single%20Container-2496ed?style=flat-square&logo=docker&logoColor=white)](#-schnellstart) [![SQLite](https://img.shields.io/badge/Daten-SQLite-003b57?style=flat-square&logo=sqlite&logoColor=white)](#-deine-daten-gehören-dir) -[![Version](https://img.shields.io/badge/Version-v0.49.0-16a34a?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Version-v0.49.1-16a34a?style=flat-square)](CHANGELOG.md) **MindSift** ist eine selbst gehostete Schaltstelle für spontane Gedanken, Aufgaben mit Kanban-Board, hierarchische Outliner-Notizen, die mehrere Personen gleichzeitig bearbeiten können, und gemeinsame Listen. Alles läuft als ein einzelner Container mit eingebetteter SQLite-Datenbank, auf deinem eigenen Server. diff --git a/frontend/package-lock.json b/frontend/package-lock.json index dfbccff..c060e15 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "mindsift-frontend", - "version": "0.49.0", + "version": "0.49.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mindsift-frontend", - "version": "0.49.0", + "version": "0.49.1", "license": "AGPL-3.0-only", "dependencies": { "@fontsource-variable/inter": "5.3.0", diff --git a/frontend/package.json b/frontend/package.json index 23dbb24..56e197b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "mindsift-frontend", "private": true, - "version": "0.49.0", + "version": "0.49.1", "license": "AGPL-3.0-only", "type": "module", "scripts": { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3f645c4..8fdcb04 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1297,6 +1297,7 @@ export const App: React.FC = () => { onOpenDocument={handleOpenDocument} refreshTrigger={refreshRevision} initialSelectedTaskId={selectedTaskId} + onInitialTaskShown={() => setSelectedTaskId(null)} openTasksCount={stats.tasksOpenCount} /> )} diff --git a/frontend/src/features/triage/TasksView.tsx b/frontend/src/features/triage/TasksView.tsx index ea9930e..6b70182 100644 --- a/frontend/src/features/triage/TasksView.tsx +++ b/frontend/src/features/triage/TasksView.tsx @@ -65,6 +65,9 @@ interface TasksViewProps { onOpenDocument: (docId: string, blockId?: string) => void; refreshTrigger?: number; initialSelectedTaskId?: string | null; + // The task from initialSelectedTaskId was opened; the parent forgets it, so returning to the tab does + // not open it again + onInitialTaskShown?: () => void; openTasksCount?: number; // all open tasks incl. shared lists (same as the nav bar counter) } @@ -94,6 +97,7 @@ export const TasksView: React.FC = ({ onOpenDocument, refreshTrigger = 0, initialSelectedTaskId, + onInitialTaskShown, openTasksCount, }) => { // Open list and view survive switching to other tabs (like the workspace's open note) @@ -177,11 +181,14 @@ export const TasksView: React.FC = ({ const [showDetailModal, setShowDetailModal] = useState(false); const [extraTask, setExtraTask] = useState(null); + const onInitialTaskShownRef = useRef(onInitialTaskShown); + onInitialTaskShownRef.current = onInitialTaskShown; useEffect(() => { if (initialSelectedTaskId) { setDetailTaskId(initialSelectedTaskId); setShowDetailModal(true); setFilter('open'); + onInitialTaskShownRef.current?.(); api.getThought(initialSelectedTaskId).then((th) => { if (th) setExtraTask(th); }).catch(() => {});