From 788f2826d2997dc4173b801f51e72398c3c3acb2 Mon Sep 17 00:00:00 2001 From: Chen <99816898+donteatfriedrice@users.noreply.github.com> Date: Wed, 15 Apr 2026 15:25:56 +0800 Subject: [PATCH 1/2] fix(cli): drop twitter-bookmarks default from connector-sync The default dated from single-connector days. With multi-connector packages (github, xhs, reddit, hn), defaulting to twitter-bookmarks is misleading. Omitting the argument now lists installed connectors and prints usage instead. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/cli/src/commands/connector-sync.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/connector-sync.ts b/packages/cli/src/commands/connector-sync.ts index 5647a91..39f0e61 100644 --- a/packages/cli/src/commands/connector-sync.ts +++ b/packages/cli/src/commands/connector-sync.ts @@ -19,10 +19,10 @@ import type { SyncState } from '@spool/core' export const connectorSyncCommand = new Command('connector-sync') .description('Sync a connector until fully complete') - .argument('[connector-id]', 'Connector ID (default: twitter-bookmarks)', 'twitter-bookmarks') + .argument('[connector-id]', 'Connector ID (omit to list available)') .option('--reset', 'Delete all data for this connector and sync from scratch') .option('--delay ', 'Delay between page requests in ms', '600') - .action(async (connectorId: string, opts: { reset?: boolean; delay?: string }) => { + .action(async (connectorId: string | undefined, opts: { reset?: boolean; delay?: string }) => { const db = getDB() const registry = new ConnectorRegistry() const spoolDir = join(homedir(), '.spool') @@ -42,9 +42,22 @@ export const connectorSyncCommand = new Command('connector-sync') trustStore: new TrustStore(spoolDir), }) + const available = registry.list().map(c => c.id) + + if (!connectorId) { + if (available.length === 0) { + console.error('No connectors installed.') + process.exit(1) + } + console.log('Available connectors:') + for (const id of available) console.log(` ${id}`) + console.log('\nUsage: spool connector-sync ') + process.exit(0) + } + if (!registry.has(connectorId)) { console.error(`Unknown connector: ${connectorId}`) - console.error(`Available: ${registry.list().map(c => c.id).join(', ')}`) + console.error(`Available: ${available.join(', ')}`) process.exit(1) } From 98e4d97d1332a1f660ca3035b2b585941df70719 Mon Sep 17 00:00:00 2001 From: Chen <99816898+donteatfriedrice@users.noreply.github.com> Date: Wed, 15 Apr 2026 15:28:55 +0800 Subject: [PATCH 2/2] fix(cli): derive __dirname in ESM for connector-sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The file uses `join(__dirname, ...)` to resolve bundled-connectors, but the package is ESM — __dirname is undefined and the subcommand crashed on invocation. Derive it from import.meta.url. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/cli/src/commands/connector-sync.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/commands/connector-sync.ts b/packages/cli/src/commands/connector-sync.ts index 39f0e61..6f1c3f1 100644 --- a/packages/cli/src/commands/connector-sync.ts +++ b/packages/cli/src/commands/connector-sync.ts @@ -1,6 +1,9 @@ import { Command } from 'commander' import { homedir } from 'node:os' -import { join } from 'node:path' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) import { getDB, ConnectorRegistry,