Merge dev into main (v0.49.1)
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 26s

This commit is contained in:
sandrodach committed 2026-11-01 18:20:59 +01:00
commit c0645ef8b3
7 files changed
+23 -5

No files matched your search

+4
View File
@@ -2,6 +2,10 @@
Regeln für die Arbeit an MindSift, die nicht aus dem Code selbst hervorgehen. Aufbau und Technik stehen in [Doku/](Doku/README.md), vor allem [architecture.md](Doku/architecture.md).
## Zuständigkeit
- **Die Website (Repo `MindSift-Website`) betreut ein anderer Agent.** Agenten, die an MindSift arbeiten, ändern dort nichts: keine Dateien, keine Commits, kein Push, auch nicht bei Änderungen wie Lizenz oder Funktionsnamen, die die Seite betreffen. Solche Punkte stattdessen dem Nutzer melden.
## Sprache und Stil
- **Deutsch:** Oberflächentexte, Fehlermeldungen für Nutzer, E-Mails, `CHANGELOG.md`, `README.md`, `Doku/`.
+7 -1
View File
@@ -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
+1 -1
View File
@@ -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.
+2 -2
View File
@@ -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",
+1 -1
View File
@@ -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": {
+1
View File
@@ -1297,6 +1297,7 @@ export const App: React.FC = () => {
onOpenDocument={handleOpenDocument}
refreshTrigger={refreshRevision}
initialSelectedTaskId={selectedTaskId}
onInitialTaskShown={() => setSelectedTaskId(null)}
openTasksCount={stats.tasksOpenCount}
/>
)}
@@ -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<TasksViewProps> = ({
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<TasksViewProps> = ({
const [showDetailModal, setShowDetailModal] = useState(false);
const [extraTask, setExtraTask] = useState<Thought | null>(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(() => {});