A simple tool which lets you scrape twitter accounts and crosspost them to bluesky accounts! Comes with a CLI and a webapp for managing profiles! Works with images/videos/link embeds/threads.

fix: only thread replies to successfully posted tweets

Previously, replies to skipped tweets were incorrectly being threaded
because the check only verified the entry existed, not that it had
valid uri/cid fields. Now we explicitly check:
- Entry has uri and cid (was successfully posted)
- Entry is not marked as migrated
- Entry is not marked as skipped

jack 0dda1818 96997b98

+5 -2
+5 -2
src/index.ts
··· 358 358 let replyParentInfo: ProcessedTweetEntry | null = null; 359 359 360 360 if (isReply) { 361 - if (replyStatusId && processedTweets[replyStatusId] && !processedTweets[replyStatusId]?.migrated) { 361 + const parentEntry = replyStatusId ? processedTweets[replyStatusId] : undefined; 362 + // Only thread if parent was successfully posted (has uri/cid) and not migrated/skipped 363 + if (parentEntry && parentEntry.uri && parentEntry.cid && !parentEntry.migrated && !parentEntry.skipped) { 362 364 console.log(`Threading reply to ${replyStatusId}`); 363 - replyParentInfo = processedTweets[replyStatusId] ?? null; 365 + replyParentInfo = parentEntry; 364 366 } else { 367 + // Reply to unknown, external, or skipped tweet -> Skip 365 368 console.log(`Skipping reply: ${tweetId}`); 366 369 processedTweets[tweetId] = { skipped: true }; 367 370 saveProcessedTweets();