NoteSurge Changelog

extension

Everything shipped under “extension”, across every version, newest first.

In-feed badges on X from the browser extension

v1.86.0 · October 9, 2026

Added

The extension now marks posts in your X timeline with performance badges and opens a Worth replying to panel with posts worth answering. It only points you to them; it never replies for you.

Paste any shared link to get a clean markdown article in your Library

v1.78.0 · September 19, 2026

Added

MIT-E: a new "Article from link" import source (clipboard icon in the Import Hub) takes any web article URL, strips it to its article body with @mozilla/readability, converts to clean markdown via turndown, and lands the result as a repurposable Library piece with the canonical URL as provenance. Uses the same SSRF guard the webhook paths use — a user-supplied link can never reach internal metadata endpoints. Idempotent: re-importing the same URL returns the existing piece.

Removed dead sectionFromUrl copy from SSR landing page

v1.77.0 · September 17, 2026

Fixed

mac-ssr-landing split page.tsx into a Server Component but shipped a duplicate sectionFromUrl() there that could never run (Server Components have no window at render time). Deleted the dead function and its unused section-nav import; the live copy in app-workspace.tsx is now the sole seam.

Lens, Warpcast and Mastodon capture import fixes

v1.70.0 · September 7, 2026

Fixed

Lens/Warpcast DOM extraction no longer titles captured posts with the author name; Mastodon engagement fields now map correctly on insert; Twitch capture handles authorHandle null and host-check edge cases.

Browser extension now captures your own YouTube Shorts

v1.68.0 · September 5, 2026

Added

Open your channel Shorts tab (https://www.youtube.com/@<your-channel>/shorts) and scroll — every Short you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as TikTok/Instagram/Pinterest. Shorts are keyed off their canonical /shorts/{videoId} permalink so the same Short is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/youtube-shorts with UPSERT semantics.

Browser extension now captures your own Kick and Twitch VODs

v1.68.0 · September 5, 2026

Added

Open your Kick videos page (kick.com/{username}/videos) or Twitch videos page (twitch.tv/{username}/videos) and scroll — every VOD you scroll past flows into your Library, using the same scroll-capture relay pattern as TikTok/YouTube Shorts. Kick VODs are keyed off their 36-char uuid permalink; Twitch VODs off their numeric video id. Engagement maps to captured views (primary) + likes (secondary). Feeds POST /api/import/kick and /api/import/twitch with UPSERT semantics — re-capturing refreshes engagement rather than duplicating.

Browser extension now captures your own Blogger blog homepage and archive

v1.67.0 · September 3, 2026

Added

Open your own Blogger blog (https://yourblog.blogspot.com/) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other blog captures (Substack/WordPress/Ghost/Hashnode/Tumblr). Posts are keyed off their canonical /p/{slug} permalink so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/blogger with UPSERT semantics.

Browser extension now captures your own Whop forum posts

v1.67.0 · September 3, 2026

Added

Open your own Whop profile (https://whop.com/{your-handle}) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other profile-timeline captures. Posts are keyed off their canonical permalink so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/whop with UPSERT semantics.

Browser extension now captures your own Dribbble shots

v1.67.0 · September 3, 2026

Added

Open your own Dribbble profile (https://dribbble.com/{your-handle}) and scroll — every shot you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other profile-timeline captures. Shots are keyed off their canonical permalink so the same shot is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/dribbble with UPSERT semantics.

Browser extension now captures your own Warpcast casts

v1.67.0 · September 3, 2026

Added

Open your own Warpcast profile (https://warpcast.com/{handle}) and scroll — every cast you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other profile-timeline captures. Casts are keyed off their Farcaster hash (0x + hex) so the same cast is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/warpcast with UPSERT semantics.

Browser extension now captures your own Lens publications

v1.67.0 · September 3, 2026

Added

Open your Lens profile page on hey.xyz (https://hey.xyz/u/{your-handle}) or lenster.xyz (https://lenster.xyz/{your-handle}) and scroll — every publication you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other profile-timeline captures. Publications are keyed off their permalink slug (the path segment after /posts/) so the same publication is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/lens with UPSERT semantics.

Browser extension now captures your own WordPress blog author archive

v1.66.0 · September 2, 2026

Added

Open your WordPress author archive page (https://your-domain/author/your-username/) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other blog captures (Substack/Mastodon/Bluesky/Ghost/Hashnode/Tumblr/Reddit/Dev.to). WordPress self-hosted has arbitrary domains, so the manifest match is broad (https://*/*) with a strict path guard that only activates on /author/{username}/ pages — visiting your admin, posts, or any other WordPress page is never captured. Posts are keyed off their permalink slug so the same post is never duplicated, and re-capturing just refreshes engagement (Jetpack likes / comment-count widgets). Feeds POST /api/import/wordpress-posts with UPSERT semantics.

Browser extension now captures your own Dev.to profile feed

v1.66.0 · September 2, 2026

Added

Open your Dev.to profile page (https://dev.to/@{your-handle}) and scroll — every article you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other profile-timeline captures. Articles are keyed off their permalink slug so the same article is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/devto with UPSERT semantics.

Browser extension now captures your own VK profile timeline

v1.66.0 · September 2, 2026

Added

Open your VK profile page (https://vk.com/{your-id}) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as the other profile-timeline captures. Posts are keyed off their canonical permalink so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/vk with UPSERT semantics.

Browser extension now captures your own Mastodon profile timeline

v1.65.0 · September 1, 2026

Added

Scroll your own profile timeline on any Mastodon instance (e.g. mastodon.social) and every post you scroll past is captured into your Library — text, engagement counts, author handle/name, and media attachments. The extension reads the rendered DOM and sends posts via POST /api/import/mastodon using the same x-app-session auth as the other import paths. Captured posts feed the Telegram agent's voice sample and appear under the Library Imported origin chip.

Browser extension now captures your own Substack publication archive

v1.65.0 · September 1, 2026

Added

Open your publication archive (https://yourpub.substack.com/archive) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as Mastodon/Bluesky. Posts are keyed off their canonical /p/{slug} permalink so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/substack-posts with UPSERT semantics.

Browser extension now captures your own Ghost blog archive

v1.65.0 · September 1, 2026

Added

Open your Ghost publication homepage (e.g. https://yourblog.ghost.io) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as Substack/Mastodon/Bluesky. Posts are keyed off their permalink slug so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/ghost with UPSERT semantics.

Browser extension now captures your own Hashnode blog archive

v1.65.0 · September 1, 2026

Added

Open your Hashnode profile page (https://hashnode.com/@{your-handle}) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as Substack/Mastodon/Bluesky/Ghost. Posts are keyed off their permalink slug so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/hashnode with UPSERT semantics.

Browser extension now captures your own Tumblr blog archive

v1.65.0 · September 1, 2026

Added

Open your Tumblr blog posts page (https://yourblog.tumblr.com/blog/{name}/posts) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as Substack/Mastodon/Bluesky/Ghost/Hashnode. Posts are keyed off their numeric post id so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/tumblr with UPSERT semantics.

Browser extension now captures your own Reddit profile timeline

v1.65.0 · September 1, 2026

Added

Open your Reddit profile page (https://www.reddit.com/user/{your-username}) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as Substack/Mastodon/Bluesky/Ghost/Hashnode/Tumblr. Posts are keyed off their canonical permalink (/r/{sub}/comments/{id}/{slug}) so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/reddit with UPSERT semantics.

Browser extension now captures your own VK profile timeline

v1.65.0 · September 1, 2026

Added

Open your VK profile wall (https://vk.com/{your-domain-or-id}) and scroll — every post you scroll past flows into your Library for voice-matching, using the same scroll-capture relay pattern as Substack/Mastodon/Bluesky/Ghost/Hashnode/Tumblr/Reddit. Posts are keyed off their wall permalink (wall{ownerId}_{postId}) so the same post is never duplicated, and re-capturing just refreshes engagement. Feeds POST /api/import/vk with UPSERT semantics.

The browser extension captures more than words from X

v1.55.0 · August 26, 2026

Added

Save-to-NoteSurge on an X permalink now brings its images and video into your Library alongside the text — multimodal capture, stage one.

The Import Hub shows every way content gets in — including the extension-captured sources

v1.46.0 · August 24, 2026

Added

The "Choose a source" grid only showed four tiles, so three real ingestion paths were invisible: X bookmarks and both LinkedIn captures existed through the browser extension but had no way in from the app. The grid now lists all seven sources. The three extension ones open a plain explainer instead of pretending to be forms — what gets captured, the exact page to browse so capture runs, and a direct link where one is guaranteed to land (X Bookmarks and LinkedIn's saved posts; LinkedIn posts keeps instructions only, since the app can't know your profile address).

A smarter extension popup

v1.17.0 · August 16, 2026

Changed

Open the extension before this shipped and you got exactly one thing: a form asking you to connect a Substack. Useful once, dead weight every time after.

Now, once you’re connected, opening the popup shows what’s actually going on: how many notes are scheduled, how many posted, how many failed, how many are sitting as drafts, plus a warning if something’s overdue. It’s pulling from the same data the app itself shows, so there’s no separate "extension truth" that can drift out of sync. There’s also a real "Connect a different Substack" button now instead of just resubmitting the same blank form, and one click drops you straight into your queue.

LinkedIn capture

v1.11.0 · July 31, 2026

Added

Visit your own LinkedIn "Recent activity" and NoteSurge quietly captures your posts, along with their reactions, comments, and reposts, for voice-matching and a new LinkedIn analytics card. Visit "My items → Saved posts" and anything you’ve saved from other people lands in your Library as an idea.

Save a tweet with one click

v1.10.0 · July 30, 2026

Added

A floating "Save to NoteSurge" button shows up on any tweet’s own page now and drops it straight into your Library. Open your X bookmarks page and scroll through it like normal, and NoteSurge captures your whole bookmarks list the same way, with a live counter so you can see what it’s picking up as you go.

← All versions