Commit Graph

529 Commits

Author SHA1 Message Date
dependabot[bot] aa968faab6 Bump fast-xml-builder from 1.1.5 to 1.2.0 in /server
Bumps [fast-xml-builder](https://github.com/NaturalIntelligence/fast-xml-builder) from 1.1.5 to 1.2.0.
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-builder/blob/main/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-builder/compare/v1.1.5...v1.2.0)

---
updated-dependencies:
- dependency-name: fast-xml-builder
  dependency-version: 1.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 20:01:22 +00:00
Lawrence Hook 786b9a67f7 Tidy: convert tab-indented files to 4-space (#217)
Project convention is 4-space indent for extension JS, but src/shared/utils.js
and one function in src/shared/analytics.js used tabs. Converted leading tabs
to 4 spaces, no functional change. Also fixed a misaligned line at utils.js:63
that had a single leading space instead of the expected indent.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 22:13:59 -04:00
Lawrence Hook 47ffb19e56 version 4.3.81 v4.3.81 2026-05-06 21:58:26 -04:00
dependabot[bot] 21b9e7dc4b Bump uuid from 9.0.1 to 14.0.0 in /server (#214)
Bumps [uuid](https://github.com/uuidjs/uuid) from 9.0.1 to 14.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v9.0.1...v14.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 14.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-06 21:54:46 -04:00
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 6d59948c0b Migrate SES sends from v1 to SESv2 to avoid fast-xml-parser conflict
The fast-xml-parser >=5.3.8 override (added for CVE) is incompatible
with @aws-sdk/client-ses, whose XML response parser registers entities
named "#xD" and "#10" — names that 5.x rejects with
[EntityReplacer] Invalid character '#' in entity name.

SESv2 uses REST/JSON, sidestepping the parser entirely. validateEmail
already used SESv2; this consolidates the three send functions onto
the same client and drops @aws-sdk/client-ses.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 15:36:27 -04:00
EC2 Default User 574879ca9e update 2026-04-22 23:10:47 +00:00
Lawrence Hook 3b1789e89e Gate Stripe webhook on STRIPE_ALLOWED_PRODUCT_IDS allowlist
Prevents foreign Stripe events (from other apps sharing this Stripe
account) from being processed. Webhook ignores events whose products
are not in the allowlist; server refuses to boot without it set.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 19:07:44 -04:00
Lawrence Hook a8c0379fd1 Refine 'Why I made it' section in README
Removed redundant sentence from the 'Why I made it' section.
2026-04-19 20:33:54 -04:00
Lawrence Hook bd5e002af9 update version 2026-04-19 20:32:23 -04:00
Lawrence Hook 9b86de2d0c Merge branch 'released' 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 a289d04a69 version 4.3.79 2026-04-19 20:21:08 -04:00
Lawrence Hook 310cb9182a update version 2026-04-19 18:39:47 -04:00
Lawrence Hook d30d72ac13 Merge branch 'released' 2026-04-19 18:12:59 -04:00
Lawrence Hook 0230a73aaa version 4.3.78 2026-04-19 18:11:04 -04:00
Lawrence Hook 9711185bd5 update version 2026-04-19 18:10:20 -04:00
Lawrence Hook e60ef4d27d version 4.3.77 2026-04-19 18:08:43 -04:00
Lawrence Hook b848ade419 update version 2026-04-19 15:34:04 -04:00
Lawrence Hook a6f765b420 Merge branch 'released' 2026-04-19 15:33:21 -04:00
Lawrence Hook 8a383da321 version 4.3.76 2026-04-19 15:31:01 -04:00
Lawrence Hook 1331a697da rename make scripts 2026-04-19 15:30:14 -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
EC2 Default User 81358f5712 update 2026-04-12 21:08:07 +00:00
dependabot[bot] 2b566cbaff Bump path-to-regexp from 0.1.12 to 0.1.13 in /server (#208)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 0.1.12 to 0.1.13.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-version: 0.1.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-12 16:46:32 -04:00
dependabot[bot] af1a758408 Bump fast-xml-parser and @aws-sdk/xml-builder in /server (#210)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [@aws-sdk/xml-builder](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages-internal/xml-builder). These dependencies needed to be updated together.

Updates `fast-xml-parser` from 5.4.1 to 5.5.11
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/commits)

Updates `@aws-sdk/xml-builder` from 3.972.8 to 3.972.17
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages-internal/xml-builder/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/HEAD/packages-internal/xml-builder)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.5.11
  dependency-type: indirect
- dependency-name: "@aws-sdk/xml-builder"
  dependency-version: 3.972.17
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-08 21:56:47 -04:00
Lawrence Hook 5ba677239c update version 2026-03-15 17:14:48 -04:00
Lawrence Hook badf02f28b Merge branch 'released' 2026-03-15 17:14:12 -04:00
Lawrence Hook 7e67fc658d version 4.3.75 2026-03-15 17:13:50 -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 58cf953a51 Merge branch 'released' 2026-03-02 16:35:48 -05:00
Lawrence Hook c0eb57332e version 4.3.74 2026-03-02 16:35:25 -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 dd00b3b27d Merge branch 'released' 2026-03-02 00:19:17 -05:00
Lawrence Hook 13e70cbd58 version 4.3.73
Squashed commit of the following:

commit dbe3eae405
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Mon Mar 2 00:13:35 2026 -0500

    Add Stripe checkout hint to upgrade modal

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

commit b433727754
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 23:48:01 2026 -0500

    Add email validation, IP rate limiting, and fix SES parsing bug

    Add SES email validation with 2s timeout and fail-open behavior to
    send-magic-link. Add per-IP rate limiting with decrement on verify.
    Fix SES response parsing path (MailboxValidation.IsValid.ConfidenceVerdict).
    Add dedicated unit tests for validateEmail.

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

commit 84b103e46b
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 23:47:51 2026 -0500

    Migrate storage layer from flat files to SQLite

    Replace file-per-record auth requests, file-per-hash rate limits, and
    JSON blob subscription cache with a single SQLite database via
    better-sqlite3. Consolidate duplicated email/IP rate limit code into
    shared helpers. Add missing IP rate limit pruning to cleanup interval.

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

commit 84c2ea5586
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 21:58:47 2026 -0500

    update versions

commit a4d5a97664
Merge: 53a18e7 2fe77fa
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 21:58:09 2026 -0500

    Merge branch 'released'

commit 53a18e7987
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 16:56:50 2026 -0500

    Hide donate link for premium users instead of showing dead label

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

commit e2732dee6f
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 16:50:33 2026 -0500

    Fix fast-xml-parser vulnerability via npm override and update @aws-sdk/client-ses

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

commit 281c0f1103
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 16:46:31 2026 -0500

    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>

commit 56b119ed98
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 22 05:01:00 2026 -0500

    Cache grandfathered emails in memory at startup

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

commit afed16a38a
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 22 04:47:51 2026 -0500

    Add tests for cache TTL and webhook ordering race condition

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

commit 361a8caf84
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 22 04:34:00 2026 -0500

    Harden license cache: 10s TTL and skip incomplete subscription.created

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

commit d857ae8c26
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sat Feb 21 18:24:33 2026 -0500

    Update README: replace donations blurb with premium link

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

commit c473314ca5
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Feb 21 18:22:39 2026 -0500

    Bump fast-xml-parser and @aws-sdk/xml-builder in /server (#201)

    Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [@aws-sdk/xml-builder](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages-internal/xml-builder). These dependencies needed to be updated together.

    Updates `fast-xml-parser` from 5.3.4 to 5.3.6
    - [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
    - [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.4...v5.3.6)

    Updates `@aws-sdk/xml-builder` from 3.972.4 to 3.972.5
    - [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
    - [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages-internal/xml-builder/CHANGELOG.md)
    - [Commits](https://github.com/aws/aws-sdk-js-v3/commits/HEAD/packages-internal/xml-builder)

    ---
    updated-dependencies:
    - dependency-name: fast-xml-parser
      dependency-version: 5.3.6
      dependency-type: indirect
    - dependency-name: "@aws-sdk/xml-builder"
      dependency-version: 3.972.5
      dependency-type: indirect
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 49e1a5d9ba
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sat Feb 21 17:30:29 2026 -0500

    Fix license cache not updating after checkout

    The checkout.session.completed webhook only sent a welcome email but
    did not update the subscription cache, so users kept getting cached
    free status after paying.

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

commit c5734518c4
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 19:10:05 2026 -0500

    Remove TESTING.md and DEPLOYMENT.md

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

commit 6ed3ad0291
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 19:08:03 2026 -0500

    Remove obsolete docs and update TODO for YouTube DOM change

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

commit 83693504e3
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:54:29 2026 -0500

    update versions

commit 27a6ae6f18
Merge: 3f4b42b d6e642b
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:53:37 2026 -0500

    Merge branch 'released'

commit 3f4b42b2de
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:49:28 2026 -0500

    Update qs to 6.14.2 to fix low-severity DoS vulnerability

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

commit 8825666512
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:45:37 2026 -0500

    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.

commit a76f69804b
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 8 20:45:35 2026 -0500

    update description in README

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

commit b5d1384ca8
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 8 20:44:26 2026 -0500

    update "Why I made it" section in README

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

commit 18b64708b6
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 8 20:14:23 2026 -0500

    update version to 4.3.71
2026-03-02 00:18:38 -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 b433727754 Add email validation, IP rate limiting, and fix SES parsing bug
Add SES email validation with 2s timeout and fail-open behavior to
send-magic-link. Add per-IP rate limiting with decrement on verify.
Fix SES response parsing path (MailboxValidation.IsValid.ConfidenceVerdict).
Add dedicated unit tests for validateEmail.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 23:48:01 -05:00
Lawrence Hook 84b103e46b Migrate storage layer from flat files to SQLite
Replace file-per-record auth requests, file-per-hash rate limits, and
JSON blob subscription cache with a single SQLite database via
better-sqlite3. Consolidate duplicated email/IP rate limit code into
shared helpers. Add missing IP rate limit pruning to cleanup interval.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 23:47:51 -05:00
Lawrence Hook 84c2ea5586 update versions 2026-03-01 21:58:47 -05:00
Lawrence Hook a4d5a97664 Merge branch 'released' 2026-03-01 21:58:09 -05:00
Lawrence Hook 2fe77faf0f version 4.3.72
Squashed commit of the following:

commit 53a18e7987
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 16:56:50 2026 -0500

    Hide donate link for premium users instead of showing dead label

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

commit e2732dee6f
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 16:50:33 2026 -0500

    Fix fast-xml-parser vulnerability via npm override and update @aws-sdk/client-ses

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

commit 281c0f1103
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Mar 1 16:46:31 2026 -0500

    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>

commit 56b119ed98
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 22 05:01:00 2026 -0500

    Cache grandfathered emails in memory at startup

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

commit afed16a38a
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 22 04:47:51 2026 -0500

    Add tests for cache TTL and webhook ordering race condition

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

commit 361a8caf84
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 22 04:34:00 2026 -0500

    Harden license cache: 10s TTL and skip incomplete subscription.created

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

commit d857ae8c26
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sat Feb 21 18:24:33 2026 -0500

    Update README: replace donations blurb with premium link

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

commit c473314ca5
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Feb 21 18:22:39 2026 -0500

    Bump fast-xml-parser and @aws-sdk/xml-builder in /server (#201)

    Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [@aws-sdk/xml-builder](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages-internal/xml-builder). These dependencies needed to be updated together.

    Updates `fast-xml-parser` from 5.3.4 to 5.3.6
    - [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
    - [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.4...v5.3.6)

    Updates `@aws-sdk/xml-builder` from 3.972.4 to 3.972.5
    - [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
    - [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages-internal/xml-builder/CHANGELOG.md)
    - [Commits](https://github.com/aws/aws-sdk-js-v3/commits/HEAD/packages-internal/xml-builder)

    ---
    updated-dependencies:
    - dependency-name: fast-xml-parser
      dependency-version: 5.3.6
      dependency-type: indirect
    - dependency-name: "@aws-sdk/xml-builder"
      dependency-version: 3.972.5
      dependency-type: indirect
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 49e1a5d9ba
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sat Feb 21 17:30:29 2026 -0500

    Fix license cache not updating after checkout

    The checkout.session.completed webhook only sent a welcome email but
    did not update the subscription cache, so users kept getting cached
    free status after paying.

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

commit c5734518c4
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 19:10:05 2026 -0500

    Remove TESTING.md and DEPLOYMENT.md

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

commit 6ed3ad0291
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 19:08:03 2026 -0500

    Remove obsolete docs and update TODO for YouTube DOM change

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

commit 83693504e3
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:54:29 2026 -0500

    update versions

commit 27a6ae6f18
Merge: 3f4b42b d6e642b
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:53:37 2026 -0500

    Merge branch 'released'

commit 3f4b42b2de
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:49:28 2026 -0500

    Update qs to 6.14.2 to fix low-severity DoS vulnerability

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

commit 8825666512
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 15 18:45:37 2026 -0500

    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.

commit a76f69804b
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 8 20:45:35 2026 -0500

    update description in README

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

commit b5d1384ca8
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 8 20:44:26 2026 -0500

    update "Why I made it" section in README

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

commit 18b64708b6
Author: Lawrence Hook <lawrencehook@gmail.com>
Date:   Sun Feb 8 20:14:23 2026 -0500

    update version to 4.3.71
2026-03-01 21:57:22 -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 e2732dee6f Fix fast-xml-parser vulnerability via npm override and update @aws-sdk/client-ses
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:50:33 -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 56b119ed98 Cache grandfathered emails in memory at startup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 05:01:00 -05:00
Lawrence Hook afed16a38a Add tests for cache TTL and webhook ordering race condition
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:47:51 -05:00
Lawrence Hook 361a8caf84 Harden license cache: 10s TTL and skip incomplete subscription.created
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 04:34:00 -05:00