Conversation
- 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>
There was a problem hiding this comment.
💡 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".
| const site = detectSite(); | ||
| if (!site) return; |
There was a problem hiding this comment.
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>
Summary
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
chrome://extensions/(Developer mode -> Load unpacked)Generated with Claude Code