- Add background task scheduling system with cron-based triggers
- Add background-task-detail component for viewing agent status
- Add agent schedule repo and state management
- Update sidebar to show background agents section
- Remove old workflow-authoring and workflow-run-ops skills
- Add IPC handlers for agent schedule operations
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migrate gmail_sync to use Composio for OAuth authentication instead of
direct Google OAuth. Add gmail connection UI to onboarding and connectors.
Remove calendar sync functionality.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Allow users to ask copilot to use Slack on their behalf via Composio integration.
Adds composio client, OAuth flow, slack skill with tool catalog, and UI for
connecting Slack in onboarding and connectors popover.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add rowboat auth flow using Supabase as the OIDC provider. User info is
fetched via the standard OIDC userinfo endpoint (discovered from issuer
metadata) instead of a hard-coded Supabase URL. Includes login screen,
auth state hook, IPC handlers, logout button, and id_token_sub persistence
for userinfo fetches across app restarts.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
UX issue: if I scroll the text before the copilot has finished generating, then it scrolls back up after the end of generation.
Rename tasks -> Chats and make it the default view
The skill now treats the existing generator as a minimal reference and
tells the agent it can write and execute its own code, install any npm
packages, generate charts/visualizations, and use whatever libraries it
wants. Adds visual quality guidelines emphasizing color, charts, and
polish over plain text-on-white slides.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move the presentation implementation out of the skill string into real
TypeScript files (types.ts, presentation-generator.tsx) and add a
generatePresentation builtin tool so the agent calls it directly instead
of writing code. Rewrite the skill to guidance-only with content limits,
preference gathering, and JSON examples for each slide type.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement a stop execution feature that allows users to abort ongoing LLM
streaming, kill running tool calls, and clear pending permission/human input
requests. Uses a hybrid approach: first click sends graceful SIGTERM, second
click within 2s sends SIGKILL and force-closes MCP clients.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ensure models.json, mcp.json, and security.json config files are created
when the app starts, before the Settings UI can access them.
- Add ensureConfig() method to IModelConfigRepo and IMcpConfigRepo interfaces
- Add async ensureSecurityConfig() function for security config initialization
- Create initConfigs.ts with centralized initialization that calls all config ensure methods
- Call initConfigs() in main.ts before setupIpcHandlers()
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cancel any existing OAuth flow before starting a new one to prevent
"Port 8080 is already in use" errors. Adds module-level tracking of
the active flow and a cancelActiveFlow() helper for proper cleanup.
Also reduces timeout from 5 minutes to 2 minutes.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>