chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore(deps-dev): bump jsdom to 30 and lint-staged to 17 - #686

Merged
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling
Sep 4, 2026
Merged

chore(deps-dev): bump jsdom to 30 and lint-staged to 17#686
paulvanbrenk merged 1 commit into
deps/orvalfrom
deps/test-tooling

Conversation

@paulvanbrenk

Copy link
Copy Markdown
Collaborator

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine pnpm verify checks pass, including the 172
web tests running under jsdom 30.

Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:

jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1

Note that these are stricter than this repo's devEngines.runtime.node,
which says >=22. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- node-version: '22' resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.

lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and yaml becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.

jsdom 30's remaining changes are additive or fixes: CSS.escape() and
CSS.supports(), the background-position-x/-y properties,
getComputedStyle() now converting lengths to pixels, and CSS function
serialization.

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


Stack created with GitHub Stacks CLIGive Feedback 💬

The last two majors from the Dependabot dev-dependencies group (#678).
Both are dev-only -- jsdom is the test environment, lint-staged runs in the
pre-commit hook -- and all nine `pnpm verify` checks pass, including the 172
web tests running under jsdom 30.
Their breaking changes are almost entirely Node floors, which is the one
thing worth recording:
jsdom 30 ^22.22.2 || ^24.15.0 || >=26.0.0
lint-staged 17 >=22.22.1
Note that these are stricter than this repo's `devEngines.runtime.node`,
which says `>=22`. Node 22.0.0 through 22.22.0 satisfies the repo but not
these packages. CI is unaffected -- `node-version: '22'` resolves to the
latest 22.x -- and pnpm does not enforce engines (engine-strict is off), so
nothing fails at install. Tightening devEngines to match is a separate
decision, since it would also rule out Node 24.0-24.14.
lint-staged 17's other two breaks do not apply: the Git floor of 2.32.0 is
from 2021, and `yaml` becoming optional only matters for YAML config files,
while this repo keeps its lint-staged config in package.json.
jsdom 30's remaining changes are additive or fixes: `CSS.escape()` and
`CSS.supports()`, the `background-position-x`/`-y` properties,
`getComputedStyle()` now converting lengths to pixels, and CSS function
serialization.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@paulvanbrenk
paulvanbrenk merged commit 7b36edb into mainSep 4, 2026
4 checks passed
@paulvanbrenk
paulvanbrenk deleted the deps/test-tooling branch September 4, 2026 01:03
Sign up for freeto 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

@paulvanbrenk