ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, '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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, '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 > 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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, '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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, '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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, '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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete
, '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

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry - #103

Open
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports
Open

ci(e2e): 823 — smoke-test the packed workspace, not whatever is on the registry#103
randomdevpete wants to merge 2 commits into
task-789-converge-core-atom-namingfrom
task-823-registry-smoke-references-removed-exports

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

registry-smoke now packs jarl-atoms and jarl-react from this branch's build and tests against those locally-packed tarballs, rather than installing from the npm registry at latest. This catches export renames and missing exports the moment they're introduced, on every PR, instead of silently failing after a release ships broken.

What this trades away: no longer proves the currently-published npm tarball works end-to-end — a botched npm publish or stale files/exports entry that only a real publish would expose can't be caught this way.

What it buys back: runs on every PR with locally-packed artifacts that use the same files/main/exports/types config and dist/ a release would ship, catching everything short of the publish step itself.

Approach

  • Commit 1: Updated all export references in e2e/registry-smoke/ to track the renames in 675 and 789. Grep-clean: no stale resolvedAtom, rootAtom, redirectAtom, queryParamAtom, or validateAtom.
  • Commit 2: Added e2e/registry-smoke/pack-local.mjs (mirroring cjs-nodenext/pack-local.mjs), switched dependencies to file:./tarballs/*.tgz, made the CI job run unconditionally.

Dependency

Carries the full stack: 675 and 789 are already stacked below this PR.

See e2e/registry-smoke/README.md "Tracking source renames (ticket 823)" for full docs.

resolvedAtom was removed by 675 in favour of asyncRouteAtom(...).data;
followResolvedRedirects became followAsyncRedirects. 789 suffixed every
route atom with Route: rootAtom/createRootAtom split into the bare
instance rootRoute and its factory rootRouteAtom, and redirectAtom,
queryParamAtom and validateAtom each gained the suffix. Update every
reference in the smoke consumer (routes, App, the vitest suite, and
both entrypoint smoke scripts) to match.
Ticket: 823
registry-smoke installed jarl-atoms/jarl-react from the npm registry at
`latest`, on a job wired to workflow_dispatch only. That tests the
published package, which was the point, but it meant a source rename
here couldn't fail until the next release republished it — and it
would fail in a job nobody watches by default. This is exactly the
gap that let 675 and 789 drift unnoticed until this ticket.
Of the three ways to close it (track renames in lockstep, pin to an
explicit version so the mismatch is legible, or run on PRs against a
local build), this takes the third: pack-local.mjs packs jarl-atoms/
jarl-react from the working tree, the same way cjs-nodenext/ already
does for its own narrower check, and installs the tarballs as a real
`file:` dependency in place of `latest`. The registry-smoke CI job now
runs unconditionally alongside build-and-test instead of gating on
workflow_dispatch, so drift surfaces on the PR that introduces it.
Traded away: this no longer proves the currently-published npm
tarball works end-to-end (a botched `npm publish`, a stale `files`/
`exports` entry only a real publish would expose). What it buys back
is catching everything short of the publish step itself, on every PR
rather than after a release ships broken — recorded in
e2e/registry-smoke/README.md, "Tracking source renames", along with
how to point it at a real published version instead.
Ticket: 823
@randomdevpete
randomdevpeteforce-pushed the task-823-registry-smoke-references-removed-exports branch from 70d2472 to 7bdd115CompareAugust 21, 2026 13:43
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

@randomdevpete