Changelog

v1.8.32026-06-12

  • Made the app's API calls more robust.

v1.8.22026-06-11

  • New keyboard shortcut: press R to shuffle to a random channel!

v1.8.12026-06-09

  • Bug fixes and reliability improvements, including a sign-in fix for browsers with strict privacy or cookie settings.
  • A lot more work on automated testing to help prevent regressions.

For supporters

  • You can now organize your entire channel lineup. Drag your custom channels into any order, hide channels you don't watch (including the built-in ones), and mark your favorites.

v1.82026-06-08

  • More fixes and reliability improvements to the free bookmarklet import.
  • Better reporting when the bookmarklet runs into a problem, so we can spot and fix failures faster.
  • Added keyboard shortcuts for changing channels. Type a channel number like a TV remote to jump straight to that channel: press Enter to tune right away, or pause for a second and it tunes on its own. You can also use the up and down arrow keys to flip through channels one at a time.

v1.7.122026-06-04

  • Bug fixes.
  • Added YouTube Roulette page

v1.7.112026-05-28

  • Made startup faster after the landing page.
  • Fixed bugs for supporters for adding playlists and building custom channels.
  • Added labels to the playlists when you edit a custom channel, so you can see what playlist is which.

v1.7.102026-05-21

  • Added a "Bug or issue?" button in the dashboard sidebar — describe the problem and we'll grab a screenshot of what you were looking at when you send it.

v1.7.92026-05-18

  • Added a Sleep Timer. Pick how long you want to watch and the TV powers itself off.
  • Fixed the World News channel getting stuck on a single hours-long news livestream.

v1.7.82026-05-15

  • Added a Contact page
  • Added a Help page

Free Bookmarklet (v2)

  • Rebuilt the free bookmarklet. So it's more reliable and walks you through copy, continue, and paste one step at a time. With smoother import flows and better error handling.

v1.7.72026-05-13

  • Fixed a channel-changing bug that could happen with imported data.
  • Added the sponsorship self-checkout flow.
  • Continued work on rare playback timing edge cases.

v1.7.62026-05-07

  • Fixed the illusive bug where videos would sometimes loop for ~1 second!
  • Fix bug where sharing imported channel incorrectly added the channel number to the URL
  • Fixed some styling issues with the guide
  • Fixed an issue where you couldn't load the guide with an imported channel number (e.g. https://channelsurfer.tv/?ch=233)

v1.7.52026-05-05

  • Lots of performance enhancements for the guide so it supports a large number of channels.

v1.7.42026-05-02

  • Improved the Weather Channel with better location controls, more relevant nearby observations, and more accurate local forecast timing.
  • Fixed the Weather Channel Almanac moon phases

v1.7.32026-05-01

  • Fixed free bookmarklet imports so YouTube videos marked watched are copied into the import payload and controlled by the dashboard's "Hide videos I've already watched" checkbox, instead of being skipped before the checkbox could apply.

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, ?