A deleted personal folder is kept in trashed_folders with its subfolders;
its notes are trashed and tied to it. The trash lists the folder as one
entry with its note count; restoring brings back the folder tree (empty
subfolders too) and all notes, deleting for good, emptying the trash and
the notes trash delay remove it with its notes. Folders in shared folders
keep the old way.
Deleting a folder now asks first, in a small popover at the click
(ConfirmPopover, documented in ui-patterns).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the desktop the window no longer scrolls: the area between header
and footer does, with room for its scrollbar kept on both sides so the
content stays centred and nothing shifts between pages. This replaces
the scrollbar-gutter tricks (header colour in the gutter, Chrome's
always-on scrollbar, which also let the sticky header scroll away in
Chrome). Triage fills the height: card and buttons stay, the queue takes
the rest and scrolls inside. The Kanban height fit and the Quick Dump
button use the scroll area. Phones keep scrolling the window.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
- 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>