Commit Graph

305 Commits

Author SHA1 Message Date
Lawrence Hook 5df6c5b99a Tidy: drop two pieces of dead code (#216)
- server/src/routes/checkout.js: remove unused createBillingPortalSession
  from the destructuring import. The portal logic lives in
  routes/billing.js; checkout.js never called it.
- src/background/events.js: remove a stale commented-out
  browser.runtime.openOptionsPage() line.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 21:54:42 -04:00
Lawrence Hook 8bd023881d Port dev.sh + release CI from curb; make redirects free (#215)
* Port dev.sh + release CI from curb; make redirects free

dev.sh runs Firefox via web-ext from src/ and Chrome from a dist/chrome/
symlink tree. The two manifests live at different paths, so both browsers
can run side-by-side without clobbering each other's manifest.json. Edits
in src/ propagate live to both.

release.yml builds Chrome + Firefox zips on tag push (v*) and attaches
them to a GitHub Release, retiring the manual extension.zip workflow.

The four redirect-home options (redirect_to_subs / _to_wl / _to_library /
_off) drop the premium flag — they're advertised on the store listings,
so it feels right to have them free.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Trim dev section in README to just the commands

Cut the rationale paragraphs (symlink trick, manifest clobbering); anyone
needing that detail can read dev.sh.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Sync dist/chrome with rsync instead of symlinks

Chrome's content-script loader silently rejects scripts whose realpath is
outside the extension directory. The popup loaded fine through symlinks
but content scripts on YouTube never injected (no Chrome error, just
nothing). Real file copies sidestep the realpath check. Trade-off: re-run
dev.sh chrome and click reload after edits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Fix redirect-to-Library URL after YouTube renamed Library to You

YouTube renamed the Library section to "You" and moved its URL from
/feed/library to /feed/you. The redirect option silently broke.

Fixes #123

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 21:52:28 -04:00
Lawrence Hook bd5e002af9 update version 2026-04-19 20:32:23 -04:00
Lawrence Hook 31b56a5925 Free premium slots: 2 premium features for signed-in users (#213)
Lets signed-in free-tier users enable up to 2 premium features at no cost.
2026-04-19 20:32:23 -04:00
Lawrence Hook 310cb9182a update version 2026-04-19 18:39:47 -04:00
Lawrence Hook 9711185bd5 update version 2026-04-19 18:10:20 -04:00
Lawrence Hook b848ade419 update version 2026-04-19 15:34:04 -04:00
Lawrence Hook 371d7f1b70 Cover the new yt-thumbnail-view-model in thumbnail rules
YouTube migrated the subscriptions feed to yt-lockup-view-model with
yt-thumbnail-view-model inside, so `ytd-thumbnail` no longer matches
the feed thumbnails there. Add the new element to the
remove_video_thumbnails hide rule and the blur_video_thumbnails filter
rule so both features work on /feed/subscriptions again.

Caught by the rys-test Playwright harness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 15:24:06 -04:00
Lawrence Hook 5ba677239c update version 2026-03-15 17:14:48 -04:00
Lawrence Hook 26a514aa73 add option to hide "Most relevant" section on subscriptions page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 17:13:15 -04:00
Lawrence Hook 4f6cd803b9 update versions 2026-03-02 16:36:12 -05:00
Lawrence Hook c407793e20 remove permission to the server -- CORS already configured 2026-03-02 16:34:20 -05:00
Lawrence Hook c4f04eca0b update versions 2026-03-02 00:19:47 -05:00
Lawrence Hook dbe3eae405 Add Stripe checkout hint to upgrade modal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:13:35 -05:00
Lawrence Hook 84c2ea5586 update versions 2026-03-01 21:58:47 -05:00
Lawrence Hook 53a18e7987 Hide donate link for premium users instead of showing dead label
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:56:50 -05:00
Lawrence Hook 281c0f1103 Add "Active" sidebar tab and soften selected sidebar styling
Adds "all" and "active" tabs at the top of the sidebar. "Active" shows
all currently-enabled options in one place; "all" explicitly resets to
the default view. Also lightens the sidebar selected state from solid
black to a subtle tint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:46:31 -05:00
Lawrence Hook 83693504e3 update versions 2026-02-15 18:54:29 -05:00
Lawrence Hook 8825666512 Merge the monetization feature branch.
Add RYS Premium subscription system

Introduce optional paid tier with sign-in, Stripe billing, and premium
feature gating. Core features remain free. Includes Node.js server for
auth, payments, and license management.

Extension changes:
- Sign-in flow with magic link email
- Premium/upgrade/account modals with branded UI
- Premium feature gating (60+ advanced settings)
- Password lock and scheduling (premium)
- Fix "hide all but first row" for YouTube's new flat homepage DOM
- Hide sidebar ad panels by default
- Enable "Hide all Shorts" by default

Server:
- Magic link auth with rate limiting
- Stripe checkout, webhooks, and billing portal
- JWT-based license tokens
- AWS SES transactional emails (welcome, sign-in, cancellation)
- Grandfathered donor support

Also adds CI workflow, server test suite, and extension unit tests.
2026-02-15 18:45:37 -05:00
Lawrence Hook 18b64708b6 update version to 4.3.71 2026-02-08 20:14:23 -05:00
Lawrence Hook 299bd68b73 fix: scope yt-thumbnail-view-model shrink to grid cards only
Prevents sidebar thumbnails from being enlarged by the min-width rule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:07:55 -05:00
Lawrence Hook a6924318e0 fix: shrink thumbnails for new YouTube homepage thumbnail element
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:04:44 -05:00
Lawrence Hook 980ebd3c90 fix: update extra rows selector for new YouTube homepage structure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 19:56:16 -05:00
Lawrence Hook ef85e9ef02 feat: add option to hide YouTube Playables (closes #158, closes #175)
Also auto-select Homepage section in options when on YouTube homepage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 19:50:37 -05:00
Sidhant a3542e42da fix: disable extension on YouTube Music (closes #152) (#168) 2026-02-07 17:52:29 -05:00
prinixoz edbadf2e54 added feature to always be in theater mode (#195)
Co-authored-by: prinixoz <prinixoz@gmail.com>
2026-02-07 17:40:08 -05:00
prinixoz f8379f3e88 fixed shrinking issue in channel tab (#196)
* fixed shrinking issue in channel tab

* fixed playlist video shirinking and overlapping in channel pages

* fixed post shirinking

* style: fix whitespace in shrink thumbnails CSS

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

---------

Co-authored-by: prinixoz <prinixoz@gmail.com>
Co-authored-by: Lawrence Hook <lawrencehook@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 17:36:07 -05:00
GeleArthur 3ef38334e9 Hide bell notifcations number in page titlle (#199)
* Added removing the bell in the title

* add comment on what it does

* Start of title

* style: fix spacing in if statement

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

---------

Co-authored-by: Lawrence Hook <lawrencehook@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 17:29:11 -05:00
prinixoz 4b4fb7722d hide result description (#197)
* hide description #188

* add idToShortId entry and fix extra whitespace

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

---------

Co-authored-by: prinixoz <prinixoz@gmail.com>
Co-authored-by: Lawrence Hook <lawrencehook@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 17:27:27 -05:00
Lawrence Hook 182f6489ef add deprecation comment for disable_playlist_autoplay
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:55:17 -05:00
Lawrence Hook a69b92a6b8 deprecate disable_playlist_autoplay setting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:44:17 -05:00
Lawrence Hook 0e21939821 fix: remove duplicate function from bad merge 2026-02-04 20:16:53 -05:00
Lawrence Hook 881514d71c update versions 2026-02-04 20:14:13 -05:00
Lawrence Hook 13d610181e Merge main into released 2026-02-04 20:11:53 -05:00
Lawrence Hook c3c7db3315 perf: optimize polling and reduce CPU usage
Options page:
- Pause timeLoop when popup is hidden (Page Visibility API)
- Use { once: true } for log prompt button listeners
- Remove stray console.log in settings import

Content script:
- Slow polling from 100ms to 500ms after page settles (was stuck at 100ms)
- Stop playlist autoplay interval once manager is found
- Only check dismiss buttons every 5th iteration
- Only check reveal boxes for first 30 iterations
- Only query clip button DOM if setting is enabled
- Skip subscriptions page queries if no sub-settings enabled
- Fix ad skip button selector for current YouTube UI

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:06:14 -05:00
Lawrence Hook 77d36b1360 chore: complete remaining quick wins from TODO
- Move duplicated YouTube URL regexes to shared/utils.js
- Delete commented-out code blocks (theater mode, playback speed, cookie manipulation, debug vars)
- Add Page Visibility API to pause polling when tab is hidden
- Update TODO.md to reflect completed items

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 19:28:12 -05:00
Lawrence Hook 1dbea5ab66 chore: clean up dead code and fix naming
- Remove debug console.log statements in options/main.js
- Remove unused TEMPLATE_FIELDSET variable
- Fix SEC_IN_WEEK → MIN_IN_WEEK (it was actually minutes)
- Remove dead setCookie/getCookie functions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 19:22:30 -05:00
Lawrence Hook ab97952e84 feat: change analytics from opt-out to opt-in
- Add non-blocking bottom banner prompting users to enable logging
- Default log_enabled to false, track user response with log_prompt_answered
- Banner shows until user clicks Sure/No thanks, dismiss hides for session only
- Update settings menu icon from dots to gear
- Widen sidebar to prevent "Video Player" text wrapping

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 19:20:59 -05:00
Lawrence Hook 93e2ea492d update versions 2026-01-28 21:35:57 -05:00
Lawrence Hook f894715b62 version 4.3.68 2026-01-28 21:31:06 -05:00
Lawrence Hook e8af6f0b7b feat: add announcement banner to YouTube homepage and revamp reveal boxes
- Add shared banner system (src/shared/banners.js) for extensible banner config
- Display RYS-branded announcement banner on YouTube homepage and options page
- Banner pushes down YouTube page content with CSS variable for height
- Revamp reveal suggestion boxes with polished two-row layout and RYS branding
- Add per-surface reveal settings (homepage/sidebar/end-of-video) with migration
- Consolidate colors and dimensions into CSS variables
- Cache reveal box config at module level for performance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 21:23:51 -05:00
Lawrence Hook 769d7a150f update versions 2026-01-27 21:39:36 -05:00
Lawrence Hook 182f3cb3ee version 4.3.67
Squashed commit of the following:

commit cfefa197ec
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Jan 27 20:43:02 2026 -0500

    feat: add close and dismiss buttons to announcement banner

    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

commit b193516096
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Jan 27 19:57:25 2026 -0500

    feat: add announcement banner for upcoming premium features

    Adds a dismissible banner at the top of the options page announcing
    upcoming premium features with a link to the explainer page.

    Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

commit 3d021923e6
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sat Jan 24 20:43:36 2026 -0500

    update versions

commit 4fa9023ef4
Merge: 3b5f50f a774514
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sat Jan 24 20:43:08 2026 -0500

    Merge branch 'released'

commit 3b5f50fa82
Author: Lawrence Hook <6572030+lawrencehook@users.noreply.github.com>
Date:   Sat Jan 24 20:37:53 2026 -0500

    feat(extension): revamp donate/feedback pages and polish options UI (#189)

    - Redesign donors page with modern card-based tier system
    - Redesign feedback page with contact grid and cleaner layout
    - Both pages now fit within 600px without scrolling
    - Apply subtle UI improvements to main options page:
      - System fonts, softer borders, hover states
      - Improved sidebar, menus, and footer styling
      - Denser option spacing for info-density

    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

commit 8ca3247d68
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Dec 30 17:41:59 2025 -0500

    claude recommends some TODOs

commit e6418d6aaa
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Dec 23 15:48:47 2025 -0500

    update versions

commit 89d7b09629
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Dec 23 15:41:38 2025 -0500

    fix whitespace

commit b46281aeef
Author: Jagan <sreejaganj@gmail.com>
Date:   Wed Dec 24 02:07:39 2025 +0530

    fix(sidebar): correct mapping of sidebar section (#186)

    Youtube changed the structure of the sidebar, this caused several toggle target issues in the extension.
    -> Hiding you/library removed the section contents but left a small empty container.
    -> Hiding other sections hid the wrong ones. Explore hid you/library completely, more from youtube hid explore, settings hid more from youtube. And couldn't hide settings at all.

    This commit updates the CSS to match the new DOM structure.

    -> Replaced nth-child with nth-of type
    -> Realigned indexes to match new structure.
      - `remove_sub_section` targets the 2nd section (Subscriptions)
      - `remove_quick_links_section` targets the 3rd section (You / Library)
      - `remove_explore_section` targets the 4th section (Explore)
      - `remove_more_section` targets the 5th section (More from YouTube)
      - `remove_settings_section` targets the 6th section (Settings)
      - `remove_footer_section` still hides `#guide-renderer > #footer`
    -> Modified the order of the buttons in src/content-script/main.css to match the order in the sidebar.

    Resolves: #185

commit ecab1e69c6
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Oct 21 22:49:04 2025 -0400

    update version
2026-01-27 21:38:12 -05:00
Lawrence Hook cfefa197ec feat: add close and dismiss buttons to announcement banner
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 20:43:02 -05:00
Lawrence Hook b193516096 feat: add announcement banner for upcoming premium features
Adds a dismissible banner at the top of the options page announcing
upcoming premium features with a link to the explainer page.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 19:57:25 -05:00
Lawrence Hook 3d021923e6 update versions 2026-01-24 20:43:36 -05:00
Lawrence Hook a77451499b version 4.3.66
Squashed commit of the following:

commit 3b5f50fa82
Author: Lawrence Hook <6572030+lawrencehook@users.noreply.github.com>
Date:   Sat Jan 24 20:37:53 2026 -0500

    feat(extension): revamp donate/feedback pages and polish options UI (#189)

    - Redesign donors page with modern card-based tier system
    - Redesign feedback page with contact grid and cleaner layout
    - Both pages now fit within 600px without scrolling
    - Apply subtle UI improvements to main options page:
      - System fonts, softer borders, hover states
      - Improved sidebar, menus, and footer styling
      - Denser option spacing for info-density

    Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

commit 8ca3247d68
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Dec 30 17:41:59 2025 -0500

    claude recommends some TODOs

commit e6418d6aaa
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Dec 23 15:48:47 2025 -0500

    update versions

commit 89d7b09629
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Dec 23 15:41:38 2025 -0500

    fix whitespace

commit b46281aeef
Author: Jagan <sreejaganj@gmail.com>
Date:   Wed Dec 24 02:07:39 2025 +0530

    fix(sidebar): correct mapping of sidebar section (#186)

    Youtube changed the structure of the sidebar, this caused several toggle target issues in the extension.
    -> Hiding you/library removed the section contents but left a small empty container.
    -> Hiding other sections hid the wrong ones. Explore hid you/library completely, more from youtube hid explore, settings hid more from youtube. And couldn't hide settings at all.

    This commit updates the CSS to match the new DOM structure.

    -> Replaced nth-child with nth-of type
    -> Realigned indexes to match new structure.
      - `remove_sub_section` targets the 2nd section (Subscriptions)
      - `remove_quick_links_section` targets the 3rd section (You / Library)
      - `remove_explore_section` targets the 4th section (Explore)
      - `remove_more_section` targets the 5th section (More from YouTube)
      - `remove_settings_section` targets the 6th section (Settings)
      - `remove_footer_section` still hides `#guide-renderer > #footer`
    -> Modified the order of the buttons in src/content-script/main.css to match the order in the sidebar.

    Resolves: #185

commit ecab1e69c6
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Tue Oct 21 22:49:04 2025 -0400

    update version
2026-01-24 20:40:56 -05:00
Lawrence Hook 3b5f50fa82 feat(extension): revamp donate/feedback pages and polish options UI (#189)
- Redesign donors page with modern card-based tier system
- Redesign feedback page with contact grid and cleaner layout
- Both pages now fit within 600px without scrolling
- Apply subtle UI improvements to main options page:
  - System fonts, softer borders, hover states
  - Improved sidebar, menus, and footer styling
  - Denser option spacing for info-density

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 20:37:53 -05:00
Lawrence Hook 1aea161b7a fix whitespace 2025-12-23 15:51:14 -05:00
Jagan ac66e7ebd7 fix(sidebar): correct mapping of sidebar section (#186)
Youtube changed the structure of the sidebar, this caused several toggle target issues in the extension.
-> Hiding you/library removed the section contents but left a small empty container.
-> Hiding other sections hid the wrong ones. Explore hid you/library completely, more from youtube hid explore, settings hid more from youtube. And couldn't hide settings at all.

This commit updates the CSS to match the new DOM structure.

-> Replaced nth-child with nth-of type
-> Realigned indexes to match new structure.
  - `remove_sub_section` targets the 2nd section (Subscriptions)
  - `remove_quick_links_section` targets the 3rd section (You / Library)
  - `remove_explore_section` targets the 4th section (Explore)
  - `remove_more_section` targets the 5th section (More from YouTube)
  - `remove_settings_section` targets the 6th section (Settings)
  - `remove_footer_section` still hides `#guide-renderer > #footer`
-> Modified the order of the buttons in src/content-script/main.css to match the order in the sidebar.

Resolves: #185
2025-12-23 15:51:09 -05:00