- /settings/labels — dedicated page for label CRUD
- Labels in AgentModal — toggle buttons for assigning labels to agents
- AgentConfig interface includes labels[]
- SettingsLayout: new 🏷️ Лейблы menu item
- searchTasks API function (q= param)
- Autocomplete dropdown: search by number or title
- Shows task key + title, click to select
- Replaces raw ID input
- '+ Подзадача' button in TaskModal subtasks section
- CreateTaskModal accepts parentId/parentKey props
- Title shows 'Подзадача для TE-1' when creating subtask
- parent_id sent to API on creation
- Optimistic update: new subtask appended to parent's subtasks list
- Parent breadcrumb: 'TE-1 / TE-3' with clickable parent link
- Subtasks section: colored status dots, clickable keys, assignee
- onOpenTask callback: close current modal, open clicked task
- SubtaskBrief interface in API types
- Project API: project.id for all CRUD + files + members
- Member API: member.id for get/update/regenerate/revoke
- ProjectSettings: member selection by id
- ChatPanel/MentionInput: projectId prop
- AgentModal: agent.id for API, slug for display only
- Agent streaming: real-time text deltas in chat
- Thinking/reasoning: collapsible block with agent's thinking process
- Tool call indicators: shows running/completed tools
- Streaming bubble with pulse animation while agent generates
- Message type updated with 'thinking' field
- Complete project files UI with file list, icons, search
- Upload files via drag & drop or file picker with optional description
- Preview images as thumbnails
- Edit file descriptions inline
- Download files by clicking filename
- Delete files with confirmation
- Show file size, mime type icons, uploader, upload date
- Dark theme consistent with app design
- File size formatting helper
- Support for all common file types with appropriate icons
- Task interface: assignee_id/assignee, reviewer_id/reviewer, watcher_ids
- Message interface: author_id/author вместо author_slug
- API functions: assignTask использует assignee_id
- KanbanBoard: обновлен под новые поля задач
- TaskModal: assignee selection по ID вместо slug
- ChatPanel: отображение author через relationship
- Migrate from Next.js App Router to Vite + React Router
- Replace NEXT_PUBLIC_* env vars with VITE_*
- Convert all pages to React Router structure
- Remove BFF dependency, connect directly to Tracker
- JWT auth with query param support in WebSocket
- All components migrated with basic functionality
- Ready for production deployment