Compare commits

..
386 Commits
Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
320 changed files with 5446 additions and 2425 deletions
+27 -20
View File
@@ -1,7 +1,7 @@
{
"env": {
"browser": true,
"es6": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser",
@@ -14,29 +14,36 @@
"test/api/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-canvas/src/tsconfig.json",
"addons/addon-canvas/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-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",
"out/*",
"out-test/*",
"**/inwasm-sdks/*",
"**/typings/*.d.ts",
"**/node_modules",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"env": {
"browser": true,
"es6": true,
"es2021": true,
"node": true
},
"parser": "@typescript-eslint/parser",
+68 -56
View File
@@ -26,26 +26,28 @@ jobs:
zip -r compressed-build \
./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/*
./addons/addon-attach/out/* \
./addons/addon-attach/out-test/* \
./addons/addon-canvas/out/* \
./addons/addon-canvas/out-test/* \
./addons/addon-fit/out/* \
./addons/addon-fit/out-test/* \
./addons/addon-image/out/* \
./addons/addon-image/out-test/* \
./addons/addon-ligatures/out/* \
./addons/addon-ligatures/out-test/* \
./addons/addon-search/out/* \
./addons/addon-search/out-test/* \
./addons/addon-serialize/out/* \
./addons/addon-serialize/out-test/* \
./addons/addon-unicode11/out/* \
./addons/addon-unicode11/out-test/* \
./addons/addon-unicode-graphemes/out/* \
./addons/addon-unicode-graphemes/out-test/* \
./addons/addon-web-links/out/* \
./addons/addon-web-links/out-test/* \
./addons/addon-webgl/out/* \
./addons/addon-webgl/out-test/*
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
@@ -68,6 +70,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
@@ -144,40 +148,6 @@ 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:
timeout-minutes: 20
strategy:
@@ -259,8 +229,12 @@ jobs:
ls -R
- name: Build demo
run: yarn build-demo
- name: Integration tests
run: yarn test-playwright-${{ matrix.browser }} --forbid-only
- name: Integration tests (core) # Tests use 50% workers to reduce flakiness
run: yarn test-playwright-${{ matrix.browser }} --workers=50% --forbid-only --suite=core
- name: Integration tests (addon-canvas)
run: yarn test-playwright-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-canvas
- name: Integration tests (addon-webgl)
run: yarn test-playwright-${{ matrix.browser }} --workers=50% --forbid-only --suite=addon-webgl
test-api:
needs: build
@@ -298,3 +272,41 @@ jobs:
ls -R
- name: Integration tests (${{ matrix.browser }})
run: yarn test-api-${{ matrix.browser }} --headless --forbid-only
release-dry-run:
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18]
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
- 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: Package headless
run: |
yarn package-headless
node ./bin/package_headless.js
- name: Publish to npm (dry run)
run: node ./bin/publish.js --dry
+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": "16",
"serverReadyAction": {
"action": "openExternally",
"pattern": "App listening to (http://.*?:[0-9]+)"
+13 -8
View File
@@ -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-canvas`](https://github.com/xtermjs/xterm.js/tree/master/addons/addon-canvas): Renders xterm.js using a `canvas` element's 2d context
- [`@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
@@ -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,13 @@
{
"name": "xterm-addon-fit",
"version": "0.8.0",
"name": "@xterm/addon-attach",
"version": "0.10.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/xterm-addon-fit.js",
"types": "typings/xterm-addon-fit.d.ts",
"repository": "https://github.com/xtermjs/xterm.js",
"main": "lib/addon-attach.js",
"types": "typings/addon-attach.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-attach",
"license": "MIT",
"keywords": [
"terminal",
@@ -21,6 +21,6 @@
"prepublishOnly": "npm run package"
},
"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": [
"./**/*",
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "es2021",
"lib": [
"es2015"
],
@@ -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`,
+28
View File
@@ -0,0 +1,28 @@
## @xterm/addon-canvas
An addon for [xterm.js](https://github.com/xtermjs/xterm.js) that enables a canvas-based renderer using a 2d context to draw. This addon requires xterm.js v5+.
The purpose of this addon is to be used as a fallback for the [webgl addon](https://www.npmjs.com/package/@xterm/addon-webgl) when better performance is desired over the default DOM renderer, but WebGL2 isn't supported or performant for some reason.
### Install
```bash
npm install --save @xterm/addon-canvas
```
### Usage
```ts
import { Terminal } from '@xterm/xterm';
import { CanvasAddon } from '@xterm/addon-canvas';
const terminal = new Terminal();
terminal.open(element);
terminal.loadAddon(new CanvasAddon());
```
See the full [API](https://github.com/xtermjs/xterm.js/blob/master/addons/addon-canvas/typings/addon-canvas.d.ts) for more advanced usage.
### See also
- [@xterm/addon-webgl](https://www.npmjs.com/package/@xterm/addon-webgl) A renderer for xterm.js that uses WebGL
@@ -1,16 +1,17 @@
{
"name": "xterm-addon-unicode11",
"name": "@xterm/addon-canvas",
"version": "0.6.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/xterm-addon-unicode11.js",
"types": "typings/xterm-addon-unicode11.d.ts",
"repository": "https://github.com/xtermjs/xterm.js",
"main": "lib/addon-canvas.js",
"types": "typings/addon-canvas.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-canvas",
"license": "MIT",
"keywords": [
"terminal",
"canvas",
"xterm",
"xterm.js"
],
@@ -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-server-only": "node ../../demo/start-server-only"
},
"peerDependencies": {
"xterm": "^5.0.0"
"@xterm/xterm": "^5.0.0"
}
}
@@ -19,7 +19,7 @@ import { ICellData } from 'common/Types';
import { CellData } from 'common/buffer/CellData';
import { WHITESPACE_CELL_CODE } from 'common/buffer/Constants';
import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
import { IRenderLayer } from './Types';
export abstract class BaseRenderLayer extends Disposable implements IRenderLayer {
@@ -58,8 +58,8 @@ export abstract class BaseRenderLayer extends Disposable implements IRenderLayer
protected readonly _coreBrowserService: ICoreBrowserService
) {
super();
this._cellColorResolver = new CellColorResolver(this._terminal, this._selectionModel, this._decorationService, this._coreBrowserService, this._themeService);
this._canvas = document.createElement('canvas');
this._cellColorResolver = new CellColorResolver(this._terminal, this._optionsService, this._selectionModel, this._decorationService, this._coreBrowserService, this._themeService);
this._canvas = this._coreBrowserService.mainDocument.createElement('canvas');
this._canvas.classList.add(`xterm-${id}-layer`);
this._canvas.style.zIndex = zIndex.toString();
this._initCanvas();
@@ -91,7 +91,7 @@ export abstract class BaseRenderLayer extends Disposable implements IRenderLayer
public handleGridChanged(startRow: number, endRow: number): void {}
public handleSelectionChanged(start: [number, number] | undefined, end: [number, number] | undefined, columnSelectMode: boolean = false): void {
this._selectionModel.update(this._terminal, start, end, columnSelectMode);
this._selectionModel.update((this._terminal as any)._core, start, end, columnSelectMode);
}
protected _setTransparency(alpha: boolean): void {
@@ -365,7 +365,7 @@ export abstract class BaseRenderLayer extends Disposable implements IRenderLayer
*/
protected _drawChars(cell: ICellData, x: number, y: number): void {
const chars = cell.getChars();
this._cellColorResolver.resolve(cell, x, this._bufferService.buffer.ydisp + y);
this._cellColorResolver.resolve(cell, x, this._bufferService.buffer.ydisp + y, this._deviceCellWidth);
if (!this._charAtlas) {
return;
@@ -3,16 +3,17 @@
* @license MIT
*/
import type { ITerminalAddon, Terminal } from '@xterm/xterm';
import type { CanvasAddon as ICanvasApi } from '@xterm/addon-canvas';
import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services';
import { ITerminal } from 'browser/Types';
import { EventEmitter, forwardEvent } from 'common/EventEmitter';
import { Disposable, toDisposable } from 'common/Lifecycle';
import { setTraceLogger } from 'common/services/LogService';
import { IBufferService, IDecorationService, ILogService } from 'common/services/Services';
import { ITerminalAddon, Terminal } from 'xterm';
import { CanvasRenderer } from './CanvasRenderer';
export class CanvasAddon extends Disposable implements ITerminalAddon {
export class CanvasAddon extends Disposable implements ITerminalAddon , ICanvasApi {
private _terminal?: Terminal;
private _renderer?: CanvasRenderer;
@@ -36,7 +37,7 @@ export class CanvasAddon extends Disposable implements ITerminalAddon {
const coreService = core.coreService;
const optionsService = core.optionsService;
const screenElement = core.screenElement!;
const linkifier = core.linkifier2;
const linkifier = core.linkifier!;
const unsafeCore = core as any;
const bufferService: IBufferService = unsafeCore._bufferService;
@@ -65,4 +66,8 @@ export class CanvasAddon extends Disposable implements ITerminalAddon {
this._renderer = undefined;
}));
}
public clearTextureAtlas(): void {
this._renderer?.clearTextureAtlas();
}
}
@@ -10,9 +10,9 @@ import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils';
import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'browser/renderer/shared/Types';
import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services';
import { EventEmitter, forwardEvent } from 'common/EventEmitter';
import { Disposable, toDisposable } from 'common/Lifecycle';
import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle';
import { IBufferService, ICoreService, IDecorationService, IOptionsService } from 'common/services/Services';
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
import { CursorRenderLayer } from './CursorRenderLayer';
import { LinkRenderLayer } from './LinkRenderLayer';
import { SelectionRenderLayer } from './SelectionRenderLayer';
@@ -22,6 +22,7 @@ import { IRenderLayer } from './Types';
export class CanvasRenderer extends Disposable implements IRenderer {
private _renderLayers: IRenderLayer[];
private _devicePixelRatio: number;
private _observerDisposable = this.register(new MutableDisposable());
public dimensions: IRenderDimensions;
@@ -60,7 +61,11 @@ export class CanvasRenderer extends Disposable implements IRenderer {
this._devicePixelRatio = this._coreBrowserService.dpr;
this._updateDimensions();
this.register(observeDevicePixelDimensions(this._renderLayers[0].canvas, this._coreBrowserService.window, (w, h) => this._setCanvasDevicePixelDimensions(w, h)));
this._observerDisposable.value = observeDevicePixelDimensions(this._renderLayers[0].canvas, this._coreBrowserService.window, (w, h) => this._setCanvasDevicePixelDimensions(w, h));
this.register(this._coreBrowserService.onWindowChange(w => {
this._observerDisposable.value = observeDevicePixelDimensions(this._renderLayers[0].canvas, w, (w, h) => this._setCanvasDevicePixelDimensions(w, h));
}));
this.register(toDisposable(() => {
for (const l of this._renderLayers) {
l.dispose();
@@ -12,7 +12,7 @@ import { isFirefox } from 'common/Platform';
import { ICellData } from 'common/Types';
import { CellData } from 'common/buffer/CellData';
import { IBufferService, ICoreService, IDecorationService, IOptionsService } from 'common/services/Services';
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
import { BaseRenderLayer } from './BaseRenderLayer';
interface ICursorState {
@@ -9,7 +9,7 @@ import { INVERTED_DEFAULT_COLOR } from 'browser/renderer/shared/Constants';
import { IRenderDimensions } from 'browser/renderer/shared/Types';
import { ICoreBrowserService, IThemeService } from 'browser/services/Services';
import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
import { BaseRenderLayer } from './BaseRenderLayer';
export class LinkRenderLayer extends BaseRenderLayer {
@@ -7,7 +7,7 @@ import { IRenderDimensions } from 'browser/renderer/shared/Types';
import { BaseRenderLayer } from './BaseRenderLayer';
import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';
import { ICoreBrowserService, IThemeService } from 'browser/services/Services';
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
interface ISelectionState {
start?: [number, number];
@@ -11,7 +11,7 @@ import { AttributeData } from 'common/buffer/AttributeData';
import { CellData } from 'common/buffer/CellData';
import { Content, NULL_CELL_CODE } from 'common/buffer/Constants';
import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';
import { Terminal } from 'xterm';
import { Terminal } from '@xterm/xterm';
import { BaseRenderLayer } from './BaseRenderLayer';
import { GridCache } from './GridCache';
@@ -1,10 +1,10 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "es2021",
"lib": [
"dom",
"es6"
"es2021"
],
"rootDir": ".",
"outDir": "../out",
@@ -17,6 +17,9 @@
],
"browser/*": [
"../../../src/browser/*"
],
"@xterm/addon-canvas": [
"../typings/addon-canvas.d.ts"
]
},
"strict": true,
@@ -0,0 +1,37 @@
/**
* Copyright (c) 2019 The xterm.js authors. All rights reserved.
* @license MIT
*/
import test from '@playwright/test';
import { ISharedRendererTestContext, injectSharedRendererTests, injectSharedRendererTestsStandalone } from '../../../out-test/playwright/SharedRendererTests';
import { ITestContext, createTestContext, openTerminal } from '../../../out-test/playwright/TestUtils';
let ctx: ITestContext;
const ctxWrapper: ISharedRendererTestContext = {
value: undefined,
skipCanvasExceptions: true
} as any;
test.beforeAll(async ({ browser }) => {
ctx = await createTestContext(browser);
await openTerminal(ctx);
ctxWrapper.value = ctx;
await ctx.page.evaluate(`
window.addon = new window.CanvasAddon(true);
window.term.loadAddon(window.addon);
`);
});
test.afterAll(async () => await ctx.page.close());
test.describe('Canvas Renderer Integration Tests', () => {
// HACK: The tests fail for an unknown reason
test.skip(({ browserName }) => browserName === 'webkit');
injectSharedRendererTests(ctxWrapper);
injectSharedRendererTestsStandalone(ctxWrapper, async () => {
await ctx.page.evaluate(`
window.addon = new window.CanvasAddon(true);
window.term.loadAddon(window.addon);
`);
});
});
@@ -0,0 +1,35 @@
import { PlaywrightTestConfig } from '@playwright/test';
const config: PlaywrightTestConfig = {
testDir: '.',
timeout: 10000,
projects: [
{
name: 'Chrome Stable',
use: {
browserName: 'chromium',
channel: 'chrome'
}
},
{
name: 'Firefox Stable',
use: {
browserName: 'firefox'
}
},
{
name: 'WebKit',
use: {
browserName: 'webkit'
}
}
],
reporter: 'list',
webServer: {
command: 'npm run start-server-only',
port: 3000,
timeout: 120000,
reuseExistingServer: !process.env.CI
}
};
export default config;
@@ -20,9 +20,10 @@
},
"strict": true,
"types": [
"../../../node_modules/@types/mocha",
"../../../node_modules/@types/node",
"../../../out-test/api/TestUtils"
"../../../node_modules/@lunapaint/png-codec",
"../../../out-test/playwright/TestUtils",
"../../../out-test/playwright/SharedRendererTests"
]
},
"include": [
@@ -3,9 +3,9 @@
* @license MIT
*/
import { Terminal, ITerminalAddon, IEvent } from 'xterm';
import { Terminal, ITerminalAddon, IEvent } from '@xterm/xterm';
declare module 'xterm-addon-canvas' {
declare module '@xterm/addon-canvas' {
/**
* An xterm.js addon that provides search functionality.
*/
@@ -6,7 +6,7 @@
const path = require('path');
const addonName = 'CanvasAddon';
const mainFile = 'xterm-addon-canvas.js';
const mainFile = 'addon-canvas.js';
module.exports = {
entry: `./out/${addonName}.js`,
@@ -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,13 +1,13 @@
{
"name": "xterm-addon-web-links",
"name": "@xterm/addon-fit",
"version": "0.9.0",
"author": {
"name": "The xterm.js authors",
"url": "https://xtermjs.org/"
},
"main": "lib/xterm-addon-web-links.js",
"types": "typings/xterm-addon-web-links.d.ts",
"repository": "https://github.com/xtermjs/xterm.js",
"main": "lib/addon-fit.js",
"types": "typings/addon-fit.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-fit",
"license": "MIT",
"keywords": [
"terminal",
@@ -21,7 +21,6 @@
"prepublishOnly": "npm run package"
},
"peerDependencies": {
"xterm": "^5.0.0"
"@xterm/xterm": "^5.0.0"
}
}
@@ -3,7 +3,8 @@
* @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';
interface ITerminalDimensions {
@@ -21,7 +22,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 {
@@ -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"
]
}
},
@@ -4,7 +4,7 @@
*/
import { assert } from 'chai';
import { openTerminal, launchBrowser } from '../../../out-test/api/TestUtils';
import { openTerminal, launchBrowser, timeout } from '../../../out-test/api/TestUtils';
import { Browser, Page } from '@playwright/test';
const APP = 'http://127.0.0.1:3001/test';
@@ -75,7 +75,15 @@ describe('FitAddon', () => {
await page.evaluate(`window.term = new Terminal()`);
await page.evaluate(`window.term.open(document.querySelector('#terminal-container'))`);
await loadFit();
assert.equal(await page.evaluate(`window.fit.proposeDimensions()`), undefined);
const dimensions: { cols: number, rows: number } | undefined = await 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) {
assert.isAbove(dimensions.cols, 85);
assert.isBelow(dimensions.cols, 88);
assert.isAbove(dimensions.rows, 24);
assert.isBelow(dimensions.rows, 29);
}
});
});
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"target": "es2021",
"lib": [
"es2015"
],
@@ -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.
@@ -6,7 +6,7 @@
const path = require('path');
const addonName = 'FitAddon';
const mainFile = 'xterm-addon-fit.js';
const mainFile = 'addon-fit.js';
module.exports = {
entry: `./out/${addonName}.js`,
@@ -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

@@ -1,13 +1,13 @@
{
"name": "xterm-addon-image",
"version": "0.6.0",
"name": "@xterm/addon-image",
"version": "0.7.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",
"types": "typings/addon-image.d.ts",
"repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image",
"license": "MIT",
"keywords": [
"terminal",
@@ -22,7 +22,7 @@
"prepublishOnly": "npm run package"
},
"peerDependencies": {
"xterm": "^5.2.0"
"@xterm/xterm": "^5.2.0"
},
"devDependencies": {
"sixel": "^0.16.0",
@@ -36,7 +36,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]);
}
});
@@ -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;
@@ -4,7 +4,7 @@
*/
import { toRGBA8888 } from 'sixel/lib/Colors';
import { IDisposable } from 'xterm';
import { IDisposable } from '@xterm/xterm';
import { ICellSize, ITerminalExt, IImageSpec, IRenderDimensions, IRenderService } from './Types';
import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle';
@@ -3,7 +3,7 @@
* @license MIT
*/
import { IDisposable } from 'xterm';
import { IDisposable } from '@xterm/xterm';
import { ImageRenderer } from './ImageRenderer';
import { ITerminalExt, IExtendedAttrsImage, IImageAddonOptions, IImageSpec, IBufferLineExt, BgFlags, Cell, Content, ICellSize, ExtFlags, Attributes, UnderlineStyle } from './Types';
@@ -53,6 +53,18 @@ class ExtendedAttrsImage implements IExtendedAttrsImage {
this._ext |= value & (Attributes.CM_MASK | Attributes.RGB_MASK);
}
public get underlineVariantOffset(): number {
const val = (this._ext & ExtFlags.VARIANT_OFFSET) >> 29;
if (val < 0) {
return val ^ 0xFFFFFFF8;
}
return val;
}
public set underlineVariantOffset(value: number) {
this._ext &= ~ExtFlags.VARIANT_OFFSET;
this._ext |= (value << 29) & ExtFlags.VARIANT_OFFSET;
}
private _urlId: number = 0;
public get urlId(): number {
return this._urlId;
@@ -3,7 +3,7 @@
* @license MIT
*/
import { IDisposable, IMarker, Terminal } from 'xterm';
import { IDisposable, IMarker, Terminal } from '@xterm/xterm';
// private imports from base repo we build against
import { Attributes, BgFlags, Content, ExtFlags, UnderlineStyle } from 'common/buffer/Constants';
@@ -14,7 +14,8 @@
"baseUrl": ".",
"paths": {
"browser/*": [ "../../../src/browser/*" ],
"common/*": [ "../../../src/common/*" ]
"common/*": [ "../../../src/common/*" ],
"@xterm/addon-image": [ "../typings/addon-image.d.ts" ]
}
},
"include": [

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