Skip to content

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vatsrahul1001@pierrejeambrun
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) by github-actions[bot] · Pull Request #67556 · apache/airflow · GitHub
Skip to content

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vatsrahul1001@pierrejeambrun
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) by github-actions[bot] · Pull Request #67556 · apache/airflow · GitHub
Skip to content

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vatsrahul1001@pierrejeambrun
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) by github-actions[bot] · Pull Request #67556 · apache/airflow · GitHub
Skip to content

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vatsrahul1001@pierrejeambrun
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) by github-actions[bot] · Pull Request #67556 · apache/airflow · GitHub
Skip to content

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vatsrahul1001@pierrejeambrun
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) by github-actions[bot] · Pull Request #67556 · apache/airflow · GitHub
Skip to content

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548) - #67556

Merged
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test
May 26, 2026
Merged

[v3-2-test] UI: Rewrite modulepreload hrefs to the api-server static path (#67548)#67556
vatsrahul1001 merged 1 commit into
v3-2-testfrom
backport-eff567c-v3-2-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • UI: Fix Monaco workers crashing in production mode

?url does not run the Vite worker pipeline. For editor.worker.js it
inlines the raw source as a base64 data URL (the source is below the
default assetsInlineLimit), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
json.worker.js it copies a partly-bundled file whose top-level
import '../../editor/editor.worker.js' resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.

Switch to ?worker&url: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.

  • UI: Rewrite modulepreload hrefs to the api-server static path

Vite emits both <script src="./assets/..."> and
<link rel="modulepreload" href="./assets/..."> for chunks in the
built index.html. The transform-url-src plugin only rewrote
src="./assets/" to src="./static/assets/", leaving the
modulepreload hrefs untouched. Behind the api-server's /static/
mount those preload requests hit the SPA HTML fallback and the
browser fails them with Expected a JavaScript-or-Wasm module script but the server responded with a MIME type of "text/html". The chunks
themselves still load via <script src> so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.

Apply the same static/ rewrite to href="./assets/" and switch all
three rewrites to replaceAll so multiple matches (one per chunk) are
handled — replace with a string only touches the first occurrence.


(cherry picked from commit eff567c)

Co-authored-by: Pierre Jeambrun pierrejbrun@gmail.com
Co-authored-by: Rahul Vats 43964496+vatsrahul1001@users.noreply.github.com

…path (#67548)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label May 26, 2026
@pierrejeambrun
pierrejeambrun marked this pull request as ready for review May 26, 2026 14:01
@vatsrahul1001vatsrahul1001 added this to the Airflow 3.2.2 milestone May 26, 2026
@vatsrahul1001vatsrahul1001 added the type:bug-fix Changelog: Bug Fixes label May 26, 2026
@vatsrahul1001
vatsrahul1001 merged commit c87d65d into v3-2-testMay 26, 2026
74 checks passed
@vatsrahul1001
vatsrahul1001 deleted the backport-eff567c-v3-2-test branch May 26, 2026 15:33
vatsrahul1001 added a commit that referenced this pull request May 26, 2026
…path (#67548) (#67556)
* UI: Fix Monaco workers crashing in production mode
`?url` does not run the Vite worker pipeline. For `editor.worker.js` it
inlines the raw source as a base64 data URL (the source is below the
default `assetsInlineLimit`), and the inlined module still has bare
specifier imports it cannot resolve in a Worker context. For
`json.worker.js` it copies a partly-bundled file whose top-level
`import '../../editor/editor.worker.js'` resolves to a path that does
not exist in the build output. Both cases manifest at runtime as
"Could not create web worker(s). Falling back to loading web worker
code in main thread" followed by a stream of fallback fetch errors.
Switch to `?worker&url`: Vite runs the file through the worker pipeline
(bundling all dependencies into a self-contained IIFE) and the URL
query suffix returns the resulting URL as a string instead of a Worker
constructor. The Blob shim from #67352 then imports a properly bundled
worker, restoring real worker-thread execution.
* UI: Rewrite modulepreload hrefs to the api-server static path
Vite emits both `<script src="./assets/...">` and
`<link rel="modulepreload" href="./assets/...">` for chunks in the
built `index.html`. The `transform-url-src` plugin only rewrote
`src="./assets/"` to `src="./static/assets/"`, leaving the
modulepreload `href`s untouched. Behind the api-server's `/static/`
mount those preload requests hit the SPA HTML fallback and the
browser fails them with `Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html"`. The chunks
themselves still load via `<script src>` so the app works, but every
page load wastes three round-trips on the failed preloads and floods
the console.
Apply the same `static/` rewrite to `href="./assets/"` and switch all
three rewrites to `replaceAll` so multiple matches (one per chunk) are
handled — `replace` with a string only touches the first occurrence.
---------
(cherry picked from commit eff567c)
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Co-authored-by: Rahul Vats <43964496+vatsrahul1001@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.type:bug-fixChangelog: Bug Fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vatsrahul1001@pierrejeambrun