Compare commits

...
932 Commits
Author SHA1 Message Date
copilot-swe-agent[bot]andTyriar 6e39f74f2c Document Alt+- keyboard issue investigation with comprehensive tests
Co-authored-by: Tyriar <2193314+Tyriar@users.noreply.github.com>
2025-08-24 13:08:56 +00:00
copilot-swe-agent[bot]andTyriar 9a64c2cb63 Add comprehensive tests for Alt+- keyboard handling
Co-authored-by: Tyriar <2193314+Tyriar@users.noreply.github.com>
2025-08-24 13:04:42 +00:00
copilot-swe-agent[bot] dc2ac0b78b Initial plan 2025-08-24 12:47:20 +00:00
Daniel Imms e969832946 Merge pull request #5385 from anthonykim1/anthonykim1/fixWrappedTerminalFind
Fix terminal find when wrapped
2025-08-21 12:40:01 -07:00
Anthony Kim 95a9531ec1 Try to add tests 2025-08-20 22:49:03 -07:00
Daniel Imms 7637a2de19 Merge pull request #5386 from alexkozy/safe-guards
fix: ensure that currentRow can not go out of the range
2025-08-20 14:15:08 -07:00
Alexey Kozy a589be2826 fix: ensure that currentRow can not go out of the range 2025-08-20 13:47:40 -07:00
Anthony Kim b53096f4a2 Clean code 2025-08-20 10:55:47 -07:00
Anthony Kim 687d8277e7 Fix terminal find when wrapped 2025-08-20 10:53:40 -07:00
Daniel Imms 4c0cf27cfc Merge pull request #5334 from CodinGame/webgl-renderer-shadow-dom
Support shadow dom in webgl renderer
2025-07-31 08:32:44 -07:00
Loïc Mangeonjean 149527ddb8 refactor: apply requested style change 2025-07-31 17:08:30 +02:00
Daniel Imms c4b707e9ca Merge pull request #5362 from Tyriar/tyriar/steps2
Move copilot steps to correct folder
2025-06-21 11:01:00 -07:00
Daniel Imms 9d35d59fb3 Move copilot steps to correct folder 2025-06-21 11:00:33 -07:00
Daniel Imms 877b37d3cc Merge pull request #5359 from Tyriar/tyriar/copilot_steps
Add copilot setup steps
2025-06-21 10:55:11 -07:00
Daniel Imms f14f55c951 Add copilot setup steps 2025-06-21 10:54:46 -07:00
Daniel Imms 8a16a551e0 Merge pull request #5358 from Tyriar/tyriar/reflow_bounds
Revert "Merge pull request #5321 from Tyriar/5319"
2025-06-18 06:17:46 -07:00
Daniel Imms 2a5239578a Revert "Merge pull request #5321 from Tyriar/5319"
This reverts commit a260f7d288, reversing
changes made to 2042bb8502.
2025-06-18 06:09:53 -07:00
Daniel Imms d28eb696ec Merge pull request #5355 from Tyriar/tyriar/3634
Add note about reverse tabnapping
2025-06-13 08:41:38 -07:00
Daniel Imms 4c0c2559c3 Add note about reverse tabnapping
Fixes #3634
2025-06-13 08:19:31 -07:00
Daniel Imms ee0a3deb6a Merge pull request #5349 from xtermjs/copilot/fix-3382
Add comprehensive tests for alt+shift+letter keyboard combinations
2025-06-05 03:47:13 -07:00
copilot-swe-agent[bot]andTyriar 076f051bb5 Fix ESLint trailing spaces warning in Keyboard.test.ts
Co-authored-by: Tyriar <2193314+Tyriar@users.noreply.github.com>
2025-06-05 10:34:53 +00:00
copilot-swe-agent[bot]andTyriar 658c57546c Add comprehensive tests for alt+shift+letter keyboard combinations
Co-authored-by: Tyriar <2193314+Tyriar@users.noreply.github.com>
2025-06-05 10:24:34 +00:00
copilot-swe-agent[bot] 223a650e3e Initial plan for issue 2025-06-05 10:13:25 +00:00
Daniel Imms 4b6316e510 Merge pull request #5346 from xtermjs/copilot/fix-4538-2
Remove alt -> ctrl+arrow hack in favor of embedder-specific solutions
2025-05-31 06:59:41 -07:00
copilot-swe-agent[bot]andTyriar 41546230dc Remove alt -> ctrl+arrow hack and update tests
Co-authored-by: Tyriar <2193314+Tyriar@users.noreply.github.com>
2025-05-29 13:20:54 +00:00
copilot-swe-agent[bot] 8413c0f94b Initial plan for issue 2025-05-29 13:09:01 +00:00
Daniel Imms 8828b47cea Merge pull request #5345 from Tyriar/tyriar/instruct
Add instructions to help Copilot coding agent
2025-05-29 06:05:50 -07:00
Daniel Imms b0f300e61b Add instructions to help Copilot coding agent 2025-05-29 06:00:41 -07:00
Loïc Mangeonjean 3ad83dd70e chore: add webgl shadow dom test 2025-05-21 21:51:01 +02:00
Loïc Mangeonjean 496b53d84d fix: support shadow dom in webgl renderer 2025-05-20 16:31:17 +02:00
Daniel Imms e9c547c1c6 Merge pull request #5337 from Tyriar/tyriar/5336
Fix finding terms across wrapped lines
2025-05-08 11:47:46 -07:00
Daniel Imms 0307e2c586 Fix finding terms across wrapped lines
Fixes #5336
2025-05-08 11:40:17 -07:00
Daniel Imms e29c2360e7 Merge pull request #5335 from Tyriar/tyriar/5255
webgl: Ignore alpha channel when allowTransparency is false
2025-05-07 08:19:19 -07:00
Daniel Imms 2b38b65392 webgl: Ignore alpha channel when allowTransparency is false
Fixes #5255
Part of microsoft/vscode#204663
2025-05-07 08:05:22 -07:00
Daniel Imms baf12e7aa4 Merge pull request #5308 from alexemorris/patch-1
Update AccessibilityManager.ts to use textContent rather than innerText
2025-04-23 05:13:17 -07:00
Daniel Imms 064efd6876 Merge branch 'master' into patch-1 2025-04-23 05:03:38 -07:00
Daniel Imms f615ac58b3 Merge pull request #5329 from Tyriar/esbuild_250422
Update and pin esbuild
2025-04-22 03:11:47 -07:00
Daniel Imms 2af170dbc9 Merge pull request #5317 from tabarra/docs/registerMarker-tip
docs: added usage tip for registerMarker()
2025-04-22 03:03:48 -07:00
Daniel Imms 39ad2cf3fe Update and pin esbuild 2025-04-22 03:03:44 -07:00
Daniel Imms 21387ecdae Merge pull request #5322 from xtermjs/dependabot/npm_and_yarn/addons/addon-ligatures/axios-1.8.2
Bump axios from 1.7.4 to 1.8.2 in /addons/addon-ligatures
2025-04-22 02:56:22 -07:00
Daniel Imms 78fbae3293 Add additional note to main doc 2025-04-22 02:54:14 -07:00
Daniel Imms a8ead811bf Move clarification into write apis 2025-04-22 02:47:33 -07:00
Daniel Imms 9696dd0c2b Merge branch 'master' into docs/registerMarker-tip 2025-04-22 02:35:47 -07:00
Daniel Imms 5e9ffb4c56 Merge pull request #5328 from Tyriar/5327_scroll
Refresh viewport after clear or ED
2025-04-21 07:09:59 -07:00
Daniel Imms e9587cf68f Refresh viewport after clear or ED
Fixes #5327
2025-04-21 07:00:27 -07:00
Daniel Imms 1771825e81 Merge pull request #5224 from Blashaq/master
putty-style ED2 sequence handling as terminal option
2025-04-21 06:54:42 -07:00
Daniel Imms e5b838a01b scrollOnDisplayErase -> scrollOnEraseInDisplay 2025-04-21 06:39:15 -07:00
Daniel Imms cd23a21bbf Align jsdoc 2025-04-21 06:37:48 -07:00
Daniel Imms 42946d72ba More alphabetical fix 2025-04-21 06:37:17 -07:00
Daniel Imms 2c836ede76 Tweak API position/docs 2025-04-21 06:34:45 -07:00
Adrian Błasiak 26d29abef1 Merge branch 'master' into master 2025-04-15 11:03:04 +02:00
dependabot[bot] 14d0f14c82 Bump axios from 1.7.4 to 1.8.2 in /addons/addon-ligatures
Bumps [axios](https://github.com/axios/axios) from 1.7.4 to 1.8.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.7.4...v1.8.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-14 17:44:13 +00:00
Daniel Imms a260f7d288 Merge pull request #5321 from Tyriar/5319
Reflow on resize using similar logic to conpty
2025-03-14 10:43:16 -07:00
Daniel Imms 16772e8d8b Update lock file 2025-03-14 10:36:22 -07:00
Daniel Imms e3e11b1a90 Reflow on resize using similar logic to conpty
This aligns reflowing much closer to how conpty does it. This was always
an issue but only became a big issue recently because conpty 1.22+ opts
to passthrough sequences rather than reprinting aggressively. This means
that the conpty buffer being in sync with the xterm.js buffer is more
important, otherwise the cursor will show up in a seemingly random
position.

The existing reflow appears to differ somewhat in conpty, like it seems
to reflow at the word level, not the character level like xterm.js, but
refining that closer if not worth the effort since conpty may end up
relying on the terminal's buffer in the future[1].

Fixes #5319
Fixes #3513
Related #4231
Related microsoft/vscode#241978

[1]: https://github.com/microsoft/terminal/blob/main/doc/specs/%2313000%20-%20In-process%20ConPTY.md
2025-03-14 10:26:32 -07:00
tabarra 8576581574 docs: added usage tip for registerMarker() 2025-03-02 09:28:50 -03:00
Daniel Imms 2042bb8502 Merge pull request #5313 from Tyriar/revert_4978
Revert "Merge pull request #5253 from akphi/patch-1"
2025-02-14 06:44:18 -08:00
Daniel Imms 18cd9b137f Revert "Merge pull request #5253 from akphi/patch-1"
This reverts commit 601efc3745, reversing
changes made to af4208dad0.
2025-02-14 06:35:24 -08:00
Alex Morris 1495e7134f Update AccessibilityManager.ts to use textContent rather than innerText
The innerText property requires layout and therefore is not very efficient. For more information, see http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/.
2025-02-12 16:46:01 +00:00
Daniel Imms a7a941ce78 Merge pull request #5305 from Tyriar/tyriar/ctx_slow
Fix issue where listeners remain after WebglRenderer throws
2025-02-07 06:26:21 -08:00
Daniel Imms 1c98c52535 Bump download-artifact 2025-02-07 06:11:47 -08:00
Daniel Imms 9a3d1c6de1 Bump upload-artifact 2025-02-07 06:07:47 -08:00
Daniel Imms a8d43eb2ec Fix issue where listeners remain after WebglRenderer throws
See microsoft/vscode#239838
2025-02-07 05:58:28 -08:00
Daniel Imms d81b25c3bf Merge pull request #5291 from Tyriar/polish_2
Make ProgressAddon.onChange non undefined
2025-01-09 06:14:23 -08:00
Daniel Imms c95ec71e09 Make ProgressAddon.onChange non undefined
Fixes #5288
2025-01-09 06:03:34 -08:00
Daniel Imms 6188f764d1 Merge pull request #5290 from Tyriar/progress_polish
Progress polish
2025-01-09 05:41:58 -08:00
Daniel Imms dc9084b5ad Progress polish
Fixes #5287
Fixes #5288
Fixes #5289
2025-01-09 05:32:36 -08:00
Daniel Imms 330e91ef08 Merge pull request #5251 from jerch/progress-addon
progress-addon
2025-01-09 05:04:36 -08:00
Daniel Imms 9caff8d778 Add note in readme about full API 2025-01-09 04:58:02 -08:00
Jörg Breitbart 6f6ce33588 Merge branch 'master' into progress-addon 2025-01-09 02:32:26 +01:00
Jörg Breitbart 8101132352 rename types, remove rc import in d.ts 2025-01-09 02:05:36 +01:00
Jörg Breitbart 96a3be3ca8 polish docs 2025-01-09 01:20:25 +01:00
jerchandDaniel Imms 75e5cc19e0 Update addons/addon-progress/typings/addon-progress.d.ts
Co-authored-by: Daniel Imms <2193314+Tyriar@users.noreply.github.com>
2025-01-09 01:06:18 +01:00
Daniel Imms 0692d486f4 Merge pull request #5286 from Tyriar/webgl_only_from_shared
Move WebGL addon-specific code into addon
2025-01-08 11:01:15 -08:00
Daniel Imms cfc1071c73 Fix more relative imports 2025-01-08 10:54:57 -08:00
Daniel Imms 6bcd4f0551 Add missing relative dir to imports 2025-01-08 10:45:41 -08:00
Daniel Imms 71f50b841f Move webgl-specific types into addon 2025-01-08 10:39:06 -08:00
Daniel Imms d70f2a462c Move webgl-specific shared code into addon
Never got moved when canvas addon was removed
2025-01-08 10:35:39 -08:00
Daniel Imms dce403afd9 Merge pull request #5218 from xtermjs/dependabot/npm_and_yarn/cross-spawn-7.0.6
Bump cross-spawn from 7.0.3 to 7.0.6
2025-01-08 09:38:14 -08:00
Daniel Imms ef4a3fd933 Merge pull request #5212 from LeoDog896/patch-1
chore(addons/fit): fix typo
2025-01-08 09:34:07 -08:00
Daniel Imms c21f32d012 Merge pull request #5282 from database-client-lib/fix-unexpected-composition
Fixed CapsLock triggering input twice in MacOS.
2025-01-08 09:34:03 -08:00
Daniel Imms 66780c03d4 Merge pull request #5196 from ceccopierangiolieugenio/add-pyTermTk-sandbox-project
Add pyTermTk HTML5 Exporter project to "Real-world uses"
2025-01-08 09:33:30 -08:00
Daniel Imms 6b53ab4b61 Merge pull request #5252 from jtbandes/patch-1
Fix ReferenceError in publish.js
2025-01-08 09:33:19 -08:00
Daniel Imms 334ca07eae Merge branch 'master' into add-pyTermTk-sandbox-project 2025-01-08 09:33:03 -08:00
Daniel Imms 7e01dc1358 Merge pull request #5219 from jackieoft/master
Add new site to Real-world uses
2025-01-08 09:32:13 -08:00
Daniel Imms 84f14cab58 Merge branch 'master' into master 2025-01-08 09:32:01 -08:00
Daniel Imms 85992928a7 Merge pull request #5247 from mathiscode/patch-1
Update README.md - add ecmaOS as Use Case
2025-01-08 09:30:57 -08:00
Daniel Imms 582a027df1 Merge branch 'master' into master 2025-01-08 09:30:29 -08:00
Daniel Imms db71de2858 Merge branch 'master' into dependabot/npm_and_yarn/cross-spawn-7.0.6 2025-01-08 09:28:50 -08:00
Daniel Imms c1446d6385 Merge branch 'master' into patch-1 2025-01-08 09:28:02 -08:00
Daniel Imms 0151805864 Merge pull request #5285 from Tyriar/5284_detailed_liga
Support detailed ligatures and variants
2025-01-08 06:40:30 -08:00
Daniel Imms 408d0995dd Support detailed ligatures and variants
Fixes #5284
2025-01-08 06:26:15 -08:00
Jörg Breitbart 6a232765f4 borrow emitter ctor from xterm 2025-01-07 21:22:40 +01:00
Jörg Breitbart f516346e09 fix docs 2025-01-07 20:36:02 +01:00
Jörg Breitbart c207edd49c make linter happy 2025-01-07 19:25:47 +01:00
Jörg Breitbart 828603cfab fix integration test 2025-01-07 19:24:14 +01:00
Jörg Breitbart d7cebc312e use event from xterm.js instead of own impl 2025-01-07 19:21:51 +01:00
Jörg Breitbart 5badbd3a6f import ProgressState type to d.ts 2025-01-07 18:22:27 +01:00
Jörg Breitbart a1e85a4eb5 Merge branch 'master' into progress-addon 2025-01-07 16:49:09 +01:00
cweijan 0433fb8a4b Fixed CapsLock triggering input twice in MacOS. 2025-01-07 22:57:40 +08:00
Daniel Imms 9e206415b8 Merge pull request #5279 from AnouarTouati/fixing-#5270
Fixes: #5270 regex case-sensitive should behave like monaco
2025-01-07 06:45:03 -08:00
Daniel Imms ffc61258f9 Merge pull request #5278 from Tyriar/liga_texture_limit
Handle glyph widths up to the maximum device texture size
2025-01-07 06:43:52 -08:00
Daniel Imms a095c100ce Merge pull request #5280 from Tyriar/monospace
Remove courier fonts from defaults
2025-01-07 06:40:22 -08:00
Daniel Imms 3c790ffbc5 Merge branch 'master' into fixing-#5270 2025-01-07 06:34:33 -08:00
Daniel Imms 04c1782f2f Merge branch 'master' into liga_texture_limit 2025-01-07 06:34:25 -08:00
Daniel Imms 1efd52af30 Merge branch 'master' into monospace 2025-01-07 06:34:15 -08:00
Daniel Imms cc78831262 Merge pull request #5281 from Tyriar/pw_dep
Pin Ubuntu 22 to fix playwright GH Actions issue for now
2025-01-07 06:34:04 -08:00
Daniel Imms a7b98de833 Handle overflowing to new row 2025-01-07 06:28:59 -08:00
Daniel Imms 2c11eae732 Pin ubuntu to v22 2025-01-07 06:02:30 -08:00
Daniel Imms bb7393b1cb . 2025-01-07 06:00:38 -08:00
Daniel Imms 23e3905529 . 2025-01-07 05:55:39 -08:00
Daniel Imms 2774a27500 Try fix playwright dependency problem 2025-01-07 05:53:03 -08:00
Daniel Imms 763d2e773a Match coding style of repo 2025-01-07 05:38:11 -08:00
Daniel Imms 38d340d176 Remove courier fonts from defaults
Fixes #5156
2025-01-07 05:17:36 -08:00
Anouar Touati baf5cf45c3 fixes: #5270 regex case-sensitive should behave like monaco 2025-01-06 16:43:03 -05:00
Daniel Imms ff9a3a1067 Merge branch 'master' into liga_texture_limit 2025-01-06 11:53:36 -08:00
Daniel Imms 7541cf2fd7 Add todo 2025-01-06 11:52:20 -08:00
Daniel Imms e882f4a46a Prototype of adding a large atlas page for overflow glyphs
Part of #5246
2025-01-06 11:50:08 -08:00
Daniel Imms 33a5457407 Merge pull request #5277 from Tyriar/ligature_selection__cursor
Disable ligatures when cursor is in range
2025-01-06 11:27:44 -08:00
Daniel Imms 112cfbeac8 Merge branch 'master' into ligature_selection__cursor 2025-01-06 11:20:24 -08:00
Daniel Imms d1b01c58f8 Merge pull request #5276 from Tyriar/ligature_selection
Fix selection rendering on ligatures in both renderers
2025-01-06 11:17:25 -08:00
Daniel Imms 9912e7b331 Disable ligatures when cursor is in range
Fixes #5230
2025-01-06 11:08:57 -08:00
Daniel Imms c7a1e0aea3 Handle selections in the middle of ligatures too 2025-01-06 11:03:10 -08:00
Daniel Imms 5bfb130f03 Apply same approach for rendering joined selection in webgl 2025-01-06 10:52:04 -08:00
Daniel Imms 0521378e70 Fix ligature selection in DOM renderer
Part of #5231
2025-01-06 10:50:13 -08:00
Daniel Imms ad08a2e15b Render selection under ligatures for webgl
Part of #5231
2025-01-06 10:15:16 -08:00
Daniel Imms a61fff6a93 Merge pull request #5275 from Tyriar/liga-test
Demo test button for common ligatures
2025-01-06 10:08:50 -08:00
Daniel Imms cd5438c2c5 Add = and - long ligatures too 2025-01-06 10:01:09 -08:00
Daniel Imms ef67b42fbd Demo test button for common ligatures
Part of #5231
2025-01-06 09:59:00 -08:00
Daniel Imms 601efc3745 Merge pull request #5253 from akphi/patch-1
bug: properly render the terminal when open() is called again
2025-01-06 09:27:09 -08:00
An Phi 62656b8375 Merge branch 'master' into patch-1 2025-01-06 10:28:27 -05:00
Daniel Imms af4208dad0 Merge pull request #5199 from asemdreibati/di-enhancement
Store the DI decorator's id in specific property (#5131).
2025-01-06 06:04:40 -08:00
Asem Dreibati db925ad65d Merge branch 'master' into di-enhancement 2024-12-23 16:06:48 +03:00
Daniel Imms ce095b3593 Merge pull request #5249 from jtbandes/fix-click-not-delivered
Fix click event bug caused by DomRenderer replaceChildren behavior
2024-12-20 12:41:52 -08:00
Daniel Imms 5230e5aad0 Merge pull request #5265 from Tyriar/tyriar/3293
Revert to cursor options after DECSCUSR 0
2024-12-20 10:53:53 -08:00
Daniel Imms d44f7818c4 Fix test to assert new behavior 2024-12-20 10:43:38 -08:00
Daniel Imms f824083324 Correct @vt docs 2024-12-20 10:37:48 -08:00
Daniel Imms 82598e94a9 Fix default param DECSCUSR handling 2024-12-20 10:36:32 -08:00
Daniel Imms b579649a39 Revert to cursor options after DECSCUSR 0
Fixes #3293
2024-12-20 10:34:05 -08:00
Daniel Imms fb2e96e1b0 Add test button for DECSCUSR
Part of #3293
2024-12-20 10:21:19 -08:00
Daniel Imms d5a2fed679 Merge pull request #5263 from Tyriar/5256
Make textarea readonly when disableStdin is set
2024-12-20 09:09:53 -08:00
Daniel Imms 318f3dc378 Merge pull request #5262 from Tyriar/tyriar/5241_2
Blend cursorAccent with background too
2024-12-20 09:06:36 -08:00
Daniel Imms 18c9eb1960 Remove .only 2024-12-20 09:01:30 -08:00
Daniel Imms da22b0308e Make textarea readonly when disableStdin is set
Fixes #5256
2024-12-20 09:00:05 -08:00
Daniel Imms 3e998387fe Blend cursorAccent with background too
Fixes #5241
2024-12-20 08:51:17 -08:00
Daniel Imms 5018a07f3c Merge pull request #5260 from Tyriar/5241
Blend cursor with background to support alpha in webgl
2024-12-20 07:46:40 -08:00
Daniel Imms b74ec267e2 Blend cursor with background to support alpha in webgl
Fixes #5241
2024-12-20 07:37:12 -08:00
An Phi d12b825ed4 Merge branch 'master' into patch-1 2024-12-18 01:28:45 -05:00
An Phi 9f9bb3c11c bug: properly render the terminal when open() is called again 2024-12-18 01:26:47 -05:00
Jacob Bandes-Storch 9824230caf Fix ReferenceError in publish.js 2024-12-17 12:20:55 -08:00
Jörg Breitbart 94ca05c8d6 fix handler example in readme 2024-12-15 20:01:05 +01:00
Jörg Breitbart 569e854a03 add to workflow bundle 2024-12-15 19:32:47 +01:00
Jörg Breitbart f0fd3683d5 add to publish script 2024-12-15 19:28:19 +01:00
Jörg Breitbart 80c57221ef fix esbuild script 2024-12-15 19:18:46 +01:00
Jörg Breitbart 6bb2210a91 initial commit 2024-12-15 18:57:03 +01:00
Jacob Bandes-Storch 1978399259 Fix click event bug caused by DomRenderer replaceChildren behavior 2024-12-13 13:57:17 -08:00
Jay Mathis bc7288a389 Update README.md - add ecmaOS as Use Case 2024-12-12 21:40:46 -06:00
Daniel Imms e826f6b69f Merge pull request #5234 from jtbandes/reflow-cursor-line
Add reflowCursorLine option
2024-12-12 06:36:34 -08:00
Daniel Imms 0d67393072 Fix lint 2024-12-12 06:30:17 -08:00
Daniel Imms 65899a9b50 Update src/common/buffer/Buffer.ts 2024-12-12 06:25:36 -08:00
Daniel Imms d7364faeee Update src/common/buffer/BufferReflow.ts 2024-12-12 06:25:31 -08:00
Jacob Bandes-Storch ae2622e5ce Add reflowCursorLine option 2024-12-05 18:03:27 -08:00
blashaq 904ddbc884 code style fix 2024-11-23 16:59:30 +00:00
blashaq 92c21a6950 + scrollOnDisplayErase option 2024-11-23 10:58:19 +00:00
Adrian Błasiakandjerch 780f9a31ff Update src/common/InputHandler.ts
Co-authored-by: jerch <jerch@rockborn.de>
2024-11-21 22:46:06 +01:00
blashaq 9aba07f8f8 putty-style ED2 sequence handling as terminal option 2024-11-21 18:16:19 +00:00
JackieL db621d7294 Update README.md 2024-11-19 14:59:53 +08:00
JackieL 9c66ad1139 Update README.md 2024-11-19 14:58:32 +08:00
dependabot[bot] 8d23cbc051 Bump cross-spawn from 7.0.3 to 7.0.6
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 22:41:31 +00:00
Tristan F.-R. 9e1d5ba7db chore(addons/fit): fix typo
Reprepresents -> Represents
2024-11-11 18:57:03 -08:00
Daniel Imms 41e8ae3959 Merge pull request #5209 from Tyriar/5206
Ensure last ligature cell is updated
2024-11-04 10:20:34 -08:00
Daniel Imms 7fab293cd6 Ensure last ligature cell is updated
Fixes #3288
Fixes #5206
Part of microsoft/vscode#233005
2024-11-04 10:13:34 -08:00
Daniel Imms b3f3cf1216 Merge pull request #5208 from Tyriar/5207
Set liga font feature when ligatures is enabled
2024-11-04 09:54:45 -08:00
Daniel Imms 77885ed63d Set liga font feature when ligatures is enabled
Fixes #5207
2024-11-04 09:47:26 -08:00
Daniel Imms 3d9b1073d0 Merge pull request #5203 from xtermjs/Tyriar-patch-1
Don't hide build folders
2024-11-01 07:52:47 -07:00
Daniel Imms aca9c89ece Merge pull request #5202 from Tyriar/ligatures_resolve
Only resolve ligatures externals in commonjs environment
2024-11-01 07:52:28 -07:00
Daniel Imms 3948482dc7 Also remove associated comment 2024-11-01 07:20:10 -07:00
Daniel Imms 6684c406e8 Don't hide build folders
This was getting too annoying needing to comment out these lines
2024-11-01 07:19:33 -07:00
Daniel Imms 952ac61761 Only resolve ligatures externals in commonjs environment
Part of microsoft/vscode#34103
2024-11-01 07:18:27 -07:00
Asem Dreibati a1b438cea6 Store the DI decorator's id in specific property (#5131). 2024-10-29 10:31:57 +03:00
Eugenio Parodi 932b65ef67 Add pyTermTk HTML5 Exporter project to Real-world uses 2024-10-22 14:46:43 +01:00
Daniel Imms f701d073d1 Merge pull request #5182 from jerch/fix_5181
fix #5181
2024-10-14 05:28:58 -07:00
Jörg Breitbart 9c74c81608 modified version of 5623ba6 2024-10-05 14:36:22 +02:00
Jörg Breitbart 687126970d revert 5623ba6 2024-10-05 14:24:25 +02:00
Jörg Breitbart 39bd429835 partially revert last commit 2024-10-05 14:07:49 +02:00
Jörg Breitbart 8faf097e83 fix flaky tests 2024-10-04 17:12:00 +02:00
Jörg Breitbart d3298935b7 Merge remote-tracking branch 'upstream/master' into fix_5181 2024-10-04 16:56:30 +02:00
Jörg Breitbart f9cf9b9782 fix #5181 2024-10-04 16:55:13 +02:00
Daniel Imms a5fc111d62 Merge pull request #5180 from Tyriar/5179
Forward integration test exit code to running proc
2024-10-04 07:51:17 -07:00
jerch 5623ba6b63 slow down web links tests 2024-10-04 16:29:58 +02:00
jerch 3d9668f8fa fix dispose error in Terminal.test.ts 2024-10-04 15:50:36 +02:00
Daniel Imms 621c702ff8 Forward integration test exit code to running proc
Fixes #5179
2024-10-03 20:10:10 -07:00
Daniel Imms 9186c724c4 Merge pull request #5171 from Tyriar/links
Fix links sometimes not activating
2024-09-27 13:08:14 -07:00
Daniel Imms f764c0ac91 Fix links sometimes not activating
This was a very long standing bug that was hard to nail down a repro case. Turns
out this was because at some point the current link can get cleared and re-evaluated,
I think because of a different fix we made. That caused the object check to fail.
So the fix there is to check link equality, not js object equality.

Additionally I found we don't dispose of old linkifiers when open is called
multiple times.

See microsoft/vscode#230010
2024-09-27 12:58:34 -07:00
Daniel Imms f56675f7e5 Merge pull request #5127 from jeanp413/fix-vscode-224750
Fix scroll dimensions when switching buffers
2024-09-20 10:36:05 -07:00
Daniel Imms aa94fd6cfe Merge pull request #5136 from esimkowitz/patch-1
Fix description for WebglAddon class in @xterm/addon-webgl
2024-09-20 10:27:23 -07:00
Daniel Imms e011513b15 Merge pull request #5166 from xtermjs/dependabot/npm_and_yarn/express-4.20.0
Bump express from 4.19.2 to 4.20.0
2024-09-20 09:53:19 -07:00
Daniel Imms 5c10617981 Merge pull request #5165 from xtermjs/dependabot/npm_and_yarn/addons/addon-ligatures/axios-1.7.4
Bump axios from 1.6.0 to 1.7.4 in /addons/addon-ligatures
2024-09-20 09:18:08 -07:00
dependabot[bot] c7f5ec4064 Bump express from 4.19.2 to 4.20.0
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.20.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.20.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-20 16:10:45 +00:00
Daniel Imms 7642f55a1c Merge pull request #5141 from xtermjs/dependabot/npm_and_yarn/webpack-5.94.0
Bump webpack from 5.88.2 to 5.94.0
2024-09-20 09:10:02 -07:00
Daniel Imms 3d9d526977 Merge pull request #5140 from fuglaro/master
Add Filet Cloud to Real-world uses
2024-09-20 09:09:39 -07:00
Daniel Imms 4e9233d150 Merge pull request #5151 from PerBothner/unicode-graphemes-webpack-fix
Fix 'npm run package' in addon-unicode-graphemes
2024-09-20 09:08:20 -07:00
dependabot[bot] ac79c18090 Bump axios from 1.6.0 to 1.7.4 in /addons/addon-ligatures
Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.0...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-20 16:06:45 +00:00
Daniel Imms 08221f17d6 Merge pull request #5157 from xtermjs/dependabot/npm_and_yarn/addons/addon-ligatures/path-to-regexp-1.9.0
Bump path-to-regexp from 1.7.0 to 1.9.0 in /addons/addon-ligatures
2024-09-20 09:06:22 -07:00
Daniel Imms d910cfd696 Merge pull request #5148 from xtermjs/dependabot/npm_and_yarn/micromatch-4.0.8
Bump micromatch from 4.0.5 to 4.0.8
2024-09-20 09:06:16 -07:00
dependabot[bot] 0bf10e525e Bump path-to-regexp from 1.7.0 to 1.9.0 in /addons/addon-ligatures
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 1.7.0 to 1.9.0.
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v1.7.0...v1.9.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-11 21:24:00 +00:00
Per Bothner 7cc921693a Fix 'npm run package' in addon-unicode-graphemes 2024-09-07 21:02:20 -07:00
dependabot[bot] ee3901f5da Bump micromatch from 4.0.5 to 4.0.8
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-04 18:10:30 +00:00
Evan Simkowitz 8bd4e10643 Merge branch 'master' into patch-1 2024-08-31 10:14:39 -07:00
Daniel Imms 44f9fa39ae Merge pull request #5143 from Tyriar/5135
Publish commit and set peerDependencies to @xterm/xterm beta when publishing
2024-08-31 08:22:44 -07:00
Daniel Imms fd0bb58379 Merge branch 'master' into 5135 2024-08-31 07:27:23 -07:00
Daniel Imms 13d078ecc7 Only set peerDependencies if the xterm version is beta 2024-08-31 07:26:12 -07:00
Daniel Imms 9a9ccbe29c Improve logging in publish script 2024-08-31 07:24:50 -07:00
Daniel Imms 7ebbb86b50 Set peer dependencies and commit in published package.json
The commit will allow us to link published releases to the exact code
version.

Fixes #5135
2024-08-31 07:18:52 -07:00
Daniel Imms 6b54599ca7 Get publish script working on Windows/node 20
Part of #5135
2024-08-31 06:59:34 -07:00
Evan Simkowitz 1f60a244c2 Merge branch 'master' into patch-1 2024-08-30 20:26:32 -07:00
dependabot[bot] 54789266b6 Bump webpack from 5.88.2 to 5.94.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.88.2 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.88.2...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 18:03:03 +00:00
John van Leeuwen 2d8c6be264 Add Filet Cloud to real-world uses 2024-08-30 02:43:47 +01:00
jerch 1b48cd04b8 Merge pull request #5139 from lusingander/image-addon-iip-jpeg
Fix image addon not being able to render some jpeg images in IIP
2024-08-28 16:28:30 +02:00
Kyosuke Fujimoto b307adb081 Fix IIPMetrics jpg detection 2024-08-28 23:16:00 +09:00
Kyosuke Fujimoto a07d97a9d3 Add test for jpg without APP segment to IIPMetrics 2024-08-28 16:21:34 +09:00
Evan Simkowitz 4914c4322c Merge branch 'master' into patch-1 2024-08-24 15:14:53 -07:00
Daniel Imms f186475ec9 Merge pull request #5130 from Tyriar/tyriar/5128
Remove xterm- prefix from addon mjs output
2024-08-23 09:29:29 -07:00
Evan Simkowitz be84a02c8d Fix description for WebglAddon class in @xterm/addon-webgl 2024-08-22 19:49:31 -07:00
Daniel Imms fcad91a682 Remove xterm- prefix from addon mjs output
Fixes #5128
2024-08-15 05:56:24 -07:00
jeanp413 ad38b1a166 Fix https://github.com/microsoft/vscode/issues/224750 2024-08-14 07:45:37 -05:00
Daniel Imms c6a50d5a1a Merge pull request #5124 from Tyriar/tyriar/node-pty
Update node-pty, use conpty.dll
2024-08-08 06:52:20 -07:00
Daniel Imms dd54ef13bc Update node-pty, use conpty.dll 2024-08-08 05:54:56 -07:00
Daniel Imms c2aee5b6c1 Merge pull request #5122 from Tyriar/tyriar/main_document
Use main document to create viewport element
2024-08-05 12:05:43 -07:00
Daniel Imms abe0640331 Use main document to create viewport element
See microsoft/vscode#224555
2024-08-05 11:50:36 -07:00
Daniel Imms cb3bd463a5 Merge pull request #5106 from Tyriar/tyriar/lifecycle
Move to vs/base disposables
2024-07-15 10:11:12 -07:00
Daniel Imms 56ec86242a Fix test, fix all unit tests running on mac/linux 2024-07-15 10:01:55 -07:00
Daniel Imms 2a6cd8230c Merge remote-tracking branch 'upstream/master' into tyriar/lifecycle 2024-07-15 09:52:09 -07:00
Daniel Imms b192ba2304 Merge pull request #5107 from Tyriar/tyriar/overview_ruler
Add top/bottom border overview ruler options
2024-07-15 09:22:50 -07:00
Daniel Imms bf41eb4204 Add top/bottom border overview ruler options 2024-07-15 09:14:49 -07:00
Daniel Imms 8a2a7ac6db Resolve vs in image addon 2024-07-14 16:25:01 -07:00
Daniel Imms 93adffa819 Fix lint 2024-07-14 16:24:12 -07:00
Daniel Imms 144bdb5dd0 Move over to vs disposables 2024-07-14 16:19:20 -07:00
Daniel Imms aee936264b Move to MutableDisposable in vs 2024-07-14 16:09:53 -07:00
Daniel Imms 866bc9eb90 Move to dom.ts addDisposableListener 2024-07-14 16:07:39 -07:00
Daniel Imms a7952ff36c Merge pull request #5105 from Tyriar/canvas
Remove the canvas renderer
2024-07-14 10:54:54 -07:00
Daniel Imms 9712057b91 Remove the canvas renderer
Fixes #4779
2024-07-14 10:48:39 -07:00
Daniel Imms 9d8bba7a18 Merge pull request #5103 from tisilent/remove-unread
remove _workCell in InputHandler.
2024-07-14 09:21:15 -07:00
Daniel Imms 060ce7ad28 Merge pull request #5104 from Tyriar/tyriar/events
Remove EventEmitter in favor of vs/base/common/event's Emitter
2024-07-14 09:20:11 -07:00
Daniel Imms 180fd3c9ac Resolve vs in unicode11 2024-07-14 09:11:33 -07:00
Daniel Imms bd700fe515 Allow refreshing all rows without creating object 2024-07-14 09:05:18 -07:00
Daniel Imms b6b19babc1 Fix benchmark npm script 2024-07-14 09:00:29 -07:00
Daniel Imms 618954b5d6 Import right path in addons 2024-07-14 08:56:54 -07:00
Daniel Imms 03c2b2f68e Fix addon resolve path 2024-07-14 08:52:15 -07:00
Daniel Imms ae8f2dd61a Remove Events.ts in favor of new Event.forward 2024-07-14 08:50:37 -07:00
Daniel Imms 460a1370d7 Add forward to Event 2024-07-14 08:47:59 -07:00
Daniel Imms 68e0eb714d Add vs resolve to addons 2024-07-14 08:47:03 -07:00
Daniel Imms 10b97f4856 Add vs alias to headless webpack config 2024-07-14 08:34:26 -07:00
Daniel Imms 26c73b8ead Add vs project to headless tsconfig 2024-07-14 08:30:06 -07:00
Daniel Imms e267f05141 Move forwardEvent to Events.ts 2024-07-14 08:20:18 -07:00
Daniel Imms 9c7e2ea98e Remove IEvent and runAndSubscribe 2024-07-14 08:17:16 -07:00
Daniel Imms 9141b525a6 Migrate rest of EventEmitter to base/ Emitter 2024-07-14 08:06:48 -07:00
Daniel Imms 90ff6f3d06 Migrate most EventEmitter to base/ Emitter 2024-07-14 07:41:56 -07:00
Daniel Imms 9187cd3d0a Add load test for long lines 2024-07-14 07:41:38 -07:00
谢佳龙 d0d759155b remove _workCell. 2024-07-12 16:41:10 +08:00
Daniel Imms 618e47204d Merge pull request #5102 from Tyriar/tyriar/dec
Ensure decorations are refreshed when origin of scroll event is buffe…
2024-07-11 11:48:37 -07:00
Daniel Imms e9fd5c70ba Ensure decorations are refreshed when origin of scroll event is buffer service
Fixes #5101
2024-07-11 11:48:00 -07:00
Daniel Imms cbcd195cad Merge pull request #5099 from Tyriar/tyriar/overflow
Remove overflow to allow decorations outside terminal
2024-07-11 11:16:28 -07:00
Daniel Imms 55303647c1 Remove overflow to allow decorations outside terminal
This is needed in the demo to show the red test decoration and in vscode for
shell integration decorations/quick fixes
2024-07-11 11:15:58 -07:00
Daniel Imms f3bfe80995 Merge pull request #5096 from Tyriar/tyriar/esbuild4
Integrate base/ platform from VS Code and adopt scroll bar
2024-07-11 09:42:44 -07:00
Daniel Imms 90a1da28bd Scroll immediately to bottom when scrollOnUserInput is enabled
See microsoft/vscode#211199
2024-07-11 09:36:22 -07:00
Daniel Imms 73ee951807 Resolve more todos 2024-07-11 08:43:54 -07:00
Daniel Imms 0f373512d2 Fix ICoreMouseService injecting 2024-07-11 08:37:48 -07:00
Daniel Imms 721d483cc3 Implement zero scrollback+no mouse event wheel handling 2024-07-11 08:35:42 -07:00
Daniel Imms 2da5eca384 Fix mouse events 2024-07-11 08:29:29 -07:00
Daniel Imms a644b5d068 Clean up dealing with animation frame 2024-07-10 13:50:07 -07:00
Daniel Imms d532a15bf2 Include all files, not just entry root folder 2024-07-10 13:46:04 -07:00
Daniel Imms 31e0af745d Fix out-esbuild build 2024-07-10 13:42:14 -07:00
Daniel Imms 444c07fd81 Replace monaco- with xterm- in code/css files 2024-07-10 13:33:43 -07:00
Daniel Imms f155d67c45 Replace monaco- with xterm- in the update script 2024-07-10 13:32:30 -07:00
Daniel Imms 59a8f0cf8e _getMutableOptions -> _getChangeOptions 2024-07-10 12:47:47 -07:00
Daniel Imms 1096b7f17f Create shared file for viewport constants 2024-07-10 12:40:02 -07:00
Daniel Imms d6f7133fa6 Fix api lint 2024-07-10 12:36:08 -07:00
Daniel Imms 55c627572c Support smooth scroll 2024-07-10 12:32:55 -07:00
Daniel Imms 2b8ccb5e51 Deprecate fast scroll modifier as it's no longer possible
Not possible via the component we import. We could add this but I
doubt it was being used anyway.
2024-07-10 08:30:32 -07:00
Daniel Imms d1d25a5bf7 Polish all files (excl. CoreBrowserTerminal/Viewport) 2024-07-10 08:08:02 -07:00
Daniel Imms ade5591d60 Const enum over magic number 2024-07-10 07:58:29 -07:00
Daniel Imms eca0800b9d Fix api lint 2024-07-10 07:55:22 -07:00
Daniel Imms 884141cd8f Support theming of scroll bar slider 2024-07-10 07:54:39 -07:00
Daniel Imms c7f80986c8 Inline some functions 2024-07-10 07:33:53 -07:00
Daniel Imms 9b26bb4436 Support theming of overview ruler border 2024-07-10 07:30:38 -07:00
Daniel Imms 75bf192af5 Have scroll bar bg react to theme change 2024-07-10 07:03:51 -07:00
Daniel Imms 416f12fcc3 Remove ScrollSource
This isn't used anymore, it was used earlier to workaround recursion between
the viewport and the terminal objects
2024-07-10 07:01:44 -07:00
Daniel Imms c2b90c6dae Remove missing demo webpack npm script 2024-07-10 06:58:45 -07:00
Daniel Imms 8b83f44a46 Tidy up esbuild bundle configs 2024-07-10 06:56:56 -07:00
Daniel Imms 522b39be86 Hide more folders from explorer 2024-07-10 06:55:55 -07:00
Daniel Imms 1b0078ad20 Exclude vs project from coverage 2024-07-10 06:42:50 -07:00
Daniel Imms 345b6906f9 Remove unused demo webpack config 2024-07-10 06:29:32 -07:00
Daniel Imms c3c787eaa7 Resolve vs imports in webpacked bundle 2024-07-10 06:29:05 -07:00
Daniel Imms 1dada9f256 Fix scroll lines API 2024-07-10 06:27:47 -07:00
Daniel Imms d904f2fce5 Generate source maps so errors report ts files 2024-07-10 06:26:39 -07:00
Daniel Imms 27195b003a Patch out unsafe usage of navigator and window in node envs 2024-07-10 06:22:16 -07:00
Daniel Imms b401865957 More clean up, doc updating vs/base 2024-07-09 13:53:16 -07:00
Daniel Imms 381200bce1 Fix fit addon to get the scroll bar working in the demo 2024-07-09 13:34:51 -07:00
Daniel Imms c33ed46161 Delete unused files 2024-07-09 13:29:20 -07:00
Daniel Imms 86c875f7e9 Helper script for finding unused files 2024-07-09 13:08:57 -07:00
Daniel Imms 99db197472 . 2024-07-09 11:59:22 -07:00
Daniel Imms 4789c24e1e Get esbuild working and adopt vs scrollbar 2024-07-09 11:19:15 -07:00
Daniel Imms c30bffc60c Set up vs project 2024-07-09 10:52:09 -07:00
Daniel Imms 190e1f014e Add git ignore for vs 2024-07-09 10:41:54 -07:00
Daniel Imms 995ccc72f8 Merge pull request #5094 from Tyriar/images
Add build flow images and move logo into new images folder
2024-07-09 08:30:29 -07:00
Daniel Imms 5eb592f8c0 Merge pull request #5095 from Tyriar/procfile
Remove procfile
2024-07-09 08:30:07 -07:00
Daniel Imms cb9b96dbbb Copy right file when publishing headless 2024-07-09 08:21:42 -07:00
Daniel Imms 6382067e5b Remove procfile
No one uses this afaik and it's been stale and broken for a while anyway
2024-07-09 08:19:59 -07:00
Daniel Imms 844315f05a Add build flow images and move logo into new images folder 2024-07-09 08:17:32 -07:00
Daniel Imms c5d352bbe1 Merge pull request #5093 from Tyriar/tyriar/test_naming
Align npm and test script names
2024-07-07 09:45:11 -07:00
Daniel Imms aa6907335a Align npm and test script names 2024-07-07 09:35:30 -07:00
Daniel Imms d5921cd21b Merge pull request #5092 from Tyriar/tyriar/esbuild3
Add support for ESM via esbuild
2024-07-07 09:29:23 -07:00
Daniel Imms f341d0a3e9 Fix formatting of tasks.json 2024-07-07 09:21:55 -07:00
Daniel Imms ab8453c773 Simplify zip job 2024-07-07 09:21:17 -07:00
Daniel Imms 2fc8acf81e Publish addon mjs files 2024-07-07 09:15:25 -07:00
Daniel Imms 89e315ab2b Hide build output from vscode explorer 2024-07-07 09:12:28 -07:00
Daniel Imms faed3e7c80 Move playwright tests to use project references 2024-07-07 09:06:26 -07:00
Daniel Imms 215315b377 Esbuild package headless 2024-07-07 08:51:38 -07:00
Daniel Imms b6a9c24c7d Generate addon playwright suites via list of addons 2024-07-07 08:35:17 -07:00
Daniel Imms ff01995691 Improve testing instructions 2024-07-07 08:32:19 -07:00
Daniel Imms 62c5747e3f Use out-test for integration tests 2024-07-05 14:05:24 -07:00
Daniel Imms c337fa8dc5 Upload lib artifacts 2024-07-05 13:41:12 -07:00
Daniel Imms 1911d19cf8 Build demo with esbuild 2024-07-05 12:37:10 -07:00
Daniel Imms 4d45215622 Run right esbuild script 2024-07-05 12:34:17 -07:00
Daniel Imms 804a2b7693 Zip up right folders, run esbuild in CI 2024-07-05 12:32:21 -07:00
Daniel Imms 992fa015a4 Move on to all ESM imports in the demo 2024-07-05 12:12:03 -07:00
Daniel Imms 208d6e96f8 Use esm image addon in demo 2024-07-05 12:00:05 -07:00
Daniel Imms 93bf18c5b0 Sourcemaps on prod build 2024-07-05 11:51:47 -07:00
Daniel Imms 057abba08b mjs and js 2024-07-05 11:48:42 -07:00
Daniel Imms 40c5fbf0cb Don't build test folders
These are for integration tests which need tsc sources anyway
2024-07-05 10:30:47 -07:00
Daniel Imms 24813f56ed How to run tests 2024-07-05 09:35:03 -07:00
Daniel Imms 6135757349 Remove unwanted npm scripts 2024-07-05 09:16:47 -07:00
Daniel Imms c9baa366ab Fix image esbuild 2024-07-05 09:16:14 -07:00
Daniel Imms be49bb6263 Move integration tests onto esbuild sources (except image) 2024-07-05 09:12:30 -07:00
Daniel Imms 9c3694af5a Move unit tests onto esbuild sources 2024-07-05 09:10:20 -07:00
Daniel Imms ba3ba899a5 Clean up 2024-07-05 08:55:01 -07:00
Daniel Imms 1f11c7e46c Get sources building with esbuild 2024-07-05 08:46:15 -07:00
Daniel Imms 5b5e262dff Merge pull request #5089 from Tyriar/tyriar/dts
Remove src dts files and correct exports
2024-07-05 08:20:03 -07:00
Daniel Imms a7b248ea9b Fix flakes in fit addon integration tests 2024-07-05 08:13:03 -07:00
Daniel Imms 039cd02482 Merge pull request #5091 from Tyriar/tyriar/windows_server
Ignore EPIPE exception on Windows when reloading demo client
2024-07-05 08:02:57 -07:00
Daniel Imms 7b3927a810 Merge pull request #5090 from Tyriar/tyriar/demo_warn
Suppress unrecognized option warning in demo
2024-07-05 07:53:38 -07:00
Daniel Imms 4a9e52ee44 Ignore EPIPE exception on Windows when reloading demo client
Whenever the demo is reloaded on Windows the demo server crashes. This just
ignores the error as I tried logging and adding try/catch around all
interactions with the websocket and couldn't narrow it down.
2024-07-05 07:53:33 -07:00
Daniel Imms 8f8c94a734 Suppress unrecognized option warning in demo 2024-07-05 07:14:17 -07:00
Daniel Imms 7b2e8a6ce1 Remove src dts files and correct exports
Esbuild doesn't appear to play nice with dts files and when they are regular ts
files they require the exports
2024-07-05 06:51:00 -07:00
Daniel Imms 8927d5c50f Merge pull request #5088 from Tyriar/tyriar/dec
Sync DOM decoration styles when line height/width changes
2024-07-04 08:45:58 -07:00
Daniel Imms 132553f521 Sync DOM decoration styles when line height/width changes
See microsoft/vscode#219979
2024-07-04 08:37:48 -07:00
Daniel Imms 795839cbe1 Merge pull request #5085 from Tyriar/addon_tests
Run other integration tests in CI
2024-07-03 08:51:45 -07:00
Daniel Imms a1b2a1c5ee \n -> \r\n on non-Windows 2024-07-03 08:44:49 -07:00
Daniel Imms cae6fa0561 Merge pull request #5086 from xtermjs/dependabot/npm_and_yarn/ws-8.17.1
Bump ws from 7.5.9 to 8.17.1
2024-07-03 08:23:15 -07:00
Daniel Imms 224409d7d6 Use fixed dimensions on image test 2024-07-03 08:17:19 -07:00
dependabot[bot] f0d2cb8d05 Bump ws from 7.5.9 to 8.17.1
Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...8.17.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 15:17:03 +00:00
Daniel Imms aee480afd3 Merge pull request #5070 from xtermjs/dependabot/npm_and_yarn/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3
2024-07-03 08:16:31 -07:00
Daniel Imms fbd430af6e Merge pull request #5052 from renatoliveira/master
Update README.md
2024-07-03 08:14:35 -07:00
Daniel Imms a884f91b22 Merge pull request #5059 from myarmolinsky/add-balena-real-world-use
Add `balena` to real world uses
2024-07-03 08:12:43 -07:00
Daniel Imms 46a3676634 Merge branch 'master' into add-balena-real-world-use 2024-07-03 08:12:10 -07:00
Daniel Imms 46a1221fc6 Merge pull request #5056 from Cainier/master
Add app OpenSFTP to README.md
2024-07-03 08:11:47 -07:00
Daniel Imms b6ea2c4a99 Merge branch 'master' into master 2024-07-03 08:11:39 -07:00
Daniel Imms d0782ad6b1 Merge pull request #5049 from info24/master
Add eva pro to  README.md
2024-07-03 08:10:57 -07:00
Daniel Imms 11a909453f Merge pull request #5071 from xtermjs/dependabot/npm_and_yarn/ws-8.17.1
Bump ws from 8.13.0 to 8.17.1
2024-07-03 08:10:29 -07:00
Daniel Imms fec21b6e8e Merge branch 'master' into dependabot/npm_and_yarn/braces-3.0.3 2024-07-03 08:10:01 -07:00
Daniel Imms 11b9eb4a1c Use fixed dimensions on search test 2024-07-03 08:09:15 -07:00
Daniel Imms 2b735a0159 Remove space from project names 2024-07-03 05:15:41 -07:00
Daniel Imms 135c038167 Add server start script to all addons with integration tests 2024-07-03 05:07:09 -07:00
Daniel Imms 7489ddc4f7 Run other integration tests in CI 2024-07-03 05:03:18 -07:00
dependabot[bot] a9fd92eba6 Bump ws from 8.13.0 to 8.17.1
Bumps [ws](https://github.com/websockets/ws) from 8.13.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.13.0...8.17.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 11:39:42 +00:00
Daniel Imms bc5074116e Merge pull request #5083 from Tyriar/tyriar/ts
typescript@5.5
2024-07-03 04:39:15 -07:00
Daniel Imms b9fbbfbb8e Merge pull request #5082 from Tyriar/tyriar/eslint_warnings
Fix .eslintrc.json warnings, move deprecated to stylistic/ts
2024-07-03 04:38:08 -07:00
Daniel Imms 26c072f45c Add missing plugin include 2024-07-03 04:32:22 -07:00
Daniel Imms b7988bf00a Upgrade playwright tsconfigs to use ESNext
This ends up outputing the required object destructuring that's needed by
playwright, see microsoft/playwright#8798
2024-07-03 04:31:34 -07:00
Daniel Imms cca051041f Also migrate semi rule, alphabetize 2024-07-03 04:21:41 -07:00
Daniel Imms 3c84cfe610 typescript@5.5 2024-07-03 04:17:11 -07:00
Daniel Imms e2c5d91a2d Fix .eslintrc.json warnings, move deprecated to stylistic/ts 2024-07-03 04:15:38 -07:00
Daniel Imms 7970eb3b3b Merge pull request #5081 from Tyriar/cleanup
Simplify GH action names and remove test/api project
2024-07-03 03:22:01 -07:00
Daniel Imms f44d68ef4a Remain test/api project 2024-07-03 03:10:58 -07:00
Daniel Imms 54a20c511b Simplify GH action names 2024-07-03 03:10:51 -07:00
Daniel Imms 147b542c9d Merge pull request #5080 from Tyriar/tyriar/more_playwright2
Migrate remaining API tests to playwright and remove API test infrastructure
2024-07-03 03:08:37 -07:00
Daniel Imms 0f37152a9b Remove API test CI jobs 2024-07-03 03:01:25 -07:00
Daniel Imms efd4c5b340 Remove API test infrastructure 2024-07-03 02:57:05 -07:00
Daniel Imms 580bb082b5 Migrate image api tests to playwright 2024-07-03 02:56:09 -07:00
Daniel Imms 779ec7fad8 Migrate web-links api tests to playwright 2024-07-03 02:41:19 -07:00
Daniel Imms 89f3353a83 Migrate unicode11 api tests to playwright 2024-07-03 02:37:06 -07:00
Daniel Imms ab2cb9a809 Migrate unicode-graphemes api tests to playwright 2024-07-03 02:33:17 -07:00
Daniel Imms c9ad9cbf0e Migrate serialize api tests to playwright 2024-07-03 02:30:27 -07:00
Daniel Imms 6047093325 Merge pull request #5079 from Tyriar/more_playwright
Migrate more API tests to playwright
2024-07-02 14:57:46 -07:00
Daniel Imms 713f765731 Migrate attach api tests to playwright 2024-07-02 14:52:47 -07:00
Daniel Imms 4295dfaf20 Migrate clipboard api tests to playwright (only chromium) 2024-07-02 14:49:36 -07:00
Daniel Imms 57bac91904 Migrate fit api tests to playwright 2024-07-02 14:25:31 -07:00
Daniel Imms 958ae9b0ce Migrate search api tests to playwright 2024-07-02 14:08:34 -07:00
Daniel Imms 50032e2820 Merge pull request #5078 from Tyriar/shell_tests
Get tests working on node that requires shell arg
2024-07-02 13:01:52 -07:00
Daniel Imms daa2440a40 Fix playwright project names 2024-07-02 11:42:39 -07:00
Daniel Imms 645b698f37 Reduce coverage threshold 2024-07-02 11:39:54 -07:00
Daniel Imms 4b6c8f1fe4 Get tests working on node that requires shell arg
These silently fail on Windows after a recent change in node.js
2024-07-02 11:04:04 -07:00
dependabot[bot] 9a7941c004 Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-16 09:56:44 +00:00
Daniel Imms f77a763858 Merge pull request #5067 from Tyriar/base64
Correct addon-clipboard ctor types
2024-06-04 06:34:18 -07:00
Daniel Imms 2b716cd436 Correct addon-clipboard ctor types 2024-06-04 06:24:59 -07:00
Daniel Imms a3024a98fe Merge pull request #4879 from JasonXJ/a11y-char-width2
Align character position in a11y tree with the actual rendering
2024-06-04 05:38:31 -07:00
Daniel Imms 12e5841959 Fix lint 2024-06-04 05:30:54 -07:00
Daniel Imms 599cbc49f7 Merge branch 'master' into a11y-char-width2 2024-06-04 05:29:06 -07:00
Daniel Imms c73793fa11 Merge pull request #5066 from Tyriar/tyriar/vscode_213174
Speed up clearing all markers, mass event listener dispose
2024-06-03 11:49:48 -07:00
Daniel Imms dd106ae9b8 Speed up clearing all markers, mass event listener dispose
Part of microsoft/vscode#213174
2024-06-03 11:43:31 -07:00
Daniel Imms baa4e1b0e8 Merge pull request #5054 from joelhockey/master
Add powerline git, LN, lock symbols
2024-06-03 07:38:53 -07:00
myarmolinsky f02d68b36d Add balena to real world uses 2024-05-24 07:47:45 -04:00
Cainier 80d2ee78e7 Update README.md
Add "OpenSFTP" to Real-world uses
2024-05-15 16:07:12 +08:00
Joel Hockey d52f09de3c Add powerline git, LN, lock symbols
Symbols taken from https://github.com/powerline/fontpatcher/blob/develop/fonts/powerline-symbols.sfd

The original symbols use height and widith of approx 1060x2048, so I
modified to be roughly 1000x1000 via:

fontforge -lang=ff -c 'Open($1); SelectAll(); UnlinkReference(); Scale(100, 50); Move(0, 300); Export("svg/%n-%e.svg");' powerline-symbols.sfd

Then I edited by hand to round values to approx 2 significant digits,
and then used a script to convert relative SVG commands such as 'l',
'c', 's' to use only 'M', 'L' and 'C' and used expected format with
comma separators rather than spaces, and divide all values by 1000 to
map into a 1x1 space.
2024-05-12 17:56:38 -07:00
Renato Oliveira 3c017f2291 Update README.md
Removes Katacoda from the real-world uses. That platform has been shutdown by O'Reilly.
2024-05-07 16:10:32 -03:00
info24 9b1396fb32 Add eva pro to README.md 2024-04-26 23:10:03 +08:00
Daniel Imms 2edc65baaa Merge pull request #4220 from aymanbagabas/osc52
Add support to ANSI OSC52
2024-04-22 02:40:23 -07:00
Daniel Imms 6ed1f42fbe Merge branch 'master' into osc52 2024-04-22 02:04:33 -07:00
Daniel Imms 826c057047 Merge pull request #5003 from josiahhudson/master
Support semi-colons in OSC 8 hyperlink URIs
2024-04-22 01:41:16 -07:00
Daniel Imms 1709d44697 Merge pull request #5020 from wavetermdev/escape-html
Escape Unsafe HTML Characters in addon-serialize
2024-04-21 08:50:50 -07:00
Daniel Imms d77b41ed25 Add tests to cover OSC 8 hyperlinks 2024-04-21 08:38:12 -07:00
Daniel Imms 0e77f839ff Use indexOf(';') approach 2024-04-21 08:30:45 -07:00
Daniel Imms 487278ac79 Merge branch 'master' into master 2024-04-21 08:26:25 -07:00
Daniel Imms 499afa1e30 Merge pull request #4936 from SimonSiefke/fix/memory-leak
fix: memory leak in CoreBrowserService
2024-04-21 08:10:24 -07:00
Daniel Imms af8a663f70 Merge branch 'master' into fix/memory-leak 2024-04-21 08:06:05 -07:00
Daniel Imms 6be1c3fdf2 Merge pull request #4940 from octoclonius/patch-1
Update global object fix
2024-04-21 08:04:02 -07:00
Daniel Imms f1bb8f48c5 Merge pull request #5010 from xtermjs/dependabot/npm_and_yarn/addons/addon-ligatures/follow-redirects-1.15.6
Bump follow-redirects from 1.15.3 to 1.15.6 in /addons/addon-ligatures
2024-04-21 08:01:25 -07:00
Daniel Imms 7938dfcc17 Merge pull request #5018 from xtermjs/dependabot/npm_and_yarn/express-4.19.2
Bump express from 4.18.2 to 4.19.2
2024-04-21 07:59:38 -07:00
Daniel Imms ce3e0852d8 Merge branch 'master' into patch-1 2024-04-21 07:59:25 -07:00
Daniel Imms ca269907dc Merge branch 'master' into dependabot/npm_and_yarn/addons/addon-ligatures/follow-redirects-1.15.6 2024-04-21 07:56:27 -07:00
Daniel Imms bca4e717b8 Merge branch 'master' into dependabot/npm_and_yarn/express-4.19.2 2024-04-21 07:54:45 -07:00
jerch cbb3472780 Merge pull request #4963 from unional/patch-1
Update xterm.d.ts
2024-04-21 16:48:39 +02:00
dependabot[bot] b0c55d1bbf Bump follow-redirects from 1.15.3 to 1.15.6 in /addons/addon-ligatures
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-21 14:47:44 +00:00
dependabot[bot] f1e0737c5e Bump express from 4.18.2 to 4.19.2
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-21 14:47:44 +00:00
Daniel Imms 650ecb0640 Merge branch 'master' into patch-1 2024-04-21 07:45:41 -07:00
Daniel Imms 75491f4152 Remove trailing whitespace 2024-04-21 07:42:17 -07:00
Daniel Imms 770c17318e Merge pull request #4933 from tisilent/fix-#4917
Check after updating the SelectionRenderModel
2024-04-21 07:42:15 -07:00
Daniel Imms c52b4c3ed5 Merge branch 'master' into patch-1 2024-04-21 07:41:48 -07:00
Daniel Imms a7df139c46 Merge branch 'master' into fix-#4917 2024-04-21 07:38:10 -07:00
Daniel Imms bada1d28d6 Merge pull request #4865 from silamon/devcontainer-update
Update devcontainer
2024-04-21 07:37:18 -07:00
Daniel Imms e4bbbcf1fb Merge pull request #4989 from gonzolively/master
adding Wave Terminal to the README
2024-04-21 07:35:35 -07:00
Daniel Imms 292042e813 Merge pull request #4984 from tisilent/fix-#4983
Clear timer when dispose
2024-04-21 07:33:52 -07:00
Ayman Bagabas 3cedfbe9bf Merge branch 'master' into osc52 2024-04-21 15:32:08 +03:00
Daniel Imms 0d799ba69b Merge pull request #5038 from Tyriar/tyriar/4911
Speed up insertion and deletion of values in SortedList by batching and deferring to idle task
2024-04-20 11:20:52 -07:00
Daniel Imms 7b66da2706 Merge branch 'master' into tyriar/4911 2024-04-20 11:16:31 -07:00
Daniel Imms 6b4bf428de Fix tests 2024-04-20 11:15:14 -07:00
Daniel Imms a4a7ce843c Reduce gc pressure in api verify integers 2024-04-20 11:08:28 -07:00
Daniel Imms 73fe7015b7 Use sort on object 2024-04-20 11:00:41 -07:00
Daniel Imms ef1152a8fb Doc 2024-04-20 10:59:17 -07:00
Daniel Imms 71dddbc8b9 Move from set to array 2024-04-20 10:57:39 -07:00
Daniel Imms 45fd3c900f Only flush when needed 2024-04-20 10:52:43 -07:00
Daniel Imms 69c4966804 Consistent naming 2024-04-20 10:48:55 -07:00
Daniel Imms 3af11c2b1f Optimize SortedList.insert by batching to idle task 2024-04-20 10:47:40 -07:00
Daniel Imms dc541d5495 Optimize SortedList.delete by batching to idle task 2024-04-20 10:32:30 -07:00
Daniel Imms 5c8a9084e3 Add mass decoration test button
Part of #4911
2024-04-20 08:41:22 -07:00
Ayman Bagabas 24b04e9243 Merge branch 'master' into osc52 2024-04-20 11:24:58 -04:00
Ayman Bagabas 0562f32af6 Apply suggestions 2024-04-20 11:20:16 -04:00
Daniel Imms 21d7f784d1 Merge pull request #5037 from Tyriar/tyriar/5036
Prevent smooth scroll from running more than once per frame
2024-04-20 08:19:17 -07:00
Daniel Imms 16db227119 Prevent smooth scroll from running more than once per frame
Fixes #5036
2024-04-20 08:11:59 -07:00
Ayman Bagabas 9ebfb11ac8 Fix tests 2024-04-19 10:52:38 +03:00
Ayman Bagabas 98b0e16984 Merge branch 'master' into osc52 2024-04-19 10:09:21 +03:00
Ayman Bagabas 87169ee3ac fix: tests 2024-04-19 10:09:08 +03:00
Daniel Imms 47a46870b6 Merge pull request #5034 from Tyriar/tyriar/update_cursor_still
Expose onWriteParsed on API
2024-04-18 16:31:19 -07:00
Daniel Imms 8458bb4c4f Expose onWriteParsed on API
Inconsistency with headless API
2024-04-18 16:27:48 -07:00
Ayman Bagabas 5238461f3f Update ClipboardAddon.ts 2024-04-18 23:17:17 +03:00
Ayman Bagabas 1f7db053cd Merge branch 'master' into osc52 2024-04-18 13:10:23 +03:00
Ayman Bagabas 8a9cb37273 Tidy 2024-04-18 13:09:27 +03:00
Daniel Imms d2b8e6c125 Merge pull request #5027 from Tyriar/4916
Finish OSC hyperlinks when the second param is only whitespace
2024-04-12 16:52:45 -07:00
Daniel Imms e845abc784 Finish OSC hyperlinks when the second param is only whitespace
Fixes #4916
2024-04-12 16:47:59 -07:00
Ayman Bagabas 70dd76f954 Merge branch 'master' into osc52 2024-04-08 09:36:19 -07:00
Daniel Imms 887e5a6cba Merge pull request #5024 from ksqsf/master
Fix duplicate input for some IMEs
2024-04-08 05:53:56 -07:00
Ayman Bagabas acc0a2ef78 Support passing playwright browser options 2024-04-08 12:53:17 +03:00
Ayman Bagabas 6ac75d88c4 Fix demo tsconfig addon name 2024-04-08 12:46:37 +03:00
Ayman Bagabas 00514d41b6 Undo format 2024-04-08 12:45:55 +03:00
ksqsf 52e8a75e9f Fix duplicate input for some IMEs
fixes #5023
2024-04-08 13:42:55 +08:00
Ayman Bagabas ce9e92f8e5 Fix OSC52 sequence response 2024-04-08 05:52:21 +03:00
Ayman Bagabas a709187007 Update addon-clipboard readme 2024-04-08 04:51:55 +03:00
Ayman Bagabas fad97bc4d5 Clean up 2024-04-08 04:40:17 +03:00
Ayman Bagabas 94648eb4e9 Update addon-clipboard 2024-04-08 02:47:26 +03:00
Ayman Bagabas 805cabafe8 Merge remote-tracking branch 'upstream/master' into osc52 2024-04-07 23:22:01 +03:00
Daniel Imms 9ba6c00a19 Merge pull request #5021 from Tyriar/tyriar5_5
v5.5
2024-04-05 07:00:05 -07:00
Daniel Imms 78297e52aa v5.5 2024-04-05 06:50:30 -07:00
sawka 431045619e match capitalization of HTML with the rest of the file 2024-03-29 10:26:44 -07:00
sawka 55e34cb174 fix unit test (test terminal only has 10 cols) 2024-03-29 00:44:02 -07:00
sawka cdb45c743f escape special html characters in addon-serialize 2024-03-29 00:30:29 -07:00
Simon Lamon 9886d60be0 Merge branch 'master' into devcontainer-update 2024-03-22 19:06:35 +00:00
Daniel Imms 53bc9f8442 Merge pull request #5013 from Tyriar/tyriar/ascii
Don't rescale ascii
2024-03-20 10:09:19 -07:00
Daniel Imms 4c90009a0e Don't rescale ascii
See microsoft/vscode#208102
2024-03-20 10:02:53 -07:00
Daniel Imms bee4fd0914 Merge pull request #5012 from Tyriar/tyriar/208102
Only scale when over 50% of following cell
2024-03-19 09:03:36 -07:00
Daniel Imms f8ae7edaa0 Only scale when over 50% of following cell
See microsoft/vscode#208102
2024-03-19 08:56:13 -07:00
Daniel Imms 9ec9dca5f8 Merge pull request #5009 from Tyriar/tyriar/4987
Fix dom cursor blink animation and improve readability
2024-03-16 11:12:19 -07:00
Daniel Imms a4f1299f42 Special case cursor block blink to not use important
Fixes #4987
2024-03-16 11:07:05 -07:00
Daniel Imms 7b76ca7e49 Make dom rendere animation classes more readable 2024-03-16 09:57:23 -07:00
Daniel Imms 18147b2134 Fix bar blink animation 2024-03-16 09:55:20 -07:00
Daniel Imms c78af2b448 Fix dom cursor blink animation
Fixes #4987
Doesn't seem to regress #4773 which caused this issue
2024-03-16 09:49:36 -07:00
Daniel Imms e2dc01cf6e Merge pull request #5008 from Tyriar/tyriar/4994
Fix search not destroying cache on linefeed
2024-03-16 09:38:54 -07:00
Daniel Imms 14fbdd3e9c Adopt MutableDisposable in SearchAddon 2024-03-16 09:32:49 -07:00
Daniel Imms 3e5d0015af Fix search not destroying cache on linefeed
Fixes #4994
2024-03-16 09:30:25 -07:00
Daniel Imms b4c1007075 Merge pull request #5007 from Tyriar/5005
Don't rescale unless it exceeds 25% of following cell
2024-03-16 09:24:35 -07:00
Daniel Imms e0533db4d9 Merge pull request #5006 from Tyriar/tyriar/4995
Set up shared context on browser even if process exists
2024-03-16 09:18:02 -07:00
Daniel Imms 4071f41f52 Don't rescale unless it exceeds 25% of following cell
Fixes #5005
2024-03-16 09:16:31 -07:00
Daniel Imms 37efeeb044 Make process node check stricter
Fixes #4995
2024-03-16 09:08:54 -07:00
Daniel Imms 47409f39f6 Set up shared context on browser even if process exists
Fixes #4995
2024-03-16 09:05:45 -07:00
Josiah Hudson b40e58bc77 Fix https://github.com/xtermjs/xterm.js/issues/4944 by only splitting on the first ";" in InputHandler.setHyperlink(). 2024-03-15 17:40:21 -04:00
Daniel Imms b7b9d27627 Merge pull request #5001 from Tyriar/powerline_nf
Don't rescale powerline or nerd fonts
2024-03-15 08:36:58 -07:00
Daniel Imms 6b3d485d77 Note new excluded glyphs in API 2024-03-15 08:30:55 -07:00
Daniel Imms 48c6e96a78 Don't rescale powerline or nerd fonts
Part of #4969
2024-03-15 08:18:26 -07:00
Daniel Imms 44feecfc9a Merge pull request #4997 from Tyriar/4969
Introduce opt-in glyph scaling to achieve GB18030 compliance
2024-03-14 09:50:13 -07:00
Daniel Imms df559e3444 Rescale overlapping in canvas 2024-03-14 07:26:25 -07:00
Daniel Imms 33a7a9b6a2 Implement rescaleOverlappingGlyphs in webgl
Part of #4969
2024-03-14 07:14:13 -07:00
Daniel Imms 0658719d23 Merge pull request #4993 from Tyriar/tyriar/4992
Add default to api d.ts
2024-03-07 05:30:09 -08:00
Daniel Imms c32313a471 Add default to api d.ts
Fixes #4992
2024-03-07 05:21:59 -08:00
Knox Lively 553b9f261a adding Wave Terminal to the README 2024-03-06 23:56:04 -07:00
tisilent fe22671a6e Clear timer when dispose 2024-03-06 17:03:25 +08:00
jerch 1da0db435f Merge pull request #4977 from dstein64/master
Add @xterm scope to packages
2024-03-03 12:57:24 +01:00
Daniel Steinberg 17fd7389c4 Add @xterm scope to packages 2024-03-02 03:46:10 +00:00
Daniel Imms 9da5f1401f Merge pull request #4976 from Tyriar/tyriar/readme
Update script/css import in readme
2024-03-01 09:24:49 -08:00
Daniel Imms da3aad4497 Update script/css import in readme
Part of #4859
2024-03-01 09:18:29 -08:00
Daniel Imms 9a512d1abd Merge pull request #4975 from Tyriar/tyriar/v5_4_x
Fix publishing of stable
2024-03-01 09:00:46 -08:00
Daniel Imms 6ca8dc54ad Fix publishing of stable 2024-03-01 09:00:33 -08:00
Daniel Imms cff944fe8a Merge pull request #4974 from Tyriar/tyriar/v5_4
v5.4.0
2024-03-01 08:42:37 -08:00
Daniel Imms 72dea6279e v5.4.0 2024-03-01 08:39:19 -08:00
Daniel Imms 37ecb9a6b5 Merge pull request #4965 from jerch/fix_4964
allow uppercase in weblinks
2024-03-01 07:45:20 -08:00
Daniel Imms fb867a914a Merge pull request #4973 from Tyriar/spacing
Fix spacing issue when measuring before element is attached
2024-02-29 07:43:03 -08:00
Daniel Imms 8ef3c10844 Fix spacing issue when measuring before element is attached
See microsoft/vscode#204690
2024-02-29 07:37:32 -08:00
Jörg Breitbart 10fe249877 allow user+password to still match 2024-02-22 09:55:42 +01:00
Jörg Breitbart 5143f904ee remove leftover .only 2024-02-22 09:40:38 +01:00
Jörg Breitbart 768452a519 make linter happy 2024-02-22 09:38:36 +01:00
Jörg Breitbart 547bda6e4f fix #4964 2024-02-22 09:33:21 +01:00
Homa Wong 88bfc4ad9c add termios link 2024-02-19 17:18:52 -08:00
Homa Wong 9107ee905a Update xterm.d.ts
Fix doc typo
2024-02-16 18:08:58 -08:00
octoclonius b5ca41d658 Merge branch 'master' into patch-1 2024-02-04 15:55:14 -05:00
Daniel Imms 6a281bd90e Merge pull request #4953 from arencoskun/master
Expose API method for writing to application side (#4948)
2024-02-02 12:16:03 -08:00
Daniel Imms 1c4e0111cb Merge branch 'master' into master 2024-02-02 12:07:10 -08:00
Daniel Imms 8d1771ef64 Tweak docs 2024-02-02 12:03:08 -08:00
Daniel Imms fb54bb0b6c Merge pull request #4954 from Tyriar/npe
Prevent npe in render service
2024-02-02 10:07:02 -08:00
Daniel Imms 546bcb5133 Prevent npe in render service
See microsoft/vscode#204104
2024-02-02 09:58:21 -08:00
arencoskun b1a72b2e83 Linter fix 2024-02-02 09:04:53 +03:00
arencoskun dce6e31c89 Add headless definitons 2024-02-02 08:59:57 +03:00
arencoskun cddc888065 Add definition to xterm-headless.d.ts 2024-02-01 16:49:15 +03:00
arencoskun 06aa2c86df Whitespace fix 2024-02-01 16:32:31 +03:00
arencoskun c51a0b7454 Fix linter errors (hopefully) 2024-02-01 16:05:02 +03:00
arencoskun cae42772e8 Move function to CoreTerminal, add additional argument to specify if the input was user input or not. 2024-02-01 14:11:29 +03:00
arencoskun 09a0dd658d Final fixes 2024-02-01 13:11:54 +03:00
arencoskun bbd1a1dbe2 Try to fix linter errors 2024-02-01 13:05:13 +03:00
arencoskun f1e563ad5f Expose API method for writing to application side (#4948) 2024-02-01 11:17:25 +03:00
Daniel Imms 8e015ebf87 Merge pull request #4950 from Tyriar/tyriar/blending
Fix background selection blending for true color
2024-01-30 11:25:14 -08:00
Daniel Imms 3c88c767cd Fix background selection blending for true color
Bug in #4920
See microsoft/vscode#200428
2024-01-30 11:16:19 -08:00
octoclonius d83f442cff Update webpack.config.headless.js 2024-01-13 19:57:38 -06:00
octoclonius 67e8e60a69 Update webpack.config.headless.js 2024-01-13 19:55:18 -06:00
octoclonius d5827ec77d Update webpack.config.headless.js 2024-01-13 19:54:27 -06:00
octoclonius c0044dc4a5 Update webpack.config.js global object fix 2024-01-13 13:30:10 -06:00
octoclonius 8696cf8789 Update webpack.config.js global object fix 2024-01-13 13:29:59 -06:00
octoclonius 693ec1b2bc Update webpack.config.js global object fix 2024-01-13 13:29:48 -06:00
octoclonius 330d7b3100 Update webpack.config.js global object fix 2024-01-13 13:29:33 -06:00
octoclonius d8f96ab9c7 Update webpack.config.js global object fix
`this` might be okay, I'm not actually sure, but xterm.js uses `globalThis` and so I think consistency is better maybe?
2024-01-13 13:29:20 -06:00
octoclonius 072cd029e4 Update webpack.config.js global object fix 2024-01-13 13:28:21 -06:00
octoclonius 46baff8459 Update webpack.config.js global object fix 2024-01-13 13:28:05 -06:00
octoclonius 8d6fff7000 Update webpack.config.js global object fix 2024-01-13 13:27:44 -06:00
octoclonius f84fff5f87 Update global object fix 2024-01-13 13:24:15 -06:00
octoclonius 1a67241f67 Update global object fix 2024-01-13 13:23:57 -06:00
octoclonius 7f7de14e6f Add comma 2024-01-13 13:23:33 -06:00
octoclonius 815758529d Update global object fix 2024-01-13 13:21:30 -06:00
jerch 99df13b085 Merge pull request #4937 from szymonkaliski/sk/fix-url-parsing
fix weblinks addon url parsing for url.encoded urls
2024-01-11 21:43:05 +01:00
Szymon Kaliski f03d870bcd adjust a comment 2024-01-11 11:23:24 -08:00
Szymon Kaliski 856666d5bd fix url parsing for urls with percentage sign in them 2024-01-05 09:43:33 +01:00
Simon Siefke 819254e540 fix formatting 2024-01-04 22:33:39 +01:00
Simon Siefke f486989697 fix formatting 2024-01-04 22:32:59 +01:00
Simon Siefke 9e98b631da use disposable for text area listeners 2024-01-04 22:29:12 +01:00
Simon Siefke b0667aacca fix: memory leak in CoreBrowserService 2024-01-04 22:05:23 +01:00
tisilent 750f3179de move test 2024-01-01 22:48:39 +08:00
tisilent b1d9b4751d Check after updating the SelectionRenderModel 2024-01-01 22:25:54 +08:00
Daniel Imms 1940bbec75 Merge pull request #4931 from Tyriar/tyriar/out_ignore
Ignore out dirs in eslint
2023-12-30 09:30:46 -08:00
Daniel Imms 7b7fb73611 Ignore out dirs in eslint 2023-12-30 09:30:25 -08:00
Daniel Imms b97baa7ff1 Merge pull request #4930 from PerBothner/update-eslint
Update required eslint and eslint-plugin-jsdoc versions
2023-12-30 09:26:34 -08:00
Per Bothner a7bf3b22c1 Update required eslint and eslint-plugin-jsdoc versions
This fixes a problem when using node 20.*.*, because eslint-plugin-jsdoc@39.9.1
requires node version "^14 || ^16 || ^17 || ^18 || ^19".
2023-12-29 18:13:09 -08:00
Daniel Imms 442c1583e7 Merge pull request #4866 from silamon/remove-16-ci
Remove unit tests with Node 16
2023-12-29 04:14:20 -08:00
Daniel Imms 217acef6b2 Merge branch 'master' into remove-16-ci 2023-12-29 04:03:53 -08:00
Daniel Imms 0eed746638 Merge pull request #4878 from xtermjs/dependabot/npm_and_yarn/addons/addon-ligatures/axios-1.6.0
Bump axios from 0.21.2 to 1.6.0 in /addons/addon-ligatures
2023-12-29 04:02:51 -08:00
Daniel Imms 1b4f0606ca Merge pull request #4929 from Tyriar/tyriar/metrics
Implement and default to text metrics measure strategy
2023-12-29 04:02:04 -08:00
Daniel Imms 3c4d567be9 Merge pull request #4915 from tisilent/update-attachCustomWheelEventHandler-comments
Update attachCustomWheelEventHandler comments
2023-12-29 03:58:50 -08:00
Daniel Imms 82d50a4f89 Allow fit addon test to work when hidden 2023-12-29 03:57:37 -08:00
Daniel Imms 379c382fe7 Pull common measure parts into base class 2023-12-29 03:47:44 -08:00
Daniel Imms 559026bbf3 Implement and default to text metrics measure strategy
Fixes #3449
2023-12-29 03:40:44 -08:00
Daniel Imms 08e67a3a0b Merge pull request #4927 from Tyriar/tyriar/color
Move rgba.toColor to channels.toColor
2023-12-28 09:55:28 -08:00
Daniel Imms 1a82e0d421 Remove todo
Not much gain by caching the value
2023-12-28 09:47:05 -08:00
Daniel Imms 2e03680128 Add channels.toColor tests 2023-12-28 09:32:57 -08:00
Daniel Imms 94a9ce8566 Move toColor into channels
It operates on rgba channels, not a packed 32 bit int
2023-12-28 09:29:30 -08:00
Daniel Imms 6e351dd4ac Merge pull request #4924 from Tyriar/link_refactor
Split Linkifier2 (always active) into Linkifier (after attach) and LinkProviderService (always active)
2023-12-23 08:57:12 -08:00
Daniel Imms 53604e427b Update test-unit node to 18 2023-12-23 08:49:37 -08:00
Daniel Imms 1b52c97fd0 Add wait for builld job to test-unit 2023-12-23 08:46:09 -08:00
Daniel Imms dbcb43f1d3 Rename Linkifier2 -> Linkifier 2023-12-23 08:32:39 -08:00
Daniel Imms d7c8d063b6 Get linkifier test to work 2023-12-23 08:31:50 -08:00
Daniel Imms de41c9f306 Make linkifier always attached to dom 2023-12-23 08:29:28 -08:00
Daniel Imms 8733d2cfa2 Separate link provider service from linkifier 2023-12-23 08:21:35 -08:00
Daniel Imms b3737d6ff0 Merge pull request #4921 from Tyriar/tyriar/crosshair
Fix crosshair cursor now working in some embedders
2023-12-20 10:02:44 -08:00
Daniel Imms 56a6a010ab Fix crosshair cursor now working in some embedders
This was not happening in the demo because the xterm instance is almost
always focused.

See microsoft/vscode#199848
2023-12-20 07:28:26 -08:00
Daniel Imms 341d9f0597 Merge pull request #4920 from Tyriar/tyriar/bg_blend
Add bg+powerline background blend behavior
2023-12-19 08:57:03 -08:00
Daniel Imms a4505ed724 Skip another test on canvas 2023-12-19 08:47:54 -08:00
Daniel Imms b843e0fc8e Pass through dom skip exceptions flag 2023-12-19 08:44:14 -08:00
Daniel Imms c0fac5e5f1 Fix test suppression 2023-12-19 08:38:55 -08:00
Daniel Imms 78a945ae9e Suppress test failure 2023-12-19 08:34:16 -08:00
Daniel Imms 9b62849bb8 Fix lint 2023-12-19 08:23:21 -08:00
Daniel Imms 66b426311e Fix compile 2023-12-19 08:21:18 -08:00
Daniel Imms 7bee001868 Ensure addons are loaded in standalone tests 2023-12-19 08:18:44 -08:00
Daniel Imms 22f1ce4a11 Add bg+powerline background blend behavior
When a with bg is selected, the cell's regular background will be blended
with 50% opacity selectionBackground in order to retain the bg color info
as well as getting the color to change and getting decent contrast.

This commit also fixes a terrible, nasty bug where the standalone shared
renderer tests were causing the terminal to open multiple times and not
get the WebGL addon activated the second time. So some tests were actually
testing the DOM renderer :o

Fixes #4918
2023-12-19 08:16:48 -08:00
Daniel Imms 805823df7a Merge pull request #4919 from Tyriar/tyriar/noisy
Remove tracing drawToCache call
2023-12-19 05:50:32 -08:00
Daniel Imms 7c5ad6b7a9 Remove tracing drawToCache call
This was a little noisy and didn't end up being that useful
2023-12-19 05:44:55 -08:00
Daniel Imms 0904078bf4 Merge pull request #4912 from jeanp413/fix-vscode-200469
Fixes vscode #200469
2023-12-15 08:26:27 -08:00
Jean Pierre 9f995c6ff8 💄 2023-12-15 16:03:37 +00:00
tisilent 427b4f6c6d Update attachCustomWheelEventHandler comments 2023-12-14 16:55:49 +08:00
jeanp413 81a4d860c5 💄 2023-12-12 09:21:55 -05:00
jeanp413 7ac95fab28 More fixes 2023-12-12 09:19:53 -05:00
Daniel Imms 1f15c47a43 Merge pull request #4913 from Tyriar/tyriar/wheel_handlers
addCustomWheelEventHandler API
2023-12-12 05:25:31 -08:00
Daniel Imms 88ba66d00b addCustomWheelEventHandler API
I opted for consistency with the key event handler over our more modern
approach, we can migrate them at the same time if we end up returning
a disposable.

See microsoft/vscode#76381
2023-12-12 05:17:24 -08:00
jeanp413 2592e1e84d re register intersection observer on window change 2023-12-12 05:55:30 -05:00
jeanp413 97750f672f 💄 2023-12-12 04:41:20 -05:00
jeanp413 54608bf38d Fixes https://github.com/microsoft/vscode/issues/200469 2023-12-12 04:16:28 -05:00
Daniel Imms b4226bc0f5 Merge pull request #4910 from Tyriar/tyriar/leaks
Help embedders avoid memory leaks by clearing options
2023-12-08 12:19:42 -08:00
Daniel Imms 1943636f02 Help embedders avoid memory leaks by clearing options
Related microsoft/vscode#192838
2023-12-08 12:14:22 -08:00
dependabot[bot] d218bff2c4 Bump axios from 0.21.2 to 1.6.0 in /addons/addon-ligatures
Bumps [axios](https://github.com/axios/axios) from 0.21.2 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.2...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-10 16:12:08 +00:00
Jason Lin 26dc69446e Align character position in a11y tree with the actual rendering
This helps screen readers to draw selection outline at the correct
position.
2023-11-10 21:21:50 +11:00
Daniel Imms fb2c39cb57 Merge pull request #4877 from Tyriar/serialize_fixes
Add range API to serialize addon
2023-11-09 10:27:54 -08:00
Daniel Imms b595940bcf Add range API to serialize addon
Fixes #4876
Fixes #4871
2023-11-09 09:43:14 -08:00
Jason Lin a0da287b9c Use the right document in AccessibilityManager.ts 2023-11-09 16:57:58 +11:00
Daniel Imms 49eab6b1d9 Merge pull request #4874 from tisilent/dashed-line
Draw dashed lines through ratios
2023-11-08 05:30:00 -08:00
tisilent 2861a4dd39 Draw dashed lines through ratios 2023-11-08 17:58:38 +08:00
Simon Lamon b4fa7c6c06 Remove unit tests with Node 16 2023-11-04 14:35:36 +01:00
Simon Lamon 5c1d9b28cd Update yarn lock 2023-11-04 13:10:36 +00:00
Simon Lamon 0aeeebdd64 Devcontainer update 2023-11-04 13:05:42 +00:00
Daniel Imms bdcba308df Upload clipboard addon artifacts 2023-11-03 12:44:19 -07:00
Daniel Imms aed94e5317 xterm-addon-clipboard to scoped module 2023-11-03 11:45:21 -07:00
Daniel Imms a4e6713823 Merge remote-tracking branch 'upstream/master' into pr/aymanbagabas/4220 2023-11-03 11:35:23 -07:00
Daniel Imms 58bb7fc73e Merge pull request #4742 from JasonXJ/sync-select
Allow selection in the a11y tree and sync the selection to terminal
2023-11-03 09:08:53 -07:00
Daniel Imms b16724f06a Improve docs of BufferLine.translateToString 2023-11-03 08:53:53 -07:00
Daniel Imms 5630239a6d Merge remote-tracking branch 'upstream/master' into pr/JasonXJ/4742 2023-11-03 08:47:05 -07:00
Daniel Imms 13be985b36 Merge pull request #4825 from PerBothner/setcell-refactor
Change setCellFromCodePoint API and rename to setCellFromCodepoint
2023-11-03 06:00:35 -07:00
Daniel Imms a5646a58d5 Merge pull request #4801 from tisilent/fix-inactive-cursor-spot
using viewport relative coordinate
2023-11-02 11:21:29 -07:00
Daniel Imms b0407e20cf Merge branch 'master' into setcell-refactor 2023-11-02 11:17:18 -07:00
Daniel Imms 8a1790d6d5 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4801 2023-11-02 11:13:00 -07:00
Daniel Imms 86074c9210 Merge pull request #4703 from tisilent/underline-dotted
Use variants for underline dotted.
2023-11-02 10:55:00 -07:00
Daniel Imms 2f074b87f3 Explain VARIANT_OFFSET 2023-11-02 10:45:46 -07:00
Daniel Imms 6214f4c2e6 Varinat -> Variant 2023-11-02 10:43:56 -07:00
Daniel Imms 390e4f30c8 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4703 2023-11-02 10:39:15 -07:00
Daniel Imms 4036ab7055 Merge pull request #4837 from tisilent/fix-dom-renderer-selection
handle selection when resizing
2023-11-02 09:43:09 -07:00
Daniel Imms 139bf361b4 Merge pull request #4836 from xiaoxiaobt/safari-legacy-fix
Allow xterm.js to run on legacy versions of Safari when Webgl2 support is explicitly enabled
2023-11-02 09:32:41 -07:00
Daniel Imms c9f15454e4 Merge pull request #4833 from arcanis/patch-3
Fixes hex color serialization
2023-11-02 09:30:48 -07:00
Daniel Imms b6a09d67e2 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4837 2023-11-02 09:30:17 -07:00
Daniel Imms 1770bb1b65 Merge pull request #4839 from JasonXJ/ctrl-backspace
Send correct code for ctrl+[alt+]+backspace
2023-11-02 09:28:06 -07:00
Daniel Imms 52549f0a7a Merge remote-tracking branch 'upstream/master' into pr/arcanis/4833 2023-11-02 09:24:33 -07:00
Daniel Imms 0d7cc9e9fd Merge branch 'master' into safari-legacy-fix 2023-11-02 09:08:41 -07:00
Daniel Imms e8da73799f Merge pull request #4847 from tisilent/add-addon-public-api
Have addons implement their API at compile time
2023-11-02 09:08:14 -07:00
Daniel Imms 588da4f3b8 Merge remote-tracking branch 'upstream/master' into pr/xiaoxiaobt/4836 2023-11-02 09:00:28 -07:00
Daniel Imms 4beb7d0595 Make addon api imports consistent 2023-11-02 08:54:49 -07:00
Daniel Imms 4c275a287f Fix paths in benchmark tsconfigs 2023-11-02 08:52:09 -07:00
Daniel Imms 5ed2b013d5 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4847 2023-11-02 08:45:11 -07:00
Daniel Imms 19bdcab93e Merge pull request #4862 from Tyriar/image_publish
Fix image addon build
2023-11-01 14:29:43 -07:00
Daniel Imms 45e7efce67 Re-enable auth 2023-11-01 14:29:32 -07:00
Daniel Imms fbc51ae691 Remove logs 2023-11-01 14:24:38 -07:00
Daniel Imms 92eb78230b Verify it's not an array 2023-11-01 14:17:31 -07:00
Daniel Imms 31925596f1 Log publish script 2023-11-01 13:15:28 -07:00
Daniel Imms 88b0b4a5c7 Log publish script 2023-11-01 13:07:59 -07:00
Daniel Imms c8b2783b85 Tweak parsing versions 2023-11-01 13:01:20 -07:00
Daniel Imms 2744549c0f Return [] if versionsJson is falsy 2023-11-01 12:35:25 -07:00
Daniel Imms 1c522e16a4 Fix image addon build
Fixes #4761
Fixes #4802
2023-11-01 12:13:19 -07:00
Daniel Imms 4b2e52f13c Merge pull request #4861 from Tyriar/scope_followup
Uncomment first publish special cases, add missing (at)xterm
2023-11-01 12:03:56 -07:00
Daniel Imms bbbde9261f Fix parsing of low version count 2023-11-01 11:59:42 -07:00
Daniel Imms eac8124320 Fix stable release check 2023-11-01 11:27:04 -07:00
Daniel Imms 64534e1b7a Fix missing peer dep 2023-11-01 11:07:41 -07:00
Daniel Imms 71ec216161 Uncomment first publish special cases, add missing (at)xterm
Part of #4859
2023-11-01 11:06:30 -07:00
Daniel Imms 2df591c5f7 Merge pull request #4860 from Tyriar/scoped_package
Start @xterm scope with core and webgl addons
2023-11-01 10:55:31 -07:00
Daniel Imms d95f0177c8 Add todo comments for uncomment publish script 2023-11-01 10:49:21 -07:00
Daniel Imms b4b128709f Add other addons to the readme addon section 2023-11-01 10:37:20 -07:00
Daniel Imms 0fd04aa76d Replace all instances of xterm-addon 2023-11-01 10:35:10 -07:00
Daniel Imms 4abb4c674f Use build artifacts in dry run 2023-11-01 07:31:39 -07:00
Daniel Imms 485fb455d6 Add release dry run job to CI 2023-11-01 07:29:42 -07:00
Daniel Imms 765a8b21a3 real run 2023-11-01 07:25:58 -07:00
Daniel Imms dcc940c32e headless -> scoped 2023-11-01 07:24:49 -07:00
Daniel Imms 059acb2da6 Handle versionsJson error 2023-11-01 07:22:28 -07:00
Daniel Imms a1f87809b2 Log versionsJson 2023-11-01 07:19:23 -07:00
Daniel Imms 2fb9702a3a Force dry run temporarily 2023-11-01 07:14:19 -07:00
Daniel Imms 5196ac5c8f Fix variable name 2023-11-01 07:02:14 -07:00
Daniel Imms 9db2178d05 Return [] when no versions are published 2023-11-01 07:00:23 -07:00
Daniel Imms 8c6d16486d Don't fetch beta versions 2023-11-01 06:57:44 -07:00
Daniel Imms cef869a206 Force beta build for now 2023-11-01 06:55:21 -07:00
Daniel Imms efbcd41fab from xterm-headless -> from scoped 2023-11-01 06:50:48 -07:00
Daniel Imms bb9728ccd1 from xterm -> from scoped 2023-11-01 06:50:08 -07:00
Daniel Imms 905285efda Temporarily enable publishing in PRs 2023-11-01 06:48:33 -07:00
Daniel Imms e1d19e00a5 Merge remote-tracking branch 'upstream/master' into scoped_package 2023-11-01 06:46:14 -07:00
Daniel Imms add7f8133e Start @xterm scope with core and webgl addons 2023-11-01 06:44:26 -07:00
Daniel Imms 33100818d7 Merge pull request #4831 from tisilent/fix-search-options-change
Check option changes
2023-10-31 06:49:50 -07:00
Daniel Imms 974b275f6e is -> did 2023-10-31 06:41:41 -07:00
Daniel Imms ea2d775595 Merge branch 'master' into fix-search-options-change 2023-10-31 06:38:24 -07:00
Daniel Imms f741d42165 Merge pull request #4858 from xtermjs/Tyriar-patch-1
Remove unicode-graphemes install doc
2023-10-31 06:29:02 -07:00
Daniel Imms 6945e881a8 Update README.md 2023-10-31 06:18:40 -07:00
Daniel Imms 804ff187fa Merge pull request #4856 from alan-agius4/alan-agius4-patch-1
fix: use globalThis instead of self to address non Browser consumption
2023-10-30 09:36:08 -07:00
Alan Agius de1304d19e fix: use globalThis instead of self to address non Browser consumption
Currently using this package in a non Browser env will cause an error as Webpack will emit `self` which does not exist in all envs such as Node.js and Workers.

This commit updates Webpack and force it to use `globalThis`. See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis
2023-10-30 10:44:18 +01:00
Ayman Bagabas 96fcfbded1 Merge branch 'master' into osc52 2023-10-20 13:47:45 -07:00
Daniel Imms 9fff1e6e44 Merge pull request #4851 from davidfiala/fix-xterm-node21
proper isNode detection for node v21.0.0
2023-10-19 11:38:49 -07:00
David Fiala 0d0166b4bc provide a declaration for 'process' needed for nodejs detect
We provide no further type information as it will not be used except for a presence check for nodejs detection.
2023-10-19 11:19:27 -07:00
David Fiala 6c5fb36c36 proper isNode detection for node v21.0.0 2023-10-19 09:52:29 -07:00
Daniel Imms 1c880f5199 Merge pull request #4849 from xtermjs/dependabot/npm_and_yarn/babel/traverse-7.23.2
Bump @babel/traverse from 7.22.8 to 7.23.2
2023-10-19 09:39:44 -07:00
dependabot[bot] 4681b319ca Bump @babel/traverse from 7.22.8 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.8 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 11:47:16 +00:00
Daniel Imms 78a6aac409 Merge pull request #4846 from Tyriar/multi_window
Make xterm.js multi-window aware
2023-10-17 11:03:31 -07:00
Daniel Imms 20a26a6589 Remove unused imports 2023-10-17 10:54:29 -07:00
tisilent a4e09d0ad8 add path to benchmark 2023-10-18 01:09:39 +08:00
tisilent dfd5385602 add semicolon 2023-10-18 00:49:29 +08:00
tisilent 7dab4601d2 add public api 2023-10-18 00:29:56 +08:00
Daniel Imms 81e0718a74 Move window resize edge case into dpr monitor 2023-10-17 09:18:46 -07:00
Daniel Imms 6e12d94f11 Move window resize listeners over to onWindowChange 2023-10-17 09:10:04 -07:00
Daniel Imms 92535e539f Inline ScreenDprMonitor into CoreBrowserService file 2023-10-17 08:56:02 -07:00
Daniel Imms 4cc51ca08f Move ScreenDprMonitor into CoreBrowserService 2023-10-17 08:55:07 -07:00
Daniel Imms 63790f8854 Change ScreenDprMonitor to be event based 2023-10-17 08:49:28 -07:00
Daniel Imms 45605db3c5 Listen to window change and pass through to ScreenDprMonitor 2023-10-17 08:39:48 -07:00
Daniel Imms c80453f602 Use correct document when creating elements 2023-10-16 11:09:36 -07:00
tisilent eb4277e7bd using ITerminal 2023-10-16 09:35:21 +08:00
Daniel Imms 4245283e05 Merge pull request #4844 from Tyriar/doc_override
Expose a documentOverride setting
2023-10-13 13:48:58 -07:00
Daniel Imms 41c62288f0 Expose a documentOverride setting
This lets the embedder choose which Document object to use for creating
elements, adding event listeners, etc. The reason this exists is because
when working with multiple windows it can be convenient to create all
elements under the primary window to make instanceof usage consistent.

See microsoft/vscode#195595
2023-10-13 13:41:53 -07:00
Jason Lin c3aa63cffa translateToString() adds one more entry to outColumns
Previously, for string 'ab好', outColumns=[0, 1, 2]. Now it becomes [0,
1, 2, 4]. This allows the user to know where does the last character
ends.
2023-10-11 16:23:03 +11:00
Jason Lin 1b940de0bf Allow selection in the a11y tree and sync the selection to terminal 2023-10-11 16:23:03 +11:00
Jason Lin 023c778c4d Send correct code for ctrl+[alt+]+backspace
We should send ^H (instead of ^?) for ctrl+backspace. This is what xterm
and gnome-terminal do.
2023-10-11 14:59:35 +11:00
tisilent 6b5fc260ca Dom Renderer using SelectionRenderModel 2023-10-10 22:53:01 +08:00
tisilent d3e075f37b handle selection when resizing 2023-10-10 15:54:15 +08:00
Taige Wang 194b810ad5 Fix Webgl2 compatability on legacy Safari with webgl2 enabled 2023-10-08 13:03:28 +03:00
Ayman Bagabas 2a8ddcd508 Merge branch 'master' into osc52 2023-10-04 11:30:55 -07:00
Maël Nison 7cbaacde40 Fixes hex color serialization 2023-10-04 15:42:02 +02:00
Daniel Imms 34017f32fb Merge pull request #4829 from xtermjs/dependabot/npm_and_yarn/get-func-name-2.0.2
Bump get-func-name from 2.0.0 to 2.0.2
2023-10-02 11:22:58 -07:00
Daniel Imms 57e2adc042 Merge branch 'master' into dependabot/npm_and_yarn/get-func-name-2.0.2 2023-10-02 11:16:37 -07:00
Daniel Imms e9390d0d91 Merge pull request #4832 from Tyriar/node-pty-update
node-pty@1.1.0-beta5
2023-10-02 11:14:14 -07:00
Daniel Imms f6c4aee928 Move benchmarks off removed node-pty apis 2023-10-02 11:05:33 -07:00
Daniel Imms a673b110f5 node-pty@1.1.0-beta5
This is needed to get the build working on the newly updated GH actions runners
2023-10-02 07:27:10 -07:00
tisilent cfde4d634f Check option changes 2023-10-01 20:39:10 +08:00
Per Bothner 4e4110aeb4 Merge branch 'master' into setcell-refactor 2023-09-28 10:46:03 -07:00
dependabot[bot] 4149aa0945 Bump get-func-name from 2.0.0 to 2.0.2
Bumps [get-func-name](https://github.com/chaijs/get-func-name) from 2.0.0 to 2.0.2.
- [Release notes](https://github.com/chaijs/get-func-name/releases)
- [Commits](https://github.com/chaijs/get-func-name/commits/v2.0.2)

---
updated-dependencies:
- dependency-name: get-func-name
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-27 21:02:12 +00:00
Daniel Imms 810cc1d47e Merge pull request #4827 from Tyriar/tyriar/4821
Bring back search clearActiveDecoration
2023-09-27 08:04:30 -07:00
Daniel Imms c08062420f Bring back search clearActiveDecoration
This was removed accidentally in 57db72d

Fixes #4821
2023-09-27 07:56:31 -07:00
Per Bothner bde7bdc11d Change setCellFromCodePoint API and rename to setCellFromCodepoint
Replace fg, bg, and eAttrs parameters by single IAttributeData parameter.
In addition to making for a simpler/cleaner API, it also increases flexibility
for future CellData or BufferLine changes.
(Rename function to reduce risk of using accidentally using old function.)

Also removed redundant eraseAttr parameter in deleteCells, insertCells, and replaceCells.
2023-09-25 18:21:02 -07:00
Ayman Bagabas d245e90185 Add playwright terminal test 2023-09-21 12:09:30 -04:00
Ayman Bagabas 092aeaeb6f Fix rename clipboard selection for clarity 2023-09-21 10:33:44 -04:00
Ayman Bagabas b22762b472 Fix tsconfigs, IDisposable, and add comments 2023-09-21 10:26:46 -04:00
Ayman Bagabas db5bfc7525 Add support to ANSI OSC52
Add support to ANSI OSC52 sequence to manipulate selection and clipboard
data. The sequence specs supports multiple clipboard selections but we
only support the common ones, system and primary clipboard selections.

This adds a new event listener to the common terminal module
`onClipboard` to allow external implementations to hook into it.

The addon uses the browser Clipboard API to read/write from and to the
clipboard. The default `ClipboardProvider` uses the browser Clipboard
API. This means it only supports read/write to and from the system
clipboard.

Reference: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
Fixes: xtermjs#3260
Signed-off-by: Ayman Bagabas <ayman.bagabas@gmail.com>
2023-09-20 17:46:52 -04:00
Daniel Imms a3e933d98b Merge pull request #4820 from Tyriar/4814
Don't re-render after parse is the viewport did not change
2023-09-20 06:51:08 -07:00
Daniel Imms 543b82567f Don't re-render after parse is the viewport did not change
Fixes #4814
2023-09-20 06:43:21 -07:00
Daniel Imms cfc94b332a Merge pull request #4816 from tisilent/fix-domrenderer-selection-overflow
Add column restriction
2023-09-20 06:06:43 -07:00
tisilent f391cf6d43 Add column restriction 2023-09-20 18:40:03 +08:00
tisilent da2687174f 💄 2023-09-19 22:49:53 +08:00
tisilent a8ef1d49a1 Add block cursor style confirmation 2023-09-19 22:15:35 +08:00
tisilent feb75a7f4d Add getCellColorFirstPoint function 2023-09-19 21:58:08 +08:00
tisilent 27fd011e35 Add regression tests 2023-09-19 20:29:28 +08:00
Daniel Imms 03f1336042 Merge pull request #4809 from silamon/correct-typing-graphemes
Correct graphemes addon readme and typings
2023-09-16 07:36:31 -07:00
Simon Lamon fbf7d7adb5 Fix typos in readme 2023-09-16 08:09:22 +00:00
Simon Lamon da041f43ee correct typing graphemes 2023-09-16 08:04:32 +00:00
Daniel Imms a6f57262f6 Merge pull request #4807 from mofux/isolate-width-cache-element
Move WidthCache measure container to helper container
2023-09-15 07:45:15 -07:00
Daniel Imms aa5ec44c27 Merge pull request #4808 from tisilent/#4736-add-regression-test
Add regression test,checking inactive selection.
2023-09-15 04:31:30 -07:00
Daniel Imms 446549a043 Tweak name, order in issue number 2023-09-15 04:23:47 -07:00
tisilent ef21ed901f Add regression test,checking inactive selection. 2023-09-15 18:57:17 +08:00
Thomas Zilz aaadefa548 Move WidthCache measure container to helper container 2023-09-15 10:51:31 +02:00
Daniel Imms 0e66d608a1 Merge pull request #4803 from tisilent/clear-repeat-overviewRulerWidth
Clear repeat overviewRulerWidth option in demo
2023-09-14 12:52:44 -07:00
Daniel Imms 1618092b91 Merge pull request #4798 from tisilent/fix-domrenderer-isCursorInitialized
using isCursorInitialized for domrenderer
2023-09-14 12:41:30 -07:00
Daniel Imms 2f9439b690 Explain injectSharedRendererTestsStandalone 2023-09-14 12:35:12 -07:00
Daniel Imms 66c8e33b47 Add standalone renderer tests to canvas/webgl 2023-09-14 12:33:34 -07:00
tisilent 9048ded5eb Clear repeat overviewRulerWidth option in demo 2023-09-14 17:26:30 +08:00
tisilent 17575e1d7b using viewport relative coordinate 2023-09-14 16:37:40 +08:00
tisilent 49dc046b9f rename and remove new page 2023-09-14 09:52:58 +08:00
tisilent 27d89c2311 Reduce side effects 2023-09-14 00:47:37 +08:00
tisilent 871400f407 Open a new page to perform testing. 2023-09-13 23:28:37 +08:00
tisilent a1229c78a2 Add cursor initialize test 2023-09-13 18:43:04 +08:00
tisilent 457060f89d Modify the isCursorInitialized default true 2023-09-13 18:15:37 +08:00
tisilent cc14bc4515 using isCursorInitialized for domrenderer 2023-09-13 17:34:31 +08:00
Daniel Imms bdb25c2dbe Merge pull request #4519 from PerBothner/clusters
New unicode-graphemes addon.
2023-09-12 13:56:27 -07:00
Daniel Imms 32c616512d Final polish 2023-09-12 12:45:29 -07:00
Daniel Imms 16bd8de78e Merge pull request #4796 from Tyriar/slow_trace
Remove noisy trace calls
2023-09-12 12:38:48 -07:00
Daniel Imms 3ad0ef1ac4 Remove noisy trace calls
These were added to try diagnose a rendering issue but I haven't had
reports yet and these logs slow the terminal to a crawl which is
impacting my patience/productivity
2023-09-12 12:31:36 -07:00
Daniel Imms cb8917557d Merge pull request #4795 from ujjwalpandey922/master
change repository URL of all addons
2023-09-12 09:07:00 -07:00
Daniel Imms 8183d1d221 Merge branch 'master' into clusters 2023-09-12 09:02:24 -07:00
Daniel Imms 9ab0cd648e Set repository to sub-directory
See #4795
2023-09-12 09:02:15 -07:00
Ujjwal Pandey 249e1152f4 remove gitpod file 2023-09-12 15:44:17 +00:00
Ujjwal Pandey d41b747aa1 change repository url of all addons 2023-09-12 14:59:08 +00:00
Megan Rogge f69fcb971c get voiceover to announce terminal output consistently (#4789)
* fix #3247

* rm import
2023-09-11 13:03:57 -05:00
Daniel Imms bfa6f656ef Merge branch 'master' into underline-dotted 2023-09-11 08:47:04 -07:00
Daniel Imms 24b932d67a Update to es2021 2023-09-11 06:34:32 -07:00
Daniel Imms 9e536ca9c3 Fix warnings in client.ts 2023-09-11 06:28:54 -07:00
Daniel Imms 17c4d097bb Add experimental note in readme 2023-09-11 06:06:58 -07:00
Daniel Imms 1b5756c1b1 Add unicode-grapheme addon files to build artifacts 2023-09-11 06:04:55 -07:00
Daniel Imms a003034b02 Increase node memory for lint in CI 2023-09-11 06:02:17 -07:00
Per Bothner bddff604c2 Merge branch 'master' into clusters 2023-09-10 17:20:40 -07:00
Daniel Imms b2c123e0e2 Merge pull request #4787 from Tyriar/pw_tweak
Tweak playwright workers
2023-09-10 09:04:27 -07:00
Daniel Imms be82ffc01d Merge pull request #4786 from Tyriar/4773
Fix block cursor rendering in DOM renderer
2023-09-10 09:00:45 -07:00
Daniel Imms efcca3fb3e Run pw tests faster on high core machines 2023-09-10 08:56:36 -07:00
Daniel Imms b91de01a4d Fix initial args not being passed through to pw 2023-09-10 08:56:19 -07:00
Daniel Imms 6b1c1e0751 Force 50% workers in CI to reduce flakiness 2023-09-10 08:56:04 -07:00
Daniel Imms 8985326dd8 Merge pull request #4743 from Tyriar/es2021
Upgrade es6 -> es2021
2023-09-10 08:33:48 -07:00
Daniel Imms c609f5cca0 Add regression test for block cursor focus/selection 2023-09-10 08:30:43 -07:00
Daniel Imms 3b15fb6211 Fix block cursor rendering in DOM renderer
Fixes #4773
2023-09-10 08:27:18 -07:00
Daniel Imms a7eb112d36 Merge pull request #4785 from Tyriar/4757
Fix possible exception when disposing terminal
2023-09-10 08:26:22 -07:00
Daniel Imms cc43fe5191 Fix possible exception when disposing terminal
Fixes #4757
2023-09-10 08:19:46 -07:00
Daniel Imms cfced0caf1 Merge pull request #4784 from Tyriar/server-debug
Fix server debugging
2023-09-10 07:52:45 -07:00
Daniel Imms fc18e6e774 Merge pull request #4783 from Tyriar/4781
Fix regression in force mouse selection
2023-09-10 07:48:55 -07:00
Daniel Imms 1d57ac5c63 Fix server debugging
This broke somewhere along the way, the changes update from the legacy
attach method of --inspect-brk to stopOnEntry and also updates for the
introduction of .nvmrc.
2023-09-10 07:46:00 -07:00
Daniel Imms b55d699451 Fix regression in force mouse selection
Shift+left click is means to force terminal selection and not passthrough
any mouse events, even if a mouse mode is enabled. The change this is
reverting from #4583 caused this feature to break by always installing a
global listener on Terminal.element so the SelectionService never got a
chance to cancel is.

Fixes #4781
2023-09-10 07:41:31 -07:00
Daniel Imms 4241704261 Merge pull request #4782 from Tyriar/edge_debug
Add edge debug target
2023-09-10 07:24:21 -07:00
Daniel Imms b50d21434e Add edge debug target 2023-09-10 07:23:54 -07:00
Daniel Imms c3fd1c2c40 Merge pull request #4778 from Tyriar/4759
Fix webgl/dom inverse MCR edge cases, add regression test
2023-09-09 09:08:33 -07:00
Daniel Imms fe4528c9be Add one regression test to canvas exceptions 2023-09-09 09:00:57 -07:00
Daniel Imms b0868967cb Fix inverse MCR with selection for dom renderer
Fixes #4759
2023-09-09 08:52:43 -07:00
Daniel Imms 1aac37e14f Improve regression tests for 4759 2023-09-09 08:51:50 -07:00
Daniel Imms 851c2e39af Fix webgl not respecting MCR for inverse
Part of #4759
2023-09-09 08:37:55 -07:00
Daniel Imms d2387342ce Merge pull request #4777 from Tyriar/4769
Fix MCR test on webkit, add pollForApproximate
2023-09-09 07:52:47 -07:00
Daniel Imms 1792eaf05f Fix MCR test on webkit, add pollForApproximate
Fixes #4769
2023-09-09 07:45:31 -07:00
Daniel Imms 36bf3ebff3 Merge pull request #4776 from Tyriar/4775
Fix viewport error during term dispose
2023-09-09 07:20:03 -07:00
Daniel Imms 681ba4887f Fix viewport error during term dispose
Fixes #4775
2023-09-09 07:11:32 -07:00
Daniel Imms b7f28c56a9 Merge pull request #4774 from Tyriar/4772
Avoid block elements in renderer tests
2023-09-09 06:57:31 -07:00
Daniel Imms 575cd8d28b Avoid block elements in renderer tests
Fixes #4772
2023-09-09 06:51:13 -07:00
Daniel Imms 3d440e21bd Merge pull request #4763 from tisilent/fix-selection-background-domrenderer
DomRenderer draw selection inactive background correctly when unfocused
2023-09-09 06:37:00 -07:00
Daniel Imms a10113543b Check add empty cells that are being asserted on 2023-09-09 06:28:07 -07:00
Daniel Imms 50369713de Merge branch 'master' into fix-selection-background-domrenderer 2023-09-09 06:16:42 -07:00
Daniel Imms 2f2154c13b Merge pull request #4762 from tisilent/Fix-Domrenderer-Invisible
Add handling of invisible
2023-09-09 06:16:16 -07:00
Daniel Imms 056206d7a4 Clear theme at start of every renderer test 2023-09-09 06:09:07 -07:00
Daniel Imms 57ab29bb85 Handle canvas renderer's more delayed rendering 2023-09-09 06:02:32 -07:00
Daniel Imms 4e69307074 Add regression test 2023-09-09 05:59:24 -07:00
Daniel Imms 608a5e2329 Merge branch 'master' into Fix-Domrenderer-Invisible 2023-09-09 04:58:39 -07:00
Daniel Imms 5126481de2 Remove only 2023-09-09 04:55:56 -07:00
Daniel Imms fa168bd4c0 Add a test which fails without the change 2023-09-08 20:21:58 -07:00
Daniel Imms f159a862e4 Add default xterm.js theme inactive selection bg 2023-09-08 19:57:17 -07:00
Daniel Imms 9f5ff468e1 Remove selection color test buttons
There's too many theme colors, we'll leave it to the console
2023-09-08 19:55:25 -07:00
Daniel Imms 65e07dcebc Merge branch 'master' into fix-selection-background-domrenderer 2023-09-08 19:50:29 -07:00
Daniel Imms cc83b9a4ca Merge pull request #4770 from Tyriar/tyriar/canvas_tests
Add canvas renderer tests
2023-09-08 14:27:38 -07:00
Daniel Imms 14872e091e Revert "Avoid importing os"
This reverts commit 2d74505208.
2023-09-08 14:21:18 -07:00
Daniel Imms 3d3f58b6ff Have playwright addon tests only start server, not build it 2023-09-08 14:10:37 -07:00
Daniel Imms b99158f8f0 Add workers back to playwright ci 2023-09-08 13:30:27 -07:00
Daniel Imms 2d74505208 Avoid importing os 2023-09-08 13:26:10 -07:00
Daniel Imms 534b03b99f Revert "Put webgl first"
This reverts commit 4af4d8dcc6.
2023-09-08 13:19:29 -07:00
Daniel Imms 4af4d8dcc6 Put webgl first 2023-09-08 13:12:49 -07:00
Daniel Imms 298c5b2041 Split up playwright suites into steps 2023-09-08 13:09:47 -07:00
Daniel Imms 328e97336b Try space out suites 2023-09-08 12:58:33 -07:00
Daniel Imms 2e10a7f097 Add window prefer to global symbols 2023-09-08 12:42:26 -07:00
Daniel Imms 1798cab222 Remove webgl canvas check
It complicates loading the addon
2023-09-08 12:37:53 -07:00
Daniel Imms ebd27de4e1 Re-enable core tests 2023-09-08 12:31:27 -07:00
Daniel Imms beeff131a9 Disable canvas tests on webkit 2023-09-08 12:28:08 -07:00
Daniel Imms 408240dd97 Tweak canvas renderer test 2023-09-08 12:22:38 -07:00
Daniel Imms 71eb897708 Add npm start to canvas 2023-09-08 12:17:22 -07:00
Daniel Imms 02aadf7c3e Remove firefox exception from canvas 2023-09-08 12:17:00 -07:00
Daniel Imms 98e8c6ac73 Add canvas renderer tests 2023-09-08 12:16:16 -07:00
Daniel Imms 34933d2c76 Merge pull request #4768 from Tyriar/renderer_pw
DOM renderer playwright tests
2023-09-08 11:36:39 -07:00
Daniel Imms a0c34b19df Skip webgl tests on linux/firefox 2023-09-08 10:52:21 -07:00
Daniel Imms 48ba5e5856 Add npm start to webgl package.json 2023-09-08 10:35:38 -07:00
Daniel Imms 47183b2939 Fix relative path 2023-09-08 10:31:30 -07:00
Daniel Imms 9b9062aea4 Run npm start using relative cwd 2023-09-08 10:27:14 -07:00
Daniel Imms cdf02d54da Share test code between dom and webgl 2023-09-08 10:22:13 -07:00
Daniel Imms 413e884efb Use faster pixel check method with caching 2023-09-08 10:12:06 -07:00
Daniel Imms 070d194c6c Migrate webgl to playwright/test, add unified runner script 2023-09-08 10:04:25 -07:00
Daniel Imms e54755b074 Skip failure on WebKit 2023-09-08 08:37:06 -07:00
Daniel Imms db608e33fb Fix remaining dom renderer tests 2023-09-08 08:26:49 -07:00
Daniel Imms b543842fc0 Fix dom MCR tests 2023-09-08 08:23:20 -07:00
Daniel Imms 97be015234 All tests copied over, some failing 2023-09-08 08:08:45 -07:00
Daniel Imms a656409bb5 All color dom renderer tests 2023-09-08 08:04:36 -07:00
Daniel Imms ea45b04105 First working dom renderer api tests
Part of #4767
2023-09-08 07:47:14 -07:00
Daniel Imms 66a6ecea14 Improve playwright debug logging 2023-09-08 07:46:45 -07:00
Daniel Imms f23af3661b wip 2023-09-08 07:28:41 -07:00
tisilent 2f233f2389 💄 2023-09-08 18:52:11 +08:00
tisilent 393a8b3a86 When DomRenderer blue,perform rendering. 2023-09-08 18:08:14 +08:00
tisilent c64115e0a0 Add handling of invisible 2023-09-08 17:34:03 +08:00
Per Bothner 427c472f6f Merge branch 'master' into clusters 2023-09-07 12:01:56 -07:00
Daniel Imms c1882eb1ff Merge branch 'master' into es2021 2023-09-07 10:03:17 -07:00
Per Bothner 9963c58511 Two testing-related fixes 2023-09-07 09:49:37 -07:00
Per Bothner 930e5c4280 Merge branch 'master' into clusters 2023-09-06 22:11:46 -07:00
Per Bothner 630d213bd0 Fix 2 comment typos. 2023-09-06 16:42:58 -07:00
Daniel Imms 82b6dd1ac8 Merge branch 'master' into es2021 2023-09-03 07:20:20 -07:00
Daniel Imms ceef536b79 Upgrade es6 -> es2021
This uses the recommended target for node 16 in tsconfig/bases.

Fixes #4706
2023-09-01 07:36:48 -07:00
YAYA 刘玉婷 7fa56fde0b Merge branch 'master' into underline-dotted 2023-09-01 14:12:01 +08:00
Per Bothner 44e19775f5 Merge branch 'master' into clusters 2023-08-27 11:58:57 -07:00
tisilent 42d6c2bd6b Use hex 2023-08-25 14:37:03 +08:00
tisilent 810e62665f Clean 2023-08-25 14:30:34 +08:00
tisilent bec1642123 Modify variantOffset calculation logic 2023-08-25 14:17:36 +08:00
xie jialong 努力鸭andDaniel Imms 08f7b4c53c Update src/browser/renderer/shared/CellColorResolver.ts
Co-authored-by: Daniel Imms <2193314+Tyriar@users.noreply.github.com>
2023-08-25 10:34:31 +08:00
xie jialong 努力鸭andDaniel Imms d15abd7f28 Update src/browser/renderer/shared/CellColorResolver.ts
Co-authored-by: Daniel Imms <2193314+Tyriar@users.noreply.github.com>
2023-08-25 10:33:22 +08:00
Per Bothner dc6dd6d2a8 Remove precedingCodepoint - use precedingJoinState instead
repeatPrecedingCharacter (for REP sequence) changed to look at
the grapheme cluser to the "left" in the BufferLine, and repeat that.
This is an extension of the xterm behavior, and changes the
semantics of REP, so is not fully compatible.
However, the new behavior is cleaner and saner.

Moved precedingJoinState property to EscapeSequenceParser.
2023-08-24 07:58:06 -07:00
Daniel Imms f4881872f7 Remove unused private prop 2023-08-24 06:12:56 -07:00
Daniel Imms f1f0191d98 Merge branch 'master' into underline-dotted 2023-08-24 06:02:48 -07:00
tisilent 6ace416224 Add license header 2023-08-24 15:55:24 +08:00
tisilent 52c87bc8b3 Add tests for computeVarinatOffset 2023-08-24 14:46:30 +08:00
tisilent edfacbb5c6 Adjusting the execution process 2023-08-24 11:54:18 +08:00
tisilent 564371eae7 Clean unused member 2023-08-24 11:38:51 +08:00
tisilent e09ed98cf1 Merge branch 'underline-dotted' of https://github.com/tisilent/xterm.js into underline-dotted 2023-08-24 11:05:05 +08:00
tisilent 2b0106f7e2 Logic move to CellColorResolver 2023-08-24 10:57:05 +08:00
Daniel Imms 5ccf4d3311 Merge remote-tracking branch 'upstream/master' into pr/PerBothner/4519-1 2023-08-23 05:09:42 -07:00
Daniel Imms 1f3143cfab Remove unused member 2023-08-23 05:07:44 -07:00
Daniel Imms f5d128b0d5 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4703 2023-08-23 05:02:07 -07:00
tisilent 25afc19895 Merge branch 'underline-dotted' of https://github.com/tisilent/xterm.js into underline-dotted 2023-08-23 09:33:20 +08:00
Daniel Imms 68ded1a5b4 Merge branch 'master' into underline-dotted 2023-08-22 07:47:42 -07:00
tisilent 5f0647f0ab clean 2023-08-22 09:35:12 +08:00
tisilent fe7f17f422 clean 2023-08-22 09:26:01 +08:00
Per Bothner e5a2ebda0e Provide with "15" and "15-graphemes" UnicodeProviders
Th former doesn't support grapheme clusters, except the old-fashioned
kind of simple modifiers.  However, "15-graphemes" (with full
cluster support) is the default.
2023-08-21 13:03:06 -07:00
Per Bothner 2204375788 Merge branch 'master' into clusters 2023-08-21 07:59:15 -07:00
tisilent c81dfee43c Using ext to store variants. 2023-08-21 20:54:16 +08:00
tisilent cb175e513d Variants to Canvas. 2023-08-21 19:45:38 +08:00
tisilent 32da1d81d5 Use variants for underline dotted.
webgl
2023-08-21 19:09:02 +08:00
Daniel Imms e21e52569c Merge branch 'master' into clusters 2023-08-18 15:20:02 -07:00
Per Bothner 00fd2b8503 Set unicode.activeVersion when loading UnicodeGraphemeProvider. 2023-08-18 14:17:39 -07:00
Per Bothner 21fd545381 Don't load unicode11 addon on demo startup. 2023-08-18 08:46:33 -07:00
Per Bothner 6c1eb97a18 Remove no-longer-applicable comment. 2023-08-17 14:53:23 -07:00
Per Bothner 2070cc45d4 Merge branch 'master' into clusters 2023-08-17 13:29:22 -07:00
Per Bothner f1bc95622d Add more grapheme-cluster examples to test and demo 2023-08-17 13:23:10 -07:00
Per Bothner e3d3cdb9d2 Merge branch 'master' into clusters 2023-08-17 09:17:14 -07:00
Per Bothner 5994e25841 Merge branch 'master' into clusters 2023-08-15 09:20:47 -07:00
Per Bothner cf243adfe3 Merge branch 'master' into clusters 2023-08-14 12:22:55 -07:00
Per Bothner aac5d4704e Merge branch 'master' into clusters 2023-08-10 12:24:51 -07:00
Per Bothner fb2c6801d4 Replace comments by assert message in unicode-graphemes tests
Also use plain equal instead of deepEqual (overkill).
2023-08-10 11:39:47 -07:00
jerch 9b21786062 Merge branch 'master' into clusters 2023-08-10 18:31:04 +02:00
Per Bothner 3bfe5d86c0 Add testOptions parameter to openTerminal in TestUtils.
This is used to control whether the UnicodeGraphemesAddon is loaded.
2023-08-09 14:44:45 -07:00
Per Bothner b9a4760b44 Move files imported from unicode-properties into subdirectory
Specifically  addons/xterm-addon-unicode-graphemes/src/third-party/.
2023-08-08 18:32:37 -07:00
Per Bothner 302da18c81 Rename local variable precedingInfo in InputHandler to precedingJoinState 2023-08-07 13:08:35 -07:00
Per Bothner 4fbc623706 Expand doc comments for UnicodeCharProperties and UnicodeCharWidth. 2023-08-07 11:55:52 -07:00
Per Bothner b9abbc0a85 Split complicated conditional expression. 2023-08-07 11:10:06 -07:00
Per Bothner f1035405e6 Move precedingJoinState from EscapeSequenceParser to InputHandler
This allows InputHandler._parser to be IEscapeSequenceParser
rather than EscapeSequenceParser.
2023-08-06 12:44:43 -07:00
Per Bothner 720297946b Changed xterm-addon-unicode-graphemes version number to 0.1.0. 2023-08-06 11:53:11 -07:00
Per Bothner 988b3b1ab2 Remove tailing space. 2023-08-06 11:52:39 -07:00
Per Bothner 88bfc6bb2b Tweak charProperties doc comment. 2023-08-06 08:28:08 -07:00
Per Bothner a0dc88165f Fix copyright year in new file. 2023-08-06 08:20:52 -07:00
Per Bothner dccfc11b4f Tweak to avoid line-ending spaces.
Line-ending spaces were unintentionally removed - this avoids the problem,
2023-08-06 08:19:14 -07:00
Per Bothner 42042155d4 Merge branch 'master' into clusters 2023-08-03 22:30:46 -07:00
Per Bothner 6b2459317b Null out following columns after grapheme cluster 2023-08-03 22:29:36 -07:00
Daniel Imms 08a0914a78 Add grapheme cluster test button to demo 2023-08-02 11:59:30 -07:00
Daniel Imms 7baff4e249 Merge branch 'master' into clusters 2023-08-02 11:41:22 -07:00
Per Bothner 556823328f Fix for lint the previous charProperties change. 2023-06-28 15:33:55 -07:00
Per Bothner dc6818de2b Fix error in charProperties optimization.
Result should be 2, not 1.
Use a static field to avoid this kind of error
(though it might be slightly slower, depending on the compiler/toolchain).
2023-06-28 15:19:44 -07:00
Per Bothner 693f6b2d14 Merge branch 'master' into clusters 2023-06-27 13:31:23 -07:00
jerch cf403bc45c Merge branch 'master' into clusters 2023-05-21 22:25:34 +02:00
Per Bothner fa89e1776b Optimize UnicodeGraphemeProvider for the ASCII case. 2023-05-21 10:29:13 -07:00
Per Bothner 1a8c7dad5f Update .eslintrc.json to include xterm-addon-unicode-graphemes/benchmark 2023-05-21 10:27:36 -07:00
Per Bothner e87fa1600d Merge pull request #2 from jerch/clusters-patch
working perf test and API test injection
2023-05-21 08:19:55 -07:00
Jörg Breitbart 3003185676 revert wrongly editied files 2023-05-20 15:29:38 +02:00
Jörg Breitbart ebfa2018dd revert wrong added file 2023-05-20 15:28:15 +02:00
Jörg Breitbart 68abf10c25 remove spurious .only 2023-05-20 15:24:56 +02:00
Jörg Breitbart 284cde8b1b fix benchmark 2023-05-20 15:14:37 +02:00
Jörg Breitbart 466501c62f patch for working perf test and API test injection 2023-05-20 15:05:32 +02:00
Per Bothner 9c34bb4160 Merge branch 'master' into clusters 2023-05-18 11:19:26 -07:00
Per Bothner 8e730cdc61 xterm-addon-unicode-graphemes: add api tests and get demo working 2023-05-18 11:11:38 -07:00
Per Bothner 41760dfb09 xterm-addon-unicode-graphemes - fix 'yarn test' 2023-05-18 08:55:52 -07:00
Per Bothner 67e968926c Cleanup - fix various tests. 2023-05-17 18:37:27 -07:00
Per Bothner 2f7fe1189c New unicode-graphemes addon.
Handle grapheme cluster lookup as well as wcwidth.
This is based on Unicode 15, and could replace the unicode11 addon.
2023-05-16 18:31:31 -07:00
498 changed files with 32127 additions and 8819 deletions
+5 -3
View File
@@ -1,13 +1,15 @@
{
"name": "xterm.js",
"image": "mcr.microsoft.com/devcontainers/typescript-node:0-18-buster",
"image": "mcr.microsoft.com/devcontainers/typescript-node:18-bookworm",
"features": {
"ghcr.io/devcontainers/features/node:1": {} // yarn
"ghcr.io/devcontainers/features/node:1": {
"version": 18
} // yarn
},
"forwardPorts": [
3000
],
"postCreateCommand": "yarn install",
"postCreateCommand": "yarn install && yarn setup",
"customizations": {
"vscode": {
"extensions": [
+52 -36
View File
@@ -1,7 +1,7 @@
{
"env": {
"browser": true,
"es6": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser",
@@ -11,43 +11,70 @@
"src/browser/tsconfig.json",
"src/common/tsconfig.json",
"src/headless/tsconfig.json",
"test/api/tsconfig.json",
"src/vs/tsconfig.json",
"test/benchmark/tsconfig.json",
"test/playwright/tsconfig.json",
"addons/xterm-addon-attach/src/tsconfig.json",
"addons/xterm-addon-attach/test/tsconfig.json",
"addons/xterm-addon-canvas/src/tsconfig.json",
"addons/xterm-addon-fit/src/tsconfig.json",
"addons/xterm-addon-fit/test/tsconfig.json",
"addons/xterm-addon-image/src/tsconfig.json",
"addons/xterm-addon-image/test/tsconfig.json",
"addons/xterm-addon-ligatures/src/tsconfig.json",
"addons/xterm-addon-search/src/tsconfig.json",
"addons/xterm-addon-search/test/tsconfig.json",
"addons/xterm-addon-serialize/src/tsconfig.json",
"addons/xterm-addon-serialize/test/tsconfig.json",
"addons/xterm-addon-serialize/benchmark/tsconfig.json",
"addons/xterm-addon-unicode11/src/tsconfig.json",
"addons/xterm-addon-unicode11/test/tsconfig.json",
"addons/xterm-addon-web-links/src/tsconfig.json",
"addons/xterm-addon-web-links/test/tsconfig.json",
"addons/xterm-addon-webgl/src/tsconfig.json",
"addons/xterm-addon-webgl/test/tsconfig.json"
"addons/addon-attach/src/tsconfig.json",
"addons/addon-attach/test/tsconfig.json",
"addons/addon-clipboard/src/tsconfig.json",
"addons/addon-clipboard/test/tsconfig.json",
"addons/addon-fit/src/tsconfig.json",
"addons/addon-fit/test/tsconfig.json",
"addons/addon-image/src/tsconfig.json",
"addons/addon-image/test/tsconfig.json",
"addons/addon-ligatures/src/tsconfig.json",
"addons/addon-progress/src/tsconfig.json",
"addons/addon-progress/test/tsconfig.json",
"addons/addon-search/src/tsconfig.json",
"addons/addon-search/test/tsconfig.json",
"addons/addon-serialize/src/tsconfig.json",
"addons/addon-serialize/test/tsconfig.json",
"addons/addon-serialize/benchmark/tsconfig.json",
"addons/addon-unicode11/src/tsconfig.json",
"addons/addon-unicode11/test/tsconfig.json",
"addons/addon-unicode-graphemes/src/tsconfig.json",
"addons/addon-unicode-graphemes/test/tsconfig.json",
"addons/addon-unicode-graphemes/benchmark/tsconfig.json",
"addons/addon-web-links/src/tsconfig.json",
"addons/addon-web-links/test/tsconfig.json",
"addons/addon-webgl/src/tsconfig.json",
"addons/addon-webgl/test/tsconfig.json"
],
"sourceType": "module"
},
"ignorePatterns": [
"addons/*/src/third-party/*.ts",
"src/vs/*",
"out/*",
"out-test/*",
"out-esbuild/*",
"out-esbuild-test/*",
"**/inwasm-sdks/*",
"**/typings/*.d.ts",
"**/node_modules",
"**/*.js"
"**/*.js",
"**/*.mjs"
],
"plugins": [
"@stylistic/ts",
"@typescript-eslint",
"jsdoc"
],
"rules": {
"no-extra-semi": "error",
"@stylistic/ts/indent": [
"warn",
2
],
"@stylistic/ts/semi": [
"warn",
"always"
],
"@stylistic/ts/quotes": [
"warn",
"single",
{ "allowTemplateLiterals": true }
],
"@typescript-eslint/array-type": [
"warn",
{
@@ -72,10 +99,6 @@
}
}
],
"@typescript-eslint/indent": [
"warn",
2
],
"@typescript-eslint/member-delimiter-style": [
"warn",
{
@@ -135,15 +158,7 @@
"@typescript-eslint/no-useless-constructor": "warn",
"@typescript-eslint/prefer-namespace-keyword": "warn",
"@typescript-eslint/type-annotation-spacing": "warn",
"@typescript-eslint/quotes": [
"warn",
"single",
{ "allowTemplateLiterals": true }
],
"@typescript-eslint/semi": [
"warn",
"always"
],
"comma-dangle": [
"warn",
{
@@ -184,6 +199,7 @@
}
],
"no-eval": "warn",
"no-extra-semi": "error",
"no-irregular-whitespace": "warn",
"no-restricted-imports": [
"warn",
+18 -15
View File
@@ -1,16 +1,30 @@
{
"env": {
"browser": true,
"es6": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser",
"plugins": [
"@stylistic/ts",
"@typescript-eslint",
"jsdoc"
],
"rules": {
"no-extra-semi": "error",
"@stylistic/ts/indent": [
"warn",
2
],
"@stylistic/ts/semi": [
"warn",
"always"
],
"@stylistic/ts/quotes": [
"warn",
"single",
{ "allowTemplateLiterals": true }
],
"@typescript-eslint/array-type": [
"warn",
{
@@ -24,10 +38,6 @@
"allowExpressions": true
}
],
"@typescript-eslint/indent": [
"warn",
2
],
"@typescript-eslint/member-delimiter-style": [
"warn",
{
@@ -48,15 +58,7 @@
],
"@typescript-eslint/prefer-namespace-keyword": "warn",
"@typescript-eslint/type-annotation-spacing": "warn",
"@typescript-eslint/quotes": [
"warn",
"single",
{ "allowTemplateLiterals": true }
],
"@typescript-eslint/semi": [
"warn",
"always"
],
"comma-dangle": [
"warn",
{
@@ -86,6 +88,7 @@
"ignorePattern": "^ *(?<ps_description>\\* Ps=)"
}
],
"no-extra-semi": "error",
"no-irregular-whitespace": "warn",
"no-trailing-spaces": "warn",
"object-curly-spacing": [
+10
View File
@@ -0,0 +1,10 @@
This is a TypeScript-based repository with a Ruby client for certain API endpoints. It includes several sub projects called addons which are built separately. It contains a demo application which showcases the functionality of the project.
Please follow these guidelines when contributing:
## Development Flow
- Install dependencies: `npm install && npm run setup`
- Build and bundle demo: `npm run build && npm run esbuild`
- Run unit tests: `npm run test-unit`
- Run playwright-based integration tests: `npm run test-integration`
+86 -117
View File
@@ -19,35 +19,54 @@ jobs:
cache: 'yarn'
- name: Install dependencies
run: yarn --frozen-lockfile
- name: Build
- name: Setup and run tsc
run: yarn setup
- name: Esbuild
run: yarn esbuild
- name: Zip artifacts
run: |
zip -r compressed-build \
./lib/* \
./out/* \
./out-test/* \
./addons/xterm-addon-attach/out/* \
./addons/xterm-addon-attach/out-test/* \
./addons/xterm-addon-canvas/out/* \
./addons/xterm-addon-canvas/out-test/* \
./addons/xterm-addon-fit/out/* \
./addons/xterm-addon-fit/out-test/* \
./addons/xterm-addon-image/out/* \
./addons/xterm-addon-image/out-test/* \
./addons/xterm-addon-ligatures/out/* \
./addons/xterm-addon-ligatures/out-test/* \
./addons/xterm-addon-search/out/* \
./addons/xterm-addon-search/out-test/* \
./addons/xterm-addon-serialize/out/* \
./addons/xterm-addon-serialize/out-test/* \
./addons/xterm-addon-unicode11/out/* \
./addons/xterm-addon-unicode11/out-test/* \
./addons/xterm-addon-web-links/out/* \
./addons/xterm-addon-web-links/out-test/* \
./addons/xterm-addon-webgl/out/* \
./addons/xterm-addon-webgl/out-test/*
./out-*/* \
./addons/addon-attach/lib/* \
./addons/addon-attach/out/* \
./addons/addon-attach/out-*/* \
./addons/addon-clipboard/lib/* \
./addons/addon-clipboard/out/* \
./addons/addon-clipboard/out-*/* \
./addons/addon-fit/lib/* \
./addons/addon-fit/out/* \
./addons/addon-fit/out-*/* \
./addons/addon-image/lib/* \
./addons/addon-image/out/* \
./addons/addon-image/out-*/* \
./addons/addon-ligatures/lib/* \
./addons/addon-ligatures/out/* \
./addons/addon-ligatures/out-*/* \
./addons/addon-progress/lib/* \
./addons/addon-progress/out/* \
./addons/addon-progress/out-*/* \
./addons/addon-search/lib/* \
./addons/addon-search/out/* \
./addons/addon-search/out-*/* \
./addons/addon-serialize/lib/* \
./addons/addon-serialize/out/* \
./addons/addon-serialize/out-*/* \
./addons/addon-unicode11/lib/* \
./addons/addon-unicode11/out/* \
./addons/addon-unicode11/out-*/* \
./addons/addon-unicode-graphemes/lib/* \
./addons/addon-unicode-graphemes/out/* \
./addons/addon-unicode-graphemes/out-*/* \
./addons/addon-web-links/lib/* \
./addons/addon-web-links/out/* \
./addons/addon-web-links/out-*/* \
./addons/addon-webgl/lib/* \
./addons/addon-webgl/out/* \
./addons/addon-webgl/out-*st/*
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: compressed-build.zip
@@ -68,6 +87,8 @@ jobs:
yarn --frozen-lockfile
yarn install-addons
- name: Lint code
env:
NODE_OPTIONS: --max_old_space_size=4096
run: yarn lint
- name: Lint API
run: yarn lint-api
@@ -87,7 +108,7 @@ jobs:
run: |
yarn --frozen-lockfile
yarn install-addons
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: build-artifacts
- name: Unzip artifacts
@@ -106,7 +127,7 @@ jobs:
./node_modules/.bin/nyc report --reporter=cobertura
exit $EXIT_CODE
test-unit-parallel:
test-unit:
timeout-minutes: 20
strategy:
matrix:
@@ -129,7 +150,7 @@ jobs:
with:
token: ${{ secrets.GITHUB_TOKEN }}
job: build
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: build-artifacts
- name: Unzip artifacts
@@ -144,89 +165,14 @@ jobs:
- name: Unit tests
run: yarn test-unit --forbid-only
test-unit:
needs: build
timeout-minutes: 20
strategy:
matrix:
node-version: [16]
runs-on: [ubuntu, macos, windows]
runs-on: ${{ matrix.runs-on }}-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}.x
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}.x
cache: 'yarn'
- name: Install dependencies
run: |
yarn --frozen-lockfile
yarn install-addons
- uses: actions/download-artifact@v3
with:
name: build-artifacts
- name: Unzip artifacts
shell: bash
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
pwsh -Command "7z x compressed-build.zip -aoa -o${{ github.workspace }}"
else
unzip -o compressed-build.zip
fi
ls -R
- name: Unit tests
run: yarn test-unit --forbid-only
test-api-parallel:
test-integration:
timeout-minutes: 20
strategy:
matrix:
node-version: [18] # just one as integration tests are about testing in browser
runs-on: [ubuntu] # macos is flaky
browser: [chromium, firefox]
runs-on: ${{ matrix.runs-on }}-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}.x
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}.x
cache: 'yarn'
- name: Install dependencies
run: |
yarn --frozen-lockfile
yarn install-addons
- name: Install playwright
run: npx playwright install
- name: Wait for build job
uses: NathanFirmo/wait-for-other-job@v1.1.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
job: build
- uses: actions/download-artifact@v3
with:
name: build-artifacts
- name: Unzip artifacts
shell: bash
run: |
if [ "$RUNNER_OS" == "Windows" ]; then
pwsh -Command "7z x compressed-build.zip -aoa -o${{ github.workspace }}"
else
unzip -o compressed-build.zip
fi
ls -R
- name: Integration tests (${{ matrix.browser }})
run: yarn test-api-${{ matrix.browser }} --headless --forbid-only
test-playwright-parallel:
timeout-minutes: 20
strategy:
matrix:
node-version: [18] # just one as integration tests are about testing in browser
runs-on: [ubuntu] # macos is flaky
runs-on: [ubuntu-22.04] # macos is flaky
browser: [chromium, firefox, webkit]
runs-on: ${{ matrix.runs-on }}-latest
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}.x
@@ -245,7 +191,7 @@ jobs:
with:
token: ${{ secrets.GITHUB_TOKEN }}
job: build
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: build-artifacts
- name: Unzip artifacts
@@ -258,19 +204,38 @@ jobs:
fi
ls -R
- name: Build demo
run: yarn build-demo
- name: Integration tests
run: yarn test-playwright-${{ matrix.browser }} --forbid-only
run: yarn esbuild-demo
- name: Integration tests (core) # Tests use 50% workers to reduce flakiness
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=core
- name: Integration tests (addon-attach)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-attach
- name: Integration tests (addon-clipboard)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-clipboard
- name: Integration tests (addon-fit)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-fit
- name: Integration tests (addon-image)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-image
- name: Integration tests (addon-progress)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-progress
- name: Integration tests (addon-search)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-search
- name: Integration tests (addon-serialize)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-serialize
- name: Integration tests (addon-unicode-graphemes)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-unicode-graphemes
- name: Integration tests (addon-unicode11)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-unicode11
- name: Integration tests (addon-web-links)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-web-links
- name: Integration tests (addon-webgl)
run: yarn test-integration-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-webgl
test-api:
release-dry-run:
needs: build
timeout-minutes: 20
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18] # just one as integration tests are about testing in browser
runs-on: [windows] # macos is flaky
browser: [chromium, firefox]
runs-on: ${{ matrix.runs-on }}-latest
node-version: [18]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}.x
@@ -284,7 +249,7 @@ jobs:
yarn install-addons
- name: Install playwright
run: npx playwright install
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: build-artifacts
- name: Unzip artifacts
@@ -296,5 +261,9 @@ jobs:
unzip -o compressed-build.zip
fi
ls -R
- name: Integration tests (${{ matrix.browser }})
run: yarn test-api-${{ matrix.browser }} --headless --forbid-only
- name: Package headless
run: |
yarn package-headless
node ./bin/package_headless.js
- name: Publish to npm (dry run)
run: node ./bin/publish.js --dry
+36
View File
@@ -0,0 +1,36 @@
name: "Copilot Setup Steps"
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: 'yarn'
- name: Install dependencies
run: yarn --frozen-lockfile
- name: Setup and run tsc
run: yarn setup
- name: Esbuild
run: yarn esbuild
+2
View File
@@ -4,6 +4,8 @@ node_modules/
lib/
out/
out-test/
out-esbuild/
out-esbuild-test/
.nyc_output/
Makefile.gyp
*.Makefile
+3
View File
@@ -17,6 +17,9 @@
!lib/**/*.js
!lib/**/*.js.map
!lib/**/*.mjs
!lib/**/*.mjs.map
!lib/**/*.css
# Whitelist - src/
+1 -1
View File
@@ -1 +1 @@
16
18
+11 -6
View File
@@ -43,7 +43,14 @@
{
"type": "chrome",
"request": "launch",
"name": "Demo Client",
"name": "Demo Client (Chrome)",
"url": "http://127.0.0.1:3000",
"webRoot": "${workspaceFolder}/"
},
{
"type": "msedge",
"request": "launch",
"name": "Demo Client (Edge)",
"url": "http://127.0.0.1:3000",
"webRoot": "${workspaceFolder}/"
},
@@ -52,11 +59,9 @@
"request": "launch",
"name": "Demo Server",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run",
"start-debug"
],
"port": 9229,
"runtimeArgs": ["start"],
"stopOnEntry": true,
"runtimeVersion": "18",
"serverReadyAction": {
"action": "openExternally",
"pattern": "App listening to (http://.*?:[0-9]+)"
+9 -2
View File
@@ -2,15 +2,22 @@
"files.associations": {
".eslintrc.json.typings": "jsonc"
},
"files.exclude": {
"**/.nyc_output": true
},
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.preferences.quoteStyle": "single",
"mochaExplorer.envPath": ".mocha.env",
"mochaExplorer.files": [
"out/**/*.test.js",
"addons/**/out/*.test.js"
"addons/**/out/*.test.js",
"out-*/**/*.test.js",
"addons/**/out-*/*.test.js"
],
"mochaExplorer.watch": [
"out/**/*.js",
"addons/**/out/*.js"
"addons/**/out/*.js",
"out-*/**/*.js",
"addons/**/out-*/*.js"
]
}
+60 -53
View File
@@ -8,6 +8,66 @@
"showReuseMessage": true
},
"tasks": [
// Compound tasks
{
"label": "Development",
"dependsOn": ["demo-server", "tsc", "esbuild", "esbuild-demo"],
"group": {
"kind": "build",
"isDefault": true
}
},
// Demo
{
"label": "demo-server",
"type": "npm",
"script": "start",
"group": "build",
"isBackground": true,
"problemMatcher": [],
"presentation": {
"group": "xterm-demo"
}
},
// Build
{
"label": "tsc",
"type": "npm",
"script": "tsc-watch",
"group": "build",
"isBackground": true,
"problemMatcher": "$tsc-watch",
"presentation": {
"group": "xterm-build"
}
},
{
"label": "esbuild",
"type": "npm",
"script": "esbuild-watch",
"group": "build",
"isBackground": true,
"problemMatcher": "$esbuild-watch",
"presentation": {
"group": "xterm-build"
}
},
{
"label": "esbuild-demo",
"type": "npm",
"script": "esbuild-demo-watch",
"dependsOn": ["esbuild", "tsc"],
"group": "build",
"isBackground": true,
"problemMatcher": "$esbuild-watch",
"presentation": {
"group": "xterm-demo"
}
},
// Test
{
"type": "npm",
"script": "test",
@@ -16,59 +76,6 @@
"isDefault": true
},
"problemMatcher": []
},
{
"label": "watch",
"type": "npm",
"script": "watch",
"group": "build",
"isBackground": true,
"problemMatcher": "$tsc-watch",
"presentation": {
"group": "vscode"
}
},
{
"label": "start",
"type": "npm",
"script": "start",
"group": "build",
"isBackground": true,
"problemMatcher": [],
"presentation": {
"group": "vscode"
}
},
{
"label": "Start demo",
"dependsOn": ["start", "watch"],
"group": {
"kind": "build",
"isDefault": true
},
"isBackground": true,
"problemMatcher": {
"owner": "typescript",
"fileLocation": [
"relative",
"${workspaceFolder}"
],
"pattern": [
{
"regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"beginsPattern": "assets by",
"endsPattern": "webpack \\d+\\.\\d+\\.\\d+ compiled successfully"
}
},
"presentation": {
"group": "vscode"
}
}
]
}
+42
View File
@@ -60,3 +60,45 @@ By contributing code to xterm.js you:
### Test coverage
One area that always needs attention is improving out unit test coverage, you can view the code coverage report on [Azure Pipelines](https://dev.azure.com/xtermjs/xterm.js/_build/latest?definitionId=3) by clicking the Code Coverage tab.
## Testing
### Unit tests
Unit tests are run with `yarn test-unit`:
```sh
# All unit tests
yarn test-unit
# Absolute file path
yarn test-unit out-esbuild/browser/Terminal.test.js
# Filter by wildcard
yarn test-unit out-esbuild/**/Terminal.test.js
# Specific addon unit tests tests
yarn test-unit addons/addon-image/out-esbuild/*.test.js
# Multiple files
yarn test-unit out-esbuild/**/Terminal.test.js out-esbuild/**/InputHandler.test.js
```
These use mocha to run all `.test.js` files within the esbuild output (`out-esbuild/`).
### Integration tests
Integration tests are run with `yarn test-integration`:
```sh
# All integration tests
yarn test-integration
# Core integration tests
yarn test-integration --suite=core
# Specific addon integration tests
yarn test-integration --suite=addon-search
```
These use `@playwright/test` to run all tests within the esbuild test output (`out-esbuild-test/`).
-2
View File
@@ -1,2 +0,0 @@
web: npm start
webpack: npm run watch
+26 -14
View File
@@ -1,4 +1,4 @@
# [![xterm.js logo](logo-full.png)](https://xtermjs.org)
# [![xterm.js logo](images/logo-full.png)](https://xtermjs.org)
Xterm.js is a front-end component written in TypeScript that lets applications bring fully-featured terminals to their users in the browser. It's used by popular projects such as VS Code, Hyper and Theia.
@@ -21,7 +21,7 @@ Xterm.js is a front-end component written in TypeScript that lets applications b
First, you need to install the module, we ship exclusively through [npm](https://www.npmjs.com/), so you need that installed and then add xterm.js as a dependency by running:
```bash
npm install xterm
npm install @xterm/xterm
```
To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to the head of your HTML page. Then create a `<div id="terminal"></div>` onto which xterm can attach itself. Finally, instantiate the `Terminal` object and then call the `open` function with the DOM object of the `div`.
@@ -30,8 +30,8 @@ To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to t
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="node_modules/xterm/css/xterm.css" />
<script src="node_modules/xterm/lib/xterm.js"></script>
<link rel="stylesheet" href="node_modules/@xterm/xterm/css/xterm.css" />
<script src="node_modules/@xterm/xterm/lib/xterm.js"></script>
</head>
<body>
<div id="terminal"></div>
@@ -49,7 +49,7 @@ To start using xterm.js on your browser, add the `xterm.js` and `xterm.css` to t
The recommended way to load xterm.js is via the ES6 module syntax:
```javascript
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
```
### Addons
@@ -59,14 +59,14 @@ import { Terminal } from 'xterm';
Addons are separate modules that extend the `Terminal` by building on the [xterm.js API](https://github.com/xtermjs/xterm.js/blob/master/typings/xterm.d.ts). To use an addon, you first need to install it in your project:
```bash
npm i -S xterm-addon-web-links
npm i -S @xterm/addon-web-links
```
Then import the addon, instantiate it and call `Terminal.loadAddon`:
```ts
import { Terminal } from 'xterm';
import { WebLinksAddon } from 'xterm-addon-web-links';
import { Terminal } from '@xterm/xterm';
import { WebLinksAddon } from '@xterm/addon-web-links';
const terminal = new Terminal();
// Load WebLinksAddon on terminal, this is all that's needed to get web links
@@ -76,10 +76,15 @@ terminal.loadAddon(new WebLinksAddon());
The xterm.js team maintains the following addons, but anyone can build them:
- [`xterm-addon-attach`](https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-attach): Attaches to a server running a process via a websocket
- [`xterm-addon-fit`](https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-fit): Fits the terminal to the containing element
- [`xterm-addon-search`](https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-search): Adds search functionality
- [`xterm-addon-web-links`](https://github.com/xtermjs/xterm.js/tree/master/addons/xterm-addon-web-links): Adds web link detection and interaction
- [`@xterm/addon-attach`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-attach): Attaches to a server running a process via a websocket
- [`@xterm/addon-clipboard`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-clipboard): Access the browser's clipboard
- [`@xterm/addon-fit`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-fit): Fits the terminal to the containing element
- [`@xterm/addon-image`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image): Adds image support
- [`@xterm/addon-search`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-search): Adds search functionality
- [`@xterm/addon-serialize`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-serialize): Serializes the terminal's buffer to a VT sequences or HTML
- [`@xterm/addon-unicode11`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-unicode11): Updates character widths to their unicode11 values
- [`@xterm/addon-web-links`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-web-links): Adds web link detection and interaction
- [`@xterm/addon-webgl`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-webgl): Renders xterm.js using a `canvas` element's webgl2 context
## Browser Support
@@ -108,7 +113,7 @@ All current and past releases are available on this repo's [Releases page](https
Our CI releases beta builds to npm for every change that goes into master. Install the latest beta build with:
```bash
npm install -S xterm@beta
npm install -S @xterm/xterm@beta
```
These should generally be stable, but some bugs may slip in. We recommend using the beta build primarily to test out new features and to verify bug fixes.
@@ -123,7 +128,6 @@ Xterm.js is used in several world-class applications to provide great terminal e
- [**SourceLair**](https://www.sourcelair.com/): In-browser IDE that provides its users with fully-featured Linux terminals based on xterm.js.
- [**Microsoft Visual Studio Code**](http://code.visualstudio.com/): Modern, versatile, and powerful open source code editor that provides an integrated terminal based on xterm.js.
- [**ttyd**](https://github.com/tsl0922/ttyd): A command-line tool for sharing terminal over the web, with fully-featured terminal emulation based on xterm.js.
- [**Katacoda**](https://www.katacoda.com/): Katacoda is an Interactive Learning Platform for software developers, covering the latest Cloud Native technologies.
- [**Eclipse Che**](http://www.eclipse.org/che): Developer workspace server, cloud IDE, and Eclipse next-generation IDE.
- [**Codenvy**](http://www.codenvy.com): Cloud workspaces for development teams.
- [**CoderPad**](https://coderpad.io): Online interviewing platform for programmers. Run code in many programming languages, with results displayed by xterm.js.
@@ -217,6 +221,14 @@ Xterm.js is used in several world-class applications to provide great terminal e
- [**Cloudtutor.io**](https://cloudtutor.io): innovative online learning platform that offers users access to an interactive lab.
- [**Helix Editor Playground**](https://github.com/tomgroenwoldt/helix-editor-playground): Online playground for the terminal based helix editor.
- [**Coder**](https://github.com/coder/coder): Self-Hosted Remote Development Environments
- [**Wave Terminal**](https://waveterm.dev): An open-source, ai-native, terminal built for seamless workflows.
- [**eva**](https://github.com/info24/eva): Eva is a web application for SSH remote login, developed in Go.
- [**OpenSFTP**](https://opensftp.com): Super beautiful SSH and SFTP integrated workspace client.
- [**balena**](https://www.balena.io/): Balena is a full-stack solution for developing, deploying, updating, and troubleshooting IoT Edge devices. We use xterm.js to manage & debug devices on [balenaCloud](https://www.balena.io/cloud).
- [**Filet Cloud**](https://github.com/fuglaro/filet-cloud): The lean and powerful personal cloud ⛅.
- [**pyTermTk**](https://github.com/ceccopierangiolieugenio/pyTermTk): Python Terminal Toolkit - a Spiced Up Cross Compatible TUI Library 🌶️, use xterm.js for the [HTML5 exporter](https://ceccopierangiolieugenio.github.io/pyTermTk/sandbox/sandbox.html).
- [**ecmaOS**](https://ecmaos.sh): A kernel and suite of applications tying modern web technologies into a browser-based operating system.
- [**LabEx**](https://labex.io): Interactive learning platform with hands-on labs and xterm.js-based online terminals, focused on learn-by-doing approach.
- [And much more...](https://github.com/xtermjs/xterm.js/network/dependents?package_id=UGFja2FnZS0xNjYzMjc4OQ%3D%3D)
Do you use xterm.js in your application as well? Please [open a Pull Request](https://github.com/sourcelair/xterm.js/pulls) to include it here. We would love to have it on our list. Note: Please add any new contributions to the end of the list only.
@@ -8,6 +8,9 @@
!lib/**/*.js
!lib/**/*.js.map
!lib/**/*.mjs
!lib/**/*.mjs.map
!lib/**/*.css
# Whitelist - src/
@@ -1,22 +1,22 @@
## xterm-addon-attach
## @xterm/addon-attach
An addon for [xterm.js](https://github.com/xtermjs/xterm.js) that enables attaching to a web socket. This addon requires xterm.js v4+.
### Install
```bash
npm install --save xterm-addon-attach
npm install --save @xterm/addon-attach
```
### Usage
```ts
import { Terminal } from 'xterm';
import { AttachAddon } from 'xterm-addon-attach';
import { Terminal } from '@xterm/xterm';
import { AttachAddon } from '@xterm/addon-attach';
const terminal = new Terminal();
const attachAddon = new AttachAddon(webSocket);
terminal.loadAddon(attachAddon);
```
See the full [API](https://github.com/xtermjs/xterm.js/blob/master/addons/xterm-addon-attach/typings/xterm-addon-attach.d.ts) for more advanced usage.
See the full [API](https://github.com/xtermjs/xterm.js/blob/master/addons/addon-attach/typings/addon-attach.d.ts) for more advanced usage.
@@ -1,13 +1,14 @@
{
"name": "xterm-addon-search",
"version": "0.13.0",
"name": "@xterm/addon-attach",
"version": "0.11.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/xterm-addon-search.js",
"types": "typings/xterm-addon-search.d.ts",
"repository": "https://github.com/xtermjs/xterm.js",
"main": "lib/addon-attach.js",
"module": "lib/addon-attach.mjs",
"types": "typings/addon-attach.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-attach",
"license": "MIT",
"keywords": [
"terminal",
@@ -18,9 +19,10 @@
"build": "../../node_modules/.bin/tsc -p .",
"prepackage": "npm run build",
"package": "../../node_modules/.bin/webpack",
"prepublishOnly": "npm run package"
"prepublishOnly": "npm run package",
"start": "node ../../demo/start"
},
"peerDependencies": {
"xterm": "^5.0.0"
"@xterm/xterm": "^5.0.0"
}
}
@@ -5,13 +5,14 @@
* Implements the attach method, that attaches the terminal to a WebSocket stream.
*/
import { Terminal, IDisposable, ITerminalAddon } from 'xterm';
import type { Terminal, IDisposable, ITerminalAddon } from '@xterm/xterm';
import type { AttachAddon as IAttachApi } from '@xterm/addon-attach';
interface IAttachOptions {
bidirectional?: boolean;
}
export class AttachAddon implements ITerminalAddon {
export class AttachAddon implements ITerminalAddon , IAttachApi {
private _socket: WebSocket;
private _bidirectional: boolean;
private _disposables: IDisposable[] = [];
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "es2021",
"lib": [
"dom",
"es2015"
@@ -13,7 +13,12 @@
"strict": true,
"types": [
"../../../node_modules/@types/mocha"
]
],
"paths": {
"@xterm/addon-attach": [
"../typings/addon-attach.d.ts"
]
}
},
"include": [
"./**/*",
@@ -0,0 +1,42 @@
/**
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
* @license MIT
*/
import WebSocket = require('ws');
import test from '@playwright/test';
import { ITestContext, createTestContext, openTerminal, pollFor, timeout } from '../../../test/playwright/TestUtils';
let ctx: ITestContext;
test.beforeAll(async ({ browser }) => {
ctx = await createTestContext(browser);
await openTerminal(ctx);
});
test.afterAll(async () => await ctx.page.close());
test.describe('Search Tests', () => {
test.beforeEach(async () => {
await ctx.proxy.reset();
});
test('string', async function(): Promise<any> {
const port = 8080;
const server = new WebSocket.Server({ port });
server.on('connection', socket => socket.send('foo'));
await ctx.page.evaluate(`window.term.loadAddon(new window.AttachAddon(new WebSocket('ws://localhost:${port}')))`);
await pollFor(ctx.page, `window.term.buffer.active.getLine(0).translateToString(true)`, 'foo');
server.close();
});
test('utf8', async function(): Promise<any> {
const port = 8080;
const server = new WebSocket.Server({ port });
const data = new Uint8Array([102, 111, 111]);
server.on('connection', socket => socket.send(data));
await ctx.page.evaluate(`window.term.loadAddon(new window.AttachAddon(new WebSocket('ws://localhost:${port}')))`);
await pollFor(ctx.page, `window.term.buffer.active.getLine(0).translateToString(true)`, 'foo');
server.close();
});
});
@@ -0,0 +1,35 @@
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
testDir: '.',
timeout: 10000,
projects: [
{
name: 'ChromeStable',
use: {
browserName: 'chromium',
channel: 'chrome'
}
},
{
name: 'FirefoxStable',
use: {
browserName: 'firefox'
}
},
{
name: 'WebKit',
use: {
browserName: 'webkit'
}
}
],
reporter: 'list',
webServer: {
command: 'npm run start',
port: 3000,
timeout: 120000,
reuseExistingServer: !process.env.CI
}
};
export default config;
@@ -1,13 +1,12 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "ESNext",
"lib": [
"dom",
"es6"
"es2021",
],
"rootDir": ".",
"outDir": "../out",
"outDir": "../out-test",
"sourceMap": true,
"removeComments": true,
"baseUrl": ".",
@@ -20,9 +19,8 @@
]
},
"strict": true,
"downlevelIteration": true,
"types": [
"../../../node_modules/@types/mocha"
"../../../node_modules/@types/node"
]
},
"include": [
@@ -35,6 +33,9 @@
},
{
"path": "../../../src/browser"
},
{
"path": "../../../test/playwright"
}
]
}
@@ -3,9 +3,9 @@
* @license MIT
*/
import { Terminal, ITerminalAddon } from 'xterm';
import { Terminal, ITerminalAddon } from '@xterm/xterm';
declare module 'xterm-addon-attach' {
declare module '@xterm/addon-attach' {
export interface IAttachOptions {
/**
* Whether input should be written to the backend. Defaults to `true`.
@@ -6,7 +6,7 @@
const path = require('path');
const addonName = 'AttachAddon';
const mainFile = 'xterm-addon-attach.js';
const mainFile = 'addon-attach.js';
module.exports = {
entry: `./out/${addonName}.js`,
@@ -25,7 +25,9 @@ module.exports = {
filename: mainFile,
path: path.resolve('./lib'),
library: addonName,
libraryTarget: 'umd'
libraryTarget: 'umd',
// Force usage of globalThis instead of global / self. (This is cross-env compatible)
globalObject: 'globalThis',
},
mode: 'production'
};
@@ -8,6 +8,9 @@
!lib/**/*.js
!lib/**/*.js.map
!lib/**/*.mjs
!lib/**/*.mjs.map
!lib/**/*.css
# Whitelist - src/
@@ -1,4 +1,4 @@
Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)
Copyright (c) 2023, The xterm.js authors (https://github.com/xtermjs/xterm.js)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+53
View File
@@ -0,0 +1,53 @@
## @xterm/addon-clipboard
An addon for [xterm.js](https://github.com/xtermjs/xterm.js) that enables
accessing the system clipboard. This addon requires xterm.js v4+.
### Install
```bash
npm install --save @xterm/addon-clipboard
```
### Usage
```ts
import { Terminal } from 'xterm';
import { ClipboardAddon } from '@xterm/addon-clipboard';
const terminal = new Terminal();
const clipboardAddon = new ClipboardAddon();
terminal.loadAddon(clipboardAddon);
```
To use a custom clipboard provider
```ts
import { Terminal } from '@xterm/xterm';
import { ClipboardAddon, IClipboardProvider, ClipboardSelectionType } from '@xterm/addon-clipboard';
function b64Encode(data: string): string {
// Base64 encode impl
}
function b64Decode(data: string): string {
// Base64 decode impl
}
class MyCustomClipboardProvider implements IClipboardProvider {
private _data: string
public readText(selection: ClipboardSelectionType): Promise<string> {
return Promise.resolve(b64Encode(this._data));
}
public writeText(selection: ClipboardSelectionType, data: string): Promise<void> {
this._data = b64Decode(data);
return Promise.resolve();
}
}
const terminal = new Terminal();
const clipboardAddon = new ClipboardAddon(new MyCustomClipboardProvider());
terminal.loadAddon(clipboardAddon);
```
See the full [API](https://github.com/xtermjs/xterm.js/blob/master/addons/addon-clipboard/typings/addon-clipboard.d.ts) for more advanced usage.
+31
View File
@@ -0,0 +1,31 @@
{
"name": "@xterm/addon-clipboard",
"version": "0.1.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/addon-clipboard.js",
"module": "lib/addon-clipboard.mjs",
"types": "typings/addon-clipboard.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-clipboard",
"license": "MIT",
"keywords": [
"terminal",
"xterm",
"xterm.js"
],
"scripts": {
"build": "../../node_modules/.bin/tsc -p .",
"prepackage": "npm run build",
"package": "../../node_modules/.bin/webpack",
"prepublishOnly": "npm run package",
"start": "node ../../demo/start"
},
"peerDependencies": {
"@xterm/xterm": "^5.4.0"
},
"dependencies": {
"js-base64": "^3.7.5"
}
}
@@ -0,0 +1,99 @@
/**
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
* @license MIT
*/
import type { IDisposable, ITerminalAddon, Terminal } from '@xterm/xterm';
import { type IClipboardProvider, ClipboardSelectionType, type IBase64 } from '@xterm/addon-clipboard';
import { Base64 as JSBase64 } from 'js-base64';
export class ClipboardAddon implements ITerminalAddon {
private _terminal?: Terminal;
private _disposable?: IDisposable;
constructor(
private _base64: IBase64 = new Base64(),
private _provider: IClipboardProvider = new BrowserClipboardProvider()
) {}
public activate(terminal: Terminal): void {
this._terminal = terminal;
this._disposable = terminal.parser.registerOscHandler(52, data => this._setOrReportClipboard(data));
}
public dispose(): void {
return this._disposable?.dispose();
}
private _readText(sel: ClipboardSelectionType, data: string): void {
const b64 = this._base64.encodeText(data);
this._terminal?.input(`\x1b]52;${sel};${b64}\x07`, false);
}
private _setOrReportClipboard(data: string): boolean | Promise<boolean> {
const args = data.split(';');
if (args.length < 2) {
return true;
}
const pc = args[0] as ClipboardSelectionType;
const pd = args[1];
if (pd === '?') {
const text = this._provider.readText(pc);
// Report clipboard
if (text instanceof Promise) {
return text.then((data) => {
this._readText(pc, data);
return true;
});
}
this._readText(pc, text);
return true;
}
// Clear clipboard if text is not a base64 encoded string.
let text = '';
try {
text = this._base64.decodeText(pd);
} catch {}
const result = this._provider.writeText(pc, text);
if (result instanceof Promise) {
return result.then(() => true);
}
return true;
}
}
export class BrowserClipboardProvider implements IClipboardProvider {
public async readText(selection: ClipboardSelectionType): Promise<string> {
if (selection !== 'c') {
return Promise.resolve('');
}
return navigator.clipboard.readText();
}
public async writeText(selection: ClipboardSelectionType, text: string): Promise<void> {
if (selection !== 'c') {
return Promise.resolve();
}
return navigator.clipboard.writeText(text);
}
}
export class Base64 implements IBase64 {
public encodeText(data: string): string {
return JSBase64.encode(data);
}
public decodeText(data: string): string {
const text = JSBase64.decode(data);
if (!JSBase64.isValid(data) || JSBase64.encode(text) !== data) {
return '';
}
return text;
}
}
+35
View File
@@ -0,0 +1,35 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2021",
"lib": [
"dom",
"es2015"
],
"rootDir": ".",
"outDir": "../out",
"sourceMap": true,
"removeComments": true,
"strict": true,
"types": [
"../../../node_modules/@types/mocha"
],
"paths": {
"browser/*": [
"../../../src/browser/*"
],
"@xterm/addon-clipboard": [
"../typings/addon-clipboard.d.ts"
]
}
},
"include": [
"./**/*",
"../../../typings/xterm.d.ts"
],
"references": [
{
"path": "../../../src/browser"
}
]
}
@@ -0,0 +1,78 @@
/**
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
* @license MIT
*/
import test from '@playwright/test';
import { deepEqual, ok, strictEqual } from 'assert';
import { ITestContext, createTestContext, launchBrowser, openTerminal, timeout } from '../../../test/playwright/TestUtils';
let ctx: ITestContext;
test.beforeAll(async ({ browser }, testInfo) => {
ctx = await createTestContext(browser);
await openTerminal(ctx);
});
test.afterAll(async () => {
await ctx.page.close();
});
test.describe('ClipboardAddon', () => {
test.beforeEach(async ({}, testInfo) => {
// DEBT: This test doesn't work since the migration to @playwright/test
if (ctx.browser.browserType().name() !== 'chromium') {
testInfo.skip();
return;
}
if (ctx.browser.browserType().name() === 'chromium') {
// Enable clipboard access in chromium without user gesture
await ctx.page.context().grantPermissions(['clipboard-read', 'clipboard-write']);
}
await ctx.page.evaluate(`
window.term.reset()
window.clipboard?.dispose();
window.clipboard = new ClipboardAddon();
window.term.loadAddon(window.clipboard);
`);
});
test.beforeEach(async () => {
await ctx.proxy.reset();
});
const testDataEncoded = 'aGVsbG8gd29ybGQ=';
const testDataDecoded = 'hello world';
test.describe('write data', async function (): Promise<any> {
test('simple string', async () => {
await ctx.proxy.write(`\x1b]52;c;${testDataEncoded}\x07`);
deepEqual(await ctx.page.evaluate(() => window.navigator.clipboard.readText()), testDataDecoded);
});
test('invalid base64 string', async () => {
await ctx.proxy.write(`\x1b]52;c;${testDataEncoded}invalid\x07`);
deepEqual(await ctx.page.evaluate(() => window.navigator.clipboard.readText()), '');
});
test('empty string', async () => {
await ctx.proxy.write(`\x1b]52;c;${testDataEncoded}\x07`);
await ctx.proxy.write(`\x1b]52;c;\x07`);
deepEqual(await ctx.page.evaluate(() => window.navigator.clipboard.readText()), '');
});
});
test.describe('read data', async function (): Promise<any> {
test('simple string', async () => {
await ctx.page.evaluate(`
window.data = [];
window.term.onData(e => data.push(e));
`);
await ctx.page.evaluate(() => window.navigator.clipboard.writeText('hello world'));
await ctx.proxy.write(`\x1b]52;c;?\x07`);
deepEqual(await ctx.page.evaluate('window.data'), [`\x1b]52;c;${testDataEncoded}\x07`]);
});
test('clear clipboard', async () => {
await ctx.proxy.write(`\x1b]52;c;!\x07`);
await ctx.proxy.write(`\x1b]52;c;?\x07`);
deepEqual(await ctx.page.evaluate(() => window.navigator.clipboard.readText()), '');
});
});
});
@@ -0,0 +1,35 @@
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
testDir: '.',
timeout: 10000,
projects: [
{
name: 'ChromeStable',
use: {
browserName: 'chromium',
channel: 'chrome'
}
},
{
name: 'FirefoxStable',
use: {
browserName: 'firefox'
}
},
{
name: 'WebKit',
use: {
browserName: 'webkit'
}
}
],
reporter: 'list',
webServer: {
command: 'npm run start',
port: 3000,
timeout: 120000,
reuseExistingServer: !process.env.CI
}
};
export default config;
@@ -1,13 +1,12 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "ESNext",
"lib": [
"dom",
"es6"
"es2021",
],
"rootDir": ".",
"outDir": "../out",
"outDir": "../out-test",
"sourceMap": true,
"removeComments": true,
"baseUrl": ".",
@@ -20,10 +19,8 @@
]
},
"strict": true,
"downlevelIteration": true,
"experimentalDecorators": true,
"types": [
"../../../node_modules/@types/mocha"
"../../../node_modules/@types/node"
]
},
"include": [
@@ -36,6 +33,9 @@
},
{
"path": "../../../src/browser"
},
{
"path": "../../../test/playwright"
}
]
}
+113
View File
@@ -0,0 +1,113 @@
/**
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
* @license MIT
*/
import { Terminal, ITerminalAddon } from '@xterm/xterm';
declare module '@xterm/addon-clipboard' {
/**
* An xterm.js addon that enables accessing the system clipboard from
* xterm.js.
*/
export class ClipboardAddon implements ITerminalAddon {
/**
* Creates a new clipboard addon.
* @param base64 An optional base64 encoder/decoder.
* @param provider An optional clipboard provider.
*/
constructor(base64?: IBase64, provider?: IClipboardProvider);
/**
* Activates the addon
* @param terminal The terminal the addon is being loaded in.
*/
public activate(terminal: Terminal): void;
/**
* Disposes the addon.
*/
public dispose(): void
}
/**
* Clipboard selection type. This is used to specify which selection buffer to
* read or write to.
* - SYSTEM `c`: The system clipboard.
* - PRIMARY `p`: The primary clipboard. This is provided for compatibility
* with Linux X11.
*/
export const enum ClipboardSelectionType {
SYSTEM = 'c',
PRIMARY = 'p',
}
export interface IBase64 {
/**
* Converts a utf-8 string to a base64 string.
* @param data The utf-8 string to convert to base64 string.
*/
encodeText(data: string): string;
/**
* Converts a base64 string to a utf-8 string.
* @param data The base64 string to convert to utf-8 string.
* @throws An error if the input is not valid base64.
*/
decodeText(data: string): string;
}
/**
* A default Base64 encoding and decoding type.
**/
export class Base64 implements IBase64 {
/**
* Converts a utf-8 string to a base64 string.
* @param data The utf-8 string to convert to base64 string.
*/
public encodeText(data: string): string;
/**
* Converts a base64 string to a utf-8 string.
* @param data The base64 string to convert to utf-8 string.
* @throws An error if the input is not valid base64.
*/
public decodeText(data: string): string;
}
export interface IClipboardProvider {
/**
* Gets the clipboard content.
* @param selection The clipboard selection to read.
* @returns A promise that resolves with clipboard selection data.
*/
readText(selection: ClipboardSelectionType): string | Promise<string>;
/**
* Sets the clipboard content.
* @param selection The clipboard selection to set.
* @param data The clipboard text to write.
*/
writeText(selection: ClipboardSelectionType, text: string): void | Promise<void>;
}
/**
* The clipboard provider interface that enables xterm.js to access the system clipboard.
*/
export class BrowserClipboardProvider implements IClipboardProvider{
/**
* Reads text from the clipboard.
* @param selection The selection type to read from.
* @returns A promise that resolves with the text from the clipboard.
*/
public readText(selection: ClipboardSelectionType): Promise<string>;
/**
* Writes text to the clipboard.
* @param selection The selection type to write to.
* @param data The text to write to the clipboard.
* @returns A promise that resolves when the text has been written to the clipboard.
*/
public writeText(selection: ClipboardSelectionType, data: string): Promise<void>;
}
}
@@ -1,12 +1,12 @@
/**
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
* Copyright (c) 2023 The xterm.js authors. All rights reserved.
* @license MIT
*/
const path = require('path');
const addonName = 'FitAddon';
const mainFile = 'xterm-addon-fit.js';
const addonName = 'ClipboardAddon';
const mainFile = 'addon-clipboard.js';
module.exports = {
entry: `./out/${addonName}.js`,
+8
View File
@@ -0,0 +1,8 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
js-base64@^3.7.5:
version "3.7.7"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79"
integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==
@@ -8,6 +8,9 @@
!lib/**/*.js
!lib/**/*.js.map
!lib/**/*.mjs
!lib/**/*.mjs.map
!lib/**/*.css
# Whitelist - src/
@@ -1,18 +1,18 @@
## xterm-addon-fit
## @xterm/addon-fit
An addon for [xterm.js](https://github.com/xtermjs/xterm.js) that enables fitting the terminal's dimensions to a containing element. This addon requires xterm.js v4+.
### Install
```bash
npm install --save xterm-addon-fit
npm install --save @xterm/addon-fit
```
### Usage
```ts
import { Terminal } from 'xterm';
import { FitAddon } from 'xterm-addon-fit';
import { Terminal } from '@xterm/xterm';
import { FitAddon } from '@xterm/addon-fit';
const terminal = new Terminal();
const fitAddon = new FitAddon();
@@ -21,4 +21,4 @@ terminal.open(containerElement);
fitAddon.fit();
```
See the full [API](https://github.com/xtermjs/xterm.js/blob/master/addons/xterm-addon-fit/typings/xterm-addon-fit.d.ts) for more advanced usage.
See the full [API](https://github.com/xtermjs/xterm.js/blob/master/addons/addon-fit/typings/addon-fit.d.ts) for more advanced usage.
@@ -1,17 +1,17 @@
{
"name": "xterm-addon-canvas",
"version": "0.5.0",
"name": "@xterm/addon-fit",
"version": "0.10.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/xterm-addon-canvas.js",
"types": "typings/xterm-addon-canvas.d.ts",
"repository": "https://github.com/xtermjs/xterm.js",
"main": "lib/addon-fit.js",
"module": "lib/addon-fit.mjs",
"types": "typings/addon-fit.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-fit",
"license": "MIT",
"keywords": [
"terminal",
"canvas",
"xterm",
"xterm.js"
],
@@ -19,9 +19,10 @@
"build": "../../node_modules/.bin/tsc -p .",
"prepackage": "npm run build",
"package": "../../node_modules/.bin/webpack",
"prepublishOnly": "npm run package"
"prepublishOnly": "npm run package",
"start": "node ../../demo/start"
},
"peerDependencies": {
"xterm": "^5.0.0"
"@xterm/xterm": "^5.0.0"
}
}
@@ -3,8 +3,10 @@
* @license MIT
*/
import { Terminal, ITerminalAddon } from 'xterm';
import type { Terminal, ITerminalAddon } from '@xterm/xterm';
import type { FitAddon as IFitApi } from '@xterm/addon-fit';
import { IRenderDimensions } from 'browser/renderer/shared/Types';
import { ViewportConstants } from 'browser/shared/Constants';
interface ITerminalDimensions {
/**
@@ -21,7 +23,7 @@ interface ITerminalDimensions {
const MINIMUM_COLS = 2;
const MINIMUM_ROWS = 1;
export class FitAddon implements ITerminalAddon {
export class FitAddon implements ITerminalAddon , IFitApi {
private _terminal: Terminal | undefined;
public activate(terminal: Terminal): void {
@@ -63,8 +65,9 @@ export class FitAddon implements ITerminalAddon {
return undefined;
}
const scrollbarWidth = this._terminal.options.scrollback === 0 ?
0 : core.viewport.scrollBarWidth;
const scrollbarWidth = (this._terminal.options.scrollback === 0
? 0
: (this._terminal.options.overviewRuler?.width || ViewportConstants.DEFAULT_SCROLL_BAR_WIDTH));
const parentElementStyle = window.getComputedStyle(this._terminal.element.parentElement);
const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'));
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "es2021",
"lib": [
"dom",
"es2015"
@@ -17,6 +17,9 @@
"paths": {
"browser/*": [
"../../../src/browser/*"
],
"@xterm/addon-fit": [
"../typings/addon-fit.d.ts"
]
}
},
+133
View File
@@ -0,0 +1,133 @@
/**
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
* @license MIT
*/
import test from '@playwright/test';
import { deepEqual, ok, strictEqual } from 'assert';
import { ITestContext, createTestContext, openTerminal, timeout } from '../../../test/playwright/TestUtils';
let ctx: ITestContext;
test.beforeAll(async ({ browser }) => {
ctx = await createTestContext(browser);
ctx.page.setViewportSize({ width: 1024, height: 768 });
await openTerminal(ctx);
});
test.afterAll(async () => await ctx.page.close());
test.describe('FitAddon', () => {
test.beforeEach(async function(): Promise<any> {
await ctx.page.evaluate(`document.querySelector('#terminal-container').style.display=''`);
await ctx.page.evaluate(`
window.term.reset()
window.fit?.dispose();
window.fit = new FitAddon();
window.term.loadAddon(window.fit);
`);
});
// test.beforeEach(async function(): Promise<any> {
// await ctx.page.evaluate(`document.querySelector('#terminal-container').style.display=''`);
// await openTerminal(page);
// });
// after(async () => {
// await browser.close();
// });
// afterEach(async function(): Promise<any> {
// await ctx.proxy.dispose();
// });
test('no terminal', async function(): Promise<any> {
await ctx.page.evaluate(`window.fit2 = new FitAddon();`);
strictEqual(await ctx.page.evaluate(`window.fit2.proposeDimensions()`), undefined);
await ctx.page.evaluate(`window.fit2.dispose();`);
});
test.describe('proposeDimensions', () => {
test('default', async function(): Promise<any> {
await setDimensions();
const dimensions: {cols: number, rows: number} = await ctx.page.evaluate(`window.fit.proposeDimensions()`);
ok(dimensions.cols > 85);
ok(dimensions.cols < 88);
ok(dimensions.rows > 24);
ok(dimensions.rows < 29);
});
test('width', async function(): Promise<any> {
await setDimensions(1008);
const dimensions: {cols: number, rows: number} = await ctx.page.evaluate(`window.fit.proposeDimensions()`);
ok(dimensions.cols > 108);
ok(dimensions.cols < 111);
ok(dimensions.rows > 24);
ok(dimensions.rows < 29);
});
test('small', async function(): Promise<any> {
await setDimensions(1, 1);
deepEqual(await ctx.page.evaluate(`window.fit.proposeDimensions()`), {
cols: 2,
rows: 1
});
});
test('hidden', async function(): Promise<any> {
await ctx.proxy.dispose();
await ctx.page.evaluate(`document.querySelector('#terminal-container').style.display='none'`);
await ctx.page.evaluate(`window.term = new Terminal()`);
await ctx.page.evaluate(`window.term.open(document.querySelector('#terminal-container'))`);
await setDimensions();
const dimensions: { cols: number, rows: number } | undefined = await ctx.page.evaluate(`window.fit.proposeDimensions()`);
// The value of dims will be undefined if the char measure strategy falls back to the DOM
// method, so only assert if it's not undefined.
if (dimensions) {
ok(dimensions.cols > 85);
ok(dimensions.cols < 88);
ok(dimensions.rows > 24);
ok(dimensions.rows < 29);
}
});
});
test.describe('fit', () => {
test('default', async function(): Promise<any> {
await setDimensions();
await ctx.page.evaluate(`window.fit.fit()`);
const cols: number = await ctx.proxy.cols;
const rows: number = await ctx.proxy.rows;
ok(cols > 85);
ok(cols < 88);
ok(rows > 24);
ok(rows < 29);
});
test('width', async function(): Promise<any> {
await setDimensions(1008);
await ctx.page.evaluate(`window.fit.fit()`);
const cols: number = await ctx.proxy.cols;
const rows: number = await ctx.proxy.rows;
ok(cols > 108);
ok(cols < 111);
ok(rows > 24);
ok(rows < 29);
});
test('small', async function(): Promise<any> {
await setDimensions(1, 1);
await ctx.page.evaluate(`window.fit.fit()`);
strictEqual(await ctx.proxy.cols, 2);
strictEqual(await ctx.proxy.rows, 1);
});
});
});
async function setDimensions(width: number = 800, height: number = 450): Promise<void> {
await ctx.page.evaluate(`
document.querySelector('#terminal-container').style.width='${width}px';
document.querySelector('#terminal-container').style.height='${height}px';
document.querySelector('#terminal-container').style.display='';
`);
// HACK: Await a short period as hiding #terminal-container can mess with other tests
await timeout(500);
}
@@ -0,0 +1,35 @@
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
testDir: '.',
timeout: 10000,
projects: [
{
name: 'ChromeStable',
use: {
browserName: 'chromium',
channel: 'chrome'
}
},
{
name: 'FirefoxStable',
use: {
browserName: 'firefox'
}
},
{
name: 'WebKit',
use: {
browserName: 'webkit'
}
}
],
reporter: 'list',
webServer: {
command: 'npm run start',
port: 3000,
timeout: 120000,
reuseExistingServer: !process.env.CI
}
};
export default config;
+41
View File
@@ -0,0 +1,41 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "ESNext",
"lib": [
"es2021",
],
"rootDir": ".",
"outDir": "../out-test",
"sourceMap": true,
"removeComments": true,
"baseUrl": ".",
"paths": {
"common/*": [
"../../../src/common/*"
],
"browser/*": [
"../../../src/browser/*"
]
},
"strict": true,
"types": [
"../../../node_modules/@types/node"
]
},
"include": [
"./**/*",
"../../../typings/xterm.d.ts"
],
"references": [
{
"path": "../../../src/common"
},
{
"path": "../../../src/browser"
},
{
"path": "../../../test/playwright"
}
]
}
@@ -3,9 +3,9 @@
* @license MIT
*/
import { Terminal, ITerminalAddon } from 'xterm';
import { Terminal, ITerminalAddon } from '@xterm/xterm';
declare module 'xterm-addon-fit' {
declare module '@xterm/addon-fit' {
/**
* An xterm.js addon that enables resizing the terminal to the dimensions of
* its containing element.
@@ -39,7 +39,7 @@ declare module 'xterm-addon-fit' {
}
/**
* Reprepresents the dimensions of a terminal.
* Represents the dimensions of a terminal.
*/
export interface ITerminalDimensions {
/**
+33
View File
@@ -0,0 +1,33 @@
/**
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
* @license MIT
*/
const path = require('path');
const addonName = 'FitAddon';
const mainFile = 'addon-fit.js';
module.exports = {
entry: `./out/${addonName}.js`,
devtool: 'source-map',
module: {
rules: [
{
test: /\.js$/,
use: ["source-map-loader"],
enforce: "pre",
exclude: /node_modules/
}
]
},
output: {
filename: mainFile,
path: path.resolve('./lib'),
library: addonName,
libraryTarget: 'umd',
// Force usage of globalThis instead of global / self. (This is cross-env compatible)
globalObject: 'globalThis',
},
mode: 'production'
};
@@ -6,5 +6,7 @@ tsconfig.json
webpack.config.js
test
out-test
out-esbuild
out-esbuild-test
inwasm-sdks
inwasm-builds
@@ -1,4 +1,4 @@
## xterm-addon-image
## @xterm/addon-image
Inline image output in xterm.js. Supports SIXEL and iTerm's inline image protocol (IIP).
@@ -9,15 +9,15 @@ Inline image output in xterm.js. Supports SIXEL and iTerm's inline image protoco
### Install from npm
```bash
npm install --save xterm-addon-image
npm install --save @xterm/addon-image
```
### Usage
```ts
import { Terminal } from 'xterm';
import { ImageAddon, IImageAddonOptions } from 'xterm-addon-image';
import { Terminal } from '@xterm/xterm';
import { ImageAddon, IImageAddonOptions } from '@xterm/addon-image';
// customize as needed (showing addon defaults)
const customSettings: IImageAddonOptions = {
@@ -227,5 +227,5 @@ _How can I adjust the memory usage?_
- 0.1.2 bugfix: reset clear flag
- 0.1.1 bugfixes:
- clear sticky image tiles on render
- create xterm-addon-image folder from bootstrap.sh
- create folder from bootstrap.sh
- fix peer dependency in package.json

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Before

Width:  |  Height:  |  Size: 525 B

After

Width:  |  Height:  |  Size: 525 B

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Before

Width:  |  Height:  |  Size: 6.3 MiB

After

Width:  |  Height:  |  Size: 6.3 MiB

Before

Width:  |  Height:  |  Size: 599 KiB

After

Width:  |  Height:  |  Size: 599 KiB

Before

Width:  |  Height:  |  Size: 988 B

After

Width:  |  Height:  |  Size: 988 B

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 333 B

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 324 B

After

Width:  |  Height:  |  Size: 324 B

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -1,13 +1,14 @@
{
"name": "xterm-addon-image",
"version": "0.6.0",
"name": "@xterm/addon-image",
"version": "0.8.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/xterm-addon-image.js",
"types": "typings/xterm-addon-image.d.ts",
"repository": "https://github.com/xtermjs/xterm.js",
"main": "lib/addon-image.js",
"module": "lib/addon-image.mjs",
"types": "typings/addon-image.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image",
"license": "MIT",
"keywords": [
"terminal",
@@ -19,10 +20,11 @@
"scripts": {
"prepackage": "../../node_modules/.bin/tsc -p .",
"package": "../../node_modules/.bin/webpack",
"prepublishOnly": "npm run package"
"prepublishOnly": "npm run package",
"start": "node ../../demo/start"
},
"peerDependencies": {
"xterm": "^5.2.0"
"@xterm/xterm": "^5.2.0"
},
"devDependencies": {
"sixel": "^0.16.0",
@@ -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 }],
@@ -36,7 +37,7 @@ const TEST_IMAGES: [string, IMetrics][] = [
describe('IIPMetrics', () => {
it('bunch of testimages', () => {
for (let i = 0; i < TEST_IMAGES.length; ++i) {
const imageData = fs.readFileSync('./addons/xterm-addon-image/fixture/testimages/' + TEST_IMAGES[i][0]);
const imageData = fs.readFileSync('./addons/addon-image/fixture/testimages/' + TEST_IMAGES[i][0]);
assert.deepStrictEqual(imageType(imageData), TEST_IMAGES[i][1]);
}
});
@@ -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 };
}
@@ -3,14 +3,14 @@
* @license MIT
*/
import type { ITerminalAddon, IDisposable } from '@xterm/xterm';
import type { ImageAddon as IImageApi } from '@xterm/addon-image';
import { IIPHandler } from './IIPHandler';
import { ITerminalAddon, IDisposable } from 'xterm';
import { ImageRenderer } from './ImageRenderer';
import { ImageStorage, CELL_SIZE_DEFAULT } from './ImageStorage';
import { SixelHandler } from './SixelHandler';
import { ITerminalExt, IImageAddonOptions, IResetHandler } from './Types';
// default values of addon ctor options
const DEFAULT_OPTIONS: IImageAddonOptions = {
enableSizeReports: true,
@@ -48,7 +48,7 @@ const enum GaStatus {
}
export class ImageAddon implements ITerminalAddon {
export class ImageAddon implements ITerminalAddon , IImageApi {
private _opts: IImageAddonOptions;
private _defaultOpts: IImageAddonOptions;
private _storage: ImageStorage | undefined;

Some files were not shown because too many files have changed in this diff Show More