From abe0640331e7ea6a26fe0db032da7499384bccfc Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:50:36 -0700 Subject: [PATCH 1/5] Use main document to create viewport element See microsoft/vscode#224555 --- src/browser/Viewport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/browser/Viewport.ts b/src/browser/Viewport.ts index 6a8e155f..241f4df4 100644 --- a/src/browser/Viewport.ts +++ b/src/browser/Viewport.ts @@ -76,7 +76,7 @@ export class Viewport extends Disposable { element.appendChild(this._scrollableElement.getDomNode()); this._register(toDisposable(() => this._scrollableElement.getDomNode().remove())); - this._styleElement = coreBrowserService.window.document.createElement('style'); + this._styleElement = coreBrowserService.mainDocument.createElement('style'); screenElement.appendChild(this._styleElement); this._register(toDisposable(() => this._styleElement.remove())); this._register(Event.runAndSubscribe(themeService.onChangeColors, () => { From dd54ef13bcc17a184bd995b411f03791e33de4f8 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Thu, 8 Aug 2024 05:54:56 -0700 Subject: [PATCH 2/5] Update node-pty, use conpty.dll --- demo/server.js | 9 ++++++--- package.json | 2 +- yarn.lock | 20 ++++++++++---------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/demo/server.js b/demo/server.js index 8a8c5d11..748546d9 100644 --- a/demo/server.js +++ b/demo/server.js @@ -59,13 +59,16 @@ function startServer() { } const cols = parseInt(req.query.cols); const rows = parseInt(req.query.rows); - const term = pty.spawn(process.platform === 'win32' ? 'pwsh.exe' : 'bash', [], { + const isWindows = process.platform === 'win32'; + const term = pty.spawn(isWindows ? 'pwsh.exe' : 'bash', [], { name: 'xterm-256color', cols: cols ?? 80, rows: rows ?? 24, - cwd: process.platform === 'win32' ? undefined : env.PWD, + cwd: isWindows ? undefined : env.PWD, env, - encoding: USE_BINARY ? null : 'utf8' + encoding: USE_BINARY ? null : 'utf8', + useConpty: isWindows, + useConptyDll: isWindows, }); console.log('Created terminal with PID: ' + term.pid); diff --git a/package.json b/package.json index 479d9dc6..6b3f6910 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "jsdom": "^18.0.1", "mocha": "^10.1.0", "mustache": "^4.2.0", - "node-pty": "1.1.0-beta5", + "node-pty": "1.1.0-beta19", "nyc": "^15.1.0", "source-map-loader": "^3.0.0", "source-map-support": "^0.5.20", diff --git a/yarn.lock b/yarn.lock index 5925b86d..82f5dee8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3190,11 +3190,6 @@ mustache@^4.2.0: resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== -nan@^2.17.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" - integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== - nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" @@ -3220,6 +3215,11 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +node-addon-api@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-preload@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -3227,12 +3227,12 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-pty@1.1.0-beta5: - version "1.1.0-beta5" - resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-1.1.0-beta5.tgz#364386b7058a93070234064f13164ec1ef914993" - integrity sha512-j3QdgFHnLY0JWxztrvM3g67RaQLOGvytv+C6mFu0PqD+JILlzqfwuoyqRqVxdZZjoOTUXPfSRj1qPVCaCH+eOw== +node-pty@1.1.0-beta19: + version "1.1.0-beta19" + resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-1.1.0-beta19.tgz#a74dc04429903c5ac49ee81a15a24590da67d4f3" + integrity sha512-/p4Zu56EYDdXjjaLWzrIlFyrBnND11LQGP0/L6GEVGURfCNkAlHc3Twg/2I4NPxghimHXgvDlwp7Z2GtvDIh8A== dependencies: - nan "^2.17.0" + node-addon-api "^7.1.0" node-releases@^2.0.12: version "2.0.13" From fcad91a682d0602294f70b1df0f9bdc393562e99 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Thu, 15 Aug 2024 05:56:24 -0700 Subject: [PATCH 3/5] Remove xterm- prefix from addon mjs output Fixes #5128 --- bin/esbuild.mjs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/bin/esbuild.mjs b/bin/esbuild.mjs index 71bee9aa..9ed69eda 100644 --- a/bin/esbuild.mjs +++ b/bin/esbuild.mjs @@ -102,7 +102,7 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`addons/addon-${config.addon}/src/${getAddonEntryPoint(config.addon)}.ts`], - outfile: `addons/addon-${config.addon}/lib/xterm-addon-${config.addon}.mjs`, + outfile: `addons/addon-${config.addon}/lib/addon-${config.addon}.mjs`, }; outConfig = { ...outConfig, @@ -132,16 +132,16 @@ if (config.addon) { alias: { // Library ESM imports "@xterm/xterm": ".", - "@xterm/addon-attach": "./addons/addon-attach/lib/xterm-addon-attach.mjs", - "@xterm/addon-clipboard": "./addons/addon-clipboard/lib/xterm-addon-clipboard.mjs", - "@xterm/addon-fit": "./addons/addon-fit/lib/xterm-addon-fit.mjs", - "@xterm/addon-image": "./addons/addon-image/lib/xterm-addon-image.mjs", - "@xterm/addon-search": "./addons/addon-search/lib/xterm-addon-search.mjs", - "@xterm/addon-serialize": "./addons/addon-serialize/lib/xterm-addon-serialize.mjs", - "@xterm/addon-web-links": "./addons/addon-web-links/lib/xterm-addon-web-links.mjs", - "@xterm/addon-webgl": "./addons/addon-webgl/lib/xterm-addon-webgl.mjs", - "@xterm/addon-unicode11": "./addons/addon-unicode11/lib/xterm-addon-unicode11.mjs", - "@xterm/addon-unicode-graphemes": "./addons/addon-unicode-graphemes/lib/xterm-addon-unicode-graphemes.mjs", + "@xterm/addon-attach": "./addons/addon-attach/lib/addon-attach.mjs", + "@xterm/addon-clipboard": "./addons/addon-clipboard/lib/addon-clipboard.mjs", + "@xterm/addon-fit": "./addons/addon-fit/lib/addon-fit.mjs", + "@xterm/addon-image": "./addons/addon-image/lib/addon-image.mjs", + "@xterm/addon-search": "./addons/addon-search/lib/addon-search.mjs", + "@xterm/addon-serialize": "./addons/addon-serialize/lib/addon-serialize.mjs", + "@xterm/addon-web-links": "./addons/addon-web-links/lib/addon-web-links.mjs", + "@xterm/addon-webgl": "./addons/addon-webgl/lib/addon-webgl.mjs", + "@xterm/addon-unicode11": "./addons/addon-unicode11/lib/addon-unicode11.mjs", + "@xterm/addon-unicode-graphemes": "./addons/addon-unicode-graphemes/lib/addon-unicode-graphemes.mjs", // Non-bundled ESM imports // HACK: Ligatures imports fs which in the esbuild bundle resolves at runtime _on startup_ From a07d97a9d35cf3f6f57161f7fcc9adb841d9f647 Mon Sep 17 00:00:00 2001 From: Kyosuke Fujimoto Date: Wed, 28 Aug 2024 16:21:34 +0900 Subject: [PATCH 4/5] Add test for jpg without APP segment to IIPMetrics --- .../fixture/testimages/w3c_home_noexif.jpg | Bin 0 -> 2147 bytes addons/addon-image/src/IIPMetrics.test.ts | 1 + 2 files changed, 1 insertion(+) create mode 100644 addons/addon-image/fixture/testimages/w3c_home_noexif.jpg diff --git a/addons/addon-image/fixture/testimages/w3c_home_noexif.jpg b/addons/addon-image/fixture/testimages/w3c_home_noexif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a46c97ce668f3ace815465d0128252974e20a9de GIT binary patch literal 2147 zcmex=Z9^ z8I>5A1R0qH8UG()kY`|EWMu>c1}I=;VrF4wW9Q)H;{JbxVXFWG6C*P-6ALpdD+>z) z17j^C6Eg#gAghp~p(C4cU?RIxp@>oA#DyHnP8$!323`E1Vw_ae#K|QlE+HwUs-~`? zsbyknW^Q3==I-I?6&w;879J59m7J2AmY$KBRa{b9R$ftA)!fqB*51+CHEHsc zsne#9glAUcUPH>GPMb-@gC&`3vMPMh0fEuRsLEV`%;oWME=sVqsxsVF&q(k*S=4k%?K5 zg;mjzO~^5jJ+V+&$*7S-#A)KfjR!fEje|ajCKX-e5>qjGsQMA)HL%Z!^H>vEK7)G< z;jdc^Jj{#?OoGgU4E7A)|16a2mcu! zWuK|fxZNA?bZv`nw)Yi%h1M%aKDrz0RA1cA6e1(jru<^->(84iW*>a_&DchJWn^Ak zNbZ{1m$eS`wWP=&+Lhk^bUD}bOYx08S)aWEwyik#pP{wzLH{q|8uR}QO*`y=%(8zN zQ=$B??@^S9`wI%Ue z;yY9??%|nsZSo%T@bBCb88=q5#Lw(dzN7J*omE0nIjzxj=v!bkS5bBoJY zXBlPADo}Hs^zdd%8H-lJ9Jwcd+1KXV>@#dxwn}YLs!ViIU_sXNt^XMg?fBsSmvf)= ze};oG@_&5gKdiG6{LkQ&-}ay3Lpb|?2H`m7kM76p?0&RA%W+uB$o&P4FvPm^lbbk8u3lb^sZ`OBC z^^9vQd}wP_{kc?0Nb=9Ij#UED&(xo3?_rAlw6MYYzVfr2DU9d-R9vjzRwte1DqM0+ zHDCC4TDko12YZX^d2Q0a**8k{-uC=Ab+O8}7yhwl&&0RI=>K8cyXe(D>(!BKp9g$6 z)n*=i*W;l4+8Xbb`xY*++x;-%$g%HTlQm>^yPOl3kG=W*(cT^wF}2By^?L262cJLc zd2!Z?UCZ{Lxc$R*h5y6z@;|D6J(aTd{$}vrMtkwbe##{U@@*WG_y)Bk9Hx0QOE z?wu*kr&~Y%;nn1M`$O&UkC6WiQhQ|oc7M2jXma$rn_nhu`)pLT@}hSvTE{l8@PnEz*J_OSo4t9PG51?M`UvXAAhXFjf0@+j4=J+;O$ zf$vR2**fwEgX!%F{;iXHbglLNb-%)7g1;eQ5S@n`;j zD!4w|H`~cxdHat)D_lzFKSRp3t!|aMOSSlzYF6#(;hCCOop-iM{EtpOOZ|nX5BL9( za{SM5^h()(1_2w^TrTI_NAJ0h3h`*UuZ&*RzkoN?UsxlkWZ+!vl%qyw>X~V|DvD?eyvo?b=t* z`zN65i!Y;n(zT@aGkyOUzsEK_@$6w^5S&+W;=F$ON9ph%7a#pKKKzei+wP4Y-cG$^ zK5N=itG8(pcZ}9CD)6l5p0km80o&f<@Q?k6bJMQBxpll_k9>XZoS)(0*DfuqEjZ(9 v?e%f~;a;VSxh3<3Dx8j8trWN&AMMiok7*5SWqac7z?k)DL3+_a{{Kw?^`PLE literal 0 HcmV?d00001 diff --git a/addons/addon-image/src/IIPMetrics.test.ts b/addons/addon-image/src/IIPMetrics.test.ts index 8ad5f05c..9fa476bf 100644 --- a/addons/addon-image/src/IIPMetrics.test.ts +++ b/addons/addon-image/src/IIPMetrics.test.ts @@ -25,6 +25,7 @@ const TEST_IMAGES: [string, IMetrics][] = [ ['w3c_home_gray.png', { mime: 'image/png', width: 72, height: 48 }], ['w3c_home.jpg', { mime: 'image/jpeg', width: 72, height: 48 }], ['w3c_home.png', { mime: 'image/png', width: 72, height: 48 }], + ['w3c_home_noexif.jpg', { mime: 'image/jpeg', width: 72, height: 48 }], ['spinfox.png', { mime: 'image/png', width: 148, height: 148 }], ['iphone_hdr_YES.jpg', { mime: 'image/jpeg', width: 3264, height: 2448 }], ['nikon-e950.jpg', { mime: 'image/jpeg', width: 800, height: 600 }], From b307adb081d3edff7538a3f6769e983e0af31e33 Mon Sep 17 00:00:00 2001 From: Kyosuke Fujimoto Date: Wed, 28 Aug 2024 16:22:21 +0900 Subject: [PATCH 5/5] Fix IIPMetrics jpg detection --- addons/addon-image/src/IIPMetrics.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/addons/addon-image/src/IIPMetrics.ts b/addons/addon-image/src/IIPMetrics.ts index 03770c43..d5470466 100644 --- a/addons/addon-image/src/IIPMetrics.ts +++ b/addons/addon-image/src/IIPMetrics.ts @@ -32,13 +32,8 @@ export function imageType(d: Uint8Array): IMetrics { height: d[20] << 24 | d[21] << 16 | d[22] << 8 | d[23] }; } - // JPEG: FF D8 FF E0 xx xx JFIF or FF D8 FF E1 xx xx Exif 00 00 - if ((d32[0] === 0xE0FFD8FF || d32[0] === 0xE1FFD8FF) - && ( - (d[6] === 0x4a && d[7] === 0x46 && d[8] === 0x49 && d[9] === 0x46) - || (d[6] === 0x45 && d[7] === 0x78 && d[8] === 0x69 && d[9] === 0x66) - ) - ) { + // JPEG: FF D8 FF + if (d[0] === 0xFF && d[1] === 0xD8 && d[2] === 0xFF) { const [width, height] = jpgSize(d); return { mime: 'image/jpeg', width, height }; }