Skip to content

refactor(test): extract the duplicated Node 26 jsdom localStorage guard into a shared helper#7624

Merged
JSONbored merged 1 commit into
mainfrom
claude/shared-jsdom-node26-helper
Jul 21, 2026
Merged

refactor(test): extract the duplicated Node 26 jsdom localStorage guard into a shared helper#7624
JSONbored merged 1 commit into
mainfrom
claude/shared-jsdom-node26-helper

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Closes #7620

Summary

  • Extracts the Node 26 jsdom localStorage guard (previously copy-pasted verbatim in
    apps/loopover-miner-ui, apps/loopover-ui, and packages/loopover-ui-kit's vitest.setup.ts) into
    one shared test/helpers/vitest-jsdom-node26-localstorage.ts module all three now import. No behavior
    change — same guard, just one copy instead of three that could drift.

Scope

  • The PR title follows type(scope): short summary Conventional Commit format, for example fix(api): restore profile access checks.
  • This PR is focused and does not mix unrelated backend, UI, MCP, docs, dependency, and deploy changes.
  • This follows CONTRIBUTING.md and does not reintroduce GitHub Pages, VitePress, site/, or CNAME.
  • I linked a currently open issue this PR resolves (e.g. Closes #123) — a linked open issue is required for every contributor PR.

Validation

  • git diff --check
  • npm run actionlint
  • npm run typecheck
  • npm run test:coverage locally; codecov/patch requires ≥99% coverage of the lines AND branches you changed (aim for 100% on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.
  • npm run test:workers
  • npm run build:mcp
  • npm run test:mcp-pack
  • npm run ui:openapi:check
  • npm run ui:lint
  • npm run ui:typecheck
  • npm run ui:build
  • npm audit --audit-level=moderate
  • New or changed behavior has unit/integration tests for new branches, fallback paths, and sanitizer boundaries

If any required check was skipped, explain why:

  • The shared helper lives under test/**, outside Codecov's src/**-only include glob. No dedicated
    unit test for the helper itself, matching this repo's existing test/helpers/*.ts convention (e.g.
    test/helpers/d1.ts has none either) — it's exercised directly and thoroughly by the real consuming
    test suites. Verified on Node 26 (not just asserted): all three consuming workspaces' full suites pass
    post-extraction (loopover-ui 79/79 files, ui-kit 3/3, ui-miner 28/28).

Safety

  • No secrets, wallet details, hotkeys, coldkeys, user PATs, private keys, raw trust scores, private rankings, or private maintainer evidence are exposed.
  • Public GitHub text stays sanitized, low-noise, and does not imply compensation guarantees or optimization tactics.
  • Auth, cookie, CORS, GitHub App, Cloudflare, or session changes include negative-path tests.
  • API/OpenAPI/MCP behavior is updated and tested where needed.
  • UI changes use live API data or real empty/error/loading states, not production mock/demo fallbacks.
  • Visible UI changes include a UI Evidence section below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails. SVG screenshots are not used as review evidence. Review-only screenshots or recordings are not committed to the repository.
  • Public docs/changelogs are updated where needed; changelogs are only edited for release-prep PRs.

UI Evidence

Not applicable — pure test-infrastructure refactor, no visible UI/frontend difference.

Notes

…rd (#7620)

#7612's fix mirrored #7597's Node 26 jsdom/localStorage guard verbatim
into apps/loopover-ui and packages/loopover-ui-kit, on top of the
existing copy already in apps/loopover-miner-ui -- three copies of the
same ~15-line guard that can drift, and a fourth future jsdom
workspace wouldn't automatically inherit the fix.

Extract into test/helpers/vitest-jsdom-node26-localstorage.ts, exporting
one patchJsdomLocalStorageForNode26() function. All three vitest.setup.ts
files now import and call it instead of inlining the logic. No behavior
change -- same guard, same no-op-on-Node-22/24 / fix-on-Node-26+ semantics.

Verified on Node 26: all three consuming workspaces' full test suites
pass post-extraction (loopover-ui 79/79 files, ui-kit 3/3, ui-miner
28/28) -- the regression proof for a helper this thin, matching this
repo's existing test/helpers/*.ts convention of no dedicated test file.

Closes #7620
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
loopover-ui bad44f4 Jul 21 2026, 04:24 AM

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@JSONbored JSONbored self-assigned this Jul 21, 2026
@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 106 bytes (0.0%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.66MB 106 bytes (0.0%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-B0WDyWwA.js (New) 2.17MB 2.17MB 100.0% 🚀
assets/tanstack-vendor-Bl0w0SrS.js (New) 823.76kB 823.76kB 100.0% 🚀
assets/docs.fumadocs-spike-api-reference-DcMmXqPa.js (New) 442.94kB 442.94kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-CtDiEmEC.js (New) 201.71kB 201.71kB 100.0% 🚀
assets/modal-sxTiKAJd.js (New) 184.28kB 184.28kB 100.0% 🚀
assets/client-DU6ZBOTj.js (New) 146.06kB 146.06kB 100.0% 🚀
assets/maintainer-panel-Bazoo7-1.js (New) 78.53kB 78.53kB 100.0% 🚀
assets/ui-vendor-DtI8OCuE.js (New) 57.04kB 57.04kB 100.0% 🚀
assets/routes-DbUX_aZ6.js (New) 34.83kB 34.83kB 100.0% 🚀
assets/owner-panel-2OV9QePF.js (New) 27.2kB 27.2kB 100.0% 🚀
assets/app-BqohjiDo.js (New) 25.65kB 25.65kB 100.0% 🚀
assets/app.runs-CCDDleMx.js (New) 23.55kB 23.55kB 100.0% 🚀
assets/miner-panel-CV6U1PQP.js (New) 20.25kB 20.25kB 100.0% 🚀
assets/docs-source-CrCqFpBR.js (New) 19.46kB 19.46kB 100.0% 🚀
assets/api._op-DEM-mvOl.js (New) 17.55kB 17.55kB 100.0% 🚀
assets/self-hosting-docs-audit-Co1MnEBe.js (New) 16.73kB 16.73kB 100.0% 🚀
assets/app.index-DOj03IS-.js (New) 15.62kB 15.62kB 100.0% 🚀
assets/playground-panel-D56LY9-k.js (New) 14.49kB 14.49kB 100.0% 🚀
assets/app.audit-B-oXnINK.js (New) 10.11kB 10.11kB 100.0% 🚀
assets/extension-DqIw3_To.js (New) 10.04kB 10.04kB 100.0% 🚀
assets/app.config-generator-Dfr_VUmJ.js (New) 9.88kB 9.88kB 100.0% 🚀
assets/fairness-ChAW43aE.js (New) 8.34kB 8.34kB 100.0% 🚀
assets/maintainers-CFZLvq69.js (New) 8.03kB 8.03kB 100.0% 🚀
assets/miners-CDC37Y6W.js (New) 7.85kB 7.85kB 100.0% 🚀
assets/agents-CzaGwEV-.js (New) 7.76kB 7.76kB 100.0% 🚀
assets/commands-panel-DQyjHGLS.js (New) 6.65kB 6.65kB 100.0% 🚀
assets/maintainer-workflow-DE3SW-bZ.js (New) 6.61kB 6.61kB 100.0% 🚀
assets/roadmap-DJoTIJSe.js (New) 6.33kB 6.33kB 100.0% 🚀
assets/digest-panel-W4aUhBMs.js (New) 6.18kB 6.18kB 100.0% 🚀
assets/repos._owner._repo.quality-DSCI1cBa.js (New) 6.14kB 6.14kB 100.0% 🚀
assets/docs.index-D25w6dZg.js (New) 5.55kB 5.55kB 100.0% 🚀
assets/api.index-DrJs_xfo.js (New) 4.7kB 4.7kB 100.0% 🚀
assets/api-CACvbtej.js (New) 2.69kB 2.69kB 100.0% 🚀
assets/docs-DdmVBunr.js (New) 2.67kB 2.67kB 100.0% 🚀
assets/app.workbench-DP-AkLKI.js (New) 1.58kB 1.58kB 100.0% 🚀
assets/session-Cl3UXx9P.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/tooltip-BxxHsvMa.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/tabs-VhZKNjdh.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/app.repos-DuRtED8T.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/input-DS_EoX-F.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-C0GaoE6p.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/docs.ai-summaries-Bh0Y5Hyc.js (New) 506 bytes 506 bytes 100.0% 🚀
assets/app.maintainer-_H1gKNox.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/docs.branch-analysis-D-UwAqmL.js (New) 499 bytes 499 bytes 100.0% 🚀
assets/docs.scoreability-9FB0V6xD.js (New) 499 bytes 499 bytes 100.0% 🚀
assets/docs.upstream-drift-BCjtkN1Y.js (New) 499 bytes 499 bytes 100.0% 🚀
assets/docs.federated-fleet-intelligence-Ci4oM_SD.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.maintainer-install-trust-3fGMLDdj.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-ai-providers-DQarDG52.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-backup-scaling-DBOET0NF.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-configuration-BHnnjlxH.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-docs-audit-Dij3FOo2.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-github-app-C7XPzv_R.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-quickstart-BTnqZFMk.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-rag--Hn7_zsG.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-rees-OM4dqADP.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-rees-analyzers-CFLNeLcB.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-release-checklist-BCtU2Moa.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-releases-BBjNAk_Q.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-security-B9FzdzRQ.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-troubleshooting-BEd8alDM.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-unified-ams-orb-sbMfbpLN.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.ams-config-precedence-B7ll_IQr.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-deployment-fs1zsw0t.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-discovery-plane-WCRledaL.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-env-reference-DOBNlhd1.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-fleet-manifest-C5Sspf4T.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-goal-spec-DH68Prfm.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-kill-switch-incident-DvrUZ_46.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-observability-GgMStrr3.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-operations-runbook-BSSVeS3g.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-sizing-SQXGAaKp.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-unattended-scheduling-CS-4EVyW.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.beta-onboarding-DRAYM9HU.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.capacity-CnfAhmMh.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.maintainer-self-hosting-BsP6Ik4Y.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.mcp-clients-kYcJ-2Ue.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.owner-checklist-vJTeHgpm.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.quickstart-DY1Ayh3j.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.github-app-DPtvidV-.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.maintainer-workflow-CGQvcVtf.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.privacy-security-BPSIPDGv.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.troubleshooting-pc9UTWdg.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.tuning-B1KJxshw.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.loopover-commands-DtGep9It.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/sparkles-CqPCbJFa.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/docs.how-reviews-work-DtwdQxem.js (New) 493 bytes 493 bytes 100.0% 🚀
assets/app.owner-D45MYISU.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-CfAnRiIN.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground-jCqtRHuL.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/reveal-CK3StjG7.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-fSG1s6VM.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-ivOTDW9w.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-CuhRsQN9.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-BHMvoocr.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-mtnKj0_D.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-BduZcC3q.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-YexQ2E9t.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-bzQcRanV.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-BDvwGub3.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/wrench-DEhgxAEi.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/list-checks-3zSIZ9az.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/shield-BQVIMTqO.js (New) 272 bytes 272 bytes 100.0% 🚀
assets/workflow-fa2dKZHS.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/compass-BTG7lxkg.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/history-BFMLBpcB.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity-Dq9fyrqV.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-CxSS3gkX.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/lock-sjjBI6Im.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-DlZml6Ob.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-Bgmc_0uD.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-eg-9G1a5.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-DZEthPCU.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/maintainer-workflow-B_sY2rRD.js (New) 155 bytes 155 bytes 100.0% 🚀
assets/self-hosting-docs-audit-CxrFtLVX.js (New) 141 bytes 141 bytes 100.0% 🚀
assets/circle-7FSUpA9e.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/modal-BsQ7ViqO.js (New) 115 bytes 115 bytes 100.0% 🚀
assets/add-scalar-classes-BTDjLvjx.js (Deleted) -2.17MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-BQKpuazM.js (Deleted) -823.66kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-h7E_yPFh.js (Deleted) -442.94kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-DkdihULo.js (Deleted) -201.71kB 0 bytes -100.0% 🗑️
assets/modal-Dm49RdPH.js (Deleted) -184.28kB 0 bytes -100.0% 🗑️
assets/client-BlryoD-V.js (Deleted) -146.06kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-BVYMw5mi.js (Deleted) -78.53kB 0 bytes -100.0% 🗑️
assets/ui-vendor-_lZUvUVT.js (Deleted) -57.04kB 0 bytes -100.0% 🗑️
assets/routes-BRVw-rCI.js (Deleted) -34.83kB 0 bytes -100.0% 🗑️
assets/owner-panel-Br8-ds0n.js (Deleted) -27.2kB 0 bytes -100.0% 🗑️
assets/app-BjB3_lcH.js (Deleted) -25.65kB 0 bytes -100.0% 🗑️
assets/app.runs-Dq26NfEg.js (Deleted) -23.55kB 0 bytes -100.0% 🗑️
assets/miner-panel-BWf1MkxS.js (Deleted) -20.25kB 0 bytes -100.0% 🗑️
assets/docs-source-1EnCK6_M.js (Deleted) -19.46kB 0 bytes -100.0% 🗑️
assets/api._op-CyM5rTnx.js (Deleted) -17.55kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-fEjnMvd4.js (Deleted) -16.73kB 0 bytes -100.0% 🗑️
assets/app.index-DP5rcxVM.js (Deleted) -15.62kB 0 bytes -100.0% 🗑️
assets/playground-panel-BTjVjUwv.js (Deleted) -14.49kB 0 bytes -100.0% 🗑️
assets/app.audit-CEvaKGu6.js (Deleted) -10.11kB 0 bytes -100.0% 🗑️
assets/extension-DhotZqat.js (Deleted) -10.04kB 0 bytes -100.0% 🗑️
assets/app.config-generator-Ts9CWQ8G.js (Deleted) -9.88kB 0 bytes -100.0% 🗑️
assets/fairness-uw8BFqlL.js (Deleted) -8.34kB 0 bytes -100.0% 🗑️
assets/maintainers-BV4u_tdP.js (Deleted) -8.03kB 0 bytes -100.0% 🗑️
assets/miners-DXBKcCe9.js (Deleted) -7.85kB 0 bytes -100.0% 🗑️
assets/agents-C9rtE_S_.js (Deleted) -7.76kB 0 bytes -100.0% 🗑️
assets/commands-panel-DGhw9F8k.js (Deleted) -6.65kB 0 bytes -100.0% 🗑️
assets/maintainer-workflow-BW-UG9XT.js (Deleted) -6.61kB 0 bytes -100.0% 🗑️
assets/roadmap-RWDiQktP.js (Deleted) -6.33kB 0 bytes -100.0% 🗑️
assets/digest-panel-DKp3wXs_.js (Deleted) -6.18kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-COQ85K5v.js (Deleted) -6.14kB 0 bytes -100.0% 🗑️
assets/docs.index-gB8ss_wy.js (Deleted) -5.55kB 0 bytes -100.0% 🗑️
assets/api.index-CGjoNl1q.js (Deleted) -4.7kB 0 bytes -100.0% 🗑️
assets/api-xp5FWtLr.js (Deleted) -2.69kB 0 bytes -100.0% 🗑️
assets/docs-DRAf2cJC.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
assets/app.workbench-x2PxfJTx.js (Deleted) -1.58kB 0 bytes -100.0% 🗑️
assets/session-ihkze32d.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/tooltip-ED7qVnky.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/tabs-nOUSe0gb.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/app.repos-Bd-6Pbrr.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/input-B-VKwf8L.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-DWCQxwR4.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/docs.ai-summaries-CtMeQ1wE.js (Deleted) -506 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-CQE_WI6T.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/docs.branch-analysis-BgdnMMPt.js (Deleted) -499 bytes 0 bytes -100.0% 🗑️
assets/docs.scoreability-DmkjqMJh.js (Deleted) -499 bytes 0 bytes -100.0% 🗑️
assets/docs.upstream-drift-CgfZNznc.js (Deleted) -499 bytes 0 bytes -100.0% 🗑️
assets/docs.federated-fleet-intelligence-B2Ffvuul.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-install-trust-CYgXPpXU.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-ai-providers-dUx-88qR.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-backup-scaling-CdwwROqH.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-configuration-BRjVIqrt.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-docs-audit-bwd3NHGn.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-github-app-Eyf4lHAE.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-quickstart-Bokrg7Z4.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rag-BpApEhtr.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-DYJulf88.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-analyzers-DPyWkS0o.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-release-checklist-ByXDJuT2.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-releases-DT1sglfw.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-security-BaFVni-j.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-troubleshooting-TFYiGJMM.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-unified-ams-orb-DW60Y3Dw.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-config-precedence-Bevexq0T.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-deployment-CaRA_zZU.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-discovery-plane-CTKiM9dh.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-env-reference-Ci-XcnuZ.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-fleet-manifest-DcZGLzVJ.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-goal-spec-DcvEiAWn.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-kill-switch-incident-IjEnArVP.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-observability-BvR_6t0p.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-operations-runbook-rYvJQMgD.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-sizing-DCjX6T87.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-unattended-scheduling-F9Qisx-Z.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.beta-onboarding-BBf9DSyO.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.capacity-C31lYQMz.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-self-hosting-BsrtBHUT.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.mcp-clients-DMJs-8Ia.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.owner-checklist-DD5hbMht.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.quickstart-D329HKFo.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.github-app-BisWyU9V.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-workflow-D4qp7_o-.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.privacy-security-DeI65zwk.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.troubleshooting-Yv5Ao5i9.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.tuning-CKKSkpZC.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.loopover-commands-DO34b8Eg.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/sparkles-PWCKNiLQ.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/docs.how-reviews-work-BfSob6aS.js (Deleted) -493 bytes 0 bytes -100.0% 🗑️
assets/app.owner-CBB0Ocok.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-BmaG_k0a.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-lpKDGEpk.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/reveal-BN4Fb5lG.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-XrZPN124.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-CnwCCftY.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-DWh6eqhv.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-DIer-c5V.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-Hh610B8p.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-C3GE3R7y.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-DcR0wI9B.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-AfZdAQsE.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-Di8xoqNW.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/wrench-CEO91Lml.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/list-checks-BOjfc_CU.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/shield-HUw5BTR8.js (Deleted) -272 bytes 0 bytes -100.0% 🗑️
assets/workflow-CKVrGsPj.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/compass-BoGHbvT5.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/history-L9PBPmX9.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-CIQC1C9r.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-CJ1IJJBt.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/lock-CUCFcWdX.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-BTK-7lAv.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-CxVwVK-b.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-tFqHTxCR.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-Bszo9HG3.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/maintainer-workflow-WpOapaXz.js (Deleted) -155 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-DkcS_D5z.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/circle-DrjOC6Jn.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️
assets/modal-jX6-sC83.js (Deleted) -115 bytes 0 bytes -100.0% 🗑️

@JSONbored
JSONbored merged commit 5a15587 into main Jul 21, 2026
16 of 17 checks passed
@JSONbored
JSONbored deleted the claude/shared-jsdom-node26-helper branch July 21, 2026 04:33
@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor(test): extract the duplicated Node 26 jsdom localStorage guard into a shared helper

1 participant