mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-12 20:18:41 -09:00
Quine's fork of "Hyper" by Vercel, A terminal built on web technologies
* remove legacy css * hyperterm: delegate rows / cols calculation to hterm * session: handle pty kill problems * index: fix memory leak by removing sessions from the map upon exit * app: remove local copy of `xterm.js` * term: implement the `hterm` API and some needed overrides * package: add `hterm-umd` * hyperterm: add optimistic tab exit * hyperterm: delegate key combination detection to the hterm <iframe> document * term: register keyboard * session: fix incorrect width after resizing and creating a new tab (#13) * tabs: fix `user-select` css property * term: fix focus issue when exiting a url Instead of uninstalling the keyboard, we keep the focus on the underlying terminal. We register a new IO handler so that we intercept all data events. The reason we need to do this is that we can't programmatically restore focus on the underlying terminal unless it's in the same tick as a user event (ie: click). Since we were uninstalling the keyboard and subsequently attempting to reinstall it without such an event, pressing Ctrl+C after a url was effectively resulting in a loss of focus and a horrible horrible experience. Now it's fixed :) * text-metrics: remove module no longer used hterm has a much better calculation technique anyways * term: fix default bg * term: fix nasty hterm bug that triggered an infinite copy loop * index: add separator in `View` menu for full screen item * term: implement cmd+K clearing and improve hterm's `wipeContents` |
||
|---|---|---|
| app | ||
| .gitignore | ||
| HISTORY.md | ||
| icon.icns | ||
| index.js | ||
| install.sh | ||
| package.json | ||
| package.sh | ||
| README.md | ||
| rpc.js | ||
| session.js | ||
hyperterm
Contribute
To install package.json dependencies in a way where the native
modules are built with electron, run:
$ ./install.sh
Then, you want to make sure app/dist is populated. I recommend
running webpack with --watch so that any changes you make
to the app are detected.
$ cd app/
$ npm install
$ webpack --watch
Then you can run in the main directory:
$ npm start
...to launch the app!
TODO
- Warn upon quit
- Implement memory for tab navigation like in Chrome
- Clone
pwdwhen opening a new tab (as the first plugin?) - Implement cmd+K to clear
- Listen on
resizeevent coming from the pty. - Make sure all popular shells work well, and that we detect "url commands" appropriately for them.
- Figure out process title extraction on other platforms.
- Define extensibility surface and APIs
- Define approach to conf management (
~/.hyperterm.json?) - When webview is shown, replace title of tab with webview's title
- Linkify urls in stdout. If clicked, inline webview. If cmd+clicked, default browser.
- Show icon that triggers contextmenu in tab, when hovered.
- "Open in default browser" option in webview mode
- Close
- Test on Windows, Linux
- Investigate startup time improvements
- Optimistic (mosh-style) prompt that memoizes PS1
- Smaller bundle (ie: uglify, but currently doesnt work with ES6)
- Inline all the CSS/JS in the page instead of extra file