* Bump `eslint-plugin-react`
* Add `eslint-config-xo-react`
* Add XO
* Remove eslint-related dependencies, add XO config and use XO as the linter
* Code style: Standard => XO ✨
* Use xo property to ignore files
* Fix remaining errors
* transparent + reactive background colors
* refactor header to not set its own background color
* make terms not set background color
* dramatically improve tab borders
* remove background color from electron windows
* Revert "remove background color from electron windows"
This reverts commit ca4de3c5dc28095f1a598f7ac79d4dff4b66ccd5.
* put alpha first for electron
* remove initial bg color setting, but maintain reactive one
* fix
In case someone wants to use non-login shells there is a field added to
the configuration file.
If shellArgs not set default shell will be used as before.
i.e. for using interactive shell (and use .bashrc instead of
.bash_profile on linux) use shellArgs: ['-i'] and shell: '/bin/bash'
this is useful especially if you are on Linux.
* Open new window offset from last focused window
* Make sure a newly opened window is seen to now have focus
* Instead of setting focus time, simply emit the event first
* Add comment explaining why we emit the focus event
* Don't fire the event, as that can make it fire twice
* Added file-uri-to-path dependency
* Added new rpc event to send data to session
* Modified sendSessionData to use activeUid if no uid is passed to function
* "will-navigate" prevented on file drop, path added to session
* Add proper window support to both the top menu, and the dock
* Sort out linting
* Only create dockMenu on Mac
* Remove label from menu as it is not needed when using role
* Fix spacing
* Prevent hovering on tabs from causing text flicker
For some reason, geometricPrecision was causing text to flicker on
non-retina screens when hovering over the tabs
* Use a pixel ratio media query for text-rendering on retina displays
* Allow env to be specified in config (#424)
This is referencing #424. User specified environment variables
in the `.hyperterm.js` file are expected under a field named `env`.
An example config:
```
module.exports = {
config: {
...
// Environment variables
env: {
WHAT_UP: 'heyo',
}
...
},
plugins: [],
localPlugins: []
};
```
* Add env field to default config
* Add support for opening the terminal on the correct display
* Fix whitespace issue
* Start from the top left again when we run out of space
* Add semicolon
* Add function to escape a shell argument.
* Keep track of the last used window.
* Implement support for the open-file event.
* The shell escape regex needs parentheses to be captured.
* Removed lastWindow and added getLastFocusedWindow method to app
* Create window create new session only if no callback passed
* Added app.windowCallback to handle open-file before "ready"
* Small lint fixes
* Differeent open file handling: check if it is directory, and if the file is executale or not
* Small fixed and added some comments
* Added php-escape-shell module in place of custom escapeShellArgument()
* Fixed wrong code and added detailed comment
* Aliased php_escapeshellcmd import
* Rebased; added error handling in OpenFile
* changed string contatenation with template literal
* Pinned php-escape-shell dependency
* Typo fix
* getLastdFocusedWindow now uses Array.prototype.reduce()
* Notify users of unexisting path while open file
* Step 1: move electorn into `app/`.
This is to comply with the suggested directory format of
`electron-builder`: https://github.com/electron-userland/electron-builder#two-packagejson-structure
* Step 2: add build directory with icon files for mac / windows
* Step 3: move all development (web) assets into main directory
* Step 4: add `build` namespace to dev `package.json`
* Step 5: move all dev dependencies into dev file and get rid of
old electron packagers in favor of `eletorn-builder`
* Step 6: target build inside `app/` as everything else is excluded at build time
* Step 7: remove old stuff!
* Step 8: update README
* turn off asar for `child_pty`
This reverts commit 9e3fe9228d.
@freebroccolo while great in theory, this breaks uglifyjs.
minification provides an important advantage in interpretation
time (and therefore reduced bootup time)
* Allow the `color` config to be an object
It only covers the ANSI 16 as named colors, but allows for an array to
be used if the full color palette wants to be overridden.
* Better handling for array color configs vs. object configs
* Dynamically change the `font-smoothing` pref
By default, hterm defaults to `font-smoothing: 'antialiased'`, which
works really well on retina displays. On non-retina displays, however,
the type looks very thin and is hard to read.
This will look at the devicePixelRatio of the device anytime the term
prefs are set, and change between `antialiased` and
`subpixel-antialiased` dynamically.
* Refactor to add the font smoothing override into state
This also subscribes to the electron `move` event to control when this
piece of state gets updated.
* Add UI_WINDOW_MOVE action with a side effect for font smoothing
The `$EDITOR ~/.hyperterm.js && exit` requires that the default shell recognize variables as commands and to recognize the `&&` syntax, so it does not work with fish shell. The new command works with all common shells, including fish.
the previous dependencies between eslint and eslint-config-standard
return the following warn and error.
```
npm WARN peerDependencies The peer dependency eslint@^2.0.0-rc.0
included from eslint-config-standard will no
npm WARN peerDependencies longer be automatically installed to fulfill
the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to
depend on it explicitly.
```
```
npm ERR! peerinvalid The package eslint@3.0.1 does not satisfy its
siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer eslint-config-standard@5.3.1 wants
eslint@^2.0.0-rc.0
```
so updated the version of eslint-config-standard from 5.3.1 to 5.3.5
which is the newest now.
* font size improvements
- fixed keyboard shortcut registering (listeners were being called twice)
- now saving fontSize in the state of Hyperterm
- Term now accepts fontSize as a prop and internally sets it
- added font size indicator on change (next to rows x cols)
* linting
* removed font size shortcuts from Hyperterm component, still in electron
* only show font size indicator when it has changed
* clean up fontSizeIndicatorTimeout on unmount, changeFontSize 2nd arg is now an options object
* add standard behavior when you double click window title to maximize/unmaximize the window
* increase/decrease font sizes with command + / -
* DRY up code. added reset to reset font to original size. added window accelerators
* add standard behavior when you double click window title to maximize/unmaximize the window
* reset on unmount and added comments about click vs. double click
* 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`