Commit Graph
100 Commits
Author SHA1 Message Date
sandrodachandClaude Opus 5.5 c31eed5a3a chore: release v0.59.3
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m1s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:46:09 +01:00
sandrodachandClaude Opus 5.5 e4bc6ead61 fix(ui): no white strip next to the page in Chrome
Chrome paints an empty scrollbar gutter white and takes the page
scrollbar's style from body, not html. It now always shows the page
scrollbar (an empty track where nothing scrolls), styled via
body::-webkit-scrollbar with the header and page colours; the header's
translucent bottom line is a layer of its own. Firefox keeps the gutter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:45:18 +01:00
sandrodachandClaude Opus 5.5 9473e2321a chore: release v0.59.2
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m51s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:26:45 +01:00
sandrodachandClaude Opus 5.5 fd62987df3 style(ui): header colour runs into the scrollbar gutter
The reserved gutter showed the page colour next to the header. On the
desktop the page background now carries the header colour and its
bottom line down to the header's measured height (--app-header-h),
fixed like the sticky header.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:26:45 +01:00
sandrodachandClaude Opus 5.5 0ba5140106 chore: release v0.59.1
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m54s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:12:19 +01:00
sandrodachandClaude Opus 5.5 92de62a620 fix(tasks): switching lists never shows the previous list's tasks
The new list's view (list or Kanban) appeared one render before its
tasks, so the board briefly showed the old list. Lists opened in this
session are kept in memory and shown in the same render; a list not
opened yet takes its share of "Alle Aufgaben", else the loading
placeholder shows. The reload brings them up to date.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:11:17 +01:00
sandrodachandClaude Opus 5.5 cce076b093 fix(ui): keep room for the scrollbar so pages do not shift
scrollbar-gutter: stable on the root: a page that scrolls (e.g. a wide
Kanban board) and one that does not have the same width, so switching
tabs no longer moves the layout. Overlay scrollbars are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 18:11:17 +01:00
sandrodachandClaude Opus 5.5 9d2f37c7f6 chore: release v0.59.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m54s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 17:05:47 +01:00
sandrodachandClaude Opus 5.5 886fb2c711 feat(tasks): remember list or Kanban per task list
Each task list (and "Alle Aufgaben") keeps its own view on this device;
a single remembered Kanban view from before carries over to its list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 16:52:30 +01:00
sandrodachandClaude Opus 5.5 c2aff2ced6 chore: release v0.58.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m53s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:56:31 +01:00
sandrodachandClaude Opus 5.5 d11c156ed7 style(ui): solid counters without the dark ring
The accent counter was a 10-16 % tint, so on the phone nav bar the icon
showed through; it now lies on an opaque panel. The ring in the page
colour looked like a black shadow in dark themes and is gone; text
counters overlap the word by 2 px instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:13:14 +01:00
sandrodachandClaude Opus 5.5 2cdfa45375 feat(tasks): group "Alle Aufgaben" by task list by default
Tasks without a list come first, then the lists in tab order. Single
lists keep no grouping by default and do not offer it. The open task
list, view and grouping, like the open shopping list, are now
remembered per device instead of per tab.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 13:13:14 +01:00
sandrodachandClaude Opus 5.5 b04991ee23 fix(tasks): full-size fields in the task details on phones
Task list, people search, hashtag and subtask fields were 24-32 px with
12 px text on phones; they now match the other fields (44 px, 16 px text,
no zoom on iOS). The note button says just "Notiz" there, so the header
stays on one line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:59:16 +01:00
sandrodachandClaude Opus 5.5 92993c2dd2 style(ui): counters on labels sit right after the word
The counter hung at the label's right edge with a fixed 12 px gap, so
two-digit numbers covered part of the last letter. It now follows the
word in the text flow (position="text"): only its ring overlaps, the
same for any number of digits, and wide numbers widen the tab.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:59:16 +01:00
sandrodachandClaude Opus 5.5 8989321bdd chore: release v0.57.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m52s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:38:02 +01:00
sandrodachandClaude Opus 5.5 117cf3445e feat(ui): phone layout up to 768 px
Phones in landscape and small tablets (iPad mini upright) got the
desktop layout from 640 px. The sm breakpoint is now 768 px; the media
queries in index.css and the width checks in code (isPhoneWidth) follow
it. The desktop header grid applies from sm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:37:52 +01:00
sandrodachandClaude Opus 5.5 8891dc046d fix(ui): keep the capture bar centred and still when the status changes
From md the desktop header is a grid with equal outer columns, so the
Quick Dump bar sits exactly in the middle whatever name or status stands
on the right; the status line keeps the width of its longest label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:10:36 +01:00
sandrodachandClaude Opus 5.5 ad254537d0 chore: release v0.56.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m53s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:02:33 +01:00
sandrodachandClaude Opus 5.5 ae1f799d9c style(lists): live pill left of a divider, actions right, like the notes
Tasks get the live pill too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 11:50:27 +01:00
sandrodachandClaude Opus 5.5 2b7356d043 feat(realtime): long polling for app-wide events behind proxies
When a proxy lets neither WebSocket nor SSE through, the app opens a
poll connection: the server buffers its events (an SSEClient without a
stream), each GET waits up to 25 s, and room joins work like for SSE.
Tasks and lists now update live there too, and note sync takes its
notifications from it instead of a second long poll. Idle connections
close after two minutes. The profile shows such a connection as limited.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 11:50:27 +01:00
sandrodachandClaude Opus 5.5 c19d8fd03e chore: release v0.55.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m49s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 11:32:32 +01:00
sandrodachandClaude Opus 5.5 c021946c7f fix(sync): no conflicts with one's own text, one copy per conflict
- 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>
2026-11-02 11:30:08 +01:00
sandrodachandClaude Opus 5.5 08d35a4a81 test(e2e): pick the lock notice among the status elements
The connection status at the profile is always shown now and also has
role=status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 11:30:08 +01:00
sandrodachandClaude Opus 5.5 282a9af557 feat(ui): show a limited connection instead of offline behind proxies
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>
2026-11-02 11:21:14 +01:00
sandrodachandClaude Opus 5.5 7fcd5a258c fix(ui): size the page to the visible screen on phones
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>
2026-11-02 11:17:50 +01:00
sandrodachandClaude Opus 5.5 e7d5db3e24 fix(auth): tab from the user name straight into the password field
"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>
2026-11-02 11:17:50 +01:00
sandrodachandClaude Opus 5.5 0309b54a29 chore: release v0.54.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m55s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 11:04:23 +01:00
sandrodachandClaude Opus 5.5 161c33c3d7 feat(lists): switch lists from the title in the phone header
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 10:55:02 +01:00
sandrodachandClaude Opus 5.5 bd58b37156 fix(tasks): keep the task detail header tidy on phones
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>
2026-11-02 10:55:02 +01:00
sandrodachandClaude Opus 5.5 e60e825b3c feat(mcp): agents can add, tick, rename and remove subtasks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 10:40:17 +01:00
sandrodachandClaude Opus 5.5 0f17cc3c33 fix(workspace): keep a bullet's height when clicking into it
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>
2026-11-02 10:40:17 +01:00
sandrodachandClaude Opus 5.5 8e3fa51d90 chore: release v0.53.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m51s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 21:27:48 +01:00
sandrodachandClaude Opus 5.5 78af2d306e feat(settings): hide the notes rights while MCP is off, mention notes in the API intro
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 21:24:28 +01:00
sandrodachandClaude Opus 5.5 a8f6c1b97b feat(mcp): agents can list, read and create notes
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>
2026-11-01 21:18:26 +01:00
sandrodachandClaude Opus 5.5 c6f28aa816 feat(mcp): operators can switch MCP (and OAuth) off
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>
2026-11-01 21:11:53 +01:00
sandrodachandClaude Opus 5.5 39a04082fc feat(workspace): bring an extracted note back into the bullet
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>
2026-11-01 20:13:53 +01:00
sandrodachandClaude Opus 5.5 75aea4a7d4 feat(mcp): OAuth so claude.ai and ChatGPT can connect as connectors
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m49s
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>
2026-11-01 20:01:32 +01:00
sandrodachandClaude Opus 5.5 994f6dc554 feat(search): kind chips, large view with filters and context, tick tasks and list items right in the results
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m37s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:53:10 +01:00
sandrodachandClaude Opus 5.5 558fc46cf4 fix(search): open tasks and list items before completed ones
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m36s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:36:45 +01:00
sandrodachandClaude Opus 5.5 2bb0dec744 fix(tasks): a task opened by a link does not open again on every return to the tab
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:18:56 +01:00
sandrodachandClaude Opus 5.5 687389df64 docs(agents): the website repo belongs to another agent; do not touch it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:07:47 +01:00
sandrodachandClaude Opus 5.5 7c9c71227a chore: relicense under the GNU AGPLv3
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m47s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 18:03:44 +01:00
sandrodachandClaude Opus 5.5 8238c8a73f feat(workspace): hashtag page shows the live outliner of each note's tagged branches, edited in place
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m45s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:54:14 +01:00
sandrodachandClaude Opus 5.5 ca56220e68 feat: link dialog finds bullets of all notes; richer sample data with help notes, deep nesting and linked to-dos
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m46s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:23:53 +01:00
sandrodachandClaude Opus 5.5 ae96aa5f2b feat(tasks): dictate into a task's detail notes
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 17:11:20 +01:00
sandrodachandClaude Opus 5.5 b48f0f2d59 docs: changelog for 0.45.2
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:57:15 +01:00
sandrodachandClaude Opus 5.5 a4e08bdff8 docs: bring README and Doku up to date with trash, retention, voice choice, undo, combined kanban and editor selection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:56:56 +01:00
sandrodachandClaude Opus 5.5 3de6c6088b style: folders without arrow, hashtag row cut off with an expander
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m53s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:51:27 +01:00
sandrodachandClaude Opus 5.5 6fb98d4002 feat: select text across bullets and delete it like a text editor; Ctrl+Z in tasks; notes and lists without emoji; custom done columns complete tasks
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m33s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:27:43 +01:00
sandrodachandClaude Opus 5.5 e2b9daba75 fix: shift range from a pinned note in its folder; kanban fits the window; list toolbar; quick dump targets only select; aligned bullets; steady search field; browser voice waits 5 s
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m28s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 16:12:01 +01:00
sandrodachandClaude Opus 5.5 5a9c5bac37 feat: task trash, triage trash and retention settings for every area; admin can forbid keeping things for good
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m39s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:44:34 +01:00
sandrodachandClaude Opus 5.5 a927a94a95 feat(voice): per-account choice between Whisper and the browser; STT_ALLOW_BROWSER
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:19:20 +01:00
sandrodachandClaude Opus 5.5 55112b940c feat: update notice after a server update, keep the open tab on reload, chunked Whisper in Quick Dump, compact emoji picker
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m31s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:09:21 +01:00
sandrodachandClaude Opus 5.5 20b907078f fix(workspace): focus a jump target only once, not again after every new block
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 15:01:04 +01:00
sandrodachandClaude Opus 5.5 3e4eb9b14f feat(kanban): combine the columns of all lists by name in "Alle Aufgaben"; block drops into columns a task's list lacks
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m37s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:32:51 +01:00
sandrodachandClaude Opus 5.5 7860609201 feat: emoji picker in create dialogs; due date and priority right under a deepened task; no flicker on kanban drop
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m29s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 14:20:34 +01:00
sandrodachandClaude Opus 5.5 fa02e8dee6 fix(compose): speaches 0.8.3 reads WHISPER__TTL, not STT_MODEL_TTL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 13:55:44 +01:00
sandrodachandClaude Opus 5.5 284ef1f723 feat(kanban): smooth drop slot instead of a flickering line; fix reload after reordering
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m39s
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>
2026-11-01 13:40:47 +01:00
sandrodachandClaude Opus 5.5 1e3ac9786f feat: edit API keys (name, rights); quick dump text above its buttons; inline note badges
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m33s
- 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>
2026-11-01 13:34:27 +01:00
sandrodachandClaude Opus 5.5 6f2eb08489 fix: deepen opens the linked note, task list columns in "Alle Aufgaben", Whisper repeats, date field
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m33s
- 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>
2026-11-01 13:28:52 +01:00
sandrodachandClaude Opus 5.5 c56bd4d943 fix(server): stop the background compaction before the database is closed
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m35s
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>
2026-11-01 13:16:58 +01:00
sandrodachandClaude Opus 5.5 3fbe015c06 feat(workspace): mark several notes (Ctrl/Cmd, Shift) and drag them into a folder or onto the trash
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m43s
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>
2026-11-01 12:38:03 +01:00
sandrodachandClaude Opus 5.5 0d34308601 ci: rebuild v0.36.0 (previous dev build failed on the runner, local CI build green)
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 55s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 12:35:20 +01:00
sandrodachandClaude Opus 5.5 5a8922011d feat(tasks): linked tasks sync title and subtasks with their note in both directions
MindSift CI & Docker Release / Build, Test in Container & Push (push) Failing after 2m32s
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>
2026-11-01 12:29:10 +01:00
sandrodachandClaude Opus 5.5 f91926c208 feat(tasks): completed tasks are deleted after a delay (default 30 days), "Erledigte leeren"
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m34s
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>
2026-11-01 12:18:54 +01:00
sandrodachandClaude Opus 5.5 66b28e1998 feat(tasks): two-column task detail on the desktop (content left, settings right); v0.34.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m36s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 12:11:40 +01:00
sandrodachandClaude Opus 5.5 d2b45daf4a chore: release v0.33.0
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m20s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 11:56:18 +01:00
sandrodachandClaude Opus 5.5 1a56be572c feat(tasks): deepening a task into a note keeps the task, linked to the note's first checkbox
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 11:32:42 +01:00
sandrodachandClaude Opus 5.5 c851b8e3ba feat(capture): quick dump list row follows the target (task lists for tasks)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 11:29:06 +01:00
sandrodachandClaude Opus 5.5 83b3f27b3e feat(voice): microphone in the add-task and add-item rows; phone fixes in the column dialog
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m38s
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>
2026-11-01 11:17:49 +01:00
sandrodachandClaude Opus 5.5 08081e6c1d feat(kanban): choose a colour per column
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m52s
"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>
2026-11-01 11:00:17 +01:00
sandrodachandClaude Opus 5.5 b883315914 feat(api): one API for curl and MCP, REST reads with keys, origin badge with key name
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m16s
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>
2026-11-01 10:26:44 +01:00
sandrodachandClaude Opus 5.5 0ca715ba64 feat(tasks): status dot in the column colour in the list view, also on phones
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 10:00:30 +01:00
sandrodachandClaude Opus 5.5 ac068248d7 feat(mcp): delete tasks, create task lists and lists, agent badge; export/import settings category
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m21s
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>
2026-11-01 08:49:10 +01:00
sandrodachandClaude Fable 5.1 8faed7a160 feat(mcp): MCP server for AI agents, agent scopes on API keys, switches in settings
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m19s
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>
2026-10-31 21:58:44 +01:00
sandrodachandClaude Opus 5.5 5982563579 fix(mobile): outline bar only while the keyboard is open
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m51s
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>
2026-10-31 21:18:05 +01:00
sandrodachandClaude Opus 5.5 9ed63281ed feat(demo): start the demo in the round Fjord Night theme
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m44s
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>
2026-10-31 21:13:29 +01:00
sandrodachandClaude Opus 5.5 68bc4d279c fix(workspace): hidden bullet actions on phones, no second extract, notice layout
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m20s
- 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>
2026-10-31 19:56:32 +01:00
sandrodachandClaude Opus 5.5 fdd6e38065 feat(ui): connection status in the header; README screenshots as WebP
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m38s
- 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>
2026-10-31 19:17:51 +01:00
sandrodachandClaude Opus 5.5 c1adb10b5e fix(ui): bottom sheets on phones are square at the bottom like the other sheets
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m36s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 15:58:35 +01:00
sandrodachandClaude Opus 5.5 c43c99dc0c feat(mobile): list items and new notes via a sheet opened by "+"
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m34s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 15:41:44 +01:00
sandrodachandClaude Opus 5.5 19f98ae92f fix(triage): list and date buttons on phones open the bottom sheet
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m39s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 15:24:55 +01:00
sandrodachandClaude Opus 5.5 15dcfa0d96 docs: add TODO.md (task list for developers and agents)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 15:18:06 +01:00
sandrodachandClaude Opus 5.5 28ebbe7263 fix(lists): add items offline via the outbox; recognisable input field
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m34s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 15:07:19 +01:00
sandrodachandClaude Opus 5.5 ab97638361 feat(auth): confirm the e-mail address of new accounts by link
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m21s
- 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>
2026-10-31 14:01:41 +01:00
sandrodachandClaude Opus 5.5 1406650b7c style(admin): invite form puts the e-mail first and wide, "how often" narrow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:54:19 +01:00
sandrodachandClaude Opus 5.5 af77b9e809 feat(auth): invite links for several people, invite by email, registration with approval or email domains
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m20s
- 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>
2026-10-31 13:43:54 +01:00
sandrodachandClaude Opus 5.5 db5c5cde9b docs(plan): multi-use invite links replace bulk single codes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:26:38 +01:00
sandrodachandClaude Opus 5.5 d97f0e6dbf docs(plan): invitation links, invite by email and multi-use codes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:19:18 +01:00
sandrodachandClaude Opus 5.5 ce66933acc docs(plan): drop the mail server login from the registration plan
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:16:19 +01:00
sandrodachandClaude Opus 5.5 8c2bfe2cee fix(voice): browser speech recognition on Android no longer repeats phrases
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:16:04 +01:00
sandrodachandClaude Opus 5.5 32bb92ecf8 docs: plan for registration modes (approval, email domains) and OIDC / mail server login
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:44:29 +01:00
sandrodachandClaude Opus 5.5 f5281a5aea docs: agent instructions (language, checks, release order via CI, UI rules)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:27:19 +01:00
sandrodachandClaude Opus 5.5 599d53e0ea fix(mail): greeting follows the run time, not the clock (CI failed from noon on)
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 48s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:20:37 +01:00
sandrodachandClaude Opus 5.5 5b636b66e2 fix(push): reinstalled app replaces its old subscription; devices listed and removable
MindSift CI & Docker Release / Build, Test in Container & Push (push) Failing after 2m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:59:40 +01:00
sandrodachandClaude Opus 5.5 f76b0f34ff feat: Kanban touch drag, admins delete backups, bigger share message
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m5s
- 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>
2026-10-31 11:54:17 +01:00
sandrodachandClaude Opus 5.5 da258fdce2 feat(share): after sharing, send the entry on as task or list item with one tap
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m30s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:27:06 +01:00
sandrodachandClaude Opus 5.5 3d367ce633 feat(pwa): app icon shortcuts for Quick Dump, new task and shopping list open their input
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m31s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:16:46 +01:00
sandrodachandClaude Opus 5.5 c6a2cfb85c feat(workspace): bar above the phone keyboard to indent, outdent and move bullets
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m33s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:09:39 +01:00
sandrodachandClaude Opus 5.5 32b79b5d62 fix(workspace): journal entry on phones looks like a folder row, no half highlight after back
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m32s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:00:33 +01:00