Commit Graph
753 Commits
Author SHA1 Message Date
Daniel Imms 3457b73ac8 Merge pull request #445 from Tyriar/444_rate_limit_viewport_refresh
Rate limit Viewport.refresh
2017-01-08 16:24:27 -08:00
Daniel Imms 28b38dc76d Merge pull request #438 from Tyriar/280_improve_refresh_queue
Improve refresh queue
2017-01-08 16:24:16 -08:00
Paris Kasidiaris 43d4d4f2bb Merge pull request #458 from TylerJewell/patch-1
Add additional products that use xTerm
2017-01-08 23:49:46 +00:00
Tyler Jewell 520f2bc9d6 Add additional products that use xTerm
Hi xTerm team. Over the past 6 months, we have been studying xTerm as a replacement for Eclipse Che's term.js. It's taken us a bit of an effort, but the work is now done!  You can expect that Eclipse Che engineers (abot 60 contributors) will make direct contributions back to xTerm ongoing now that we are fully integrated in. We integrate xTerm alongside GWT.  As we more natively integrate the solution, we'll make additional PRs directly back to the project.

As background on the research and integration work that we did, these are the postings from our engineering team's research from the past six months. Some of these issues have already been resolved, or in the process of being resolved.

We also plan a couple of blog posts to our forums (~250K followers) about xTerm integration later in Q1 after we make our 5.0.0 announcements. I could also add Codenvy to this PR as well since it has been released with the version based upon xTerm, but with Sourcelair being the initiators we didn't want to make it seem like we were trying to be competitive. This PR is about the promotion and success of xTerm, for which we are fully committed to.

## Xtermjs 
This document is result of investigation using xtemjs ui terminal instead of current term.js. It contains analyze pluses and minuses using xtermjs (release version 2.2.3) and technical problems.  Investigation issue: https://github.com/eclipse/che/issues/3210

## Description
For now we are using our own fork of the https://github.com/chjj/term.js for user interface websocket-terminal. But actually this project is no longer maintained. So we can not get new releases from this project and we need support this script on our own. Original project contains link for a maintained fork https://github.com/sourcelair/xterm.js. This fork uses MIT license and community intensive develops this project. It has such users like: Microsoft Visual Studio Code, SourceLair, ttyd. xterm.js had already done 46 releases https://github.com/sourcelair/xterm.js/releases.

## Technical Advantages of xTerm:
* xterm.js has js tests. We have not any test for old term.js.
* We can periodically update xtem.js by new release.
* Added parameter to cancel browser events.
* Default 256 colours moved from js to css.
* Added ability to set terminal theme.
* Improved resize mehanizm (added resize event).
* Added fit.ts script to fits terminal size to original height and width of parent div.
* Fixed lost text selection from current active line(when blink is enabled).
* Improved copy/paster mehanizm.
* Linkify URL feature.
* Implement moving back and forward across words with "Alt + ←" and "Alt + →" respectively.
* Improved special key handling.
* Added addons to exdens xterm.js
* Improved mehanizm copy/paster from clipboard.
* Fixed cross platform input problems(For IPad, Iphone, MacIntel, MacPPC and so on).
* Did some work to support UTF-8 symbols.
* Implemented scrollbar.
* Fixed incorrect mouse position for application with  pseudo-graphic user interface (for example Midnight Commander).
* Fix to prevent terminal scrolling when user is looking into scrollback(similar to gnome-terminal, if the user is scrolling up to look at past output and the currently running program adds output to the terminal, the viewport of xterm.js should not scroll and interrupt what they are looking at.)
* Make right-click work on all browsers.

##  Broken Changes: 
We can move on our changes to realize copy/paste by hotkeys Ctrl + C/Ctrl +V. But xterm.js support hotkeys more common for terminal: Ctrl + Insert and Shift + Insert and maybe that's enough.

Drop support for old mouse wheel APIs: all browsers have supported the WheelEvent (onwheel) for sometime now, since Firefox does not support onmousewheel which is also non-standard but works with the standard interface, it makes sense to drop support now.

## Browser Support
Since xterm.js is typically implemented as a developer tool, only modern browsers are supported officially. Here is a list of the versions to support:
Chrome 48+
Edge 13+
Firefox 44+
Internet Explorer 11+
Opera 35+
Safari 8+

Xterm.js works seamlessly in Electron apps and may even work on earlier versions of the browsers but these are the browsers xterm.js developers strive to keep working.

## Known major bugs:
https://github.com/sourcelair/xterm.js/issues/307
https://github.com/sourcelair/xterm.js/issues/362
https://github.com/sourcelair/xterm.js/issues/348
https://github.com/sourcelair/xterm.js/issues/325 Data loss when resizing terminal (but this bug is exist in the current terminal ui in the CHE too). Community has pull request to fix this issue for xtermjs https://github.com/sourcelair/xterm.js/pull/404 .
 
Additional information: 

Code base xterm.js consist of files written on native javascript and typescript. For manage js dependency and configuration used npm, typings, bower and node. Development tendency: rewrite xtemr.js completely on the Typescript(information about this included to the release notes 2.2.3).
2017-01-08 09:44:14 -08:00
Daniel Imms ff523bfc79 Fix tests 2017-01-04 10:30:04 -08:00
Daniel Imms efdf37b887 jsdoc 2017-01-03 11:23:36 -08:00
Daniel Imms 6ffb8f545b Rate limit Viewport.refresh
This prevents 1000 scroll events from firing when the buffer is not full

Fixes #444
2017-01-03 11:18:38 -08:00
Daniel Imms 7234bfb6eb Move row evaluation into refreshLoop
This allows the refresh public API to still function
2016-12-31 14:58:17 -08:00
Daniel Imms 97feb3321c Improve refresh queue
Use requestAnimationFrame in addition to a queue to refresh every animation
frame but only when a refresh is needed.

Fixes #280
Fixes #290
2016-12-31 14:14:02 -08:00
Daniel Imms 1fbd3c8f65 Merge pull request #432 from Tyriar/335_TS_EventEmitter
Convert EventEmitter to TypeScript and add tests
2016-12-31 07:14:47 -08:00
Daniel Imms 965ebde22f Remove remaining removeListener ref 2016-12-31 07:11:47 -08:00
Daniel Imms 0d9d3aca1a Remove addListener/removeListener 2016-12-31 07:10:45 -08:00
Daniel Imms 937cf43e09 Remove redundant assignment in constructor 2016-12-31 07:07:45 -08:00
Daniel Imms 23472e6fb4 Merge pull request #431 from Tyriar/427_refresh_scroll_on_buffer_change
Sync scroll bar when alt/normal buffer is switched in
2016-12-30 04:42:36 -08:00
Antonis Kalipetis 445728b2a2 Merge pull request #403 from akalipetis/docker-enhancement
Improve the Docker image
2016-12-30 11:24:22 +02:00
Antonis Kalipetis 61c213f9e3 Ignore all the build directories in Docker
This allows for reproducible builds.
Also, fix Dockerfile to first build and then run tests and a typo in the entrypoint.

Thanks @BenHall for reporting the issue with the Docker build!
2016-12-29 16:13:58 +02:00
Daniel Imms dba432d1b6 Add tests 2016-12-29 05:09:47 -08:00
Daniel Imms 2f416371bd Convert EventEmitter to TS
Pat of #335
2016-12-29 04:53:57 -08:00
Daniel Imms 2bfbdb1c06 Sync scroll bar when alt/normal buffer is switched in
Fixes #427
2016-12-29 03:55:36 -08:00
Antonis Kalipetis a4c958c54f Fix EOL character in .editorconfig and update docker-compose 2016-12-28 18:49:36 +02:00
Antonis Kalipetis b2e257bf37 Remove entrypoint
Signed-off-by: Antonis Kalipetis <akalipetis@gmail.com>
2016-12-28 18:45:21 +02:00
Antonis Kalipetis 6b6314227e Improve the Docker image
1. Bump Node version to 6.9 - the latest LTS
2. Include the `cpio` binary, used during building
3. Ignore node_modules and .git directories for faster builds
4. Run the tests and build during the image build, to make sure the image is not built if these break
5. Make npm run dev the default command
6. Add an entrypoint to automatically install Node modules if they do nott exist

Signed-off-by: Antonis Kalipetis <akalipetis@gmail.com>
2016-12-28 18:45:18 +02:00
Antonis Kalipetis 1e0eb3784e Merge pull request #402 from akalipetis/hotfix-npm-scripts
Improve the package.json scripts
2016-12-28 18:44:20 +02:00
Antonis Kalipetis f00ea4bfac Add a Procfile with the npm start command
Also, update the Procfile.dev with the updated `npm run dev` command.

Signed-off-by: Antonis Kalipetis <akalipetis@gmail.com>
2016-12-28 18:12:23 +02:00
Antonis Kalipetis 0da4c9d90d Improve the package.json scripts
1. Include a `prestart` script, which runs the build
2. Make the `start` script just start the demo server
3. Add a new `dev` script, which contains the nodemon logic
4. nodemon now watches for changes in `*.ts` files and runs the start command

Signed-off-by: Antonis Kalipetis <akalipetis@gmail.com>
2016-12-28 18:12:20 +02:00
Daniel Imms df83298c54 Merge pull request #429 from Tyriar/428_scrollback_exception
Ensure ydisp does not drop below 0 in refresh
2016-12-28 05:59:43 -08:00
Daniel Imms 5d29d4ea22 Remove log 2016-12-28 03:41:48 -08:00
Daniel Imms a9e1ed5a72 Ensure ydisp does not drop below 0 in refresh
Fixes #428
Related to #385
2016-12-28 03:41:12 -08:00
Daniel Imms e6ad8d8b50 Merge pull request #422 from Tyriar/361_circular_list_scrollback
Use a circular list to manage buffer
2016-12-28 03:10:31 -08:00
Daniel Imms 50cfe2b21a Improve header comment 2016-12-27 13:40:52 -08:00
Daniel Imms d7f2ec89d7 Polish 2016-12-24 03:17:30 -08:00
Daniel Imms cc5ae8193b Fix insertLines as max buffer size 2016-12-24 00:26:43 -08:00
Daniel Imms 30a1f1ccb5 Fix issue with max buffer size after vim fix 2016-12-24 00:14:30 -08:00
Daniel Imms 6f7cb990ca Fix issue with vim scrolling 2016-12-24 00:04:31 -08:00
Paris Kasidiaris 06f5746c86 Merge pull request #423 from katacoda/katacoda-integration
Katacoda xterm.js integration is live
2016-12-22 23:30:00 +02:00
Ben Hall cd44fe7bcd Katacoda xterm.js integration is live 2016-12-22 20:10:33 +00:00
Ben Hall bb3d6ee72c Katacoda xterm.js integration is live 2016-12-22 12:01:44 +00:00
Daniel Imms bf16fdc01d Have reverseIndex use CircularList.shiftElements 🎉 2016-12-21 03:26:40 -08:00
Daniel Imms 969a2e953c Implement CircularList.shiftElements 2016-12-21 03:18:30 -08:00
Daniel Imms bfaf9cd6eb Doc and testing 2016-12-21 02:39:21 -08:00
Daniel Imms be2e4b5d85 Add missing return type 2016-12-21 02:11:14 -08:00
Daniel Imms cc0fc953cf Remove logs 2016-12-22 02:04:31 -08:00
Daniel Imms 3b35d12e60 Fix issue with the git log
The old code was assuming that the buffer was not going to change, this is not
true with the current impl though where the list is shifted and ybase and ydisp
need to be compensated for that.
2016-12-22 02:02:05 -08:00
Daniel Imms 4bc679b0b3 Merge remote-tracking branch 'upstream/master' into 361_circular_list_scrollback 2016-12-21 15:43:18 -08:00
Daniel Imms be56c72b5f Fix when scrollback limit is reached 2016-12-21 15:43:04 -08:00
Paris Kasidiaris db92840ffc Merge pull request #415 from saswatds/saswatds-patch-1
Update README.md
2016-12-19 15:47:19 +02:00
Paris Kasidiaris 593a4ec0b0 Merge pull request #417 from BobReid/os_x_bash_arrow_fix
changed escape sequence for alt-arrow to work on bash on os x
2016-12-19 15:45:57 +02:00
Saswat Das d018a547a2 Update README.md
Added Getting started content from the xtermjs.org website
2016-12-18 04:48:19 +05:30
Paris Kasidiaris a246200675 Merge pull request #419 from blink1073/clean-up-npm-publish
Clean up npm publish
2016-12-16 20:46:27 +00:00
Steven Silvester 1cb6517812 Revert changes to other published files 2016-12-16 14:41:29 -06:00