feat(ai): complete Phase 4-5 — AI command execution + plugin bridge#150
Conversation
Prepare release/0.9.0 with version bumps in root and desktop package.json files, and update CHANGELOG with all changes since 0.1.2. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Phases 6-12 strategic roadmap covering workspace enhancement, command palette evolution, AI workflows, knowledge retrieval, and developer workflows. Remove tracked ._* resource fork files from exFAT volume. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configure Vercel to build apps/web from the monorepo root using pnpm workspaces. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Critical: - Guard apiClient post-refresh retry to prevent infinite 401 loop Major: - Treat transient refresh errors as retryable, not logout-worthy - Use ApiError.statusCode for auth-expiry detection in syncService - Handle intentional sync abort gracefully (no false error status) - Use product-config facade labels for pricing display - Fix FaqAccordion accessibility (ARIA roles, tab semantics) - Fix Testimonials semantic HTML (figcaption, star rating aria) - Add aria-labelledby to WhyLocal section - Fix animated-grid-pattern memory leak (mount guard, cleanup) - Fix hero-video-dialog keyboard handling (Escape via useEffect) Minor: - Guard LoginModal reset against rapid reopen race condition - Fix fallback color to match teal accent scheme - URL-encode auth verify token in deep links - Fix import order in docs layout - Suppress transitions in prefers-reduced-motion - Stabilize animated-beam random duration with useMemo - Add focus management to hero-video-dialog Nitpick: - Rename LoginModal → EnableSyncModal to match export name - Extract CSS color tokens for ai-panel and global styles - Improve Footer, dot-pattern, and docs page component quality Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename confusing `useSettingsStore` variable to `hasSettingsKey` in AiPanel - Add loading="lazy" to hero video thumbnail image Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When a release/* PR merges to main: 1. Creates git tag vX.Y.Z from package.json version 2. Merges main back to develop (Git Flow sync) This triggers the existing release.yml workflow which builds distributables and creates the GitHub Release. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add validate job to release.yml: fails if tag doesn't match package.json - Document SemVer convention (v* prefix) and tag protection rules - Tags created only by GitHub Actions via auto-tag.yml Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 4 (AI Knowledge): - Wire ai:summarize, ai:rewrite, ai:tweet with real Claude prompts - Add built-in prompt templates (summarize, rewrite, tweet) - AiPanel auto-executes pre-filled commands with output routing - Support replace-selection, insert-at-cursor, and panel output targets Phase 5 (Extensibility): - Create useRegisterPluginAiCommands hook bridging aiCommandStore → CommandRegistry - Plugin AI commands auto-appear in command palette - Template resolution with editor context (selection, note, title) - Dynamic registration/cleanup on plugin load/unload Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAutomated GitHub Actions release flow added; v0.9.0 version bump and changelog; new AI commands (summarize, rewrite, tweet) with plugin bridge and AiPanel auto-execution; improved auth refresh/retry and sync abort handling; major web theming and accessibility updates; various UI and style adjustments. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant App as Desktop App
participant AiPanel
participant Template as Template Engine
participant API as AI Service
participant Editor
User->>App: Trigger AI command (summarize/rewrite/tweet)
App->>Editor: Read selection / context
App->>AiPanel: Open with initialCommand (system, user, outputTarget)
AiPanel->>Template: resolveTemplate(userPrompt + selection)
Template-->>AiPanel: Resolved prompt
AiPanel->>API: Query AI (system + user)
API-->>AiPanel: Response
alt outputTarget = 'replace'
AiPanel->>Editor: replaceSelection(text)
Editor-->>User: Selection replaced
else outputTarget = 'insert'
AiPanel->>Editor: insertAtCursor(text)
Editor-->>User: Text inserted
else outputTarget = 'panel'
AiPanel-->>User: Show response in panel
end
AiPanel->>App: onCommandExecuted()
App->>App: Clear pending AI command
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Remove eslint-disable comment for non-existent react-hooks/exhaustive-deps rule definition, and reorder @readied/ai-assistant imports before relative imports per import-x/order rule. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
## Release v0.9.0 ### Highlights - **Auth → Payment → Sync flow**: License-gated sync with smart step routing in EnableSyncModal - **Stripe checkout**: Monthly (€2/mo) and annual (€20/year) plan selection - **Sidebar drag-and-drop**: Grip handle, circular reference prevention, child depth propagation - **CI/CD**: Auto-deploy API — develop → staging, main → production - **Design tokens**: SyncStatusIndicator uses CSS variables instead of hardcoded colors - **AI features**: Command execution, plugin bridge, knowledge system (Phase 4-5) - **UI cleanup**: Tailwind v4 canonical classes, removed dead design-system package ### Changes since v0.8.0 - feat(sync): connect auth → payment → sync flow with license gating (#154) - chore: Tailwind v4 canonical classes + tsconfig cleanup (#151) - feat(ai): complete Phase 4-5 — AI command execution + plugin bridge (#150) - feat(ai,plugins): complete Phase 4-5 — AI knowledge & extensibility - feat(desktop,api): complete Phase 1-3 roadmap implementation ### Checklist - [x] `pnpm typecheck` passes - [x] `pnpm test` passes - [x] `package.json` version is `0.9.0` - [x] All features merged to develop first - [x] API production secrets configured (Stripe, Resend) 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit # Release Notes * **New Features** * Added AI-powered text commands (summarize, rewrite, tweet) with plugin integration. * Introduced drag-and-drop notebook reordering with automatic circular reference protection. * Enhanced sync onboarding with license-based feature gating. * Improved magic link authentication with automatic verification. * **Bug Fixes** * Fixed token refresh infinite loop handling. * Added URL encoding for verification links. * Improved cleanup for animated UI components. * **Improvements** * Enhanced error handling for authentication and sync failures. * Added accessibility attributes (ARIA labels, semantic HTML). * Updated visual styling with new token-driven design system. * **Refactor** * Migrated from design-system package to plugin-api package. * Consolidated design tokens and theme system. * **Chores** * Updated GitHub Actions release automation. * Refreshed project documentation and contribution guidelines. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Summary
ai:summarize,ai:rewrite,ai:tweetcommands with real Claude prompts and output routing (replace selection, insert at cursor, or show in panel)Changes
Phase 4
packages/ai-assistantinitialCommandprop for auto-executionreplaceswaps editor selection,insertadds at cursor,panelshows in chatPhase 5
useRegisterPluginAiCommandshook subscribes toaiCommandStoreand syncs toCommandRegistryAI:prefix{{selection}},{{note}},{{title}})Test plan
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Bug Fixes
Documentation