[Init] Initial commit - NetMesh terminal manager
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
This commit is contained in:
107
scripts/patch-xterm-webgl-atlas.cjs
Normal file
107
scripts/patch-xterm-webgl-atlas.cjs
Normal file
@@ -0,0 +1,107 @@
|
||||
#!/usr/bin/env node
|
||||
/* global process, console */
|
||||
/**
|
||||
* Verify @xterm/addon-webgl carries the upstream glyph-atlas safety fixes.
|
||||
*
|
||||
* Netcatty previously backported these as local string patches. With
|
||||
* @xterm/addon-webgl >= 0.20.0-beta.291 they ship upstream:
|
||||
*
|
||||
* - xtermjs/xterm.js#6055 — shared atlas: clearTexture bumps _pageLayoutVersion
|
||||
* - xtermjs/xterm.js#5987 — no generateMipmap on atlas upload (LINEAR filters)
|
||||
* - xtermjs/xterm.js#6043 — _evictAllPages / maxAtlasPages capacity handling
|
||||
*
|
||||
* This script no longer mutates node_modules. It only fails closed when the
|
||||
* pinned package is missing any of the above, so a silent downgrade cannot
|
||||
* reintroduce garbled split-pane / mipmap / overflow bugs.
|
||||
*/
|
||||
"use strict";
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
|
||||
const TARGET_FILES = [
|
||||
"node_modules/@xterm/addon-webgl/lib/addon-webgl.mjs",
|
||||
"node_modules/@xterm/addon-webgl/lib/addon-webgl.js",
|
||||
];
|
||||
|
||||
/** Upstream #6055: clearTexture bumps page layout version so shared atlases rebuild. */
|
||||
function hasUpstreamSharedAtlasClearFix(source) {
|
||||
return (
|
||||
source.includes("_pageLayoutVersion") &&
|
||||
/clearTexture\(\)\{[^}]*_pageLayoutVersion\+\+/.test(source)
|
||||
);
|
||||
}
|
||||
|
||||
/** Upstream #5987: atlas texture upload must not call generateMipmap. */
|
||||
function hasUpstreamMipmapFix(source) {
|
||||
return !source.includes(".generateMipmap(");
|
||||
}
|
||||
|
||||
/** Upstream #6043: capacity eviction when atlas pages overflow texture slots. */
|
||||
function hasUpstreamCapacityFix(source) {
|
||||
return source.includes("_evictAllPages()") && source.includes("maxAtlasPages");
|
||||
}
|
||||
|
||||
let webglVersion = "";
|
||||
try {
|
||||
const packageJson = path.resolve(
|
||||
process.cwd(),
|
||||
"node_modules/@xterm/addon-webgl/package.json",
|
||||
);
|
||||
webglVersion = JSON.parse(fs.readFileSync(packageJson, "utf8")).version || "";
|
||||
} catch {
|
||||
// Handled below when files are missing.
|
||||
}
|
||||
|
||||
const results = { ok: 0, missing: 0 };
|
||||
|
||||
for (const file of TARGET_FILES) {
|
||||
const abs = path.resolve(process.cwd(), file);
|
||||
let source;
|
||||
try {
|
||||
source = fs.readFileSync(abs, "utf8");
|
||||
} catch {
|
||||
console.warn(`[patch-xterm-webgl-atlas] ERROR: not found: ${file}`);
|
||||
results.missing++;
|
||||
continue;
|
||||
}
|
||||
|
||||
const checks = [
|
||||
{
|
||||
name: "shared-atlas clear (#6055)",
|
||||
ok: hasUpstreamSharedAtlasClearFix(source),
|
||||
hint: "need clearTexture() { ... _pageLayoutVersion++ }",
|
||||
},
|
||||
{
|
||||
name: "no atlas mipmaps (#5987)",
|
||||
ok: hasUpstreamMipmapFix(source),
|
||||
hint: "must not call gl.generateMipmap on atlas upload",
|
||||
},
|
||||
{
|
||||
name: "atlas capacity eviction (#6043)",
|
||||
ok: hasUpstreamCapacityFix(source),
|
||||
hint: "need _evictAllPages() and maxAtlasPages",
|
||||
},
|
||||
];
|
||||
|
||||
const failed = checks.filter((check) => !check.ok);
|
||||
if (failed.length === 0) {
|
||||
results.ok++;
|
||||
continue;
|
||||
}
|
||||
|
||||
results.missing++;
|
||||
for (const check of failed) {
|
||||
console.warn(
|
||||
`[patch-xterm-webgl-atlas] ERROR: missing ${check.name} in ${file} ` +
|
||||
`(${check.hint}). Upgrade @xterm/addon-webgl ` +
|
||||
`(current: ${webglVersion || "unknown"}).`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(
|
||||
`[patch-xterm-webgl-atlas] verify version=${webglVersion || "unknown"} ` +
|
||||
`ok=${results.ok} missing=${results.missing}`,
|
||||
);
|
||||
|
||||
if (results.missing > 0) process.exitCode = 1;
|
||||
Reference in New Issue
Block a user