* `command` => `mod`
* `Option` => `Alt`
* Allow hterm to consume a keyboard event only if it's not a Hyper accelerator
* Remove `console.log`s
* Say no to bikeshedding
* We already clear the selection on `onKeyDown`
* Add comments
* Remove meaningless comment
* Add fullscreen shortcut for Windows and Linux
* Use the accelerators defined in `accelerators.js` for the app menu
* ime
* Fix code style
* Add visual feedback for composition events
* Temporarily disable `hterm`'s `onKeyDown` hacks
* Replicate the focus/blur state of our caret on the `hterm` caret
* Fix: focus our caret when there's a tab change
* `caret_` => `hyperCaret`
* Reorg: move the caret hacks to the `hterm.js` extensions
* Remove `console.log`
* Remove the `Dead key` hack and reenable keyboard commands
* Add a (temporary?) fix to re-enable text selection
* Check for a selection `onMouseUp` instead `onFocus`
* Fix wrong buggy hterm's cursor styling on term focus/blur
* Fix the cursor style after the bell rings – closes#674
* Enable `acceptFirstMouse` to focus the correct term – closes#861
* Fix code style
* Fix: clear the `hyper-caret` when a char is inserted via the IME dialog
* Remove useless function
* Add coments regarding text selection
* Fix code style
* `child_pty` => `pty.js`
* Create a frameless window on Windows and Linux
* Add a brand new UI for Linux and Windows 💅
* [Windows] Fix plugin installation
* [Windows] Fix the `build` script
* [Windows] Add a bigger `icon.ico`
* [Mac] Add `WebKitAppRegion: drag` when running on macOS
* Fix code style 🤔
* Add `appveyor.yml`
* Fix code style (again)
* [Windows] Fix AppVeyor's `install` script
* [Windows] Try a new AppVeyor config
* [Windows] Set the binary path so Spectron can run the tests
* [Windows] Try to build on x64
* Try again to build on x64
* Try one more time 😩
* Throw an error to indicate that `pty.js` was built incorrectly
* [Win/Linux] Add `display: hidden` to <Tabs /> if tabs.length === 1
* [Win/Linux] Reorganize SVGs – via @CodeTheory
* [Win/Linux] Fix the hamburger menu height
* Make the SVGs look better with `shape-rendering: crispEdges;`
* [Win/Linux] Add config options for the window controls and the 🍔 menu
* Add `electron-squirrel-startup` dependency
* [Win] Handle Squirrel commands
* [Win/Linux] Fix default color for the 🍔 and window controls – via @CodeTheory
* [Win/Linux] Add some padding - via @CodeTheory
* [Win/Linux] Add hover states – via @CodeTheory
* [Win] Fix empty window/tab titles
* [Win] Fix opening Preferences (#978)
* [Win] Fix opening Preferences
* Update ui.js
* Update ui.js
* Enhance messages and default editor
* [Win] Add dependency instructions to the README.md [skip ci]
* Fix code style
* [Win/Linux] Check the number of open windows before quitting the app
* increase timeout for update checks
It seems like, there are lots of them and GitHub is not happy.
So increasing timeout 6x should fix that. In the end there is no need
to check updates every 5 minutes.
Fix#880
* restore check updates on start
@Tyriar brought up a good point in #123 that the close menu items can be
ambiguous and misleading. This clarifies them so you know exactly what
you're closing.
Fixes#123.
Default `err.message` notification is not helpful,
because it lacks stack and context.
it doesnt hurt for end users to add `console.error(err)`,
because they arent gonna see it. Though, as far as `console.error`
is being logged in Electron console, developers will get
enough information to identify problems with plugin they are developing.
fetchNotifications error can happen in two cases:
* https://hyper-news.now.sh is down
* you are offline
In both cases it doesn't hurt to wait half an hour.
PS. right now it hurts, when you are offline and developing
anything for Hyper, `console.error` logs the same error
every 10s and ruins your investigation.
* Add pseudo quick full screen
* Record window size before entering full screen
* Restore window size when leaving full screen
* Toggle menu items for quick full screen
* Remove redundant filters
* Add accelerators for Linux
* Only save window state when not full screen
* npm: add .npmrc with save-exact=true
* split panes: create initial implementation
This allows users to split their Hyperterm terms into
multiple nested splits, both vertical and horizontal.
Fixes#56
* split panes: suport closing tabs and individual panes
* split panes: ensure new splits are placed at the correct index
New split panes should be placed after the currently active
pane, not at the end like they were previously.
* split panes: add explicit dependency to uuid
* split panes: implement split pane cycling
This adds menu buttons for moving back and forward between
open split panes in the currect terminal tab.
Doesn't add a hotkey yet, needs some bikeshedding.
* split panes: move activeSessionUid to its own object
It made little sense to have so many objects with `activeSessionUid`
set to `null` when it only mattered on the top level.
Now it's an object mapping term-group `uid` to `sessionUid` instead.
* split panes: make sure closing the last split pane exits the app
* split panes: fix a crash after closing specific panes
Sometimes the terminal would crash when a specific
split pane was closed, because the `activeSessions`
mapping wasn't updated correctly.
* split panes: fix a bug that caused initial session sizing to be wrong
* fix all our focus / blur issues in one fell swoop :O (famous last words)
* get rid of react warning
* hterm: make sure not to lose focus when VT listens on clicks
* term: restore onactive callback
* add missing `return` to override (just in case)
* split pane: new split pane implementation
* goodbye react-split-pane
* added term group resizing action and reducer
* terms: supply border color so that we can use it for splits
* term-group: add resizing hook
* term-groups: add resizing constant
* remove split pane css side-effect
* split panes: pass existing hterm instances to Term
* split panes: add keybindings for split pane cycling
* split panes: remove unused action
* split panes: remove unused styling
* split-pane: remove `console.log`
* split-pane: remove `console.log`
* split panes: rebalance sizes on insert/removal
* split panes: pass existing hterm instances to Term
* split panes: add keybindings for split pane cycling
* split panes: remove unused action
* split panes: remove unused styling
* split panes: rebalance sizes on insert/removal
* split panes: set a minimum size for resizing
* split-pane: fix vertical splits
* css :|
* package: bump electron
* split panes: attach onFocus listener to webviews
* 1.4.1 and 1.4.2 are broken. they have the following regression:
- open google.com on the main window
- open a new tab
- come back to previous tab. webview is gone :|
* split panes: handle PTY exits
* split panes: add linux friendly keybindings
* Memorize window position
* Memorize window size
* Add forced settings and window config
* use destructuring and shorthand method
* Set default config
* Use options defaults in createWindow
* Use options object only
* Update return function
* xo comply
* 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`