GithubHelp home page GithubHelp logo

vercel / hyper Goto Github PK

View Code? Open in Web Editor NEW
42.7K 480.0 3.5K 22.5 MB

A terminal built on web technologies

Home Page: https://hyper.is

License: MIT License

JavaScript 0.20% HTML 0.27% Shell 0.97% Batchfile 0.04% TypeScript 98.12% NSIS 0.40%
terminal javascript html css react terminal-emulators hyper macos linux

hyper's Issues

Hyperterm 0.2.1 cursor issue

Hi!

In the last update the cursor has an issue, it's not aligned with the input line:
screen shot 2016-07-03 at 20 17 33
screen shot 2016-07-03 at 20 19 50

Also, there is a scrollbar by default

Expose process API from webview

The webview should be able to execute processes and also know the ttyname.

That way, the index.js does less, we don't need to maintain subscriptions for title publishing, no blur / focus, etc. will execute the commands directly.

update interval

Default update interval runs every 5 seconds. this should run way less frequently.

Uncaught Exception: Expected 48 got 47

Exception occurs after trying to run npm run launch and produces this error.

> hyperterm@0.1.0 launch /home/proxima/Desktop/hyperterm-0.1.0
> electron index

App threw an error during load
Error: Module version mismatch. Expected 48, got 47.
    at Error (native)
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:158:20)
    at Object.Module._extensions..node (module.js:568:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:158:20)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)
    at Function.Module._load (module.js:407:3)
    at Module.require (module.js:466:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/proxima/Desktop/hyperterm-0.1.0/node_modules/child_pty/lib/child_pty.js:1:90)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Module version mismatch. Expected 48, got 47.
    at Error (native)
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:158:20)
    at Object.Module._extensions..node (module.js:568:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:158:20)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)
    at Function.Module._load (module.js:407:3)
    at Module.require (module.js:466:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/proxima/Desktop/hyperterm-0.1.0/node_modules/child_pty/lib/child_pty.js:1:90)

Node & npm versions
node -v5.1.0
npm -v3.8.1

OS
Arch Linux 4.6.2

Heuristic for error activity

When a tab becomes active, at the moment we show it in blue:

image

We do this by simply capturing new data to write to the terminal. What we can do: if /error/i matches the data we pass along, we can make that label red instead.

A red tab is orders of magnitude more interesting in terms of prioritization of attention than a blue tab.
There are opportunities for false positives, but I can't think of many.

Do you think this is too obtrusive and error prone for us to ship with, and therefore should be an extension?

Babel/webpack modules missing from package.json

Trying to build locally (on Linux) I hit:

ERROR in Entry module not found: Error: Cannot resolve module 'babel-loader' in /home/daniel/dev/hyperterm/app

Installing that then asks for babel-core, installing that leads to an Unknown plugin "transform-react-jsx" error. An webpack watch entry in package.json scripts would be good in addition to more complete devDependencies.

Editor width doesn't match terminal width

  • Shell: zsh
  • Editing files with vim or nano

Steps to reproduce

  1. Open Hyperterm
  2. Make the app window a bit bigger with your mouse
  3. Open a file with vim or nano
  4. Long lines get wrapped before the end of the terminal window.

screen shot 2016-07-02 at 3 04 31 pm

Implement font size <Term> property

From the perspective of it'd be more elegant if we simply alter in the render loop.

Then we can capture it in shouldComponentUpdate and manually perform the transformation on the local term reference and return false.

(from #34, ping @jhaynie)

Default OS X keyboard shortcuts are not working

I use cmd+h to hide all windows belong to an app (can't remember if it's default OS X behaviour or not). It's working in other Electron apps, such as Slack and Atom, when focusing on text inputs. Not sure if this is true for other global OS X shortcuts people have set up.

Edit: I tried with cmd+option+m for minimizing the current window, which isn't working in Hyperterm.

Version: 0.2.1.

No close button on an individual tab

It's only possible to close a tab by hitting cmd+w, which perhaps shouldn't be the only way of closing a tab.

Version: 0.2.1

(I'm filing a bunch of UI stuff now, to keep track of them. Can be triaged).

Extend README.md

A few things we need in there:

  • What is hyperterm? Why does it exist? Why is it special? (aka. "Description")
  • Screenshot or GIF showing usage
  • How to contribute

I also think that we should convert all "TODO" items into issues (makes them easier to manage and discuss about with the community).

Keyboard shortcuts don't work when closing a tab with cmd+w

The problem is that we can't give programmatic focus to hterm (it seems) when keyboard events are used. It seems to require a click event, probably due to the fact that there's an <iframe> in the way.

We might need to register all the Mousetrap shortcuts as accelerators in Electron as well.

Special characters and foreign keyboard not displayed correctly

So I use Spanish ISO keyboard (like this one: http://g01.a.alicdn.com/kf/HTB1iOQ8HVXXXXaeXpXXq6xXFXXXd/Spanish-Euro-Keyboard-Cover-Protector-for-MacBook-Air-11-11-6-Inch-European-ISO-Keyboard-Spain.jpg_640x640.jpg), and it is impossible to type some characters.

For example, "special" characters like ¿¡· are displayed like this: <00c2><00bf><00c2><00a1><00c2><00b7>, same with the ñ.

And other keyboard combinations are just impossible to type, my biggest issue is ~, since I need to type Alt + ñ but it just doesn't appear. Same issue with any letter with an accent (á, ö, â, etc).

I'm using zsh, if it matters.

What is the end goal of the project?

Hi,

I'm using this already and I really like the aesthetic and of course the fact that uses web tech. Kudos for having something usable day to day so early.

I was wondering though what your vision of what hyperterm will look like is. I've been toying with the idea of a web/electron shell for a while, but my thinking for building a web tech based terminal emulator is to be able to use complex UIs, not to provide a seamless xterm experience using web technologies.

Is the end goal of the project to be "the Atom of terminals"?
Do you plan or making it extensible so rich media can be embedded, for example as a result of a command execution (showing image thumbnails on ls is the example that comes to mind)? Or is the goal to have it always be 100% compatible with current terminal emulators?

Thanks!

Alternative shortcut for exiting website

I presumed I could exit a website with ctrl + c - similar to other terminal processes and it took a little while to figure out it was command + w. Not a big deal, but thought I'd mention :)

Option-arrow does not act like terminal.app

When modifying commands in other terminal apps (and text editors), option-arrow acts like the b and w commands in vi, jumping to the next word boundary. In hyperterm, it instead prints ;3D and makes the ^G noise.

Note that option-delete acts as expected, deleting to the nearest word boundary.

Allow custom stylesheet

Allowing a custom stylesheet offers a lot of possibilities to make hyperterm like home, for example changing the font and font-size.

It could be implemented with the simple convention of having a style.css (maybe style.less) in ~/.hyperterm/.

Command + , (settings) should edit `~/.hyperterm.json`

We can accomplish this by opening a new tab and writing:

'$EDITOR ~/.hyperterm.json\n'

to it :D
Perhaps also we can write a test for the absence of $EDITOR in the same command to warn in red letters about not having configured an editor and to try manually.

Better updates system

screen shot 2016-07-03 at 4 29 20 pm

Goals and improvements over the ugly hack we have:

  • Downloads and installs on the background, only prompts the user to restart
  • Single-click restart
  • Dismissable
  • Green instead of red

Assets:

  • Icon icon.svg.zip
  • Background color: #7ED321
  • Dismiss link color: #528D11

Thanks to @matiastucci for bringing this electron API to my attention.

Non-retina text rendering is bad

There's a rule, presumably down in Electron, that is setting -webkit-font-smoothing: antialiased for x-screen. Perhaps I'm extra sensitive to this, but this looks absolutely terrible on non-retina screens. When I toggle that rule in the inspector everything looks great. Personally I think that also looks better on a retina screen. It might be worth considering enforcing subpixel-antialiasing (IMO always, but could be on a media query for < 2 pixel density), or eventually some setting even.

Split panes

Hey! I'm loving using this so far, there's only one thing missing that helps me with my workflow.

I'd love to see multiple panes in tabs. For example, you could use CMD+D for a horizontally split pane or CMD+SHIFT+D for a vertically split pane from the currently selected. I don't have any particularly good ideas on how to navigate the panes with keyboard commands. Atom uses CMD+K then CMD+[directional arrow] to navigate between split panes.

Anyway, I'd absolutely love to see this feature in hyperterm, I hope it's possible!

Colors

Terminal colors are slightly different (not respected?)
see

Hyperterm:
screen shot 2016-07-05 at 02 25 00

Terminal:
screen shot 2016-07-05 at 02 25 12

Extensions API

Continuing from the "Allow custom stylesheet" thread (#10).

The way I want to do this is directly with the JS extensions API. You would basically register a plugin that registers CSS.

The sample extension we'll have is one that makes the theme light during the day and dark at night. This will show off adding CSS and also adding a bit of JS logic, so it's a good all-around example.

I'll probably use webpack in the example build step so that you can require('./something.css'). People that want to use sass can simply use a sass loader or add another step to get the .css from the .sass.

Feature request: CMD-K to clear scrollback (or perhaps ability to remap CTRL-L)?

On Mac OS terminals, the default command to clear scrollback is command-k, which my fingers are trained to use often. Looks like the closest similar behavior is clear or CTRL-L in hyperterm (although it doesn't clear, just puts the prompt at the top, which is a completely acceptable alternative for me). Might be nice to have this functionality for users switching from mac terminal

Switching tabs with `CMD+Shift+[` `CMD+Shift+]`

This is funny, I had a conversation about switching tabs via arrows vs [] with many people, the split is right there in the middle.

I'd definitely love to see CMD+Shift+[ and CMD+Shift+] working in Hyperterm.

cmd+k support

In most terminals it seems like the history goes away upon command+k. I personally find this annoying, since later I want to scroll back.

We should make it work like clear, and if people miss the "history cleaning" behavior, we can add it as a modifier (command+shift+k for example).

build script is missing

package.json doesn't list build in its scripts but package.sh suggests it should be there :) do you have commands for that and for a watcher or is it just browserify/etc?
EDIT: found the webpack script in app :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.