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>
"Spalten anpassen" gets a colour dot per column that opens the choice: grey, anthracite (theme
text colour), green, yellow, blue, red, purple or the accent. columnDotClass reads the column's
colour (server defaults emerald/amber count as green/yellow; columns without one keep the colour
of their role) and drives the Kanban header, the status dot in the list view and the task detail.
Blue and purple come from new theme variables --color-info / --color-purple with fallbacks for
light and dark themes. Docs and changelog updated; v0.31.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
API keys reach tasks and lists over plain REST too (GET /task-lists, GET /tasks with
status/due filters, PATCH/DELETE /thoughts/{id}, GET /lists, list items), guarded by a route
table; notes and settings stay closed. Rights hold for every access alike (webhook:task also
allows create_task over MCP, tasks:write also task delivery).
Tasks, thoughts and list items record which key created them and which one changed them last
(migration 13 replaces agent_mark; origin stays after the user's own edits and survives the
triage into a list item). OriginBadge shows the key name with a webhook or robot icon, details
on hover and tap, and replaces the Webhook and KI badges everywhere, now also on list items.
Settings: category "API" with rights grouped by tasks, lists and inbox and two tabs
(curl / smart home with a Home Assistant sensor, AI agents over MCP). Docs, help, README and
changelog updated; v0.30.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New MCP tools delete_task (tasks:write), create_task_list (tasks:write) and create_list
(lists:write); list_task_lists now returns the board columns so agents know the valid
kanbanStatus values. Task deletion is a shared helper (deleteTask) for REST and MCP.
Tasks and list items get agent_mark (migration 12): "created" when an agent adds them via MCP,
"edited" when an agent changes them; a change by the user clears it. The new AgentBadge shows
"KI" / "KI geändert" in task rows, Kanban cards, the task detail, the inbox and lists.
Settings: export and import move out of "Webhooks, KI-Agenten & Export" into their own
category "Export & Import". Docs, help, README and changelog updated; v0.29.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MindSift now speaks MCP (Streamable HTTP, stateless JSON-RPC) at POST /api/v1/mcp so
Claude Code, Codex, Claude Desktop, Cursor and custom agents can read, create and
complete tasks and keep shared lists. API keys get the scopes tasks:read/write and
lists:read/write; tools/list only shows what the key may call and every tool checks
its scope. Task and list write paths are shared helpers (updateTask, createTask,
addListItem, setListItemDone) used by REST and MCP alike.
Settings: scope selection and the SectionPicker (import, restore) use ToggleSwitch
rows instead of checkbox-like buttons; new MCP section with connection snippets for
Claude Code, Codex and JSON configs. Docs, README, help and changelog updated; v0.28.0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The indent/move bar above the keyboard stayed after the keyboard was
closed (back button) because the bullet kept its focus, and covered the
bottom navigation. useKeyboardInset now reports keyboardOpen by
comparing the visible height with the height without keyboard, which
works whether the browser shrinks the page or only the visual viewport.
Release v0.27.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A visitor without a chosen theme on this device sees the demo in
fjord-night instead of the square default; a chosen theme stays and
real installations are unchanged.
Release v0.27.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The floating bullet actions only react to hover on devices with a real
pointer; a tap on a phone made the invisible buttons clickable.
- A bullet that is only a note link (plus hashtags) can no longer be
extracted: button and /extract are hidden, the server answers 400.
- Extract notice on phones sits above the bottom navigation, text on
top (two lines max) with the actions below.
- Release v0.26.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Desktop shows "offline" with a red dot under the user name when the
server is unreachable; phones show a green/red dot on the avatar.
Based on the app-wide realtime connection, so a server outage is
noticed even while the device has network (4 s grace period).
- Screenshots converted to WebP (1280 px desktop, 480 px phone, q90),
e2e/screenshots.sh converts with cwebp; new journal picture with
round corners. Rules in AGENTS.md.
- Release v0.26.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Setting / REGISTRATION_VERIFY_EMAIL; only with SMTP and BASE_URL; invites skip it
- Hashed one-time tokens (48 h), resend with cooldown, unconfirmed accounts purged
- Approval modes notify admins only after the address is confirmed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Invites: link /?invite=CODE, copy link, send by email, max uses with counter
- Registration modes closed | approval | domain | domain+approval | open, waiting list with approve/reject
- REGISTRATION_MODE / REGISTRATION_DOMAINS lock the admin setting; ALLOW_REGISTRATION=true is honoured
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Kanban on phones/tablets: hold a card, drag it onto a card or column, release; the page scrolls at the edges
- Admin settings: database backups can be deleted (DELETE /api/v1/admin/backups/{name})
- Share message: large Liste/Aufgabe buttons, close button, tap outside closes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- README: current features (journal, focus mode, push, themes, sharing
into the inbox), outgoing connections, :latest instead of :stable,
VAPID_* and LEGAL_CUSTOM_LINK_*, new journal and phone screenshots
- e2e/screenshots.sh: light and dark in the same state joined along a
diagonal, own container/port per run
- hashtag tiles at least 18rem wide
chore(release): v0.15.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- /li lists /link first: name prefix, aliases, name, then description
- link cards about twice as tall; the bare address below becomes an accent
link marker; the link chip bar under bullets is gone, bare web addresses
in text are links themselves
chore(release): v0.14.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fjord (new), Polarized Hell and Suri Hell complete the families
Klassik, Fjord, Terrakotta, Polarized, Suri
- settings: family table, follow-system, corners, button frames and an own
accent colour (per device); compact quick picker in the user menus
- code colours in index.css are fallbacks only
chore(release): v0.14.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- dark counterpart of Terrakotta; Soft users move to it
- add tailwindcss-animate: the existing animate-in/fade/slide classes now
run; menus zoom in, sheets slide up, notes slide in on phones
- no animations with reduced motion
chore(release): v0.13.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Code blocks lose border and header bar: language at the top left, a round
copy button at the bottom right on hover; converting back to text moves to
the bullet's action bubble (also for numbered items). Code, audio and
dictation blocks use fixed round corners whatever radius the theme sets.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bold, italic and strikethrough render their inside again, so **`code`**
shows bold code instead of backticks; inline code uses the theme's code
background with the main text colour instead of the accent colour.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Outdenting an empty bullet on Enter only happens when no bullet on the
same level follows in the branch; otherwise a new bullet is added below.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- focus mode: folders slide in from the left (button, title click, or the
left edge on wide screens); picking a note keeps focus mode
- workspace bar: borderless live/shared/save pills in one style, divider
before the note actions; footer without top line
- journal panel and calendar open with an animation, the view fades in
- paste and markdown import nest a list under the paragraph introducing it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ctrl+Shift+F or the note menu shows only the note over the whole window
at reading width; the header (title, actions, leave) slides in at the
top edge, Escape leaves; phones get a round exit button.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI keeps the 'test once per code state' plan but records commit and
git tree as image labels instead of extra :sha-/:tree- tags, so the
registry only holds dev, latest, vX.Y.Z and stable; the plan test now
asserts the expected decisions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- VAPID keys from VAPID_* or generated once (push_keys, migration 9);
devices in push_subscriptions, forgotten on 404/410 from the push service
- push column for every event (also due tasks) and the daily summary,
bundles as one notification; /push/key, /devices, /subscribe,
/unsubscribe, /test
- settings: switch push on per device, test it, see the devices; the
service worker shows notifications and focuses MindSift on click
- tests decrypt a sent push like a browser (RFC 8291) and check VAPID
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- copy a link to a bullet from its action bubble or pick a bullet in the
link dialog; [[Note#^id|Note › excerpt]] opens the note, jumps to and
highlights the bullet, or says it is gone
- wiki links render inline with their label and are clickable; the
duplicate chip below the text is gone
test(e2e): run each suite with its own container, image tag and port, so
parallel runs from another working copy no longer remove our server
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On large screens the editor header is gone: undo/redo, share and the menu
render into the workspace tab bar (portal) after avatars, live, shared and
an icon-only save status; zoom breadcrumbs move above the title. Phones and
tablets keep the editor header. The sidebar header drops its heading and
puts search, new folder and new note in one row.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- the journal opens as a framed panel and closes on a second click,
returning to the previous note; journal state and the last regular note
survive tab switches, the fallback note is never a journal day
- pasted and imported markdown nests content under its heading (H2 below
H1), Enter on a heading creates a child, '- ' / '* ' / '+ ' start a bullet
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Offer /number at start or end like the other block commands and start a
numbered list when typing "1. " into an empty bullet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- block type 'numbered' (/number): 1., a., i. by nesting, continues on
Enter, an empty item ends the list; markdown export/import as 1.
- pasting: parser moved to lib/pasteOutline with tests; blank lines split
paragraphs, numbered lists keep their type, indentation levels follow
the widths in use (2, 3 or 4 spaces, tabs)
- text that stays in the focused block after pasting (a paragraph with
line breaks) was dropped; the block now takes it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- journal_days (migration 8) maps a person's day to an ordinary note;
GET /journal lists the days, POST /journal/{date} opens or creates one
- the journal sits on top of the notes sidebar: days below each other
(today first, older ones load while scrolling), a calendar with month
and year picker follows the day in view and jumps to any day
- the header shares the day in view; journal notes stay out of the folder
tree; can be switched off per device under Darstellung
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The custom webhook could be entered but never switched on since the
notification matrix replaced the old alarm channels. It is now a third
column next to e-mail and Discord for every event and the daily summary;
bundles go out as JSON (event "digest").
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- the workspace fills the window; only the note scrolls (also on phones, where the
sideways scroll area used to scroll on its own)
- clear drag state on dragend, calmer sidebar toggle when collapsed
- ship Inter as variable font, light and larger note titles; header shows the
title only after the big title scrolled away and stays one row on phones
- main builds show the package version without -dev
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>