- Added WINDOW_FULLSCREEN_CHANGED and WINDOW_IS_FULLSCREEN constants for fullscreen state management.
- Enhanced main window to notify the renderer when entering or leaving fullscreen mode.
- Implemented IPC handlers to check fullscreen status and notify changes to the renderer.
- Introduced useFullScreen hook in the renderer to manage fullscreen state and adjust UI accordingly.
These changes improve user experience by allowing dynamic adjustments to the UI based on fullscreen status.
- Implemented line counting for NotebookEdit and Bash commands in MemberStatsComputer to improve task tracking accuracy.
- Updated TeamDataService to include kanban column information for tasks, enhancing task visibility.
- Refactored Sidebar and GlobalTaskList components to support task filtering by status and team, improving user interaction.
- Introduced TaskFiltersPopover for better task filtering options, allowing users to filter tasks by status and unread comments.
- Enhanced UI components for better responsiveness and user experience in task management.
These changes aim to improve task management efficiency and enhance collaboration within teams.
- Updated the TeamAgentToolsInstaller to version 5, introducing a new command for adding comments to tasks.
- Implemented the addTaskComment function to handle comment creation, including validation and notification to task owners.
- Enhanced the TeamDataService to support fetching tasks alongside tool installation.
- Updated UI components to display unread comment counts and improve user interaction with task comments.
- Refactored various components to integrate task comments seamlessly into the existing workflow.
These changes aim to improve collaboration and communication within teams by facilitating task-related discussions.
- Added a new Contributor License Agreement (CLA) document to clarify contribution terms.
- Updated the license from MIT to GNU Affero General Public License v3.0 (AGPL-3.0).
- Introduced task comments feature, allowing users to add comments to tasks with validation for input length and content.
- Enhanced the TeamDataService to handle adding comments and sending notifications to task owners.
- Updated UI components to display comments and allow users to submit comments via a text area.
- Integrated task comments into the task detail dialog for better user interaction.
These changes aim to improve task management and enhance collaboration within teams.
- teams.ts: add type validation in handleCreateConfig for displayName/description/color
- CreateTaskDialog: scope draft keys per team to prevent cross-team leakage
- agentBlocks.ts: replace stateful singleton regex with factory function
- teams.test.ts: add missing channel assertions and use os.tmpdir()
- SendMessageDialog: move setState out of useEffect to render phase
- TeamMemberLogsFinder: remove unused projectId destructuring
- MentionableTextarea: add eslint-disable description
- useMentionDetection: replace deprecated wordWrap with overflowWrap
- Added validation for team configuration updates to ensure name, description, and color are strings.
- Improved member detection logic to avoid false positives by ensuring only one known member name is matched.
- Refactored post-launch configuration updates to combine session history and project path updates, preventing race conditions.
- Updated UI components to streamline state management for collapsible sections.
These changes aim to improve data integrity and user experience in team management functionalities.
- Introduced TEAM_START_TASK IPC channel to facilitate starting tasks and notifying agents.
- Updated task creation to include an option for immediate start, enhancing user experience.
- Enhanced task notifications with detailed instructions for agents upon task assignment.
- Improved team member logs handling and metadata extraction for better task tracking.
These changes aim to streamline task management and improve team collaboration efficiency.
- Added member color assignment using a new utility function for better visual representation in the UI.
- Updated team member prompts to encourage brief introductions, aligning with project guidelines.
- Introduced a draft persistence mechanism for message and task creation dialogs to enhance user experience.
- Refactored team configuration handling to support new member structures and improve data integrity.
This update aims to streamline team interactions and improve the overall user experience in team management features.
The HTTP_SERVER_GET_STATUS handler returned a raw { running, port } object
while all other HTTP server handlers (start, stop) return { success, data }.
invokeIpcWithResult() in the preload expects the IpcResult<T> envelope and
treats a missing success field as failure, throwing 'Unknown error'.
This caused an unhandled promise rejection every time the Settings page
opened, because GeneralSection calls api.httpServer.getStatus() on mount.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When the sidebar is collapsed and the user clicks a project, the session
list was silently updated behind the hidden panel with no visual feedback,
leaving the user confused about why nothing appeared to change.
Fixed by setting sidebarCollapsed: false in both selectProject and
selectRepository at the moment of selection. Both entry points are covered:
- selectRepository: used by the dashboard project cards
- selectProject: used by the command palette and keyboard shortcuts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Two performance regressions introduced in recent PRs:
1. readAgentConfigs blocked transcript rendering (PR #50)
The agent config IPC call was awaited on the critical path of
fetchSessionDetail, preventing any transcript data from rendering
until the filesystem read completed. On macOS this was especially
noticeable due to security checks on first directory access.
Fixed by making the call fire-and-forget: the transcript renders
immediately and subagent color badges update asynchronously.
Also set the project cache key optimistically before the async call
to prevent duplicate in-flight requests on rapid navigation.
2. SessionSearcher stat()-called every session file on each search (PR #53)
LocalFileSystemProvider.readdir() did not populate the optional
mtimeMs field on FsDirent entries. The new SearchTextCache-based
SessionSearcher fell back to an individual fsProvider.stat() call
per session file when mtimeMs was missing, adding N extra filesystem
round-trips on every search in local mode.
Fixed by statting all entries concurrently inside readdir(), so
mtimeMs is always populated and the stat fallback is never triggered.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Added SearchTextCache for LRU caching of extracted search text with mtime invalidation.
- Introduced SearchTextExtractor for lightweight extraction of searchable text from session messages.
- Updated SessionSearcher to utilize the new extractor and cache for improved search performance.
- Added tests for SearchTextCache and SearchTextExtractor to ensure functionality and correctness.
Subagent badges now show distinct colors instead of generic gray.
Colors are resolved from the project's .claude/agents/*.md frontmatter
(color field), with deterministic hash-based fallback for unconfigured types.
New AgentConfigReader service reads agent definitions via IPC, cached
per project root to avoid redundant disk reads on session refreshes.
Team member colors remain unaffected (team branch has priority).
Add an export button to the TabBar header that lets users export
the current session as Markdown, JSON, or Plain Text. The button
appears between Search and Notifications, only for session tabs.
- sessionExporter.ts: formatters for all three formats + download trigger
- ExportDropdown.tsx: dropdown UI component with format selection
- TabBar.tsx: integration with conditional rendering for session tabs
- 51 new tests covering all formatters, edge cases, and download
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Updated the default notification triggers to set 'enabled' to false for the .env File Access Alert, Tool Result Error, and High Token Usage triggers, allowing for more controlled notification management.
Sessions without the cwd field (older JSONL format) were creating a
separate subproject group, even when all sessions with cwd shared the
same value. The orphan subproject got a relative fallback path that
failed git identity resolution, causing zero sessions to load on select.
Now only counts distinct real cwds when deciding whether to split,
treating cwd-less sessions as belonging to the same project.
- Updated ContextBadge to display the total count of tool outputs and task coordination items based on their breakdowns.
- Introduced FlatInjectionList component for a denested view of injections, allowing users to toggle between grouped and flat views in SessionContextPanel.
- Added state management for flat view toggle and integrated FlatInjectionList into the existing layout.
- Introduced new options to copy Session ID and Resume Command in the SessionContextMenu component.
- Added visual feedback for copied actions with appropriate icons and labels.
- Updated menu height to accommodate new items and maintain layout consistency.
- Updated `markAllNotificationsRead` and `clearNotifications` functions to support optional filtering by trigger name, allowing for more granular control over notification management.
- Adjusted the `NotificationsView` component to reflect the new scoped functionality, including updates to button labels and unread count displays based on active filters.
- Added tests to verify the behavior of scoped actions for marking notifications as read and clearing notifications.