- Leaving the tab sent pending text with keepalive but kept it queued;
typing on folded it with newer keystrokes under the old base version,
which then conflicted with the user's own text. The flushed batch now
becomes the batch in flight.
- After a conflict, the focused field still showed the losing text and
every further batch made another copy. Typing on goes into the one
copy until the cursor leaves; on leaving, the field shows the block's
current text, and entering a block bases edits on what it shows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When no realtime connection gets through (proxy buffering SSE, notes on
long polling) but the server answers, the profile shows a yellow
"eingeschränkt" instead of "offline". A full connection now shows a
green "online" on the desktop too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
min-h-screen is 100vh, which mobile browsers measure without the address
bar, so short pages could be scrolled into empty space. 100dvh follows
the visible height.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"Passwort vergessen?" came first in the markup; it now follows the field
and keeps its place next to the label.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The origin badge overlapped the watch button; on phones it is left out of
the header (the details stand at the bottom), as is the squeezed title.
The watch button gets the height of its neighbours.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The focused textarea was inline-block and left room for descenders below
it, so the row grew by 6 px and everything below shifted on every click.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New scopes notes:read (list_notes, get_note, notes in search) and
notes:create (create_note from Markdown). MCP only, REST stays closed;
new notes go into shared folders only with write access.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Admin switch in the system settings, MCP_ENABLED fixes it. Off: the
endpoint answers 404, OAuth is off, the API key settings hide the MCP tab.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A bullet that is only a link to a note (as left by /extract) gets a
"Notiz zurückholen" button. POST /documents/{id}/inline returns the
linked note's blocks with fresh ids and trashes the note; the editor
puts the title back as text and inserts the blocks as an own edit, so
Strg+Z restores the link and the note. Only own notes that no other
note links to. Release 0.52.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MindSift becomes the OAuth authorization server for its own MCP
endpoint: discovery (RFC 9728/8414), dynamic client registration,
authorization code with PKCE (S256), rotating refresh tokens with reuse
detection. The consent page lives in the app at /oauth/authorize. A
grant is an api_keys entry (kind 'oauth'), so scopes, origin badges,
renaming and revoking work as for keys; tokens are valid for /mcp only.
Unused connections expire after OAUTH_IDLE_DAYS (default 90). Requires
BASE_URL; off in demo mode. Release 0.51.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The column works out the slot from the pointer (cards no longer handle drag enter/leave, which
flickered on their child elements); a gap of the card's height opens there with framer-motion,
the dragged card leaves its old place and lights up where it lands.
The realtime handler reloaded with the loadData of its first render ("Alle Aufgaben"), so a
selected list showed other lists' tasks after TASK_REORDERED; it now calls the current one.
v0.38.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PATCH /keys/{id} renames a key or changes its scopes; the secret stays. Settings → API gets an
edit button per key with the same switches as for a new key.
- Quick dump: a multiline text gets the full width, the buttons move to their own row below; the
bar only goes back to one line once the text is clearly shorter (no flip-flopping).
- Notes: the "Erweitert"/"Unteraufgabe" badges sit right after the checkbox text.
v0.38.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The deepen buttons of task rows and Kanban cards open an already linked note (accent colour)
instead of creating another one; the server refuses a second note for a linked task as well.
- "Alle Aufgaben" uses each task's own list columns for the status selector, dot and detail.
- Whisper: send vad_filter (STT_VAD_FILTER, default on) and drop a verbatim repeated tail of
sentences or words from the transcript.
- Task detail: narrower time field, wider date field in the desktop sidebar.
v0.37.2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The compaction starts right away in NewServer and could still write to the SQLite files while a
test's temp dir was removed ("directory not empty" on the CI runner, TestWebhookTokenInURLOnlyAPIKey).
Server.Close stops it and waits for a running pass; tests call it before closing the store, and the
server calls it on shutdown before the deferred store.Close. v0.37.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ctrl/Cmd+click toggles, Shift+click marks a range in the order shown; dragging a marked note takes
all marked ones along (no merge then). The trash at the bottom of the sidebar becomes a drop target,
also for a single note and on phones (native long-press drag); a toast offers undo. Escape, a plain
click or a click on empty space clears the marks. v0.37.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Subtasks of a task linked to a note checkbox are tied 1:1 to checkboxes of that note
(subtasks[].blockId), wherever they are moved. ReconcileDocTaskLinks now carries tick, title and
subtasks from the note to the task and adopts new checkboxes directly under the task;
SyncTaskToDoc carries tick, title and subtasks to the note and adds checkboxes for new subtasks.
Deleting is not mirrored. Deepening a task ties its subtasks right away; saves without links keep
the server's links. The sync response reports taskLinks/subtaskLinks; the editor shows an
"Unteraufgabe" badge. v0.36.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thoughts.completed_at is set by triggers on every way a task is completed (migration 14; tasks
completed earlier count from the update). Users choose the delay (7/30/90/365 days or never,
users.done_retention_days); for tasks in a list the owner's delay counts. An hourly job deletes
expired completed tasks (not in the demo) and tells their viewers. POST /tasks/clear-done clears
completed tasks the user may edit. The done tab shows the setting and the button. v0.35.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
VoiceInputButton brings the Quick Dump microphone into other input rows (useVoiceInput, appends
to the text already there, hidden when voice input is off or unsupported): the add-task row above
the task list and the add-item field of lists (desktop row and phone sheet).
Column dialog on phones: the add-column buttons go below the field, and the Erledigt toggle of a
column shows only its tick, so the bin stays on screen. Docs and changelog; v0.32.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>