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>
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>