feat(tasks): assign tasks in shared lists, unified people search, list avatars
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 2m36s

- Tasks in shared task lists can be assigned to one or more people with access
  (task_assignees); assignments are pruned whenever access is lost
- UserAutocomplete: type-to-search everywhere, nothing before typing, max 3 results,
  first match preselected
- Task list and list tabs: avatar stack of members and round monochrome counter
- Shared list items remember who added them (list_items.created_by)
- Doku/ui-patterns.md documents the shared UI patterns

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
sandrodachandClaude Opus 5.5 committed 2026-10-28 20:26:55 +01:00
1 parent 1bd38f4d50
commit 73fad1c5db
21 files changed
+598 -67

No files matched your search

+1
View File
@@ -362,6 +362,7 @@ export const api = {
notes?: string;
subtasks?: SubTask[];
tags?: string[];
assignees?: string[];
}
): Promise<Thought> {
return request<Thought>(`/api/v1/thoughts/${thoughtId}`, {
+4
View File
@@ -62,6 +62,7 @@ export interface Thought {
kanbanStatus?: string;
notes?: string;
subtasks?: SubTask[];
assignees?: string[]; // user IDs, only people with access to the task list
alarmSent?: boolean;
sortOrder?: number;
createdAt: string;
@@ -349,6 +350,8 @@ export interface ListItem {
isCompleted: boolean;
completedBy?: string;
completedByName?: string;
createdBy?: string;
createdByName?: string;
sortOrder: number;
createdAt: string;
completedAt?: string;
@@ -378,6 +381,7 @@ export interface SharedList {
listType: 'shopping' | 'checklist' | 'vacation';
items: ListItem[];
shares?: ListShare[];
members?: TaskListMember[]; // owner + everyone the list is shared with
updatedAt: string;
createdAt: string;
}