Skip to content

feat: TuneOut browser extension#2

Open
mikkel wants to merge 3 commits intomainfrom
feature/browser-extension
Open

feat: TuneOut browser extension#2
mikkel wants to merge 3 commits intomainfrom
feature/browser-extension

Conversation

@mikkel
Copy link
Contributor

@mikkel mikkel commented Mar 4, 2026

Summary

  • Chrome/Firefox WebExtension (Manifest V3) that intercepts algorithmic feed pages on Twitter/X, Reddit, and YouTube
  • Replaces feeds with clean RSS-sourced briefings (Hacker News, BBC, NPR, Ars Technica)
  • Optional AI summarization via Anthropic or OpenAI API key in settings
  • Popup UI with per-site toggles, interception stats, and API config
  • Intention-setting prompt and "Why am I seeing this?" explainer
  • SPA navigation handling for Twitter/YouTube route changes
  • Dark theme, mobile-responsive overlay

How it works

The extension implements replace behavior — same trigger (opening Twitter), different reward (a briefing instead of a dopamine loop). Users can set an intention before proceeding to the original feed, adding friction to mindless scrolling.

Test plan

  • Load extension in Chrome via chrome://extensions/ (Developer mode -> Load unpacked)
  • Visit twitter.com — verify overlay appears with greeting and RSS briefing
  • Visit reddit.com — verify overlay appears
  • Visit youtube.com — verify overlay appears
  • Type an intention and press Enter — verify it shows the "go with intention" button
  • Click "Show the feed anyway" — verify confirmation dialog and overlay removal
  • Open popup — verify toggle switches work and disable/enable per-site
  • Set an API key in popup — verify AI briefing appears on next page load
  • Navigate to a specific tweet/post URL — verify NO overlay (only feed pages intercepted)

Generated with Claude Code

Ada (DiffLab AI) and others added 2 commits March 1, 2026 10:55
- Move overflow-x: hidden from body to html to prevent dual scroll containers
- Add overflow-y: scroll on html for single scrollbar source of truth
- Use 100dvh for hero section (dynamic viewport height for mobile browsers)
- Fix particle animation to use percentage-based transforms (contained within parent)
- Add viewport-fit=cover and safe-area-inset padding for notched devices
- Increase hamburger touch target to 44px minimum (WCAG compliance)
- Add backdrop-filter and improved spacing to mobile nav dropdown
- Lock body scroll when mobile nav is open (html.nav-open)
- Tighten padding on cards, panels, and sections at 600px breakpoint
- Add -webkit-text-size-adjust: 100% to prevent iOS font inflation
- Refactor mobile nav JS into closeNav() helper for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Chrome/Firefox WebExtension (Manifest V3) that intercepts feed pages on
Twitter/X, Reddit, and YouTube and replaces them with RSS-sourced briefings.

- Content script detects feed pages and injects full-page replacement UI
- Background service worker fetches and caches RSS feeds (HN, BBC, NPR, Ars)
- Optional LLM summarization via Anthropic or OpenAI API key
- Popup with per-site toggles, interception stats, and API key config
- Intention-setting prompt before allowing feed access
- "Why am I seeing this?" explainer section
- SPA navigation handling for Twitter/YouTube
- Dark theme matching TuneOut brand

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7c5fa3b0e2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +28 to +29
const site = detectSite();
if (!site) return;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep SPA watcher running when initial route is non-feed

The early return after detectSite() prevents the MutationObserver from being registered unless the first loaded URL is already a feed page. On SPA sites (Twitter/X and YouTube in particular), if a user lands on a post/video URL first and then navigates to /home without a full reload, TuneOut never intercepts because the script exited before installing route-change handling.

Useful? React with 👍 / 👎.

Landing page reframed from confrontational to invitation tone ("Same Habit.
Better Feed."), LinkedIn post drafted, structural analysis completed, ship
checklist created. Fixed critical bugs: missing LLM API host_permissions in
manifest.json, broken #install anchor on primary CTA. Added partnership
CTAs for enterprise lead generation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant