forkfeed-mcp 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,18 +79,18 @@ Only 5 fields + cards. Everything else is auto-populated.
79
79
 
80
80
  ## The 8 cards
81
81
 
82
- Each card = array of detail variants (cover is auto-generated). Provide 1+ variants per card.
82
+ Each card = array of detail variants (cover is auto-generated). Provide 1+ variants per card. Quality over quantity: pick only the most impactful, funny, or educational content.
83
83
 
84
84
  | # | Section | Detail variants | Block pattern | Tone |
85
85
  |---|---------|----------------|---------------|------|
86
- | 0 | Explain like I'm 5 | 3-6 | img -> title -> text | Playful, zero jargon |
87
- | 1 | The roast | 3-6 | img -> title -> text, optional subtext | Maximum cheekiness, swearing ok |
88
- | 2 | Commit message, decoded | 2-4 | social -> title -> text -> optional code | Escalating absurdity |
89
- | 3 | The LinkedIn post | 2-4 | social -> title -> text -> subtext | Peak LinkedIn parody |
90
- | 4 | Statistics | 3-5 | img -> title -> code | Deadpan data humor |
91
- | 5 | Learning moment | 3-8 | img -> title -> text -> optional code -> button(last) | Teach with personality |
92
- | 6 | Alternatives | 3-6 | img -> title -> text -> optional code | Constructive snark |
93
- | 7 | Quiz | 10-15 | title -> quiz (no img blocks) | Quiz show energy |
86
+ | 0 | Explain like I'm 5 | 2-3 | img -> title -> text | Playful, zero jargon |
87
+ | 1 | The roast | 2-3 | img -> title -> text, optional subtext | Maximum cheekiness, swearing ok |
88
+ | 2 | Commit message, decoded | 2-3 | social -> title -> text -> optional code | Escalating absurdity |
89
+ | 3 | The LinkedIn post | 2-3 | social -> title -> text -> subtext | Peak LinkedIn parody |
90
+ | 4 | Statistics | 2-3 | img -> title -> code | Deadpan data humor |
91
+ | 5 | Learning moment | 2-3 | img -> title -> text -> optional code -> button(last) | Teach with personality |
92
+ | 6 | Alternatives | 2-3 | img -> title -> text -> optional code | Constructive snark |
93
+ | 7 | Quiz | 4-6 | title -> quiz (no img blocks) | Quiz show energy |
94
94
 
95
95
  ### Card 2 personas (Decoded)
96
96
  - "What you meant" (source: "x" or "threads")
@@ -108,7 +108,7 @@ Each card = array of detail variants (cover is auto-generated). Provide 1+ varia
108
108
 
109
109
  - Exactly 8 cards in the cards array (one per section above)
110
110
  - Use short image IDs from forkfeed_commits output (img47, not full URLs)
111
- - 12-20 unique scene images (img*) across the feed, no duplicate within same card
111
+ - 8-12 unique scene images (img*) across the feed, no duplicate within same card
112
112
  - Cards 0-5: code must be REAL from the diff (never fabricated)
113
113
  - Card 6: synthesized code IS allowed
114
114
  - Card 7: no img blocks, quiz blocks only (with title per variant)
package/dist/index.js CHANGED
@@ -482,31 +482,32 @@ async function pushManifestToServer(manifest) {
482
482
  const url = `https://forkfeed.link/fork/${forkId}`;
483
483
  try {
484
484
  const qr = await QRCode.toString(url, { type: 'utf8', errorCorrectionLevel: 'L' });
485
- qrBlock = ['', 'Scan to open in forkfeed:', '', qr, url].join('\n');
485
+ qrBlock = ['', 'Scan to open in forkfeed:', '', qr].join('\n');
486
486
  }
487
487
  catch {
488
- qrBlock = `\nLink: ${url}`;
488
+ qrBlock = '';
489
489
  }
490
490
  }
491
- return {
492
- content: [{
493
- type: 'text',
494
- text: [
495
- 'Content pushed successfully!',
496
- '',
497
- `Uploaded: ${data.uploaded?.feeds || 0} feeds, ${data.uploaded?.cards || 0} cards`,
498
- '',
499
- 'Forks:',
500
- forkSummary || ' (none)',
501
- '',
502
- saveError || `Manifest saved to ${filepath}`,
503
- '',
504
- 'Your content is now live in the forkfeed app. It starts as private.',
505
- 'To make it public, change visibility in the app (requires admin approval).',
506
- qrBlock,
507
- ].join('\n'),
508
- }],
509
- };
491
+ const blocks = [{
492
+ type: 'text',
493
+ text: [
494
+ 'Content pushed successfully!',
495
+ '',
496
+ `Uploaded: ${data.uploaded?.feeds || 0} feeds, ${data.uploaded?.cards || 0} cards`,
497
+ '',
498
+ 'Forks:',
499
+ forkSummary || ' (none)',
500
+ '',
501
+ saveError || `Manifest saved to ${filepath}`,
502
+ '',
503
+ 'Your content is now live in the forkfeed app. It starts as private.',
504
+ 'To make it public, change visibility in the app (requires admin approval).',
505
+ ].join('\n'),
506
+ }];
507
+ if (qrBlock) {
508
+ blocks.push({ type: 'text', text: qrBlock });
509
+ }
510
+ return { content: blocks };
510
511
  }
511
512
  catch (err) {
512
513
  return {
@@ -756,6 +757,7 @@ server.prompt('forkfeed', 'Turn GitHub commits into swipeable forkfeed content.
756
757
  3. Call **forkfeed_commits** with the selected commit SHA. This returns the diff, file stats, and suggested scene images. Do NOT run git commands yourself.
757
758
  4. Generate the simplified content JSON: sha, feedTitle, feedDescription, forkTitle, forkDescription, and 8 cards with blocks. Use short image IDs (img47) for inline images. Do NOT provide owner, repo, backgrounds, existingFeedIds, UUIDs, covers, or type wrappers. The builder auto-detects and generates all of that.
758
759
  5. Call **forkfeed_build** with the simplified content (push defaults to true).
760
+ 6. Display the QR code block from the push result exactly as returned, so the user can scan it.
759
761
 
760
762
  Start now.`,
761
763
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forkfeed-mcp",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "description": "MCP server for pushing GitHub commits to forkfeed",
5
5
  "type": "module",
6
6
  "bin": {