Changelog

v1.7.22026-04-29

  • The bookmarklet doesn't fail on upcoming live videos. It now shows a box to copy instead of relying on browser permissions to copy to your clipboard.

v1.7.12026-04-25

Sync Bookmarklet (v1.4)

  • Running the bookmarklet on a YouTube channel page now copies the channel's link to your clipboard so you can paste it directly into the Add Channel bar on the dashboard.
  • Running the bookmarklet on an unsupported page (home, search, etc.) now shows links to all three pages it can scrape: All Subscriptions, the Subscriptions feed, and a specific playlist.

Imports

  • Raised the per-channel video cap from 100 to 500 so big imports (Watch Later, archive playlists) carry through without truncation.

v1.7.02026-04-25

Supporter Accounts

  • Added Channel Surfer accounts with sign up, sign in, and a full dashboard.
  • Added the Supporter plan with monthly and annual billing.

Cloud-Synced Channels

  • Added cloud-synced custom channels for Supporters.
  • Supporters can now view, rename, refresh, edit, delete, and bulk-delete channels from the dashboard.
  • Added favorites sync for Supporters, so starred channels follow your account instead of only one device.
  • Newly imported or built Supporter channels are now favorited automatically, so they appear on the TV guide right away.
  • Added safer downgrade handling so Supporter channels can be preserved locally if you return to the free tier.

Better Importing

  • Importing now happens from your dashboard, so you do not need to enter your email every time.
  • Added Supporter clipboard detection for Sync bookmarklet imports, with manual paste fallback for browsers that block clipboard reads.
  • Added channel lists so you can see which channels you created and delete them whenever you want.

Supporter Sync Bookmarklet

  • Added the new Channel Surfer Sync bookmarklet for Supporters.
  • Added full subscription sync from YouTube's `/feed/channels` page.
  • Added private playlists as first-class saved data, including locked playlist sources that are safe to edit.
  • Re-running the Sync bookmarklet on a playlist now updates the existing playlist channel instead of creating duplicates.
  • Added a version check so outdated Sync bookmarklets can prompt you to reinstall.
  • The Sync bookmarklet now sends channel pages to the dashboard paste-link flow instead of relying on fragile YouTube page parsing.

Paste-Link and Channel Builder

  • Added a Supporter paste-link bar for adding YouTube channels and playlists directly from the dashboard.
  • Added Channel Builder for creating custom channels from multiple YouTube sources.
  • Added category support for custom channels.
  • Added support for legacy YouTube vanity URLs like `youtube.com/bloomberg`.
  • Added a locked private-playlist row in the editor so private playlist videos are not accidentally wiped on save.

Free Bookmarklet Improvements

  • Fixed YouTube's newer layout causing imported videos to fall into an "Unknown Channel" bucket.
  • Fixed multi-channel collab cards creating odd channel names like "Channel and 2 more."
  • Changed the watched-video filter so a video counts as watched only after 80% progress, instead of any tiny progress bar.
  • Added friendlier messages when a page has no videos, only watched videos, or only Shorts.
  • Added anonymous diagnostics to help detect when YouTube changes its layout and the bookmarklet needs repair.
  • Added source context to free bookmarklet diagnostics for better import health tracking.

Reliability and Testing

  • Added a lot of automated tests to improve code quality and reduce regressions.
  • Added better error tracking so bugs are easier to spot, understand, and fix.
  • Added more tooling to keep the codebase cleaner and safer as Channel Surfer grows.

v1.6.42026-04-24

  • Free bookmarklet on YouTube's "All Subscriptions" page (/feed/channels) now shows a clear Supporter upsell instead of dumping a bug-report dialog. That page is a Supporter-only feature.
  • Friendlier messages when the bookmarklet finds nothing to import: a "wrong page" hint when there are no videos at all, and a "looks like all Shorts or already watched" hint when the page has items but none qualify. The full bug-report dialog is reserved for genuine parser failures, not benign empty states.
  • Loosened the "watched" filter: a video is now treated as watched only at 80%+ progress, not at any non-zero progress. The old rule wiped out entire playlists where a user had briefly tapped every video. Anything under 80% probably means you started but didn't finish, and you may still want to import it.
  • When all videos on a playlist register as watched, the bookmarklet now points at the Supporter Sync bookmarklet, which imports the whole playlist (private playlists too) regardless of watch status.
  • Fixed Supporter-page redirect from upsell prompts: clicking OK after the confirm dialog used to silently fail in some browsers (popup blocker treated it as a non-user-gesture). It now reliably opens the page in a new tab when allowed, or in the current tab as a fallback.
  • Fixed the "Unknown Channel" mystery tile: videos whose channel attribution couldn't be parsed (often multi-channel collab cards on /feed/subscriptions) are now skipped instead of lumped into a single confusing channel that mixed unrelated creators. The success toast reports the skipped count alongside the watched count.
  • Fixed channel-name extraction for YouTube's new lockup view-model layout (rolled out late 2025). The new layout renders channel bylines as plain text inside spans rather than as anchor links, so the old "find an `<a href="/@handle">`" selectors silently failed on ~25% of cards. Channel Surfer now reads from the new `.ytContentMetadataViewModelMetadataText` element and strips "and N more" suffixes from collab cards.
  • Added anonymous diagnostics to the import payload so we get alerted when YouTube changes their DOM and our scraper silently breaks. We collect render counts + a few sample HTML snippets of cards we couldn't parse, ride them along with your import, and surface them in our error tracker if the failure rate spikes. Only public, page-level YouTube data is captured (titles, channel names, view counts) — no session info, no watch history, no account data.

v1.6.32026-04-02

  • Added Weather Channel (Ch 50) with live local conditions, forecast, radar, and moon phases
  • Auto-detects Fahrenheit/Celsius and 12h/24h time from your location — override in Settings

v1.6.22026-04-01

  • Added live channel (Ch 98) for live events with real-time ticker chat
  • Live event banner with auto-expiry and dismiss support

v1.6.12026-03-31

  • Add closed captions to the options and keyboard shortcuts. Press C or toggle in Settings
  • Guide version check: long-lived tabs now detect when new channel data is available and show a subtle "New guide available" toast
  • Fixed info modal on iOS

v1.62026-03-31

  • Never-ending schedule: playback no longer resets at midnight UTC. Watching through midnight is now seamless
  • Stable channel order: daily data refreshes no longer scramble video order
  • Better error handling: unavailable videos (error 150) show "This video isn't available in your country"
  • Bug fix: Fullscreen auto-advance: videos now advance to the next program immediately when they end

v1.5.32026-03-23

  • Update the bookmarklet to support importing of playlists
  • Added: Bookmarklet version check — old bookmarklets are rejected with a clear message to update
  • Added: Clipboard fallback for Safari and private browsing

v1.5.22026-03-19

  • Volume control: Click the speaker icon to open a vertical slider, drag to adjust
  • Mute with `M` key, unmute restores your previous volume level
  • Channel number overlay appears in the info panel when switching channels
  • Better styling in the guide so you know what channel you're on
  • Removed "Click to Expand" and "G: Guide" hints from footer

v1.5.12026-03-17

  • Fix party messages in mobile
  • Allow importing that doesn't overwrite previous imports

v1.52026-03-16

  • Party channel with live viewer messages

v1.4.12026-03-16

  • Seasonal video filtering: Holiday content is automatically excluded from ambient channels when out of season

v1.42026-03-15

  • Favorite channels: Star channels in the guide to mark them as favorites
  • Favorites Only mode: Toggle in settings to surf only through your favorite channels with arrow keys
  • Right-click context menu: Add/remove favorites directly from the guide
  • Fullscreen and Power buttons in the toolbar for mobile and touch devices
  • Toolbar button tooltips now show keyboard shortcuts

v1.32026-03-15

  • Power off mode: Press `P` to power down the TV with a classic CRT shutdown animation — pauses everything, press `P` or click to power back on

v1.22026-03-15

  • Fullscreen mode: Press `F` to toggle browser fullscreen (hides guide, keeps toolbar)
  • Channel names in expanded guide: Click a channel row to see YouTube creator names on each program block
  • New keyboard shortcuts: `F` fullscreen, `O` settings
  • Feedback board: Added link to public feedback/feature request board
  • Version numbers and changelog
  • Fixed footer

v1.12026-03-11

  • Sponsor channel support

v1.02026-03-10

  • Initial launch
  • 35+ curated YouTube channels as live TV
  • Retro TV guide with program schedule
  • Channel import via bookmarklet
  • Real-time viewer count via PartyKit
  • Settings: scanlines, dark mode, hide imported channels
  • Keyboard shortcuts: arrows, G, M, I, ?