feat: exec capability, GitHub connector, and multi-connector support#70
Merged
feat: exec capability, GitHub connector, and multi-connector support#70
Conversation
…bilities Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ectors Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Packages can now export multiple connectors via spool.connectors[] array in package.json. The loader discovers each entry as a separate PkgInfo, caches the module import to avoid re-loading, and matches connector classes by id. Single-connector packages continue to work unchanged. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ons) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move from bundled to registry-based distribution — these connectors require external CLI tools (gh, opencli) so users should opt in rather than seeing auth failures for unused connectors. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- html_url takes priority (GitHub API url is not the web URL) - Use opencli doctor for fast auth check instead of attempting a fetch Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Xiaohongshu connector requires opencli + browser bridge setup. Without the setup guide UI, users see "Not connected" with no guidance. Will re-add after the setup guide feature lands. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Multi-connector packages (like GitHub with Stars + Notifications) now show as a single card with "Includes: ..." instead of separate entries. Prevents confusion when installing one connector unexpectedly adds another. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Each sub-connector now displays its own label and description instead of a flat "Includes: ..." string. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- getInstalledConnectorPackages now reads spool.connectors[] array - Uninstall removes all connectors from the same package, not just the one clicked (they share a single npm package on disk) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Registry.clear() on reload so stale entries don't survive - Uninstall: remove from registry + cancel in-flight syncs before file deletion, with best-effort DB cleanup (resilient to FTS corruption) - Install: clear stale sync_state to prevent inheriting old cursors/enabled flags from a prior failed uninstall - Serialize install/update with promise-chain lock to prevent interleaving race conditions - SyncScheduler.cancelIfRunning() to stop in-flight syncs and drain queued jobs for a specific connector - UI: "Uninstalling…" state with all detail view controls disabled - Fix duplicate discoverPackages loop and TS strict-null errors in SettingsPanel Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Extract commonLabel() helper, replacing 3 duplicated word-intersection blocks - Fix O(n²) connector grouping: replace Set+find with Map in both installed and available lists - Memoize discoverPackages with useMemo - Read platform from manifest instead of fragile regex derivation - Add console.warn to silent catch blocks in install/uninstall - Add v2 DB migration: rebuild captures FTS indexes to fix corruption from old opencli data that causes DELETE triggers to fail - Add comments explaining non-obvious "why" in lock, uninstall, loader Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The SDK shouldn't hardcode platform knowledge. Content type is now passed by each connector explicitly via parseCliJsonOutput's third argument, defaulting to 'page'. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
parseOneItem no longer knows about GitHub's { starred_at, repo }
structure, starred_at/pushed_at/avatar_url fields, or html_url
preference. The GitHub connector now flattens its API response
before passing to the generic parser.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
188a492 to
1e50aec
Compare
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# Conflicts: # packages/app/src/renderer/components/SettingsPanel.tsx
…isible - Add stripLabelPrefix helper in SettingsPanel - Apply in detail view headers, list view group subs, available connectors - Apply in landing page sub-connector list - Equal card heights on landing via grid-auto-rows: 1fr + height: 100% - Compact sub-connector styling (smaller font, tighter spacing) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix: data flattening moved into the connector (was broken in 0.1.0 where stars captures had empty platform_id/url/title, causing dedup failures and accumulating duplicates on every sync). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
execcapability — new SDK type + core implementation with GUI-safe PATH resolution (nvm/fnm/homebrew)spool.connectors[]manifest +mod.connectorsexport, backward compatibleparseCliJsonOutput— SDK helper for parsing CLI JSON/NDJSON output into CapturedItem[]@spool-lab/connector-github— Stars (persistent, paginated) + Notifications (ephemeral) viaghCLITest plan
Deferred (separate PRs)