[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg
, '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

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update. - #123547

Merged
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging
Jan 29, 2026
Merged

[release/8.0-staging] [mono][hotreload] Ignore if we receive an empty update.#123547
steveisok merged 2 commits into
release/8.0-stagingfrom
backport/pr-120333-to-release/8.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Backport of #120333 to release/8.0-staging

/cc @thaystg

Customer Impact

  • Customer reported
  • Found internally

This change was initially backported to .NET 10 and 9 back in October:

10 - #120334
9 - #120335

We didn't think we would need it in .NET 8, but that turned out to not be the case.

This change fixes a problem with hot reload on blazor webassembly where two updates are sent to the runtime at the same time and the runtime asserts. This was previously an unsupported scenario, but recent up stack changes altered the behavior. The plan is to fix both the up stack behavior and in runtime as a defense in depth. The reasoning is that one of the two updates sent to runtime contains no IL. We can look at that one and safely ignore it.

Regression

  • Yes
  • No

Not in runtime at least. This was not a supported scenario, but was trigged via a VS level change.

[If yes, specify when the regression was introduced. Provide the PR or commit if known.]

Testing

Manual before and after testing

[How was the fix verified? How was the issue missed previously? What tests were added?]

Risk

Low

[High/Medium/Low. Justify the indication by mentioning how risks were measured and addressed.]

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

thaystgand others added 2 commits January 23, 2026 13:58
@steveisoksteveisok added the Servicing-consider Issue for next servicing release review label Jan 24, 2026
@rbhandarbhanda added this to the 8.0.25 milestone Jan 27, 2026
@rbhandarbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 27, 2026
@steveisok
steveisok merged commit 8136db4 into release/8.0-stagingJan 29, 2026
116 of 121 checks passed
@steveisok
steveisok deleted the backport/pr-120333-to-release/8.0-staging branch January 29, 2026 13:54
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@lewing@steveisok@rbhanda@thaystg