Compare commits

...

327 Commits

Author SHA1 Message Date
Eugene Pankov
5bde116a4e Merge branch 'master' of github.com:Eugeny/terminus 2020-08-26 10:54:52 +02:00
Eugene Pankov
179acc1382 only use pageant as agent if it's runing - fixes #2935, fixes #2936 2020-08-26 10:54:49 +02:00
Eugene Pankov
c6d918e401 build fix 2020-08-23 16:02:56 +02:00
Eugene Pankov
62b53575ac WinSCP integration 2020-08-23 14:59:06 +02:00
Eugene Pankov
32b29a91e9 fixed random conpty freezes - fixes #2805, fixes #1583, fixes #2686, fixes #2293 2020-08-23 14:06:49 +02:00
Eugene Pankov
4346030459 lint 2020-08-16 18:52:45 +02:00
Eugene Pankov
9e8c0ccb14 restore all split tab children at once 2020-08-16 18:30:42 +02:00
Eugene Pankov
6c8d00eb16 don't mention legacy API in README 2020-08-16 18:24:55 +02:00
Eugene Pankov
b3fcfd0c8b added hotkey to focus all panes (fixes #722) 2020-08-16 18:24:47 +02:00
Eugene Pankov
4eefab5655 made warning when closing SSH tabs optional - fixes #2801 2020-08-15 21:07:35 +02:00
Eugene Pankov
2745896ec3 lint 2020-08-15 20:49:18 +02:00
Eugene Pankov
cdfaaabb70 bumped native deps 2020-08-15 20:46:50 +02:00
Eugene Pankov
60ab6ece62 fixed tab context menu for custom tab colors 2020-08-15 20:46:40 +02:00
Eugene Pankov
436318b534 Merge branch 'master' of github.com:Eugeny/terminus 2020-08-15 20:46:21 +02:00
Eugene
248f431437 Merge pull request #2648 from Eugeny/dependabot/npm_and_yarn/node-abi-2.18.0
Bump node-abi from 2.16.0 to 2.18.0
2020-08-15 20:45:56 +02:00
Eugene
7794280115 Merge pull request #2879 from Eugeny/dependabot/npm_and_yarn/typedoc-0.18.0
Bump typedoc from 0.17.7 to 0.18.0
2020-08-15 20:45:32 +02:00
Eugene Pankov
c2cc4c977f Update shellSettingsTab.component.pug 2020-08-15 19:21:12 +02:00
Eugene Pankov
f9b7f97863 handle cwd detection errors on linux 2020-08-14 12:39:14 +02:00
Eugene Pankov
59ce7eeee6 prioritize pubkey auth over password (fixes #2894) 2020-08-13 15:05:05 +02:00
Eugene Pankov
0e012a90ea Update xtermFrontend.ts 2020-08-12 21:04:42 +02:00
Eugene Pankov
6773d260cf Merge branch 'master' of github.com:Eugeny/terminus 2020-08-12 21:02:29 +02:00
Eugene
7379f6cd59 Merge pull request #2859 from 695137400/patch-1
Update xtermFrontend.ts
2020-08-12 21:02:25 +02:00
Jonathan Beverley
3aee24bdbd Re-added an option for Agent Forwarding 2020-08-12 21:00:55 +02:00
dependabot-preview[bot]
84dbfa5d6c Bump typedoc from 0.17.7 to 0.18.0
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.17.7 to 0.18.0.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.17.7...v0.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-10 04:19:24 +00:00
Eugene Pankov
43958d88b8 Merge branch 'master' of github.com:Eugeny/terminus 2020-08-07 12:25:05 +02:00
Eugene Pankov
f4b0e4cb52 Update package.json 2020-08-07 12:25:02 +02:00
Eugene
d91c898f6d Merge pull request #2830 from Eugeny/dependabot/npm_and_yarn/app/yargs-15.4.1
Bump yargs from 15.3.1 to 15.4.1 in /app
2020-08-07 09:22:38 +02:00
Eugene
f16989a45d Merge pull request #2724 from Eugeny/dependabot/npm_and_yarn/electron-notarize-1.0.0
Bump electron-notarize from 0.1.1 to 1.0.0
2020-08-07 09:20:54 +02:00
Eugene
1ef524e832 Merge pull request #2852 from Eugeny/dependabot/npm_and_yarn/eslint-7.6.0
Bump eslint from 7.2.0 to 7.6.0
2020-08-07 09:19:33 +02:00
Eugene
65fcdd2745 Merge pull request #2856 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-3.8.0
Bump @typescript-eslint/parser from 3.3.0 to 3.8.0
2020-08-07 09:18:56 +02:00
695137400
7030f562e8 Update xtermFrontend.ts
console error
2020-08-04 18:21:26 +08:00
dependabot-preview[bot]
047b31dd67 Bump @typescript-eslint/parser from 3.3.0 to 3.8.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 3.3.0 to 3.8.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v3.8.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-04 04:24:06 +00:00
Eugene Pankov
ae0d33f026 use update.electronjs.org for updates (fixes #2393, fixes #2087, fixes #2835, fixes #2436, fixes #2635, fixes #1495, fixes #2158) 2020-08-03 23:14:05 +02:00
dependabot-preview[bot]
039a0b7eb5 Bump eslint from 7.2.0 to 7.6.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.2.0 to 7.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.2.0...v7.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-03 04:25:33 +00:00
Eugene Pankov
3d3fcc41b8 lint 2020-07-29 19:27:23 +02:00
Eugene Pankov
3e3e8f3132 added fontawesome regular style 2020-07-29 19:19:05 +02:00
Eugene Pankov
da21895e40 more explicit SSH auth options and agent forwarding - fixes #2284, fixes #2511, fixes #2717, fixes #2184 2020-07-29 19:18:57 +02:00
Eugene Pankov
34752ed69e Merge branch 'master' of https://github.com/Eugeny/terminus 2020-07-29 18:50:16 +02:00
Eugene
008eb98f50 Merge pull request #2767 from Eugeny/dependabot/npm_and_yarn/terminus-ssh/types/ssh2-0.5.44 2020-07-29 18:50:10 +02:00
Eugene
e521cd4648 Merge pull request #2844 from Eugeny/all-contributors/add-JonathanBeverley 2020-07-29 18:31:10 +02:00
Eugene Pankov
cb97a784da support windows openssh agent 2020-07-29 18:11:10 +02:00
allcontributors[bot]
96d9d81be2 docs: update .all-contributorsrc [skip ci] 2020-07-29 15:45:53 +00:00
allcontributors[bot]
71797eb93f docs: update README.md [skip ci] 2020-07-29 15:45:52 +00:00
Eugene
ae3870e297 Merge pull request #2601 from JonathanBeverley/jmb/features 2020-07-29 17:45:05 +02:00
Eugene Pankov
055de5013c updated uac.exe 2020-07-29 09:50:08 +02:00
dependabot-preview[bot]
ad1ea01976 Bump yargs from 15.3.1 to 15.4.1 in /app
Bumps [yargs](https://github.com/yargs/yargs) from 15.3.1 to 15.4.1.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v15.3.1...v15.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-28 04:20:35 +00:00
Eugene
064fbfac67 Merge pull request #2736 from Eugeny/dependabot/npm_and_yarn/terminus-core/winston-3.3.3 2020-07-27 22:33:53 +02:00
Eugene
a31c83476d Merge pull request #2759 from Eugeny/dependabot/npm_and_yarn/app/rxjs-compat-6.6.0 2020-07-27 22:33:21 +02:00
Eugene
bc9f4c267e Merge pull request #2723 from Eugeny/dependabot/npm_and_yarn/webpack-cli-3.3.12
Bump webpack-cli from 3.3.10 to 3.3.12
2020-07-27 22:33:03 +02:00
Eugene
3e92ae278e Merge pull request #2823 from Eugeny/dependabot/npm_and_yarn/sentry/electron-1.5.1
Bump @sentry/electron from 1.2.1 to 1.5.1
2020-07-27 22:22:31 +02:00
Eugene
6adc3543a8 Merge pull request #2826 from Eugeny/all-contributors/add-dimitory 2020-07-27 22:21:01 +02:00
allcontributors[bot]
af5293948c docs: update .all-contributorsrc [skip ci] 2020-07-27 20:15:14 +00:00
allcontributors[bot]
34620db925 docs: update README.md [skip ci] 2020-07-27 20:15:13 +00:00
Eugene
4a5a96ea16 Merge pull request #2824 from Dimitory/patch-1 2020-07-27 22:15:09 +02:00
Dmitry Pronin
fcc9d7cf7d Update ssh.service.ts 2020-07-27 19:26:02 +03:00
Dmitry Pronin
9cae50bfc5 Fixed SSH Keys Permission Denied 2020-07-27 19:19:21 +03:00
Eugene Pankov
3cff5909bd rebuild uac.exe in release mode (fixes #2800) 2020-07-27 17:38:26 +02:00
Eugene Pankov
0130cd9d54 handle global hotkeys with win key - fixes #2524 2020-07-27 16:36:11 +02:00
Eugene Pankov
926d4f51b3 use more performant sourcemap mode - fixes #2617 2020-07-27 16:12:16 +02:00
Eugene Pankov
efe390f68d allow searching for hotkey values - #1509 2020-07-27 16:04:31 +02:00
Eugene Pankov
6d0b2608a2 added an option to disable the global hotkey to the welcome tab (fixes #1509, fixes #2809) 2020-07-27 15:56:09 +02:00
Eugene Pankov
ddd306dbf6 bumped xterm 2020-07-27 15:55:24 +02:00
Eugene Pankov
30c632a5cc Merge branch 'master' of github.com:Eugeny/terminus 2020-07-27 15:39:27 +02:00
Eugene
65b3254b77 Merge pull request #2699 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-webgl-0.8.0
Bump xterm-addon-webgl from 0.7.0 to 0.8.0 in /terminus-terminal
2020-07-27 15:38:31 +02:00
Eugene
f776a30c9f Merge pull request #2787 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-ligatures-0.4.0-beta.5
Bump xterm-addon-ligatures from 0.3.0 to 0.4.0-beta.5 in /terminus-terminal
2020-07-27 15:38:20 +02:00
dependabot-preview[bot]
c02525440c Bump @sentry/electron from 1.2.1 to 1.5.1
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 1.2.1 to 1.5.1.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/v1.2.1...v1.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-27 04:22:58 +00:00
Eugene Pankov
dbda8dad34 lint 2020-07-17 20:45:18 +02:00
dependabot-preview[bot]
bc44f55989 Bump xterm-addon-ligatures in /terminus-terminal
Bumps [xterm-addon-ligatures](https://github.com/xtermjs/xterm.js) from 0.3.0 to 0.4.0-beta.5.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-14 04:20:15 +00:00
dependabot-preview[bot]
a3c998adab Bump @types/ssh2 from 0.5.43 to 0.5.44 in /terminus-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.43 to 0.5.44.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 04:20:14 +00:00
dependabot-preview[bot]
b62b59f9b8 Bump winston from 3.2.1 to 3.3.3 in /terminus-core
Bumps [winston](https://github.com/winstonjs/winston) from 3.2.1 to 3.3.3.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/3.2.1...v3.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-05 10:54:28 +00:00
Eugene Pankov
bb1557b0a4 avoid ResizeObserver feedback loop 2020-07-05 12:47:40 +02:00
Eugene Pankov
d0fe64355b ssh reconnection logic improvements - fixes #2705, fixes #761, fixes #2662 2020-07-05 12:47:32 +02:00
Eugene Pankov
7b4e6e8f3a build fix 2020-07-05 12:19:08 +02:00
dependabot-preview[bot]
bd11c90846 Bump rxjs-compat from 6.5.5 to 6.6.0 in /app
Bumps rxjs-compat from 6.5.5 to 6.6.0.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-02 04:22:04 +00:00
Eugene Pankov
21f33618d4 stop ssh session after connection errors 2020-06-30 15:35:07 +02:00
Eugene Pankov
11c8ca6582 don't crash on missing wsl distro flags - fixes #2744 2020-06-30 15:34:55 +02:00
Eugene Pankov
6e9ac1b59a added entitlements and usage descriptions - fixed #2746 2020-06-28 15:11:52 +02:00
dependabot-preview[bot]
91591a81ff Bump electron-notarize from 0.1.1 to 1.0.0
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 0.1.1 to 1.0.0.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v0.1.1...v1.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 04:19:42 +00:00
dependabot-preview[bot]
1ce0ff2e00 Bump webpack-cli from 3.3.10 to 3.3.12
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 3.3.10 to 3.3.12.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/v3.3.12/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/v3.3.10...v3.3.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-22 04:19:12 +00:00
Eugene
92cef766f6 Merge pull request #2682 from Eugeny/dependabot/npm_and_yarn/eslint-7.2.0
Bump eslint from 7.1.0 to 7.2.0
2020-06-19 20:00:36 +02:00
Eugene
d1d55d39b1 Merge pull request #2716 from Eugeny/dependabot/npm_and_yarn/app/angular/forms-9.1.11
Bump @angular/forms from 9.1.9 to 9.1.11 in /app
2020-06-19 20:00:24 +02:00
Eugene
4ad55bff6e Merge pull request #2714 from Eugeny/dependabot/npm_and_yarn/webpack-5.0.0-beta.18
Bump webpack from 5.0.0-beta.16 to 5.0.0-beta.18
2020-06-19 20:00:13 +02:00
Eugene
f73c41a709 Merge pull request #2710 from Eugeny/dependabot/npm_and_yarn/app/angular/common-9.1.11
Bump @angular/common from 9.1.9 to 9.1.11 in /app
2020-06-19 19:59:45 +02:00
Eugene
3ca55d972a Merge pull request #2707 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-3.3.0
Bump @typescript-eslint/parser from 3.1.0 to 3.3.0
2020-06-19 19:59:05 +02:00
dependabot-preview[bot]
2b25c25337 Bump @angular/forms from 9.1.9 to 9.1.11 in /app
Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 9.1.9 to 9.1.11.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.11/packages/forms)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-19 04:17:10 +00:00
dependabot-preview[bot]
3621877f32 Bump webpack from 5.0.0-beta.16 to 5.0.0-beta.18
Bumps [webpack](https://github.com/webpack/webpack) from 5.0.0-beta.16 to 5.0.0-beta.18.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.0.0-beta.16...v5.0.0-beta.18)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 04:20:19 +00:00
dependabot-preview[bot]
cf2a8ddc96 Bump @angular/common from 9.1.9 to 9.1.11 in /app
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 9.1.9 to 9.1.11.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.11/packages/common)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-17 04:19:49 +00:00
dependabot-preview[bot]
d461515881 Bump @typescript-eslint/parser from 3.1.0 to 3.3.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 3.1.0 to 3.3.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v3.3.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 04:21:28 +00:00
Eugene Pankov
5828571a95 fixed uac.exe encoding (fixes #654) 2020-06-14 18:46:22 +02:00
Eugene Pankov
3aba7c9b93 lint 2020-06-14 17:26:57 +02:00
Eugene Pankov
d371bf2f41 fixed arrow keys in admin shells (fixes #691) 2020-06-14 17:25:32 +02:00
Eugene Pankov
51934dccbd use glasstron on win32 2020-06-14 16:16:00 +02:00
Eugene Pankov
b6caf47ce6 Update theme.scss 2020-06-14 16:13:01 +02:00
dependabot-preview[bot]
e8362268bb Bump xterm-addon-webgl from 0.7.0 to 0.8.0 in /terminus-terminal
Bumps [xterm-addon-webgl](https://github.com/xtermjs/xterm.js) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/compare/0.7...0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-12 04:17:36 +00:00
dependabot-preview[bot]
88c57a6794 Bump eslint from 7.1.0 to 7.2.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.1.0...v7.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-09 04:18:03 +00:00
Eugene Pankov
69a0b46a20 auto-trim single-line clipboard contents (fixes #2677) 2020-06-08 10:04:29 +02:00
dependabot-preview[bot]
a5a662c05d Bump node-abi from 2.16.0 to 2.18.0
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.16.0 to 2.18.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.16.0...v2.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 07:15:31 +00:00
Eugene
4ab0b51d87 Merge pull request #2647 from Eugeny/dependabot/npm_and_yarn/app/node-abi-2.18.0
Bump node-abi from 2.16.0 to 2.18.0 in /app
2020-06-08 09:13:38 +02:00
dependabot-preview[bot]
c3285b24d9 Bump node-abi from 2.16.0 to 2.18.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.16.0 to 2.18.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.16.0...v2.18.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 07:13:06 +00:00
Eugene
313345da3d Merge pull request #2666 from Eugeny/dependabot/npm_and_yarn/node-gyp-7.0.0
Bump node-gyp from 6.1.0 to 7.0.0
2020-06-08 09:12:12 +02:00
Eugene
7173be8c22 Merge pull request #2628 from Eugeny/dependabot/npm_and_yarn/app/keytar-6.0.1
Bump keytar from 5.6.0 to 6.0.1 in /app
2020-06-08 09:11:27 +02:00
Eugene
b97ef8c643 Merge pull request #2678 from Eugeny/dependabot/npm_and_yarn/eslint-plugin-import-2.21.1
Bump eslint-plugin-import from 2.20.2 to 2.21.1
2020-06-08 09:11:12 +02:00
Eugene Pankov
d221f8e561 properly clear jump host from settings (fixes #2675) 2020-06-08 09:11:00 +02:00
dependabot-preview[bot]
95ed0a58b9 Bump eslint-plugin-import from 2.20.2 to 2.21.1
Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.20.2 to 2.21.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.20.2...v2.21.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-08 04:18:27 +00:00
dependabot-preview[bot]
77d4176b55 Bump keytar from 5.6.0 to 6.0.1 in /app
Bumps [keytar](https://github.com/atom/node-keytar) from 5.6.0 to 6.0.1.
- [Release notes](https://github.com/atom/node-keytar/releases)
- [Commits](https://github.com/atom/node-keytar/compare/v5.6.0...v6.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-05 08:32:24 +00:00
Eugene Pankov
48013e2102 moved glasstron outside of webpack realm 2020-06-05 10:08:20 +02:00
dependabot-preview[bot]
31dcb2b514 Bump node-gyp from 6.1.0 to 7.0.0
Bumps [node-gyp](https://github.com/nodejs/node-gyp) from 6.1.0 to 7.0.0.
- [Release notes](https://github.com/nodejs/node-gyp/releases)
- [Changelog](https://github.com/nodejs/node-gyp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodejs/node-gyp/compare/v6.1.0...v7.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-05 04:21:13 +00:00
Eugene
43a9a7cb19 Merge pull request #2629 from Eugeny/dependabot/npm_and_yarn/app/serialport-9.0.0
Bump serialport from 8.0.7 to 9.0.0 in /app
2020-06-04 13:52:00 +02:00
Eugene
88cecba2b6 Merge pull request #2619 from Eugeny/dependabot/npm_and_yarn/eslint-7.1.0
Bump eslint from 6.8.0 to 7.1.0
2020-06-04 13:51:37 +02:00
Eugene
91e1870f91 Merge pull request #2631 from Eugeny/dependabot/npm_and_yarn/typedoc-0.17.7
Bump typedoc from 0.17.6 to 0.17.7
2020-06-04 13:51:11 +02:00
Eugene
705050a96a Merge pull request #2655 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-3.1.0
Bump @typescript-eslint/parser from 2.34.0 to 3.1.0
2020-06-04 13:49:53 +02:00
Eugene
8d2550fb99 Merge pull request #2660 from Eugeny/all-contributors/add-3l0w 2020-06-04 13:49:14 +02:00
dependabot-preview[bot]
c4a89d4ee3 Bump eslint from 6.8.0 to 7.1.0
Bumps [eslint](https://github.com/eslint/eslint) from 6.8.0 to 7.1.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v6.8.0...v7.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-04 11:43:04 +00:00
allcontributors[bot]
6140cdfabc docs: update .all-contributorsrc [skip ci] 2020-06-04 11:41:01 +00:00
allcontributors[bot]
5786d61620 docs: update README.md [skip ci] 2020-06-04 11:41:00 +00:00
Eugene
32f6e16275 Merge pull request #2657 from 3l0w/master 2020-06-04 13:40:58 +02:00
Gwilherm Folliot
668986fc08 fixed lint 2020-06-04 13:34:33 +02:00
Gwilherm Folliot
9190893ccf Added acrylic background for linux 2020-06-03 18:41:23 +02:00
dependabot-preview[bot]
546837ab55 Bump @typescript-eslint/parser from 2.34.0 to 3.1.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.34.0 to 3.1.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v3.1.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-03 04:20:59 +00:00
dependabot-preview[bot]
3825feae08 Bump typedoc from 0.17.6 to 0.17.7
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.17.6 to 0.17.7.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/0.17.6...v0.17.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-27 04:21:13 +00:00
dependabot-preview[bot]
fdeabae061 Bump serialport from 8.0.7 to 9.0.0 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 8.0.7 to 9.0.0.
- [Release notes](https://github.com/serialport/node-serialport/releases)
- [Changelog](https://github.com/serialport/node-serialport/blob/master/CHANGELOG.md)
- [Commits](https://github.com/serialport/node-serialport/compare/@serialport/bindings@8.0.7...@serialport/bindings@9.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-27 04:19:14 +00:00
Eugene Pankov
8b307be92d Merge branch 'master' of github.com:Eugeny/terminus 2020-05-26 18:52:26 +02:00
Eugene
45516c4013 Merge pull request #2622 from Eugeny/dependabot/npm_and_yarn/app/js-yaml-3.14.0 2020-05-26 17:32:06 +02:00
Eugene
5d8f7a4e34 Merge pull request #2623 from Eugeny/dependabot/npm_and_yarn/terminus-core/js-yaml-3.14.0 2020-05-26 17:31:47 +02:00
Eugene
792c9279e2 Merge pull request #2592 from Eugeny/dependabot/npm_and_yarn/terminus-core/types/js-yaml-3.12.4 2020-05-26 17:31:34 +02:00
Eugene
8825a8163e Merge pull request #2591 from Eugeny/dependabot/npm_and_yarn/types/js-yaml-3.12.4 2020-05-26 17:31:28 +02:00
Eugene Pankov
7e42328c6f bumped node-pty 2020-05-26 17:31:09 +02:00
Eugene
2dd99d43ed Merge pull request #2597 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-2.34.0 2020-05-26 17:31:04 +02:00
Eugene Pankov
991b4fc965 Merge branch 'master' of github.com:Eugeny/terminus 2020-05-26 17:30:42 +02:00
Eugene
e9d7af5320 Merge pull request #2552 from Eugeny/dependabot/npm_and_yarn/app/serialport-9.0.0 2020-05-26 17:29:30 +02:00
Eugene
bff23fe825 Merge pull request #2573 from Eugeny/dependabot/npm_and_yarn/tslib-2.0.0 2020-05-26 17:29:10 +02:00
Eugene
79bd94ee6f Merge pull request #2604 from Eugeny/dependabot/npm_and_yarn/typescript-3.9.3 2020-05-26 17:28:57 +02:00
Eugene
fdd833ef7c Merge pull request #2603 from Eugeny/dependabot/npm_and_yarn/app/node-abi-2.17.0 2020-05-26 17:28:47 +02:00
Eugene Pankov
c386504296 fixed #2624 - fixed analytics initialization 2020-05-26 17:28:02 +02:00
Eugene
9cc8649422 Merge pull request #2610 from Eugeny/dependabot/npm_and_yarn/terminus-core/uuid-8.1.0 2020-05-26 17:27:00 +02:00
Eugene Pankov
625a9179c5 dropped uuid dependency 2020-05-26 17:26:39 +02:00
Eugene Pankov
66ed73f7c9 bumped angular 2020-05-26 17:19:45 +02:00
Eugene Pankov
95bd48d6c6 warn when closing ssh tabs - fixes #2512 2020-05-26 17:12:48 +02:00
Eugene Pankov
328490a85e move "close" menu items to the bottom - fixes #2599 2020-05-26 17:10:02 +02:00
Eugene Pankov
d08413aeab fixed focus loss on new windows 2020-05-26 17:04:39 +02:00
Eugene Pankov
922f1fbade fixed #1870 - new window hotkey on mac 2020-05-26 17:04:10 +02:00
Eugene
cb96c8d470 Merge pull request #2578 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-unicode11-0.2.0
Bump xterm-addon-unicode11 from 0.2.0-beta.5 to 0.2.0 in /terminus-terminal
2020-05-26 16:53:19 +02:00
Eugene
f3ebc43667 Merge pull request #2572 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-webgl-0.7.0 2020-05-26 16:53:06 +02:00
dependabot-preview[bot]
e7696dcdf3 Bump js-yaml from 3.13.1 to 3.14.0 in /app
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.13.1 to 3.14.0.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.13.1...3.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 14:52:51 +00:00
Eugene
4abf7d7738 Merge pull request #2574 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-4.6.0 2020-05-26 16:52:46 +02:00
dependabot-preview[bot]
be206161d6 Bump uuid from 8.0.0 to 8.1.0 in /terminus-core
Bumps [uuid](https://github.com/uuidjs/uuid) from 8.0.0 to 8.1.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v8.0.0...v8.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 14:52:11 +00:00
dependabot-preview[bot]
dcd17f886e Bump xterm-addon-unicode11 in /terminus-terminal
Bumps [xterm-addon-unicode11](https://github.com/xtermjs/xterm.js) from 0.2.0-beta.5 to 0.2.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 14:52:08 +00:00
dependabot-preview[bot]
2c94dea941 Bump xterm from 4.6.0-beta.41 to 4.6.0 in /terminus-terminal
Bumps [xterm](https://github.com/xtermjs/xterm.js) from 4.6.0-beta.41 to 4.6.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/4.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 14:51:57 +00:00
dependabot-preview[bot]
7a2291f7db Bump js-yaml from 3.13.1 to 3.14.0 in /terminus-core
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.13.1 to 3.14.0.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.13.1...3.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 14:51:15 +00:00
Eugene
af0d9142ed Merge pull request #2579 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-serialize-0.3.0 2020-05-26 16:50:59 +02:00
Eugene
6ba7d5b78f Merge pull request #2577 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-search-0.7.0 2020-05-26 16:50:45 +02:00
Eugene
bbf035d5fd Merge pull request #2576 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-ligatures-0.3.0
Bump xterm-addon-ligatures from 0.3.0-beta.1 to 0.3.0 in /terminus-terminal
2020-05-26 16:50:25 +02:00
Eugene
84bc4369cb Merge pull request #2575 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-fit-0.4.0 2020-05-26 16:50:15 +02:00
Eugene
e01f77998c Merge pull request #2595 from Eugeny/dependabot/npm_and_yarn/electron-builder-22.6.1 2020-05-26 16:49:30 +02:00
Eugene Pankov
08acd4df46 depend on gnome-keyring (fixes #2203, fixes #2568) 2020-05-22 11:30:05 +02:00
dependabot-preview[bot]
2c9d968aa8 Bump typescript from 3.8.3 to 3.9.3
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.8.3 to 3.9.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.8.3...v3.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-20 04:24:04 +00:00
dependabot-preview[bot]
19a3996861 Bump node-abi from 2.16.0 to 2.17.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.16.0 to 2.17.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.16.0...v2.17.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-20 04:22:02 +00:00
Jonathan Beverley
6d187e8117 Add an option for Agent Forwarding
I don't understand why this is on by default, let alone not
configurable. Agent forwarding is a significant security concern, and
buggy agent forwarding is the cause of a couple existing bugs.
2020-05-19 12:09:07 -04:00
Jonathan Beverley
a7687a6fc2 Include pagent.exe in installer, Remove check for pageant (fixed Eugeny#350) 2020-05-19 12:08:55 -04:00
dependabot-preview[bot]
7cbec63039 Bump @typescript-eslint/parser from 2.31.0 to 2.34.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.31.0 to 2.34.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.34.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-19 04:23:17 +00:00
dependabot-preview[bot]
91320f1cd7 Bump electron-builder from 22.5.1 to 22.6.1
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.5.1 to 22.6.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.5.1...v22.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-19 04:22:40 +00:00
dependabot-preview[bot]
5518ce5e0c Bump @types/js-yaml from 3.12.3 to 3.12.4 in /terminus-core
Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 3.12.3 to 3.12.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 04:30:04 +00:00
dependabot-preview[bot]
d59c52d7a5 Bump @types/js-yaml from 3.12.3 to 3.12.4
Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 3.12.3 to 3.12.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-18 04:22:03 +00:00
dependabot-preview[bot]
dd3a4cb289 Bump xterm-addon-serialize in /terminus-terminal
Bumps xterm-addon-serialize from 0.3.0-beta.4 to 0.3.0.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 04:25:51 +00:00
dependabot-preview[bot]
fc6ded4b1a Bump xterm-addon-search from 0.7.0-beta.2 to 0.7.0 in /terminus-terminal
Bumps [xterm-addon-search](https://github.com/xtermjs/xterm.js) from 0.7.0-beta.2 to 0.7.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/0.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 04:25:00 +00:00
dependabot-preview[bot]
d4f61b3846 Bump xterm-addon-ligatures in /terminus-terminal
Bumps [xterm-addon-ligatures](https://github.com/xtermjs/xterm.js) from 0.3.0-beta.1 to 0.3.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 04:24:35 +00:00
dependabot-preview[bot]
ffad7b6ba7 Bump xterm-addon-fit from 0.4.0-beta.8 to 0.4.0 in /terminus-terminal
Bumps [xterm-addon-fit](https://github.com/xtermjs/xterm.js) from 0.4.0-beta.8 to 0.4.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 04:24:10 +00:00
dependabot-preview[bot]
499f541328 Bump tslib from 1.11.1 to 2.0.0
Bumps [tslib](https://github.com/Microsoft/tslib) from 1.11.1 to 2.0.0.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/1.11.1...2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 04:23:36 +00:00
dependabot-preview[bot]
7c893a3c4b Bump xterm-addon-webgl from 0.7.0-beta.10 to 0.7.0 in /terminus-terminal
Bumps [xterm-addon-webgl](https://github.com/xtermjs/xterm.js) from 0.7.0-beta.10 to 0.7.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/0.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 04:23:24 +00:00
dependabot-preview[bot]
1f5c55826b Bump serialport from 8.0.7 to 9.0.0 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 8.0.7 to 9.0.0.
- [Release notes](https://github.com/serialport/node-serialport/releases)
- [Changelog](https://github.com/serialport/node-serialport/blob/master/CHANGELOG.md)
- [Commits](https://github.com/serialport/node-serialport/compare/@serialport/bindings@8.0.7...@serialport/bindings@9.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-11 04:22:52 +00:00
Eugene Pankov
197824004e notarize pkg 2020-05-07 17:37:39 +02:00
Eugene Pankov
ee1d465bf6 Revert "separate mac builds"
This reverts commit 90cc06c3fd.
2020-05-07 13:00:42 +02:00
Eugene Pankov
12bb070def Revert "separate pkg/zip builds for macos"
This reverts commit 8cf0445b6d.
2020-05-07 12:59:26 +02:00
Eugene Pankov
13ab29bcab Update build-macos-zip.js 2020-05-07 09:51:21 +02:00
Eugene Pankov
8cf0445b6d separate pkg/zip builds for macos 2020-05-07 09:11:56 +02:00
Eugene Pankov
90cc06c3fd separate mac builds 2020-05-07 09:08:24 +02:00
Eugene Pankov
7d7b2cbcfd fixed macos zip build - fixes #2513 2020-05-06 16:41:51 +02:00
Eugene Pankov
3a76e0bb2e fixed tab focus loss - fixes #2525 2020-05-06 16:21:48 +02:00
Eugene Pankov
9e2d070ed4 bumped ligatures plugin 2020-05-06 16:03:22 +02:00
Eugene
f796718cae Merge pull request #2516 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-search-0.7.0-beta.2 2020-05-06 15:51:55 +02:00
Eugene
a4c2ccdb93 Merge pull request #2529 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-4.6.0-beta.41 2020-05-06 15:51:24 +02:00
Eugene
ccbaf1c2c2 Merge pull request #2521 from Eugeny/dependabot/npm_and_yarn/graceful-fs-4.2.4 2020-05-06 15:26:14 +02:00
Eugene
7ccd97eb49 Merge pull request #2528 from Eugeny/dependabot/npm_and_yarn/node-sass-4.14.1 2020-05-06 15:26:03 +02:00
Eugene
6b320e9cf3 Merge pull request #2520 from Eugeny/dependabot/npm_and_yarn/electron-8.2.5 2020-05-06 15:23:07 +02:00
Eugene
a6a5f2b132 Merge pull request #2527 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-2.31.0 2020-05-06 15:21:58 +02:00
Eugene
6fd7e97ef2 Merge pull request #2530 from Eugeny/dependabot/npm_and_yarn/webpack-5.0.0-beta.16 2020-05-06 15:21:05 +02:00
dependabot-preview[bot]
fc821b5abd Bump webpack from 5.0.0-beta.15 to 5.0.0-beta.16
Bumps [webpack](https://github.com/webpack/webpack) from 5.0.0-beta.15 to 5.0.0-beta.16.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.0.0-beta.15...v5.0.0-beta.16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 04:24:13 +00:00
dependabot-preview[bot]
f69a9b38fe Bump xterm from 4.6.0-beta.33 to 4.6.0-beta.41 in /terminus-terminal
Bumps [xterm](https://github.com/xtermjs/xterm.js) from 4.6.0-beta.33 to 4.6.0-beta.41.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 04:21:22 +00:00
dependabot-preview[bot]
710b9d79ab Bump node-sass from 4.14.0 to 4.14.1
Bumps [node-sass](https://github.com/sass/node-sass) from 4.14.0 to 4.14.1.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.14.0...v4.14.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 04:23:11 +00:00
dependabot-preview[bot]
fddae662c8 Bump @typescript-eslint/parser from 2.29.0 to 2.31.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.29.0 to 2.31.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.31.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 04:22:32 +00:00
Eugene Pankov
c3b3a3cea6 notarizer fix 2020-05-04 14:48:46 +02:00
Eugene Pankov
2201cfe142 notarizer fix 2020-05-04 14:19:40 +02:00
dependabot-preview[bot]
a9ae3b2475 Bump graceful-fs from 4.2.2 to 4.2.4
Bumps [graceful-fs](https://github.com/isaacs/node-graceful-fs) from 4.2.2 to 4.2.4.
- [Release notes](https://github.com/isaacs/node-graceful-fs/releases)
- [Commits](https://github.com/isaacs/node-graceful-fs/compare/v4.2.2...v4.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 04:24:42 +00:00
dependabot-preview[bot]
3238706b25 Bump electron from 8.2.3 to 8.2.5
Bumps [electron](https://github.com/electron/electron) from 8.2.3 to 8.2.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.3...v8.2.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 04:24:26 +00:00
dependabot-preview[bot]
a5aec13b7f Bump xterm-addon-search in /terminus-terminal
Bumps [xterm-addon-search](https://github.com/xtermjs/xterm.js) from 0.7.0-beta.1 to 0.7.0-beta.2.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 04:19:32 +00:00
Eugene Pankov
454887ad21 fixed DPI change detection - fixes #1746 2020-05-03 01:19:29 +02:00
Eugene Pankov
0ad585d647 don't open second window on app restart when in dock mode (fixes #2449) 2020-05-02 17:23:35 +02:00
Eugene Pankov
5aa3b889f5 fixed SSH tab colors - fixes #2448 2020-05-02 17:09:55 +02:00
Eugene Pankov
d371857fa8 use xterm's own line break fix - fixed #524 2020-05-02 15:45:34 +02:00
Eugene Pankov
e116a42f8b Revert "smart copying for Windows line breaks (fixes #1558)"
This reverts commit fb502bc926.
2020-05-02 15:44:20 +02:00
Eugene Pankov
76acbc6c9f re-added webpack-env 2020-05-02 14:18:50 +02:00
Eugene
572a6e24c4 Merge pull request #2477 from Eugeny/dependabot/npm_and_yarn/shelljs-0.8.4 2020-05-02 14:16:22 +02:00
Eugene
b3731a21ba Merge pull request #2458 from Eugeny/dependabot/npm_and_yarn/sentry/cli-1.52.3 2020-05-02 14:16:12 +02:00
dependabot-preview[bot]
f58ba65d97 Bump shelljs from 0.8.3 to 0.8.4
Bumps [shelljs](https://github.com/shelljs/shelljs) from 0.8.3 to 0.8.4.
- [Release notes](https://github.com/shelljs/shelljs/releases)
- [Changelog](https://github.com/shelljs/shelljs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/shelljs/shelljs/compare/v0.8.3...v0.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 12:16:02 +00:00
Eugene
45a99bb0cb Merge pull request #2462 from Eugeny/dependabot/npm_and_yarn/app/node-abi-2.16.0 2020-05-02 14:15:15 +02:00
Eugene
ab70be983a Merge pull request #2480 from Eugeny/dependabot/npm_and_yarn/app/keytar-5.6.0 2020-05-02 14:15:03 +02:00
dependabot-preview[bot]
cad1f96df7 Bump node-abi from 2.15.0 to 2.16.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.15.0 to 2.16.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.15.0...v2.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 12:14:13 +00:00
Eugene
71866521f4 Merge pull request #2479 from Eugeny/dependabot/npm_and_yarn/typedoc-0.17.6 2020-05-02 14:14:01 +02:00
Eugene
56206d4fb8 Merge pull request #2467 from Eugeny/dependabot/npm_and_yarn/node-sass-4.14.0 2020-05-02 14:12:27 +02:00
Eugene
347681d199 Merge pull request #2459 from Eugeny/dependabot/npm_and_yarn/node-abi-2.16.0 2020-05-02 14:12:14 +02:00
Eugene Pankov
e6abdcf3e9 uuid bump 2020-05-02 14:12:01 +02:00
Eugene Pankov
dbae3b66cd removed webpack typings 2020-05-02 14:11:54 +02:00
Eugene Pankov
40ec457d20 Merge branch 'master' of github.com:Eugeny/terminus 2020-05-02 14:10:12 +02:00
Eugene
063caf3bcd Merge pull request #2453 from Eugeny/dependabot/npm_and_yarn/webpack-5.0.0-beta.15 2020-05-02 14:09:36 +02:00
Eugene
9325fd0977 Merge pull request #2464 from Eugeny/dependabot/npm_and_yarn/app/ng-bootstrap/ng-bootstrap-6.1.0 2020-05-02 14:08:35 +02:00
Eugene
6231583590 Merge pull request #2496 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/uuid-8.0.0 2020-05-02 14:08:13 +02:00
Eugene Pankov
fce3a2c822 bumped angular 2020-05-02 14:07:54 +02:00
Eugene
73f45c9a24 Merge pull request #2500 from Eugeny/dependabot/npm_and_yarn/terminus-core/uuid-8.0.0 2020-05-02 14:07:47 +02:00
dependabot-preview[bot]
ca65f23c70 Bump keytar from 5.5.0 to 5.6.0 in /app
Bumps [keytar](https://github.com/atom/node-keytar) from 5.5.0 to 5.6.0.
- [Release notes](https://github.com/atom/node-keytar/releases)
- [Commits](https://github.com/atom/node-keytar/compare/v5.5.0...v5.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 12:06:13 +00:00
dependabot-preview[bot]
f525398827 Bump @ng-bootstrap/ng-bootstrap from 6.0.2 to 6.1.0 in /app
Bumps [@ng-bootstrap/ng-bootstrap](https://github.com/ng-bootstrap/ng-bootstrap) from 6.0.2 to 6.1.0.
- [Release notes](https://github.com/ng-bootstrap/ng-bootstrap/releases)
- [Changelog](https://github.com/ng-bootstrap/ng-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ng-bootstrap/ng-bootstrap/compare/6.0.2...6.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 12:06:06 +00:00
Eugene
cf2baa74a8 Merge pull request #2489 from Eugeny/dependabot/npm_and_yarn/terminus-core/electron-updater-4.3.1 2020-05-02 14:05:18 +02:00
Eugene
fbd896d593 Merge pull request #2487 from Eugeny/dependabot/npm_and_yarn/app/electron-updater-4.3.1 2020-05-02 14:04:29 +02:00
Eugene
f747107042 Merge pull request #2474 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-webgl-0.7.0-beta.10
Bump xterm-addon-webgl from 0.7.0-beta.5 to 0.7.0-beta.10 in /terminus-terminal
2020-05-02 14:03:36 +02:00
Eugene
760ad140cd Merge pull request #2476 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-serialize-0.3.0-beta.4 2020-05-02 14:03:25 +02:00
Eugene
a0df434ed2 Merge pull request #2503 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-4.6.0-beta.32 2020-05-02 14:02:56 +02:00
dependabot-preview[bot]
0bcd5cfd8f Bump xterm from 4.6.0-beta.17 to 4.6.0-beta.32 in /terminus-terminal
Bumps [xterm](https://github.com/xtermjs/xterm.js) from 4.6.0-beta.17 to 4.6.0-beta.32.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-01 04:16:49 +00:00
dependabot-preview[bot]
e0b71783c0 Bump uuid from 7.0.1 to 8.0.0 in /terminus-core
Bumps [uuid](https://github.com/uuidjs/uuid) from 7.0.1 to 8.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v7.0.1...v8.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-30 04:28:12 +00:00
dependabot-preview[bot]
45b76b2d3e Bump uuid from 7.0.1 to 8.0.0 in /terminus-terminal
Bumps [uuid](https://github.com/uuidjs/uuid) from 7.0.1 to 8.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v7.0.1...v8.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-30 04:21:00 +00:00
dependabot-preview[bot]
8228c99350 Bump electron-updater from 4.3.0 to 4.3.1 in /terminus-core
Bumps [electron-updater](https://github.com/electron-userland/electron-builder) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 04:28:40 +00:00
dependabot-preview[bot]
c4dbd8180d Bump electron-updater from 4.3.0 to 4.3.1 in /app
Bumps [electron-updater](https://github.com/electron-userland/electron-builder) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 04:21:25 +00:00
dependabot-preview[bot]
d3b1545a1e Bump typedoc from 0.17.4 to 0.17.6
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.17.4 to 0.17.6.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/0.17.4...0.17.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 04:21:11 +00:00
dependabot-preview[bot]
57d7936239 Bump xterm-addon-serialize in /terminus-terminal
Bumps xterm-addon-serialize from 0.3.0-beta.3 to 0.3.0-beta.4.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 04:20:02 +00:00
dependabot-preview[bot]
9e5315043d Bump xterm-addon-webgl in /terminus-terminal
Bumps [xterm-addon-webgl](https://github.com/xtermjs/xterm.js) from 0.7.0-beta.5 to 0.7.0-beta.10.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 04:19:18 +00:00
dependabot-preview[bot]
89ba81f2e1 Bump node-sass from 4.13.0 to 4.14.0
Bumps [node-sass](https://github.com/sass/node-sass) from 4.13.0 to 4.14.0.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.13.0...v4.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-24 04:24:42 +00:00
dependabot-preview[bot]
1ee734cd18 Bump node-abi from 2.15.0 to 2.16.0
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.15.0 to 2.16.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.15.0...v2.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-23 04:22:42 +00:00
dependabot-preview[bot]
0bcfb6babf Bump @sentry/cli from 1.52.1 to 1.52.3
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 1.52.1 to 1.52.3.
- [Release notes](https://github.com/getsentry/sentry-cli/releases)
- [Changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-cli/compare/1.52.1...1.52.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-23 04:21:58 +00:00
dependabot-preview[bot]
fddd9e9db2 Bump webpack from 5.0.0-beta.14 to 5.0.0-beta.15
Bumps [webpack](https://github.com/webpack/webpack) from 5.0.0-beta.14 to 5.0.0-beta.15.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.0.0-beta.14...v5.0.0-beta.15)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-22 04:25:14 +00:00
Eugene
2433fd1442 Merge pull request #2445 from Eugeny/all-contributors/add-Goobles
docs: add Goobles as a contributor
2020-04-21 09:41:34 +02:00
Eugene Pankov
437d832ac1 Merge branch 'master' of github.com:Eugeny/terminus 2020-04-21 09:38:50 +02:00
Eugene
c90aef1dfa Merge pull request #2438 from Goobles/Add-dock-hide-on-blur-option
Add dock hide on blur option
2020-04-21 09:38:35 +02:00
Eugene
2d25f15041 Merge branch 'master' into Add-dock-hide-on-blur-option 2020-04-21 09:38:28 +02:00
allcontributors[bot]
993d5bfd25 docs: update .all-contributorsrc [skip ci] 2020-04-21 07:37:55 +00:00
allcontributors[bot]
4d8681b5ee docs: update README.md [skip ci] 2020-04-21 07:37:54 +00:00
Eugene
1384e26dd8 Merge pull request #2437 from Goobles/dock-always-on-top-toggle
Add dock always on top setting
2020-04-21 09:37:50 +02:00
Eugene Pankov
809bf3360d Merge branch 'master' of github.com:Eugeny/terminus 2020-04-21 09:20:38 +02:00
Eugene
444875b82a Merge pull request #2444 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-2.29.0
Bump @typescript-eslint/parser from 2.27.0 to 2.29.0
2020-04-21 09:20:28 +02:00
Eugene Pankov
c261b64c8e bumped angular 2020-04-21 09:20:25 +02:00
Eugene Pankov
ab1b8a4500 added tab split commands to context menu - fixes #1321 2020-04-21 09:17:26 +02:00
Eugene Pankov
e65d5ba93b fixed webgl renderer (fixes #2439) 2020-04-21 09:09:23 +02:00
dependabot-preview[bot]
6f8ba6b44b Bump @typescript-eslint/parser from 2.27.0 to 2.29.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.27.0 to 2.29.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.29.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-21 04:22:41 +00:00
Gobius Dolhain
aede1c47a2 fix eslint comma-spacing 2020-04-20 19:21:48 +02:00
Gobius Dolhain
7b9ff043ad eslint: fix whitespace 2020-04-20 19:19:41 +02:00
Gobius Dolhain
d759104c76 add dock hide on blur option 2020-04-20 19:01:10 +02:00
Gobius Dolhain
676bbba7a4 Add dock always on top setting 2020-04-20 18:38:02 +02:00
Eugene Pankov
b8d9f6442a re-fixed #517 2020-04-20 15:35:15 +02:00
Eugene Pankov
fc501b5e51 Revert "Bump @typescript-eslint/eslint-plugin from 2.26.0 to 2.28.0"
This reverts commit 9f36258c60.
2020-04-20 11:41:26 +02:00
Eugene
3ddec27b69 Merge pull request #2399 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-2.28.0
Bump @typescript-eslint/eslint-plugin from 2.26.0 to 2.28.0
2020-04-20 11:26:02 +02:00
Eugene
6574cf6b50 Merge pull request #2426 from Eugeny/dependabot/npm_and_yarn/electron-builder-22.5.1
Bump electron-builder from 22.4.1 to 22.5.1
2020-04-20 11:25:53 +02:00
Eugene Pankov
d36ef2e48e lint 2020-04-20 11:25:20 +02:00
Eugene Pankov
f8645df60c fixed zmodem encoding (fixes #2352) 2020-04-20 10:55:38 +02:00
Eugene
f69942a3a3 Merge pull request #2434 from Eugeny/dependabot/npm_and_yarn/app/angular/core-9.1.2
Bump @angular/core from 9.1.0 to 9.1.2 in /app
2020-04-20 08:52:50 +02:00
dependabot-preview[bot]
a36431a08c Bump @angular/core from 9.1.0 to 9.1.2 in /app
Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 9.1.0 to 9.1.2.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.2/packages/core)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 04:18:26 +00:00
Eugene Pankov
f570d7e428 Merge branch 'master' of github.com:Eugeny/terminus 2020-04-19 16:49:19 +02:00
Eugene Pankov
fb502bc926 smart copying for Windows line breaks (fixes #1558) 2020-04-19 16:46:16 +02:00
Eugene Pankov
2e12041688 limit max html copy length 2020-04-19 16:22:54 +02:00
Eugene Pankov
ca444bcf65 fixed #2411 2020-04-19 16:22:48 +02:00
Eugene
da1b7b9a80 Merge pull request #2432 from Eugeny/dependabot/npm_and_yarn/app/angular/compiler-9.1.2
Bump @angular/compiler from 9.1.0 to 9.1.2 in /app
2020-04-19 16:17:03 +02:00
Eugene
e02d458109 Merge pull request #2431 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-fit-0.4.0-beta.8
Bump xterm-addon-fit from 0.4.0-beta2 to 0.4.0-beta.8 in /terminus-terminal
2020-04-19 16:14:10 +02:00
dependabot-preview[bot]
51e1a19e3e Bump @angular/compiler from 9.1.0 to 9.1.2 in /app
Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 9.1.0 to 9.1.2.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.2/packages/compiler)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 14:14:03 +00:00
dependabot-preview[bot]
68869a52e2 Bump xterm-addon-fit in /terminus-terminal
Bumps [xterm-addon-fit](https://github.com/xtermjs/xterm.js) from 0.4.0-beta2 to 0.4.0-beta.8.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 14:13:38 +00:00
Eugene
8527c3f531 Merge pull request #2417 from Eugeny/dependabot/npm_and_yarn/style-loader-1.1.4
Bump style-loader from 1.1.3 to 1.1.4
2020-04-19 16:11:14 +02:00
Eugene
4317094f1f Merge pull request #2418 from Eugeny/dependabot/npm_and_yarn/raw-loader-4.0.1
Bump raw-loader from 4.0.0 to 4.0.1
2020-04-19 16:11:07 +02:00
Eugene
00cf7ef67d Merge pull request #2383 from Eugeny/dependabot/npm_and_yarn/terminus-ssh/types/ssh2-0.5.43
Bump @types/ssh2 from 0.5.42 to 0.5.43 in /terminus-ssh
2020-04-19 16:10:43 +02:00
Eugene Pankov
21e7e762cd bumped xterm 2020-04-19 16:06:59 +02:00
Eugene
ebb35cf9be Merge pull request #2385 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-webgl-0.7.0-beta.4
Bump xterm-addon-webgl from 0.6.0-beta.3 to 0.7.0-beta.4 in /terminus-terminal
2020-04-19 15:51:05 +02:00
Eugene
bd7f9a8030 Merge pull request #2384 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-addon-serialize-0.2.0
Bump xterm-addon-serialize from 0.1.2 to 0.2.0 in /terminus-terminal
2020-04-19 15:50:52 +02:00
Eugene
b1e0ed457e Merge pull request #2387 from Eugeny/dependabot/npm_and_yarn/terminus-terminal/xterm-4.5.0
Bump xterm from 4.5.0-beta.13 to 4.5.0 in /terminus-terminal
2020-04-19 15:50:34 +02:00
Eugene
59e40d53a1 Merge pull request #2416 from Eugeny/dependabot/npm_and_yarn/app/node-pty-0.10.0-beta8
Bump node-pty from 0.10.0-beta3 to 0.10.0-beta8 in /app
2020-04-19 15:46:12 +02:00
Eugene
666a180f3f Merge pull request #2414 from Eugeny/dependabot/npm_and_yarn/app/angular/platform-browser-dynamic-9.1.2
Bump @angular/platform-browser-dynamic from 9.1.0 to 9.1.2 in /app
2020-04-19 15:45:26 +02:00
Eugene
ffc767c738 Merge pull request #2415 from Eugeny/dependabot/npm_and_yarn/app/keytar-5.5.0
Bump keytar from 5.4.0 to 5.5.0 in /app
2020-04-19 15:45:18 +02:00
dependabot-preview[bot]
49b252f7cf Bump electron-builder from 22.4.1 to 22.5.1
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.4.1 to 22.5.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/v22.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 13:44:52 +00:00
Eugene
81e9a0c796 Merge pull request #2425 from Eugeny/dependabot/npm_and_yarn/app/angular/common-9.1.2
Bump @angular/common from 9.1.1 to 9.1.2 in /app
2020-04-19 15:44:17 +02:00
Eugene
f3f5b21910 Merge pull request #2427 from Eugeny/dependabot/npm_and_yarn/electron-8.2.3
Bump electron from 8.2.1 to 8.2.3
2020-04-19 15:42:51 +02:00
Eugene Pankov
b29ab2690f WSL2 support - fixes #271 2020-04-19 14:56:31 +02:00
Eugene Pankov
f58cab0820 fixed window toggling with multiple windows (fixes #619) 2020-04-19 11:47:31 +02:00
dependabot-preview[bot]
b21631acd8 Bump electron from 8.2.1 to 8.2.3
Bumps [electron](https://github.com/electron/electron) from 8.2.1 to 8.2.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.1...v8.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 04:20:41 +00:00
dependabot-preview[bot]
52258f9949 Bump @angular/common from 9.1.1 to 9.1.2 in /app
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 9.1.1 to 9.1.2.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.2/packages/common)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 04:19:35 +00:00
dependabot-preview[bot]
1308e842ce Bump raw-loader from 4.0.0 to 4.0.1
Bumps [raw-loader](https://github.com/webpack-contrib/raw-loader) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/webpack-contrib/raw-loader/releases)
- [Changelog](https://github.com/webpack-contrib/raw-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/raw-loader/compare/v4.0.0...v4.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 04:23:49 +00:00
dependabot-preview[bot]
c4ba51f4ee Bump style-loader from 1.1.3 to 1.1.4
Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/webpack-contrib/style-loader/releases)
- [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/style-loader/compare/v1.1.3...v1.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 04:23:10 +00:00
dependabot-preview[bot]
65d411b00d Bump node-pty from 0.10.0-beta3 to 0.10.0-beta8 in /app
Bumps [node-pty](https://github.com/Tyriar/node-pty) from 0.10.0-beta3 to 0.10.0-beta8.
- [Release notes](https://github.com/Tyriar/node-pty/releases)
- [Commits](https://github.com/Tyriar/node-pty/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 04:23:09 +00:00
dependabot-preview[bot]
52d596b01b Bump keytar from 5.4.0 to 5.5.0 in /app
Bumps [keytar](https://github.com/atom/node-keytar) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/atom/node-keytar/releases)
- [Commits](https://github.com/atom/node-keytar/compare/v5.4.0...v5.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 04:22:32 +00:00
dependabot-preview[bot]
1607dd90ba Bump @angular/platform-browser-dynamic from 9.1.0 to 9.1.2 in /app
Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 9.1.0 to 9.1.2.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.2/packages/platform-browser-dynamic)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 04:22:00 +00:00
Eugene
11767f7d27 Merge pull request #2407 from Eugeny/dependabot/npm_and_yarn/app/angular/platform-browser-9.1.1
Bump @angular/platform-browser from 9.1.0 to 9.1.1 in /app
2020-04-15 08:55:31 +02:00
dependabot-preview[bot]
7cbcf6844d Bump @angular/platform-browser from 9.1.0 to 9.1.1 in /app
Bumps [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) from 9.1.0 to 9.1.1.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.1/packages/platform-browser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-15 04:21:00 +00:00
dependabot-preview[bot]
9f36258c60 Bump @typescript-eslint/eslint-plugin from 2.26.0 to 2.28.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 2.26.0 to 2.28.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.28.0/packages/eslint-plugin)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-14 04:21:13 +00:00
dependabot-preview[bot]
8f964ffc37 Bump xterm from 4.5.0-beta.13 to 4.5.0 in /terminus-terminal
Bumps [xterm](https://github.com/xtermjs/xterm.js) from 4.5.0-beta.13 to 4.5.0.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits/4.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 04:19:30 +00:00
dependabot-preview[bot]
4c137996ff Bump xterm-addon-webgl in /terminus-terminal
Bumps [xterm-addon-webgl](https://github.com/xtermjs/xterm.js) from 0.6.0-beta.3 to 0.7.0-beta.4.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 04:18:42 +00:00
dependabot-preview[bot]
966bd5f917 Bump xterm-addon-serialize from 0.1.2 to 0.2.0 in /terminus-terminal
Bumps xterm-addon-serialize from 0.1.2 to 0.2.0.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 04:18:15 +00:00
dependabot-preview[bot]
b55011d595 Bump @types/ssh2 from 0.5.42 to 0.5.43 in /terminus-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.42 to 0.5.43.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 04:16:58 +00:00
Eugene
38bd59641e Merge pull request #2366 from Eugeny/dependabot/npm_and_yarn/app/angular/forms-9.1.1
Bump @angular/forms from 9.1.0 to 9.1.1 in /app
2020-04-11 15:06:11 +02:00
Eugene
c449b60940 Merge pull request #2361 from Eugeny/dependabot/npm_and_yarn/app/angular/common-9.1.1
Bump @angular/common from 9.1.0 to 9.1.1 in /app
2020-04-11 15:06:02 +02:00
Eugene
ee618cdd1f Merge pull request #2378 from Eugeny/dependabot/npm_and_yarn/terminus-plugin-manager/semver-7.2.2
Bump semver from 7.1.1 to 7.2.2 in /terminus-plugin-manager
2020-04-11 15:05:56 +02:00
Eugene
a5bddc21bb Merge pull request #2342 from Eugeny/dependabot/npm_and_yarn/app/rxjs-compat-6.5.5
Bump rxjs-compat from 6.5.4 to 6.5.5 in /app
2020-04-11 15:05:49 +02:00
dependabot-preview[bot]
35bf195f42 Bump rxjs-compat from 6.5.4 to 6.5.5 in /app
Bumps rxjs-compat from 6.5.4 to 6.5.5.

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-11 13:05:22 +00:00
Eugene
044c2dda0e Merge pull request #2329 from Eugeny/dependabot/npm_and_yarn/terminus-ssh/types/ssh2-0.5.42
Bump @types/ssh2 from 0.5.41 to 0.5.42 in /terminus-ssh
2020-04-11 15:05:04 +02:00
Eugene
9f2a70fc88 Merge pull request #2336 from Eugeny/dependabot/npm_and_yarn/app/ngx-toastr-12.0.1
Bump ngx-toastr from 12.0.0 to 12.0.1 in /app
2020-04-11 15:04:32 +02:00
dependabot-preview[bot]
409476c729 Bump semver from 7.1.1 to 7.2.2 in /terminus-plugin-manager
Bumps [semver](https://github.com/npm/node-semver) from 7.1.1 to 7.2.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.1.1...v7.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-11 13:04:30 +00:00
Eugene
91f8f25d26 Merge pull request #2338 from Eugeny/dependabot/npm_and_yarn/terminus-core/electron-updater-4.3.0
Bump electron-updater from 4.2.5 to 4.3.0 in /terminus-core
2020-04-11 15:04:12 +02:00
Eugene
f853839939 Merge pull request #2337 from Eugeny/dependabot/npm_and_yarn/app/electron-updater-4.3.0
Bump electron-updater from 4.2.5 to 4.3.0 in /app
2020-04-11 15:04:06 +02:00
Eugene
6099b44723 Merge pull request #2341 from Eugeny/dependabot/npm_and_yarn/app/rxjs-6.5.5
Bump rxjs from 6.5.4 to 6.5.5 in /app
2020-04-11 15:03:47 +02:00
Eugene
e4e8140145 Merge pull request #2351 from Eugeny/dependabot/npm_and_yarn/typedoc-0.17.4
Bump typedoc from 0.17.3 to 0.17.4
2020-04-11 15:03:01 +02:00
Eugene
8b34ab5102 Merge pull request #2356 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-2.27.0
Bump @typescript-eslint/parser from 2.25.0 to 2.27.0
2020-04-11 15:02:48 +02:00
Eugene
6dc987163d Merge pull request #2372 from Eugeny/dependabot/npm_and_yarn/core-js-3.6.5
Bump core-js from 3.6.4 to 3.6.5
2020-04-11 15:01:31 +02:00
Eugene
a082c71a52 Merge pull request #2373 from Eugeny/dependabot/npm_and_yarn/val-loader-2.1.1
Bump val-loader from 2.1.0 to 2.1.1
2020-04-11 15:01:24 +02:00
Eugene
cc37725014 Merge pull request #2374 from Eugeny/dependabot/npm_and_yarn/terminus-core/core-js-3.6.5
Bump core-js from 3.6.4 to 3.6.5 in /terminus-core
2020-04-11 15:01:16 +02:00
dependabot-preview[bot]
d290fbe933 Bump core-js from 3.6.4 to 3.6.5 in /terminus-core
Bumps [core-js](https://github.com/zloirock/core-js) from 3.6.4 to 3.6.5.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/v3.6.5/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.6.4...v3.6.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-10 04:32:01 +00:00
dependabot-preview[bot]
358d3d82d6 Bump val-loader from 2.1.0 to 2.1.1
Bumps [val-loader](https://github.com/webpack-contrib/val-loader) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/webpack-contrib/val-loader/releases)
- [Changelog](https://github.com/webpack-contrib/val-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/val-loader/compare/v2.1.0...v2.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-10 04:20:18 +00:00
dependabot-preview[bot]
9b560c79ab Bump core-js from 3.6.4 to 3.6.5
Bumps [core-js](https://github.com/zloirock/core-js) from 3.6.4 to 3.6.5.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/v3.6.5/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.6.4...v3.6.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-10 04:19:45 +00:00
dependabot-preview[bot]
8b58bc420d Bump @angular/forms from 9.1.0 to 9.1.1 in /app
Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 9.1.0 to 9.1.1.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.1/packages/forms)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-09 04:19:28 +00:00
dependabot-preview[bot]
9498b17b98 Bump @angular/common from 9.1.0 to 9.1.1 in /app
Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 9.1.0 to 9.1.1.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/9.1.1/packages/common)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-08 04:22:00 +00:00
dependabot-preview[bot]
0f1cbfa3ee Bump @typescript-eslint/parser from 2.25.0 to 2.27.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 2.25.0 to 2.27.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v2.27.0/packages/parser)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-07 04:25:32 +00:00
dependabot-preview[bot]
32d33bf85e Bump typedoc from 0.17.3 to 0.17.4
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.17.3 to 0.17.4.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/0.17.3...0.17.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-06 04:19:57 +00:00
dependabot-preview[bot]
c7f1aa895d Bump rxjs from 6.5.4 to 6.5.5 in /app
Bumps [rxjs](https://github.com/reactivex/rxjs) from 6.5.4 to 6.5.5.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/6.5.5/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/6.5.4...6.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-03 04:18:12 +00:00
dependabot-preview[bot]
675bc3d281 Bump electron-updater from 4.2.5 to 4.3.0 in /terminus-core
Bumps [electron-updater](https://github.com/electron-userland/electron-builder) from 4.2.5 to 4.3.0.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-02 04:26:29 +00:00
dependabot-preview[bot]
c63ba8c22b Bump electron-updater from 4.2.5 to 4.3.0 in /app
Bumps [electron-updater](https://github.com/electron-userland/electron-builder) from 4.2.5 to 4.3.0.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-02 04:22:51 +00:00
dependabot-preview[bot]
e9be73226e Bump ngx-toastr from 12.0.0 to 12.0.1 in /app
Bumps [ngx-toastr](https://github.com/scttcper/ngx-toastr) from 12.0.0 to 12.0.1.
- [Release notes](https://github.com/scttcper/ngx-toastr/releases)
- [Commits](https://github.com/scttcper/ngx-toastr/compare/v12.0.0...v12.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-02 04:22:18 +00:00
dependabot-preview[bot]
4a72e554b6 Bump @types/ssh2 from 0.5.41 to 0.5.42 in /terminus-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.41 to 0.5.42.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-01 04:16:03 +00:00
77 changed files with 2130 additions and 1735 deletions

View File

@@ -262,6 +262,42 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "Goobles",
"name": "Gobius Dolhain",
"avatar_url": "https://avatars3.githubusercontent.com/u/8776771?v=4",
"profile": "https://github.com/Goobles",
"contributions": [
"code"
]
},
{
"login": "3l0w",
"name": "Gwilherm Folliot",
"avatar_url": "https://avatars2.githubusercontent.com/u/37798980?v=4",
"profile": "https://github.com/3l0w",
"contributions": [
"code"
]
},
{
"login": "dimitory",
"name": "Dmitry Pronin",
"avatar_url": "https://avatars0.githubusercontent.com/u/475955?v=4",
"profile": "https://github.com/Dimitory",
"contributions": [
"code"
]
},
{
"login": "JonathanBeverley",
"name": "Jonathan Beverley",
"avatar_url": "https://avatars1.githubusercontent.com/u/20328966?v=4",
"profile": "https://github.com/JonathanBeverley",
"contributions": [
"code"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,

View File

@@ -31,6 +31,8 @@ jobs:
- name: Prepackage plugins - name: Prepackage plugins
run: scripts/prepackage-plugins.js run: scripts/prepackage-plugins.js
- run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js
- name: Build and sign packages - name: Build and sign packages
run: scripts/build-macos.js run: scripts/build-macos.js
if: github.repository == 'Eugeny/terminus' && github.event_name == 'push' if: github.repository == 'Eugeny/terminus' && github.event_name == 'push'
@@ -39,6 +41,8 @@ jobs:
GH_TOKEN: ${{ secrets.GH_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }}
CSC_LINK: ${{ secrets.CSC_LINK }} CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
- name: Build packages without signing - name: Build packages without signing
run: scripts/build-macos.js run: scripts/build-macos.js

2
.gitignore vendored
View File

@@ -28,3 +28,5 @@ docs/api
.electron-symbols .electron-symbols
sentry.properties sentry.properties
sentry-symbols.js sentry-symbols.js
terminus-ssh/util/pagent.exe

View File

@@ -109,6 +109,12 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=nstefanou" title="Code">💻</a> <a href="#plugin-nstefanou" title="Plugin/utility libraries">🔌</a></td> <td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=nstefanou" title="Code">💻</a> <a href="#plugin-nstefanou" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="https://github.com/orin220444"><img src="https://avatars3.githubusercontent.com/u/30747229?v=4" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=orin220444" title="Code">💻</a></td> <td align="center"><a href="https://github.com/orin220444"><img src="https://avatars3.githubusercontent.com/u/30747229?v=4" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=orin220444" title="Code">💻</a></td>
</tr> </tr>
<tr>
<td align="center"><a href="https://github.com/Goobles"><img src="https://avatars3.githubusercontent.com/u/8776771?v=4" width="100px;" alt=""/><br /><sub><b>Gobius Dolhain</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=Goobles" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/3l0w"><img src="https://avatars2.githubusercontent.com/u/37798980?v=4" width="100px;" alt=""/><br /><sub><b>Gwilherm Folliot</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=3l0w" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Dimitory"><img src="https://avatars0.githubusercontent.com/u/475955?v=4" width="100px;" alt=""/><br /><sub><b>Dmitry Pronin</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=dimitory" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JonathanBeverley"><img src="https://avatars1.githubusercontent.com/u/20328966?v=4" width="100px;" alt=""/><br /><sub><b>Jonathan Beverley</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=JonathanBeverley" title="Code">💻</a></td>
</tr>
</table> </table>
<!-- markdownlint-enable --> <!-- markdownlint-enable -->

View File

@@ -1,4 +1,4 @@
import { app, ipcMain, Menu, Tray, shell } from 'electron' import { app, ipcMain, Menu, Tray, shell, globalShortcut } from 'electron'
// eslint-disable-next-line no-duplicate-imports // eslint-disable-next-line no-duplicate-imports
import * as electron from 'electron' import * as electron from 'electron'
import { loadConfig } from './config' import { loadConfig } from './config'
@@ -9,8 +9,17 @@ export class Application {
private windows: Window[] = [] private windows: Window[] = []
constructor () { constructor () {
ipcMain.on('app:config-change', () => { ipcMain.on('app:config-change', (_event, config) => {
this.broadcast('host:config-change') this.broadcast('host:config-change', config)
})
ipcMain.on('app:register-global-hotkey', (_event, specs) => {
globalShortcut.unregisterAll()
for (let spec of specs) {
globalShortcut.register(spec, () => {
this.onGlobalHotkey()
})
}
}) })
const configData = loadConfig() const configData = loadConfig()
@@ -45,6 +54,9 @@ export class Application {
this.enableTray() this.enableTray()
} }
}) })
window.closed$.subscribe(() => {
this.windows = this.windows.filter(x => x !== window)
})
if (process.platform === 'darwin') { if (process.platform === 'darwin') {
this.setupMenu() this.setupMenu()
} }
@@ -52,6 +64,24 @@ export class Application {
return window return window
} }
onGlobalHotkey (): void {
if (this.windows.some(x => x.isFocused())) {
for (let window of this.windows) {
window.hide()
}
} else {
for (let window of this.windows) {
window.present()
}
}
}
presentAllWindows (): void {
for (let window of this.windows) {
window.present()
}
}
broadcast (event: string, ...args): void { broadcast (event: string, ...args): void {
for (const window of this.windows) { for (const window of this.windows) {
window.send(event, ...args) window.send(event, ...args)
@@ -107,6 +137,13 @@ export class Application {
} }
} }
handleSecondInstance (argv: string[], cwd: string): void {
this.presentAllWindows()
for (let window of this.windows) {
window.handleSecondInstance(argv, cwd)
}
}
private setupMenu () { private setupMenu () {
let template: Electron.MenuItemConstructorOptions[] = [ let template: Electron.MenuItemConstructorOptions[] = [
{ {

View File

@@ -34,7 +34,7 @@ process.on('uncaughtException' as any, err => {
}) })
app.on('second-instance', (_event, argv, cwd) => { app.on('second-instance', (_event, argv, cwd) => {
application.send('host:second-instance', parseArgs(argv, cwd), cwd) application.handleSecondInstance(argv, cwd)
}) })
const argv = parseArgs(process.argv, process.cwd()) const argv = parseArgs(process.argv, process.cwd())

View File

@@ -1,18 +1,20 @@
import * as glasstron from 'glasstron'
if (process.platform === 'win32' || process.platform === 'linux') {
glasstron.init()
}
import { Subject, Observable } from 'rxjs' import { Subject, Observable } from 'rxjs'
import { debounceTime } from 'rxjs/operators' import { debounceTime } from 'rxjs/operators'
import { BrowserWindow, app, ipcMain, Rectangle, screen } from 'electron' import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen } from 'electron'
import ElectronConfig = require('electron-config') import ElectronConfig = require('electron-config')
import * as os from 'os' import * as os from 'os'
import * as path from 'path' import * as path from 'path'
import { parseArgs } from './cli'
import { loadConfig } from './config' import { loadConfig } from './config'
let SetWindowCompositionAttribute: any
let AccentState: any
let DwmEnableBlurBehindWindow: any let DwmEnableBlurBehindWindow: any
if (process.platform === 'win32') { if (process.platform === 'win32') {
SetWindowCompositionAttribute = require('windows-swca').SetWindowCompositionAttribute
AccentState = require('windows-swca').ACCENT_STATE
DwmEnableBlurBehindWindow = require('windows-blurbehind').DwmEnableBlurBehindWindow DwmEnableBlurBehindWindow = require('windows-blurbehind').DwmEnableBlurBehindWindow
} }
@@ -23,17 +25,20 @@ export interface WindowOptions {
export class Window { export class Window {
ready: Promise<void> ready: Promise<void>
private visible = new Subject<boolean>() private visible = new Subject<boolean>()
private closed = new Subject<void>()
private window: BrowserWindow private window: BrowserWindow
private windowConfig: ElectronConfig private windowConfig: ElectronConfig
private windowBounds: Rectangle private windowBounds: Rectangle
private closing = false private closing = false
private lastVibrancy: {enabled: boolean, type?: string} | null = null private lastVibrancy: {enabled: boolean, type?: string} | null = null
private disableVibrancyWhileDragging = false private disableVibrancyWhileDragging = false
private configStore: any
get visible$ (): Observable<boolean> { return this.visible } get visible$ (): Observable<boolean> { return this.visible }
get closed$ (): Observable<void> { return this.closed }
constructor (options?: WindowOptions) { constructor (options?: WindowOptions) {
let configData = loadConfig() this.configStore = loadConfig()
options = options || {} options = options || {}
@@ -70,7 +75,7 @@ export class Window {
} }
} }
if ((configData.appearance || {}).frame === 'native') { if ((this.configStore.appearance || {}).frame === 'native') {
bwOptions.frame = true bwOptions.frame = true
} else { } else {
if (process.platform === 'darwin') { if (process.platform === 'darwin') {
@@ -78,15 +83,12 @@ export class Window {
} }
} }
if (process.platform === 'linux') {
bwOptions.backgroundColor = '#131d27'
}
this.window = new BrowserWindow(bwOptions) this.window = new BrowserWindow(bwOptions)
this.window.once('ready-to-show', () => { this.window.once('ready-to-show', () => {
if (process.platform === 'darwin') { if (process.platform === 'darwin') {
this.window.setVibrancy('window') this.window.setVibrancy('window')
} else if (process.platform === 'win32' && (configData.appearance || {}).vibrancy) { } else if (process.platform === 'win32' && (this.configStore.appearance || {}).vibrancy) {
this.setVibrancy(true) this.setVibrancy(true)
} }
@@ -97,6 +99,13 @@ export class Window {
this.window.show() this.window.show()
} }
this.window.focus() this.window.focus()
this.window.moveTop()
}
})
this.window.on('blur', () => {
if (this.configStore.appearance?.dockHideOnBlur) {
this.hide()
} }
}) })
@@ -123,18 +132,17 @@ export class Window {
this.lastVibrancy = { enabled, type } this.lastVibrancy = { enabled, type }
if (process.platform === 'win32') { if (process.platform === 'win32') {
if (parseFloat(os.release()) >= 10) { if (parseFloat(os.release()) >= 10) {
let attribValue = AccentState.ACCENT_DISABLED glasstron.update(this.window, {
if (enabled) { windows: { blurType: enabled ? type === 'fluent' ? 'acrylic' : 'blurbehind' : null },
if (type === 'fluent') { })
attribValue = AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND
} else {
attribValue = AccentState.ACCENT_ENABLE_BLURBEHIND
}
}
SetWindowCompositionAttribute(this.window.getNativeWindowHandle(), attribValue, 0x00000000)
} else { } else {
DwmEnableBlurBehindWindow(this.window, enabled) DwmEnableBlurBehindWindow(this.window, enabled)
} }
} else if (process.platform ==='linux') {
glasstron.update(this.window, {
linux: { requestBlur: enabled },
})
this.window.setBackgroundColor(enabled ? '#00000000' : '#131d27')
} else { } else {
this.window.setVibrancy(enabled ? 'dark' : null as any) // electron issue 20269 this.window.setVibrancy(enabled ? 'dark' : null as any) // electron issue 20269
} }
@@ -142,6 +150,7 @@ export class Window {
show (): void { show (): void {
this.window.show() this.window.show()
this.window.moveTop()
} }
focus (): void { focus (): void {
@@ -153,12 +162,60 @@ export class Window {
return return
} }
this.window.webContents.send(event, ...args) this.window.webContents.send(event, ...args)
if (event === 'host:config-change') {
this.configStore = args[0]
}
} }
isDestroyed (): boolean { isDestroyed (): boolean {
return !this.window || this.window.isDestroyed() return !this.window || this.window.isDestroyed()
} }
isFocused (): boolean {
return this.window.isFocused()
}
hide (): void {
if (process.platform === 'darwin') {
// Lose focus
Menu.sendActionToFirstResponder('hide:')
}
this.window.blur()
if (process.platform !== 'darwin') {
this.window.hide()
}
}
present (): void {
if (!this.window.isVisible()) {
// unfocused, invisible
this.window.show()
this.window.focus()
} else {
if (!this.configStore.appearance?.dock || this.configStore.appearance?.dock === 'off') {
// not docked, visible
setTimeout(() => {
this.window.show()
this.window.focus()
})
} else {
if (this.configStore.appearance?.dockAlwaysOnTop) {
// docked, visible, on top
this.window.hide()
} else {
// docked, visible, not on top
this.window.focus()
}
}
}
}
handleSecondInstance (argv: string[], cwd: string): void {
if (!this.configStore.appearance?.dock) {
this.send('host:second-instance', parseArgs(argv, cwd), cwd)
}
}
private setupWindowManagement () { private setupWindowManagement () {
this.window.on('show', () => { this.window.on('show', () => {
this.visible.next(true) this.visible.next(true)
@@ -326,6 +383,8 @@ export class Window {
private destroy () { private destroy () {
this.window = null this.window = null
this.closed.next()
this.visible.complete() this.visible.complete()
this.closed.complete()
} }
} }

View File

@@ -13,43 +13,42 @@
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch"
}, },
"dependencies": { "dependencies": {
"@angular/animations": "9.1.0", "@angular/animations": "9.1.9",
"@angular/common": "9.1.0", "@angular/common": "9.1.11",
"@angular/compiler": "9.1.0", "@angular/compiler": "9.1.9",
"@angular/core": "9.1.0", "@angular/core": "9.1.9",
"@angular/forms": "9.1.0", "@angular/forms": "9.1.11",
"@angular/platform-browser": "9.1.0", "@angular/platform-browser": "9.1.9",
"@angular/platform-browser-dynamic": "9.1.0", "@angular/platform-browser-dynamic": "9.1.9",
"@ng-bootstrap/ng-bootstrap": "^6.0.2", "@ng-bootstrap/ng-bootstrap": "^6.1.0",
"devtron": "1.4.0", "devtron": "1.4.0",
"electron-config": "2.0.0", "electron-config": "2.0.0",
"electron-debug": "^3.0.1", "electron-debug": "^3.0.1",
"electron-is-dev": "1.1.0", "electron-is-dev": "1.1.0",
"electron-updater": "^4.2.5",
"fontmanager-redux": "0.4.0", "fontmanager-redux": "0.4.0",
"js-yaml": "3.13.1", "glasstron": "sentialx/Glasstron#n-api",
"keytar": "^5.4.0", "js-yaml": "3.14.0",
"keytar": "^6.0.1",
"mz": "^2.7.0", "mz": "^2.7.0",
"ngx-toastr": "^12.0.0", "ngx-toastr": "^12.0.1",
"node-pty": "^0.10.0-beta2", "@terminus-term/node-pty": "0.10.0-beta9",
"npm": "6.9.0", "npm": "6.9.0",
"path": "0.12.7", "path": "0.12.7",
"rxjs": "^6.5.4", "rxjs": "^6.5.5",
"rxjs-compat": "^6.5.4", "rxjs-compat": "^6.6.0",
"yargs": "^15.3.1", "yargs": "^15.4.1",
"zone.js": "^0.10.3" "zone.js": "^0.10.3"
}, },
"optionalDependencies": { "optionalDependencies": {
"macos-native-processlist": "^1.0.2", "macos-native-processlist": "^2.0.0",
"serialport": "^8.0.7", "serialport": "^9.0.0",
"windows-blurbehind": "^1.0.1", "windows-blurbehind": "^1.0.1",
"windows-native-registry": "^1.0.17", "windows-native-registry": "^3.0.0",
"windows-process-tree": "^0.2.4", "windows-process-tree": "^0.2.4"
"windows-swca": "^2.0.2"
}, },
"devDependencies": { "devDependencies": {
"@types/mz": "0.0.32", "@types/mz": "0.0.32",
"@types/node": "12.7.12", "@types/node": "12.7.12",
"node-abi": "^2.15.0" "node-abi": "^2.18.0"
} }
} }

View File

@@ -3,6 +3,7 @@ import 'source-sans-pro/source-sans-pro.css'
import 'source-code-pro/source-code-pro.css' import 'source-code-pro/source-code-pro.css'
import '@fortawesome/fontawesome-free/css/solid.css' import '@fortawesome/fontawesome-free/css/solid.css'
import '@fortawesome/fontawesome-free/css/brands.css' import '@fortawesome/fontawesome-free/css/brands.css'
import '@fortawesome/fontawesome-free/css/regular.css'
import '@fortawesome/fontawesome-free/css/fontawesome.css' import '@fortawesome/fontawesome-free/css/fontawesome.css'
import 'ngx-toastr/toastr.css' import 'ngx-toastr/toastr.css'
import './preload.scss' import './preload.scss'

View File

@@ -37,6 +37,7 @@ module.exports = {
'electron-config': 'commonjs electron-config', 'electron-config': 'commonjs electron-config',
'electron-vibrancy': 'commonjs electron-vibrancy', 'electron-vibrancy': 'commonjs electron-vibrancy',
fs: 'commonjs fs', fs: 'commonjs fs',
glasstron: 'commonjs glasstron',
mz: 'commonjs mz', mz: 'commonjs mz',
path: 'commonjs path', path: 'commonjs path',
yargs: 'commonjs yargs', yargs: 'commonjs yargs',

View File

@@ -2,112 +2,119 @@
# yarn lockfile v1 # yarn lockfile v1
"@angular/animations@9.1.0": "@angular/animations@9.1.9":
version "9.1.0" version "9.1.9"
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.0.tgz#3030e290683c0e2d63fa61060d36f659511d3b2c" resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-9.1.9.tgz#de54334ea195189402487855c9a98f5618605da4"
integrity sha512-o7X3HM+eocoryw3VrDUtG6Wci2KwtzyBFo3KBJXjQ16X6fwdkjTG+hLb7pp2CBFBEJW4tPYEy7cSBmEfMRTqag== integrity sha512-qWVi0TxmU6HeXAgEsfpQvFFygh+a0kH2kGe6bWij4XvG6dWfV3xZjlaFwSIYGk+yK4yL0+9+PAXH+ENfxNw+Cw==
"@angular/common@9.1.0": "@angular/common@9.1.11":
version "9.1.0" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.0.tgz#f9b5353a28f9da6c06266bc7244bbabf9e005176" resolved "https://registry.yarnpkg.com/@angular/common/-/common-9.1.11.tgz#1323f7b043410791bd2d0d71b0bbb1f862319c04"
integrity sha512-6JPLNtMhI03bGTVQJeSwc+dTjV6DtP7M/BAyzIV0InZP1D6XsOh2QahLFIaaN2sSxYA2ClKuwfX1v+rx9AbXQA== integrity sha512-Vh5lF7zWwDK9RedmYXUc8vUXyrecR3j1mAWlTlnmcHYxxFThPzN/dr0slQcPi6nyJn0EmyRKUGvAoZx4rIb7wg==
"@angular/compiler@9.1.0": "@angular/compiler@9.1.9":
version "9.1.0" version "9.1.9"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.0.tgz#e55b4f2f24df75283002d5e8e85e1acfc46928f6" resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.1.9.tgz#cbf678ee28a0811a8ef3ee7be565d4911ff28ec7"
integrity sha512-QHw/JSeTXHiJQ2Ih0EtU7FGsYcOr+0hwZhqwSW3EEn8TtUgA3DS5lXeiDV66f+3DdvNZFPmgiZIvun3ypxn1HA== integrity sha512-kjFgaTB2ckr9lgmkS1dOGRT7kmzpQueydxsxXSHWgICNVE6F/u1PHyeSOyJRpxW0GnrkLq3QM2EUFnQGGga5bg==
"@angular/core@9.1.0": "@angular/core@9.1.9":
version "9.1.0" version "9.1.9"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.0.tgz#9dfc386bd1461e0fd4786031fd245da04371421c" resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.1.9.tgz#db4241f867d6e14b81ed6e7c50334813c6ebfc10"
integrity sha512-RVlyegdIAij0P1wLY5ObIdsBAzvmHkHfElnmfiNKhaDftP6U/3zRtaKDu0bq0jvn1WCQ8zXxFQ8AWyKZwyFS+w== integrity sha512-q/DERgVU6vK2LtTcdVCGGBcoO424WsEfImh3Vcuy+P/ZVmthlDUC/+q+tSKt8MMf4hLpxFDQJE8vUSkktj7QEw==
"@angular/forms@9.1.0": "@angular/forms@9.1.11":
version "9.1.0" version "9.1.11"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.0.tgz#de14e34aa37bd41a28f93fee8666cd7f6393078c" resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-9.1.11.tgz#fa246144649236613598a0471aa7f39b60f986b5"
integrity sha512-5GC8HQlPChPV+168zLlm4yj4syA6N9ChSKV0tmzj1zIfMcub1UAOaB9IYaXRHQsjPFh9OuQXwmkzScyAfhEVjA== integrity sha512-t4WHrh6ot1r8zdV+3fJz7g9rCok77c9CiIevhH2dR/idxD+HtFR0wqmcBQzsn+rNVB0f0TiSHDrj+TeELIFyWw==
"@angular/platform-browser-dynamic@9.1.0": "@angular/platform-browser-dynamic@9.1.9":
version "9.1.0" version "9.1.9"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.0.tgz#830bd5038d1875736e87e68c3aef44f0f835e418" resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.9.tgz#12f8b05d3c9ef0844df88f3833e29ea1e49ec5e0"
integrity sha512-sMtz/poQ3TYaWZzWjrn9apKUZ/WKql2MYCWbpax7pql3GgC9OoTslc7ZEe7/d3ynfFE/CQqWBBOuWGD71Z0LMQ== integrity sha512-b9MG5MWne+IuL3uLm8jwPhlJzqYaGBGk/qibOqb17T24j1iyrlO7T5bZ8zO6pUy5iT/TahVfHPnPJC1qTK5OmA==
"@angular/platform-browser@9.1.0": "@angular/platform-browser@9.1.9":
version "9.1.0" version "9.1.9"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.0.tgz#0bd40db37c9e314944c149de935b0f6cdd1f7350" resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-9.1.9.tgz#c2fcc50aebfdc268521b407e32dc0d967cb40411"
integrity sha512-OsS/blUjl8ranmDaRADjFAmvnlmwbT6WNU7dVov7FhV0rqesbwaOJ5bR0LSYHYpej7Jaa6oYk0v0XWkaH9LTFg== integrity sha512-V861X3MxJp1AlMTnkUPldpBLIJbApXF3ka0A5Dq2nVJCyOFeteGkaRWSBgqe2jxmq+LVpJbzcNvtDFXw6mQ0jA==
"@ng-bootstrap/ng-bootstrap@^6.0.2": "@ng-bootstrap/ng-bootstrap@^6.1.0":
version "6.0.2" version "6.1.0"
resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-6.0.2.tgz#ed8d4e04f21885fb18dc2523c4f2111f50ee99b2" resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-6.1.0.tgz#fce7550a095aeac42108f76ac1ebd63caf8304e9"
integrity sha512-8+Dz8GN15zneIA4+mQ7b1j5O+oHsFdhTYQVDGk6eAazHeqrFD0+o8N+pLZL2PZlf98WcHFmXIOqKXrBD8iLl1g== integrity sha512-2GzkNJBKdeHkaUqaCAqSILPft0IzzHjMfAlAuGY6/ZLlVQ0glt5MTbIXtIhSbjR+OvlrljoXFLrvzs1LGdmE+A==
"@serialport/binding-abstract@^8.0.6": "@serialport/binding-abstract@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/binding-abstract/-/binding-abstract-8.0.6.tgz#78e6d7995a95c46d480445303e6f32ca4d53edcd" resolved "https://registry.yarnpkg.com/@serialport/binding-abstract/-/binding-abstract-9.0.0.tgz#7a01f89c9f098f1357c0b20ac4648ecba8fe7aae"
integrity sha512-1swwUVoRyQ9ubxrkJ8JPppykohUpTAP4jkGr36e9NjbVocSPfqeX6tFZFwl/IdUlwJwxGdbKDqq7FvXniCQUMw== integrity sha512-ZU+6ZypP33Rzda1cDnpN0+CNfnODwbRU66GBawNtj2+xE+OMI7a0hbuZAYvQ+BThyDfdX/vn55P1YYeVWI8qpQ==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
"@serialport/binding-mock@^8.0.6": "@serialport/binding-mock@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/binding-mock/-/binding-mock-8.0.6.tgz#41a8f827269c6a0e58546513a274e12023134155" resolved "https://registry.yarnpkg.com/@serialport/binding-mock/-/binding-mock-9.0.0.tgz#37d17523b81e06f4d144ce7660d8e6497f848364"
integrity sha512-BIbY5/PsDDo0QWDNCCxDgpowAdks+aZR8BOsEtK2GoASTTcJCy1fBwPIfH870o7rnbH901wY3C+yuTfdOvSO9A== integrity sha512-E65ZbykGwZSoHpQvjuJkTbwEM0uZku+SROtO+VMs/mShMalBnOSoRDU2IedkFKvz6IqowZZOVyaBUbnKYoAUuQ==
dependencies: dependencies:
"@serialport/binding-abstract" "^8.0.6" "@serialport/binding-abstract" "^9.0.0"
debug "^4.1.1" debug "^4.1.1"
"@serialport/bindings@^8.0.7": "@serialport/bindings@^9.0.0":
version "8.0.7" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/bindings/-/bindings-8.0.7.tgz#2a58f60f1e24ee4549be6f9e0e37b3359d038a1c" resolved "https://registry.yarnpkg.com/@serialport/bindings/-/bindings-9.0.0.tgz#a3289bbf80c03f7d90d95d05422c983f38c07812"
integrity sha512-IqudDL8ne2Y2S0W5fKA6wdgHCIA2e2OIaPVYhGy6duE6legNHFY+05CLicHAyAeTocXmHU7rVNxzVQrOG5tM4g== integrity sha512-2LoYX80h5U8uIgpPaBXpIhs9uXIPhn6k+9u0FH3mFPHHeJ/tyVliwbj7uxdQ6xAUe5Zf3T2cH9JC/LnxewWyuw==
dependencies: dependencies:
"@serialport/binding-abstract" "^8.0.6" "@serialport/binding-abstract" "^9.0.0"
"@serialport/parser-readline" "^8.0.6" "@serialport/parser-readline" "^9.0.0"
bindings "^1.5.0" bindings "^1.5.0"
debug "^4.1.1" debug "^4.1.1"
nan "^2.14.0" nan "^2.14.1"
prebuild-install "^5.3.0" prebuild-install "^5.3.3"
"@serialport/parser-byte-length@^8.0.6": "@serialport/parser-byte-length@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-8.0.6.tgz#efb6195692b1088e6c095fd43bae196fc30674d0" resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-9.0.0.tgz#ff98e2d884695e5a2df3d67b344e9fb9171905ef"
integrity sha512-92mrFxFEvq3gRvSM7ANK/jfbmHslz91a5oYJy/nbSn4H/MCRXjxR2YOkQgVXuN+zLt+iyDoW3pcOP4Sc1nWdqQ== integrity sha512-MaXWTqxz9SeWaN488uFhDMA3cy2sQFoGHDQqDpy6q9wBGlPBe+UpRAznzOoNPkAehqyPo1Vc7gxYsBfgjZtWaw==
"@serialport/parser-cctalk@^8.0.6": "@serialport/parser-cctalk@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-8.0.6.tgz#4134a3c479d465df3b152a21e16b8ecf1bc818c3" resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-9.0.0.tgz#5c4b01c40cc093fe68449173bbb923f84a5dc89f"
integrity sha512-pqtCYQPgxnxHygiXUPCfgX7sEx+fdR/ObjpscidynEULUq2fFrC5kBkrxRbTfHRtTaU2ii9DyjFq0JVRCbhI0Q== integrity sha512-tFJRF+uceEMYQeOLi92CYr1SScnI+2QLkawNHaVwwcmLV0ezwmsm1hvwBCWHkWDsY6U1SiElNJ5HpF89kS28zQ==
"@serialport/parser-delimiter@^8.0.6": "@serialport/parser-delimiter@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-8.0.6.tgz#0e467cb07a40bd3006835c48e488666bd7de22cc" resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-9.0.0.tgz#1a241deaba80cf0aa6a88d37f60c64647604ec2d"
integrity sha512-ogKOcPisPMlVtirkuDu3SFTF0+xT0ijxoH7XjpZiYL41EVi367MwuCnEmXG+dEKKnF0j9EPqOyD2LGSJxaFmhQ== integrity sha512-OesbvlJf1BjFC1zde6cnW1RttxZ8BoXGCOiNvM9mLKdvJ06l9o/4HyVCg2bymj6ziy/gz4407pwyPfvVYApE3A==
"@serialport/parser-readline@^8.0.6": "@serialport/parser-readline@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-8.0.6.tgz#8a6a296a1bec08a4855bf7a62bc6335d52972e4a" resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-9.0.0.tgz#916391300e2e53a9f7b5aa847c989f7723986059"
integrity sha512-OYBT2mpczh9QUI3MTw8j0A0tIlPVjpVipvuVnjRkYwxrxPeq04RaLFhaDpuRzua5rTKMt89c1y3btYeoDXMjAA== integrity sha512-JMCqfn6A+BzcCc/4upYeLB48zijBJmOO/YGcyilXgCW0Mfedqsewgtatmk2tqFhQoJfjyOu3dRE3Lz9xHlRGZQ==
dependencies: dependencies:
"@serialport/parser-delimiter" "^8.0.6" "@serialport/parser-delimiter" "^9.0.0"
"@serialport/parser-ready@^8.0.6": "@serialport/parser-ready@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-8.0.6.tgz#d6e95e53ee70d298ae0b4147995007f4ba62651c" resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-9.0.0.tgz#be787d8d5495a2546483c818061cf41838bae124"
integrity sha512-xcEqv4rc119WR5JzAuu8UeJOlAwET2PTdNb6aIrrLlmTxhvuBbuRFcsnF3BpH9jUL30Kh7a6QiNXIwVG+WR/1Q== integrity sha512-oSQR7773Jdc6SjXMA1mWgfFlyBLcIRlZtt1BJMfO07k3ynBmanJ4VysVDTDvxtsREHLgcjoLRKQC/6wl2wvXOQ==
"@serialport/parser-regex@^8.0.6": "@serialport/parser-regex@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-8.0.6.tgz#70aa1abe31899d1b986f44cfb6777a76e26755bf" resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-9.0.0.tgz#4cb7039fa4bc487cb4ea1ade027c8fdd33f66e6c"
integrity sha512-J8KY75Azz5ZyExmyM5YfUxbXOWBkZCytKgCCmZ966ttwZS0bUZOuoCaZj2Zp4VILJAiLuxHoqc0foi67Fri5+g== integrity sha512-Q4LDXbWnun5r1ML6ZLS5Wb2BurnkJjtP1geHtZbshLUmpfms++Q28li8OPzv/KQ6praC1HDRG37D0AY6xoObSw==
"@serialport/stream@^8.0.6": "@serialport/stream@^9.0.0":
version "8.0.6" version "9.0.0"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-8.0.6.tgz#3395dbac788c00797c2435c61c2ecb4e99fbf41d" resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-9.0.0.tgz#0df7bd7c01c09696817052781a09e8352c4e7ffd"
integrity sha512-ym1PwM0rwLrj90vRBB66I1hwMXbuMw9wGTxqns75U3N/tuNFOH85mxXaYVF2TpI66aM849NoI1jMm50fl9equg== integrity sha512-JK952xKP+7PX3tXj9DgKafQaAru0sdbkTIY1OpjUNGp0xYWTVUbZRnLK//MLkH6FpoDTJc9ghN2ILK0YRtpLLA==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
"@terminus-term/node-pty@0.10.0-beta.9":
version "0.10.0-beta9"
resolved "https://registry.yarnpkg.com/@terminus-term/node-pty/-/node-pty-0.10.0-beta9.tgz#b4caff6b069139add9be959e00b364f8fe3c620d"
integrity sha512-wnttx12b9gxP9CPB9uqBMQx/Vp4EboUDGOY3xRP0Nvhec6pSF2qFZD6bwMbNzFIopbaohluEYcbEul0jTQcdeQ==
dependencies:
nan "^2.13.2"
"@types/color-name@^1.1.1": "@types/color-name@^1.1.1":
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
@@ -125,18 +132,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc"
integrity sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ== integrity sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==
"@types/node@^10.12.18":
version "10.12.18"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==
"@types/semver@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.1.0.tgz#c8c630d4c18cd326beff77404887596f96408408"
integrity sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==
dependencies:
"@types/node" "*"
JSONStream@^1.3.4, JSONStream@^1.3.5: JSONStream@^1.3.4, JSONStream@^1.3.5:
version "1.3.5" version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -375,14 +370,6 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
builder-util-runtime@8.6.2:
version "8.6.2"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.6.2.tgz#8270e15b012d8d3b110f3e327b0fd8b0e07b1686"
integrity sha512-9QnIBISfhgQ2BxtRLidVqf/v5HD73vSKZDllpUmGd2L6VORGQk7cZAPmPtw4HQM3gPBelyVJ5yIjMNZ8xjmd1A==
dependencies:
debug "^4.1.1"
sax "^1.2.4"
builtins@^1.0.3: builtins@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
@@ -857,20 +844,6 @@ electron-localshortcut@^3.1.0:
keyboardevent-from-electron-accelerator "^1.1.0" keyboardevent-from-electron-accelerator "^1.1.0"
keyboardevents-areequal "^0.2.1" keyboardevents-areequal "^0.2.1"
electron-updater@^4.2.5:
version "4.2.5"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.2.5.tgz#dbced8da6f8c6fc2dc662f2776131f5a49ce018d"
integrity sha512-ir8SI3capF5pN4LTQY79bP7oqiBKjgtdDW378xVId5VcGUZ+Toei2j+fgx1mq3y4Qg19z4HqLxEZ9FqMD0T0RA==
dependencies:
"@types/semver" "^7.1.0"
builder-util-runtime "8.6.2"
fs-extra "^8.1.0"
js-yaml "^3.13.1"
lazy-val "^1.0.4"
lodash.isequal "^4.5.0"
pako "^1.0.11"
semver "^7.1.3"
emoji-regex@^8.0.0: emoji-regex@^8.0.0:
version "8.0.0" version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -1064,15 +1037,6 @@ fs-constants@^1.0.0:
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^1.2.5: fs-minipass@^1.2.5:
version "1.2.6" version "1.2.6"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
@@ -1181,6 +1145,13 @@ github-from-package@0.0.0:
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
glasstron@sentialx/Glasstron#n-api:
version "0.0.4"
resolved "https://codeload.github.com/sentialx/Glasstron/tar.gz/1159908e1d85b8cceabf6b5d9353c446caea1f0b"
dependencies:
node-addon-api "^3.0.0"
x11 "^2.3.0"
glob@^7.0.3, glob@^7.1.1, glob@^7.1.3: glob@^7.0.3, glob@^7.1.1, glob@^7.1.3:
version "7.1.4" version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
@@ -1222,7 +1193,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: graceful-fs@^4.1.2:
version "4.2.2" version "4.2.2"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
@@ -1484,10 +1455,10 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
js-yaml@3.13.1, js-yaml@^3.13.1: js-yaml@3.14.0:
version "3.13.1" version "3.14.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
dependencies: dependencies:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^4.0.0" esprima "^4.0.0"
@@ -1517,13 +1488,6 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
optionalDependencies:
graceful-fs "^4.1.6"
jsonparse@^1.2.0: jsonparse@^1.2.0:
version "1.3.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
@@ -1549,13 +1513,13 @@ keyboardevents-areequal@^0.2.1:
resolved "https://registry.yarnpkg.com/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz#88191ec738ce9f7591c25e9056de928b40277194" resolved "https://registry.yarnpkg.com/keyboardevents-areequal/-/keyboardevents-areequal-0.2.2.tgz#88191ec738ce9f7591c25e9056de928b40277194"
integrity sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw== integrity sha512-Nv+Kr33T0mEjxR500q+I6IWisOQ0lK1GGOncV0kWE6n4KFmpcu7RUX5/2B0EUtX51Cb0HjZ9VJsSY3u4cBa0kw==
keytar@^5.4.0: keytar@^6.0.1:
version "5.4.0" version "6.0.1"
resolved "https://registry.yarnpkg.com/keytar/-/keytar-5.4.0.tgz#71d8209e7dd2fe99008c243791350a6bd6ceab67" resolved "https://registry.yarnpkg.com/keytar/-/keytar-6.0.1.tgz#996961abdebf300b2d34bb2eab6e42a8096b1ed8"
integrity sha512-Ta0RtUmkq7un177SPgXKQ7FGfGDV4xvsV0cGNiWVEzash5U0wyOsXpwfrK2+Oq+hHvsvsbzIZUUuJPimm3avFw== integrity sha512-1Ihpf2tdM3sLwGMkYHXYhVC/hx5BDR7CWFL4IrBA3IDZo0xHhS2nM+tU9Y+u/U7okNfbVkwmKsieLkcWRMh93g==
dependencies: dependencies:
nan "2.14.0" node-addon-api "^3.0.0"
prebuild-install "5.3.3" prebuild-install "5.3.4"
latest-version@^3.0.0: latest-version@^3.0.0:
version "3.1.0" version "3.1.0"
@@ -1569,11 +1533,6 @@ lazy-property@~1.0.0:
resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147"
integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc=
lazy-val@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65"
integrity sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==
lcid@^1.0.0: lcid@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -1776,11 +1735,6 @@ lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0:
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
lodash.union@~4.6.0: lodash.union@~4.6.0:
version "4.6.0" version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
@@ -1816,12 +1770,12 @@ lru-cache@^5.1.1:
dependencies: dependencies:
yallist "^3.0.2" yallist "^3.0.2"
macos-native-processlist@^1.0.2: macos-native-processlist@^2.0.0:
version "1.0.2" version "2.0.0"
resolved "https://registry.yarnpkg.com/macos-native-processlist/-/macos-native-processlist-1.0.2.tgz#78767e4fdea3eea782bbf063dac8c1e2420786dc" resolved "https://registry.yarnpkg.com/macos-native-processlist/-/macos-native-processlist-2.0.0.tgz#135e24612c4b0f1f16a51526bd040d5026143d38"
integrity sha512-ShX+vFA44eaJ9/JCPTrhL0j4KLVKrYjeTQCFuR0kx7qWxETBDbFX8I3WKKXeALMtWSD+F4TDpza2mwCcE2tWAw== integrity sha512-ciW1n2jL+9f7+9xijMMVmVzRbpVlKjzMFmgpNricm5QKfkUTMEa1suR0pc9pQRrLea4sJtbLo0u+izzHDvkpIA==
dependencies: dependencies:
nan "^2.13.2" node-addon-api "3.0.0"
make-dir@^1.0.0: make-dir@^1.0.0:
version "1.3.0" version "1.3.0"
@@ -1898,6 +1852,11 @@ minimist@^1.2.0:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
minimist@^1.2.3:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minipass@^2.2.1, minipass@^2.3.5: minipass@^2.2.1, minipass@^2.3.5:
version "2.3.5" version "2.3.5"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
@@ -1972,28 +1931,33 @@ mz@^2.7.0:
object-assign "^4.0.1" object-assign "^4.0.1"
thenify-all "^1.0.0" thenify-all "^1.0.0"
nan@2.14.0, nan@^2.13.2, nan@^2.14.0: nan@^2.13.2, nan@^2.14.1:
version "2.14.0" version "2.14.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
napi-build-utils@^1.0.1: napi-build-utils@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508"
integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA== integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==
ngx-toastr@^12.0.0: ngx-toastr@^12.0.1:
version "12.0.0" version "12.0.1"
resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-12.0.0.tgz#1b35a4e5b785246c558e091c831a26ebf211cfd7" resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-12.0.1.tgz#288c8ef505f1216aa4952cd2a8c6fa7c57a54ccc"
integrity sha512-J0mvGXH9cLlP3acoLJcuYhsQcL+EOAtkS1Y5tFKzrw2TYqY2HNffMVPvK+KP1LDJHiIgRpYg3ZELw1raAl0R/A== integrity sha512-PABtbn2dyHweVSbo/py1W3veXzcmZO7uVItfTW9AykSSeAUju3gOCgauAw89km0aJ9EBcPOieaoI+9tAR7Pfug==
node-abi@^2.15.0, node-abi@^2.7.0: node-abi@^2.18.0, node-abi@^2.7.0:
version "2.15.0" version "2.18.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.15.0.tgz#51d55cc711bd9e4a24a572ace13b9231945ccb10" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.18.0.tgz#1f5486cfd7d38bd4f5392fa44a4ad4d9a0dffbf4"
integrity sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg== integrity sha512-yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw==
dependencies: dependencies:
semver "^5.4.1" semver "^5.4.1"
node-addon-api@3.0.0, node-addon-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247"
integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==
node-fetch-npm@^2.0.2: node-fetch-npm@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7"
@@ -2038,13 +2002,6 @@ node-gyp@^4.0.0:
tar "^4.4.8" tar "^4.4.8"
which "1" which "1"
node-pty@^0.10.0-beta2:
version "0.10.0-beta3"
resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.10.0-beta3.tgz#a33c9fc67c9e4d4f124111e1da2a72b0783008e7"
integrity sha512-j7MoJ3K999jrT9gAVs7JvM/skAQXQITrZK/PhL9B4W4GAPkANKwdu9uEtNvYionQ9dV8gRGte7lg9D2cRDdAiA==
dependencies:
nan "^2.14.0"
noop-logger@^0.1.1: noop-logger@^0.1.1:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
@@ -2330,7 +2287,7 @@ opener@^1.5.1:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
os-homedir@^1.0.0: os-homedir@^1.0.0, os-homedir@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
@@ -2457,11 +2414,6 @@ pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.0:
unique-filename "^1.1.1" unique-filename "^1.1.1"
which "^1.3.1" which "^1.3.1"
pako@^1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
parallel-transform@^1.1.0: parallel-transform@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
@@ -2526,15 +2478,15 @@ pkg-up@^2.0.0:
dependencies: dependencies:
find-up "^2.1.0" find-up "^2.1.0"
prebuild-install@5.3.3, prebuild-install@^5.3.0: prebuild-install@5.3.4, prebuild-install@^5.3.3:
version "5.3.3" version "5.3.4"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.3.tgz#ef4052baac60d465f5ba6bf003c9c1de79b9da8e" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.4.tgz#6982d10084269d364c1856550b7d090ea31fa293"
integrity sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g== integrity sha512-AkKN+pf4fSEihjapLEEj8n85YIw/tN6BQqkhzbDc0RvEZGdkpJBGMUYx66AAMcPG2KzmPQS7Cm16an4HVBRRMA==
dependencies: dependencies:
detect-libc "^1.0.3" detect-libc "^1.0.3"
expand-template "^2.0.3" expand-template "^2.0.3"
github-from-package "0.0.0" github-from-package "0.0.0"
minimist "^1.2.0" minimist "^1.2.3"
mkdirp "^0.5.1" mkdirp "^0.5.1"
napi-build-utils "^1.0.1" napi-build-utils "^1.0.1"
node-abi "^2.7.0" node-abi "^2.7.0"
@@ -2863,15 +2815,15 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies: dependencies:
aproba "^1.1.1" aproba "^1.1.1"
rxjs-compat@^6.5.4: rxjs-compat@^6.6.0:
version "6.5.4" version "6.6.0"
resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.5.4.tgz#03825692af3fe363e04c43f41ff4113d76bbd305" resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.6.0.tgz#fb86908ca9ea385befd25f6d4e451d1b0154fe5c"
integrity sha512-rkn+lbOHUQOurdd74J/hjmDsG9nFx0z66fvnbs8M95nrtKvNqCKdk7iZqdY51CGmDemTQk+kUPy4s8HVOHtkfA== integrity sha512-XvW8LM/3QnoehC74BAbC3bSiaSsfdZHC21QErD50TmdjNQhpQ6s3bM5PjcdcZWbX7mNgC3zi3BcbI9dWGJ6fsA==
rxjs@^6.5.4: rxjs@^6.5.5:
version "6.5.4" version "6.5.5"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec"
integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
@@ -2885,11 +2837,6 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2,
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
semver-diff@^2.0.0: semver-diff@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
@@ -2902,30 +2849,25 @@ semver-diff@^2.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@^7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6"
integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==
semver@~5.3.0: semver@~5.3.0:
version "5.3.0" version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
serialport@^8.0.7: serialport@^9.0.0:
version "8.0.7" version "9.0.0"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-8.0.7.tgz#9f28b1b7c47333a0962f5505a1c3feb1d90f89a9" resolved "https://registry.yarnpkg.com/serialport/-/serialport-9.0.0.tgz#2721d618f5b12437be103f775e5173291c768dd5"
integrity sha512-R9bfNebs2dblYf5sD/Aaa7j8+siP4X7TGT02lqHM9DF5fyjlrPGXmsLw9+LKOz1AvjGjkxf2NzBVnDpqRX7clQ== integrity sha512-4kQqIM0XhT6QECyzJtPdSsDWRFt8u3/vscQxb+z4TrAMiPDkDGBTLDaXmCxarXDa1s7EeK1IyxMce9wzWPFzAQ==
dependencies: dependencies:
"@serialport/binding-mock" "^8.0.6" "@serialport/binding-mock" "^9.0.0"
"@serialport/bindings" "^8.0.7" "@serialport/bindings" "^9.0.0"
"@serialport/parser-byte-length" "^8.0.6" "@serialport/parser-byte-length" "^9.0.0"
"@serialport/parser-cctalk" "^8.0.6" "@serialport/parser-cctalk" "^9.0.0"
"@serialport/parser-delimiter" "^8.0.6" "@serialport/parser-delimiter" "^9.0.0"
"@serialport/parser-readline" "^8.0.6" "@serialport/parser-readline" "^9.0.0"
"@serialport/parser-ready" "^8.0.6" "@serialport/parser-ready" "^9.0.0"
"@serialport/parser-regex" "^8.0.6" "@serialport/parser-regex" "^9.0.0"
"@serialport/stream" "^8.0.6" "@serialport/stream" "^9.0.0"
debug "^4.1.1" debug "^4.1.1"
set-blocking@^2.0.0, set-blocking@~2.0.0: set-blocking@^2.0.0, set-blocking@~2.0.0:
@@ -3341,11 +3283,6 @@ unique-string@^1.0.0:
dependencies: dependencies:
crypto-random-string "^1.0.0" crypto-random-string "^1.0.0"
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
unpipe@~1.0.0: unpipe@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -3475,12 +3412,12 @@ windows-blurbehind@^1.0.1:
resolved "https://registry.yarnpkg.com/windows-blurbehind/-/windows-blurbehind-1.0.1.tgz#ff098713873304e38330b2c54cc41bb369b587b9" resolved "https://registry.yarnpkg.com/windows-blurbehind/-/windows-blurbehind-1.0.1.tgz#ff098713873304e38330b2c54cc41bb369b587b9"
integrity sha512-1HzHfCiM1ayrbACJu5qE9zELV24uX/tINT6kxaZwLY3rtQAoeav6x9z7LFHWoLaGDN/sYbnK+9Vk0cz7fsk5HQ== integrity sha512-1HzHfCiM1ayrbACJu5qE9zELV24uX/tINT6kxaZwLY3rtQAoeav6x9z7LFHWoLaGDN/sYbnK+9Vk0cz7fsk5HQ==
windows-native-registry@^1.0.17: windows-native-registry@^3.0.0:
version "1.0.17" version "3.0.0"
resolved "https://registry.yarnpkg.com/windows-native-registry/-/windows-native-registry-1.0.17.tgz#d8cce48b364703a55c226690431b325114405022" resolved "https://registry.yarnpkg.com/windows-native-registry/-/windows-native-registry-3.0.0.tgz#82e715df7a59d5054c768547d81e0bfc81a59d2e"
integrity sha512-u9Fp9TyDo5dvhlW6hYBOdHPETtAahXKxo3jeW5EXwNK7qa+nSNopQycN1drtBVWe3jpJXvyKpt9zrjiDd+u4JQ== integrity sha512-Mz/9a23UivwPc23DsTOL/ZCp/XXogT+6h/khk1psOfDDusXqpomBdxNdsBBE/BvIgOExjGom0XPOfEPiDnHy7A==
dependencies: dependencies:
nan "^2.14.0" node-addon-api "^3.0.0"
windows-process-tree@^0.2.4: windows-process-tree@^0.2.4:
version "0.2.4" version "0.2.4"
@@ -3489,13 +3426,6 @@ windows-process-tree@^0.2.4:
dependencies: dependencies:
nan "^2.13.2" nan "^2.13.2"
windows-swca@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/windows-swca/-/windows-swca-2.0.2.tgz#66807012f73f5d3c0f0cb49bfa61be297aaabb50"
integrity sha512-9935KGV1gH3EBy7re9UEfDrxY3fbXBcwrUgEZk1exxe6swcGKFhO82ECh4QXVBjIhq+ROIVW3SBF/OUnZFSNGw==
dependencies:
"@types/node" "^10.12.18"
worker-farm@^1.6.0: worker-farm@^1.6.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
@@ -3534,6 +3464,13 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2:
imurmurhash "^0.1.4" imurmurhash "^0.1.4"
signal-exit "^3.0.2" signal-exit "^3.0.2"
x11@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/x11/-/x11-2.3.0.tgz#bdaccedccdac2482fd560f0511e7bf2bd9e1dbf2"
integrity sha1-vazO3M2sJIL9Vg8FEee/K9nh2/I=
dependencies:
os-homedir "^1.0.1"
xdg-basedir@^3.0.0: xdg-basedir@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
@@ -3564,10 +3501,10 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
yargs-parser@^18.1.1: yargs-parser@^18.1.2:
version "18.1.1" version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
dependencies: dependencies:
camelcase "^5.0.0" camelcase "^5.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
@@ -3597,10 +3534,10 @@ yargs@^11.0.0:
y18n "^3.2.1" y18n "^3.2.1"
yargs-parser "^9.0.2" yargs-parser "^9.0.2"
yargs@^15.3.1: yargs@^15.4.1:
version "15.3.1" version "15.4.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
dependencies: dependencies:
cliui "^6.0.0" cliui "^6.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
@@ -3612,7 +3549,7 @@ yargs@^15.3.1:
string-width "^4.2.0" string-width "^4.2.0"
which-module "^2.0.0" which-module "^2.0.0"
y18n "^4.0.0" y18n "^4.0.0"
yargs-parser "^18.1.1" yargs-parser "^18.1.2"
zone.js@^0.10.3: zone.js@^0.10.3:
version "0.10.3" version "0.10.3"

View File

@@ -0,0 +1,16 @@
const fs = require('fs')
const signHook = require('./afterSignHook')
module.exports = async function (params) {
// notarize the app on Mac OS only.
if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) {
return
}
console.log('afterBuild hook triggered')
let pkgName = fs.readdirSync('dist').find(x => x.endsWith('.pkg'))
signHook({
appOutDir: 'dist',
_pathOverride: pkgName,
})
}

View File

@@ -6,14 +6,14 @@ const notarizer = require('electron-notarize')
module.exports = async function (params) { module.exports = async function (params) {
// notarize the app on Mac OS only. // notarize the app on Mac OS only.
if (process.platform !== 'darwin' || process.env.GITHUB_REF !== 'refs/heads/master' || process.env.GITHUB_REF && !process.env.GITHUB_REF.startsWith('refs/tags/')) { if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) {
return return
} }
console.log('afterSign hook triggered', params) console.log('afterSign hook triggered', params)
let appId = 'org.terminus' let appId = 'org.terminus'
let appPath = path.join(params.appOutDir, `${params.packager.appInfo.productFilename}.app`) let appPath = path.join(params.appOutDir, params._pathOverride || `${params.packager.appInfo.productFilename}.app`)
if (!fs.existsSync(appPath)) { if (!fs.existsSync(appPath)) {
throw new Error(`Cannot find application at: ${appPath}`) throw new Error(`Cannot find application at: ${appPath}`)
} }

View File

@@ -10,5 +10,9 @@
<true/> <true/>
<key>com.apple.security.cs.disable-library-validation</key> <key>com.apple.security.cs.disable-library-validation</key>
<true/> <true/>
<key>com.apple.security.device.microphone</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
</dict> </dict>
</plist> </plist>

View File

@@ -3,6 +3,7 @@ appId: org.terminus
productName: Terminus productName: Terminus
compression: normal compression: normal
afterSign: "./build/mac/afterSignHook.js" afterSign: "./build/mac/afterSignHook.js"
afterAllArtifactBuild: "./build/mac/afterBuildHook.js"
files: files:
- "**/*" - "**/*"
- dist - dist
@@ -30,6 +31,15 @@ mac:
entitlementsInherit: "./build/mac/entitlements.plist" entitlementsInherit: "./build/mac/entitlements.plist"
extendInfo: extendInfo:
NSRequiresAquaSystemAppearance: false NSRequiresAquaSystemAppearance: false
NSCameraUsageDescription: "A subprocess requests access to the device's camera."
NSMicrophoneUsageDescription: "A subprocess requests access to the device's microphone."
NSLocationUsageDescription: "A subprocess requests access to the user's location information."
NSDesktopFolderUsageDescription: "A subprocess requests access to the user's Desktop folder."
NSDocumentsFolderUsageDescription: "A subprocess requests access to the user's Documents folder."
NSDownloadsFolderUsageDescription: "A subprocess requests access to the user's Downloads folder."
NSNetworkVolumesUsageDescription: 'A subprocess requests access to files on a network volume.'
NSRemovableVolumesUsageDescription: 'A subprocess requests access to files on a removable volume.'
pkg: pkg:
artifactName: terminus-${version}-macos.pkg artifactName: terminus-${version}-macos.pkg
@@ -48,6 +58,7 @@ deb:
depends: depends:
- gconf2 - gconf2
- gconf-service - gconf-service
- gnome-keyring
- libnotify4 - libnotify4
- libsecret-1-0 - libsecret-1-0
- libappindicator1 - libappindicator1
@@ -57,4 +68,4 @@ deb:
rpm: rpm:
depends: depends:
- screen - screen
- gnome-python2-gnomekeyring - gnome-keyring

Binary file not shown.

View File

@@ -1,35 +1,35 @@
{ {
"devDependencies": { "devDependencies": {
"@fortawesome/fontawesome-free": "^5.13.0", "@fortawesome/fontawesome-free": "^5.13.0",
"@sentry/cli": "^1.52.1", "@sentry/cli": "^1.52.3",
"@sentry/electron": "^1.2.1", "@sentry/electron": "^1.5.1",
"@types/electron-config": "^3.2.2", "@types/electron-config": "^3.2.2",
"@types/electron-debug": "^2.1.0", "@types/electron-debug": "^2.1.0",
"@types/js-yaml": "^3.12.3", "@types/js-yaml": "^3.12.4",
"@types/node": "12.7.12", "@types/node": "12.7.12",
"@types/webpack-env": "1.15.0", "@types/webpack-env": "^1.15.2",
"@typescript-eslint/eslint-plugin": "^2.26.0", "@typescript-eslint/eslint-plugin": "^2.26.0",
"@typescript-eslint/parser": "^2.25.0", "@typescript-eslint/parser": "^3.8.0",
"apply-loader": "2.0.0", "apply-loader": "2.0.0",
"awesome-typescript-loader": "^5.0.0", "awesome-typescript-loader": "^5.0.0",
"core-js": "^3.6.4", "core-js": "^3.6.5",
"cross-env": "7.0.2", "cross-env": "7.0.2",
"css-loader": "3.4.2", "css-loader": "3.4.2",
"electron": "^8.2.1", "electron": "^8.2.5",
"electron-builder": "22.4.1", "electron-builder": "22.6.1",
"electron-download": "^4.1.1", "electron-download": "^4.1.1",
"electron-installer-snap": "^5.0.0", "electron-installer-snap": "^5.0.0",
"electron-notarize": "^0.1.1", "electron-notarize": "^1.0.0",
"electron-rebuild": "^1.10.1", "electron-rebuild": "^1.10.1",
"eslint": "^6.8.0", "eslint": "^7.6.0",
"eslint-plugin-import": "^2.20.2", "eslint-plugin-import": "^2.21.1",
"file-loader": "^5.0.2", "file-loader": "^5.0.2",
"graceful-fs": "^4.2.2", "graceful-fs": "^4.2.4",
"html-loader": "0.5.5", "html-loader": "0.5.5",
"json-loader": "0.5.7", "json-loader": "0.5.7",
"node-abi": "^2.15.0", "node-abi": "^2.18.0",
"node-gyp": "^6.1.0", "node-gyp": "^7.0.0",
"node-sass": "^4.13.0", "node-sass": "^4.14.1",
"npmlog": "4.1.2", "npmlog": "4.1.2",
"npx": "^10.2.0", "npx": "^10.2.0",
"pug": "^2.0.4", "pug": "^2.0.4",
@@ -37,21 +37,21 @@
"pug-lint": "^2.6.0", "pug-lint": "^2.6.0",
"pug-loader": "^2.4.0", "pug-loader": "^2.4.0",
"pug-static-loader": "2.0.0", "pug-static-loader": "2.0.0",
"raw-loader": "4.0.0", "raw-loader": "4.0.1",
"sass-loader": "^8.0.0", "sass-loader": "^8.0.0",
"shelljs": "0.8.3", "shelljs": "0.8.4",
"source-code-pro": "^2.30.2", "source-code-pro": "^2.30.2",
"source-sans-pro": "3.6.0", "source-sans-pro": "3.6.0",
"style-loader": "^1.1.3", "style-loader": "^1.1.4",
"svg-inline-loader": "^0.8.0", "svg-inline-loader": "^0.8.0",
"to-string-loader": "1.1.6", "to-string-loader": "1.1.6",
"tslib": "^1.11.1", "tslib": "^2.0.0",
"typedoc": "^0.17.3", "typedoc": "^0.18.0",
"typescript": "^3.8.3", "typescript": "^3.9.3",
"url-loader": "^3.0.0", "url-loader": "^3.0.0",
"val-loader": "2.1.0", "val-loader": "2.1.1",
"webpack": "^5.0.0-beta.14", "webpack": "^5.0.0-beta.18",
"webpack-cli": "^3.3.10", "webpack-cli": "^3.3.12",
"yaml-loader": "0.6.0" "yaml-loader": "0.6.0"
}, },
"resolutions": { "resolutions": {
@@ -62,6 +62,7 @@
"build:typings": "node scripts/build-typings.js", "build:typings": "node scripts/build-typings.js",
"watch": "cross-env TERMINUS_DEV=1 webpack --progress --color --watch", "watch": "cross-env TERMINUS_DEV=1 webpack --progress --color --watch",
"start": "cross-env TERMINUS_DEV=1 electron app --debug", "start": "cross-env TERMINUS_DEV=1 electron app --debug",
"start:prod": "electron app --debug",
"prod": "cross-env TERMINUS_DEV=1 electron app", "prod": "cross-env TERMINUS_DEV=1 electron app",
"docs": "typedoc --out docs/api terminus-core/src && typedoc --out docs/api/terminal --tsconfig terminus-terminal/tsconfig.typings.json terminus-terminal/src && typedoc --out docs/api/settings --tsconfig terminus-settings/tsconfig.typings.json terminus-settings/src", "docs": "typedoc --out docs/api terminus-core/src && typedoc --out docs/api/terminal --tsconfig terminus-terminal/tsconfig.typings.json terminus-terminal/src && typedoc --out docs/api/settings --tsconfig terminus-settings/tsconfig.typings.json terminus-settings/src",
"lint": "eslint --ext ts */src */lib", "lint": "eslint --ext ts */src */lib",

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env node #!/usr/bin/env node
const builder = require('electron-builder').build const builder = require('electron-builder').build
const vars = require('./vars') const vars = require('./vars')
const fs = require('fs')
const signHook = require('../build/mac/afterSignHook')
const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/') const isTag = (process.env.GITHUB_REF || '').startsWith('refs/tags/')
const isCI = !!process.env.GITHUB_REF
builder({ builder({
dir: true, dir: true,
@@ -14,4 +15,7 @@ builder({
}, },
}, },
publish: isTag ? 'always' : 'onTag', publish: isTag ? 'always' : 'onTag',
}).catch(() => process.exit(1)) }).catch(e => {
console.error(e)
process.exit(1)
})

View File

@@ -4,7 +4,7 @@ module.exports = {
target: 'node', target: 'node',
entry: 'src/index.ts', entry: 'src/index.ts',
context: __dirname, context: __dirname,
devtool: 'eval-cheap-module-source-map', devtool: 'cheap-module-source-map',
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
filename: 'index.js', filename: 'index.js',

View File

@@ -30,7 +30,7 @@
"ng2-dnd": "^5.0.2", "ng2-dnd": "^5.0.2",
"ngx-perfect-scrollbar": "^8.0.0", "ngx-perfect-scrollbar": "^8.0.0",
"shell-escape": "^0.2.0", "shell-escape": "^0.2.0",
"uuid": "^7.0.1", "uuid": "^8.0.0",
"winston": "^3.2.1" "winston": "^3.2.1"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -128,13 +128,6 @@ export class AppRootComponent {
this.docking.dock() this.docking.dock()
}) })
this.hostApp.secondInstance$.subscribe(() => {
this.presentWindow()
})
this.hotkeys.globalHotkey.subscribe(() => {
this.onGlobalHotkey()
})
this.hostApp.windowCloseRequest$.subscribe(async () => { this.hostApp.windowCloseRequest$.subscribe(async () => {
this.app.closeWindow() this.app.closeWindow()
}) })
@@ -175,41 +168,6 @@ export class AppRootComponent {
}) })
} }
onGlobalHotkey () {
if (this.hostApp.getWindow().isFocused()) {
this.hideWindow()
} else {
this.presentWindow()
}
}
presentWindow () {
if (!this.hostApp.getWindow().isVisible()) {
// unfocused, invisible
this.hostApp.getWindow().show()
this.hostApp.getWindow().focus()
} else {
if (this.config.store.appearance.dock === 'off') {
// not docked, visible
setTimeout(() => {
this.hostApp.getWindow().show()
this.hostApp.getWindow().focus()
})
} else {
// docked, visible
this.hostApp.getWindow().hide()
}
}
}
hideWindow () {
this.electron.loseFocus()
this.hostApp.getWindow().blur()
if (this.hostApp.platform !== Platform.macOS) {
this.hostApp.getWindow().hide()
}
}
async ngOnInit () { async ngOnInit () {
this.ready = true this.ready = true

View File

@@ -14,6 +14,11 @@ export interface BaseTabProcess {
* Abstract base class for custom tab components * Abstract base class for custom tab components
*/ */
export abstract class BaseTabComponent { export abstract class BaseTabComponent {
/**
* Parent tab (usually a SplitTabComponent)
*/
parent: BaseTabComponent|null = null
/** /**
* Current tab title * Current tab title
*/ */

View File

@@ -157,6 +157,10 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
/** @hidden */ /** @hidden */
_spanners: SplitSpannerInfo[] = [] _spanners: SplitSpannerInfo[] = []
/** @hidden */
_allFocusMode = false
/** @hidden */
private focusedTab: BaseTabComponent private focusedTab: BaseTabComponent
private maximizedTab: BaseTabComponent|null = null private maximizedTab: BaseTabComponent|null = null
private hotkeysSubscription: Subscription private hotkeysSubscription: Subscription
@@ -254,12 +258,13 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
if (this._recoveredState) { if (this._recoveredState) {
await this.recoverContainer(this.root, this._recoveredState) await this.recoverContainer(this.root, this._recoveredState)
this.layout() this.layout()
setImmediate(() => { setTimeout(() => {
if (this.hasFocus) { if (this.hasFocus) {
this.getAllTabs().forEach(x => x.emitFocused()) for (const tab of this.getAllTabs()) {
this.focusAnyIn(this.root) this.focus(tab)
}
} }
}) }, 100)
} }
this.initialized.next() this.initialized.next()
this.initialized.complete() this.initialized.complete()
@@ -324,7 +329,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
* Inserts a new `tab` to the `side` of the `relative` tab * Inserts a new `tab` to the `side` of the `relative` tab
*/ */
async addTab (tab: BaseTabComponent, relative: BaseTabComponent|null, side: SplitDirection): Promise<void> { async addTab (tab: BaseTabComponent, relative: BaseTabComponent|null, side: SplitDirection): Promise<void> {
await this.initialized$.toPromise() tab.parent = this
let target = (relative ? this.getParentOf(relative) : null) || this.root let target = (relative ? this.getParentOf(relative) : null) || this.root
let insertIndex = relative ? target.children.indexOf(relative) : -1 let insertIndex = relative ? target.children.indexOf(relative) : -1
@@ -355,6 +360,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
target.children.splice(insertIndex, 0, tab) target.children.splice(insertIndex, 0, tab)
this.recoveryStateChangedHint.next() this.recoveryStateChangedHint.next()
await this.initialized$.toPromise()
this.attachTabView(tab) this.attachTabView(tab)
setImmediate(() => { setImmediate(() => {
@@ -374,11 +382,11 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
parent.children.splice(index, 1) parent.children.splice(index, 1)
this.detachTabView(tab) this.detachTabView(tab)
tab.parent = null
this.layout() this.layout()
this.tabRemoved.next(tab) this.tabRemoved.next(tab)
if (this.root.children.length === 0) { if (this.root.children.length === 0) {
this.destroy() this.destroy()
} else { } else {
@@ -477,6 +485,12 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
} }
} }
layout (): void {
this.root.normalize()
this._spanners = []
this.layoutInternal(this.root, 0, 0, 100, 100)
}
private attachTabView (tab: BaseTabComponent) { private attachTabView (tab: BaseTabComponent) {
const ref = this.viewContainer.insert(tab.hostView) as EmbeddedViewRef<any> // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion const ref = this.viewContainer.insert(tab.hostView) as EmbeddedViewRef<any> // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
this.viewRefs.set(tab, ref) this.viewRefs.set(tab, ref)
@@ -502,12 +516,6 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
} }
} }
private layout () {
this.root.normalize()
this._spanners = []
this.layoutInternal(this.root, 0, 0, 100, 100)
}
private layoutInternal (root: SplitContainer, x: number, y: number, w: number, h: number) { private layoutInternal (root: SplitContainer, x: number, y: number, w: number, h: number) {
const size = root.orientation === 'v' ? h : w const size = root.orientation === 'v' ? h : w
const sizes = root.ratios.map(x => x * size) const sizes = root.ratios.map(x => x * size)
@@ -526,21 +534,24 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
if (child instanceof SplitContainer) { if (child instanceof SplitContainer) {
this.layoutInternal(child, childX, childY, childW, childH) this.layoutInternal(child, childX, childY, childW, childH)
} else { } else {
const element = this.viewRefs.get(child)!.rootNodes[0] const viewRef = this.viewRefs.get(child)
element.classList.toggle('child', true) if (viewRef) {
element.classList.toggle('maximized', child === this.maximizedTab) const element = viewRef.rootNodes[0]
element.classList.toggle('minimized', this.maximizedTab && child !== this.maximizedTab) element.classList.toggle('child', true)
element.classList.toggle('focused', child === this.focusedTab) element.classList.toggle('maximized', child === this.maximizedTab)
element.style.left = `${childX}%` element.classList.toggle('minimized', this.maximizedTab && child !== this.maximizedTab)
element.style.top = `${childY}%` element.classList.toggle('focused', this._allFocusMode || child === this.focusedTab)
element.style.width = `${childW}%` element.style.left = `${childX}%`
element.style.height = `${childH}%` element.style.top = `${childY}%`
element.style.width = `${childW}%`
element.style.height = `${childH}%`
if (child === this.maximizedTab) { if (child === this.maximizedTab) {
element.style.left = '5%' element.style.left = '5%'
element.style.top = '5%' element.style.top = '5%'
element.style.width = '90%' element.style.width = '90%'
element.style.height = '90%' element.style.height = '90%'
}
} }
} }
offset += sizes[i] offset += sizes[i]
@@ -569,6 +580,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
if (recovered) { if (recovered) {
const tab = this.tabsService.create(recovered.type, recovered.options) const tab = this.tabsService.create(recovered.type, recovered.options)
children.push(tab) children.push(tab)
tab.parent = this
this.attachTabView(tab) this.attachTabView(tab)
} else { } else {
state.ratios.splice(state.children.indexOf(childState), 0) state.ratios.splice(state.children.indexOf(childState), 0)

View File

@@ -9,18 +9,25 @@
.form-line .form-line
.header .header
.title Enable analytics .title Enable analytics
.description Help us track the number of Terminus installs across the world! .description Help track the number of Terminus installs across the world!
toggle([(ngModel)]='config.store.enableAnalytics') toggle([(ngModel)]='config.store.enableAnalytics')
.form-line .form-line
.header .header
.title Enable SSH plugin .title Enable global hotkey (#[strong Ctrl-Space])
.description Toggles the Terminus window visibility
toggle([(ngModel)]='enableGlobalHotkey')
.form-line
.header
.title Enable #[strong SSH] plugin
.description Adds an SSH connection manager UI to Terminus .description Adds an SSH connection manager UI to Terminus
toggle([(ngModel)]='enableSSH') toggle([(ngModel)]='enableSSH')
.form-line .form-line
.header .header
.title Enable Serial plugin .title Enable #[strong Serial] plugin
.description Allows attaching Terminus to serial ports .description Allows attaching Terminus to serial ports
toggle([(ngModel)]='enableSerial') toggle([(ngModel)]='enableSerial')

View File

@@ -13,6 +13,7 @@ import { HostAppService } from '../services/hostApp.service'
export class WelcomeTabComponent extends BaseTabComponent { export class WelcomeTabComponent extends BaseTabComponent {
enableSSH = false enableSSH = false
enableSerial = false enableSerial = false
enableGlobalHotkey = true
constructor ( constructor (
private hostApp: HostAppService, private hostApp: HostAppService,
@@ -33,6 +34,9 @@ export class WelcomeTabComponent extends BaseTabComponent {
if (!this.enableSerial) { if (!this.enableSerial) {
this.config.store.pluginBlacklist.push('serial') this.config.store.pluginBlacklist.push('serial')
} }
if (!this.enableGlobalHotkey) {
this.config.store.hotkeys['toggle-window'] = []
}
this.config.save() this.config.save()
this.hostApp.getWindow().reload() this.hostApp.getWindow().reload()
} }

View File

@@ -2,6 +2,8 @@ appearance:
dock: off dock: off
dockScreen: current dockScreen: current
dockFill: 0.5 dockFill: 0.5
dockHideOnBlur: false
dockAlwaysOnTop: true
tabsLocation: top tabsLocation: top
cycleTabs: true cycleTabs: true
theme: Standard theme: Standard

View File

@@ -36,7 +36,7 @@ import { ConfigService } from './services/config.service'
import { StandardTheme, StandardCompactTheme, PaperTheme } from './theme' import { StandardTheme, StandardCompactTheme, PaperTheme } from './theme'
import { CoreConfigProvider } from './config' import { CoreConfigProvider } from './config'
import { AppHotkeyProvider } from './hotkeys' import { AppHotkeyProvider } from './hotkeys'
import { TaskCompletionContextMenu, CommonOptionsContextMenu, CloseContextMenu } from './tabContextMenu' import { TaskCompletionContextMenu, CommonOptionsContextMenu, TabManagementContextMenu } from './tabContextMenu'
import 'perfect-scrollbar/css/perfect-scrollbar.css' import 'perfect-scrollbar/css/perfect-scrollbar.css'
import 'ng2-dnd/bundles/style.css' import 'ng2-dnd/bundles/style.css'
@@ -54,7 +54,7 @@ const PROVIDERS = [
{ provide: Theme, useClass: PaperTheme, multi: true }, { provide: Theme, useClass: PaperTheme, multi: true },
{ provide: ConfigProvider, useClass: CoreConfigProvider, multi: true }, { provide: ConfigProvider, useClass: CoreConfigProvider, multi: true },
{ provide: TabContextMenuItemProvider, useClass: CommonOptionsContextMenu, multi: true }, { provide: TabContextMenuItemProvider, useClass: CommonOptionsContextMenu, multi: true },
{ provide: TabContextMenuItemProvider, useClass: CloseContextMenu, multi: true }, { provide: TabContextMenuItemProvider, useClass: TabManagementContextMenu, multi: true },
{ provide: TabContextMenuItemProvider, useClass: TaskCompletionContextMenu, multi: true }, { provide: TabContextMenuItemProvider, useClass: TaskCompletionContextMenu, multi: true },
{ provide: TabRecoveryProvider, useClass: SplitTabRecoveryProvider, multi: true }, { provide: TabRecoveryProvider, useClass: SplitTabRecoveryProvider, multi: true },
{ provide: PERFECT_SCROLLBAR_CONFIG, useValue: { suppressScrollX: true } }, { provide: PERFECT_SCROLLBAR_CONFIG, useValue: { suppressScrollX: true } },

View File

@@ -155,9 +155,11 @@ export class ConfigService {
} }
save (): void { save (): void {
// Scrub undefined values
this._store = JSON.parse(JSON.stringify(this._store))
fs.writeFileSync(this.path, yaml.safeDump(this._store), 'utf8') fs.writeFileSync(this.path, yaml.safeDump(this._store), 'utf8')
this.emitChange() this.emitChange()
this.hostApp.broadcastConfigChange() this.hostApp.broadcastConfigChange(this.store)
} }
/** /**

View File

@@ -53,7 +53,9 @@ export class DockingService {
newBounds.y = display.bounds.y newBounds.y = display.bounds.y
} }
this.hostApp.setAlwaysOnTop(true) const alwaysOnTop = this.config.store.appearance.dockAlwaysOnTop
this.hostApp.setAlwaysOnTop(alwaysOnTop)
setImmediate(() => { setImmediate(() => {
this.hostApp.setBounds(newBounds) this.hostApp.setBounds(newBounds)
}) })

View File

@@ -43,15 +43,6 @@ export class ElectronService {
this.MenuItem = this.remote.MenuItem this.MenuItem = this.remote.MenuItem
} }
/**
* Removes OS focus from Terminus' window
*/
loseFocus (): void {
if (process.platform === 'darwin') {
this.remote.Menu.sendActionToFirstResponder('hide:')
}
}
async showMessageBox ( async showMessageBox (
browserWindow: Electron.BrowserWindow, browserWindow: Electron.BrowserWindow,
options: Electron.MessageBoxOptions options: Electron.MessageBoxOptions

View File

@@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'
import { ElectronService } from './electron.service' import { ElectronService } from './electron.service'
import { ConfigService } from './config.service' import { ConfigService } from './config.service'
import * as mixpanel from 'mixpanel' import * as mixpanel from 'mixpanel'
import * as uuidv4 from 'uuid/v4' import { v4 as uuidv4 } from 'uuid'
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class HomeBaseService { export class HomeBaseService {

View File

@@ -166,7 +166,6 @@ export class HostAppService {
this.configChangeBroadcast.next() this.configChangeBroadcast.next()
})) }))
if ( if (
isWindowsBuild(WIN_BUILD_FLUENT_BG_SUPPORTED) && isWindowsBuild(WIN_BUILD_FLUENT_BG_SUPPORTED) &&
!isWindowsBuild(WIN_BUILD_FLUENT_BG_MOVE_BUG_FIXED) !isWindowsBuild(WIN_BUILD_FLUENT_BG_MOVE_BUG_FIXED)
@@ -251,8 +250,8 @@ export class HostAppService {
/** /**
* Notifies other windows of config file changes * Notifies other windows of config file changes
*/ */
broadcastConfigChange (): void { broadcastConfigChange (configStore: {[k: string]: any}): void {
this.electron.ipcRenderer.send('app:config-change') this.electron.ipcRenderer.send('app:config-change', configStore)
} }
emitReady (): void { emitReady (): void {
@@ -267,6 +266,10 @@ export class HostAppService {
this.electron.ipcRenderer.send('window-close') this.electron.ipcRenderer.send('window-close')
} }
registerGlobalHotkey (specs: string[]): void {
this.electron.ipcRenderer.send('app:register-global-hotkey', specs)
}
relaunch (): void { relaunch (): void {
if (this.isPortable) { if (this.isPortable) {
this.electron.app.relaunch({ execPath: process.env.PORTABLE_EXECUTABLE_FILE }) this.electron.app.relaunch({ execPath: process.env.PORTABLE_EXECUTABLE_FILE })

View File

@@ -2,8 +2,9 @@ import { Injectable, Inject, NgZone, EventEmitter } from '@angular/core'
import { Observable, Subject } from 'rxjs' import { Observable, Subject } from 'rxjs'
import { HotkeyDescription, HotkeyProvider } from '../api/hotkeyProvider' import { HotkeyDescription, HotkeyProvider } from '../api/hotkeyProvider'
import { stringifyKeySequence } from './hotkeys.util' import { stringifyKeySequence } from './hotkeys.util'
import { ConfigService } from '../services/config.service' import { ConfigService } from './config.service'
import { ElectronService } from '../services/electron.service' import { ElectronService } from './electron.service'
import { HostAppService } from './hostApp.service'
export interface PartialHotkeyMatch { export interface PartialHotkeyMatch {
id: string id: string
@@ -30,7 +31,6 @@ export class HotkeysService {
*/ */
get hotkey$ (): Observable<string> { return this._hotkey } get hotkey$ (): Observable<string> { return this._hotkey }
globalHotkey = new EventEmitter<void>()
private _hotkey = new Subject<string>() private _hotkey = new Subject<string>()
private currentKeystrokes: EventBufferEntry[] = [] private currentKeystrokes: EventBufferEntry[] = []
private disabledLevel = 0 private disabledLevel = 0
@@ -38,6 +38,7 @@ export class HotkeysService {
private constructor ( private constructor (
private zone: NgZone, private zone: NgZone,
private hostApp: HostAppService,
private electron: ElectronService, private electron: ElectronService,
private config: ConfigService, private config: ConfigService,
@Inject(HotkeyProvider) private hotkeyProviders: HotkeyProvider[], @Inject(HotkeyProvider) private hotkeyProviders: HotkeyProvider[],
@@ -182,21 +183,23 @@ export class HotkeysService {
if (typeof value === 'string') { if (typeof value === 'string') {
value = [value] value = [value]
} }
const specs: string[] = []
value.forEach((item: string | string[]) => { value.forEach((item: string | string[]) => {
item = typeof item === 'string' ? [item] : item item = typeof item === 'string' ? [item] : item
try { try {
let electronKeySpec = item[0] let electronKeySpec = item[0]
electronKeySpec = electronKeySpec.replace('Meta', 'Super')
electronKeySpec = electronKeySpec.replace('⌘', 'Command') electronKeySpec = electronKeySpec.replace('⌘', 'Command')
electronKeySpec = electronKeySpec.replace('⌥', 'Alt') electronKeySpec = electronKeySpec.replace('⌥', 'Alt')
electronKeySpec = electronKeySpec.replace(/-/g, '+') electronKeySpec = electronKeySpec.replace(/-/g, '+')
this.electron.globalShortcut.register(electronKeySpec, () => { specs.push(electronKeySpec)
this.globalHotkey.emit()
})
} catch (err) { } catch (err) {
console.error('Could not register the global hotkey:', err) console.error('Could not register the global hotkey:', err)
} }
}) })
this.hostApp.registerGlobalHotkey(specs)
} }
private getHotkeysConfig () { private getHotkeysConfig () {

View File

@@ -1,14 +1,9 @@
import axios from 'axios' import axios from 'axios'
import * as fs from 'fs'
import os from 'os'
import { spawn } from 'mz/child_process'
import { Injectable } from '@angular/core' import { Injectable } from '@angular/core'
import { Logger, LogService } from './log.service' import { Logger, LogService } from './log.service'
import { ElectronService } from './electron.service' import { ElectronService } from './electron.service'
import { ConfigService } from './config.service' import { ConfigService } from './config.service'
import { AppUpdater } from 'electron-updater'
const UPDATES_URL = 'https://api.github.com/repos/eugeny/terminus/releases/latest' const UPDATES_URL = 'https://api.github.com/repos/eugeny/terminus/releases/latest'
@@ -19,7 +14,6 @@ export class UpdaterService {
private downloaded: Promise<boolean> private downloaded: Promise<boolean>
private electronUpdaterAvailable = true private electronUpdaterAvailable = true
private updateURL: string private updateURL: string
private autoUpdater: AppUpdater
private constructor ( private constructor (
log: LogService, log: LogService,
@@ -33,26 +27,25 @@ export class UpdaterService {
return return
} }
this.autoUpdater = electron.remote.require('electron-updater').autoUpdater electron.autoUpdater.on('update-available', () => {
this.autoUpdater.autoInstallOnAppQuit = !!config.store.enableAutomaticUpdates
this.autoUpdater.on('update-available', () => {
this.logger.info('Update available') this.logger.info('Update available')
this.autoUpdater.downloadUpdate()
}) })
this.autoUpdater.once('update-not-available', () => {
electron.autoUpdater.once('update-not-available', () => {
this.logger.info('No updates') this.logger.info('No updates')
}) })
this.downloaded = new Promise<boolean>(resolve => { this.downloaded = new Promise<boolean>(resolve => {
this.autoUpdater.once('update-downloaded', () => resolve(true)) electron.autoUpdater.once('update-downloaded', () => resolve(true))
}) })
if (config.store.enableAutomaticUpdates && this.electronUpdaterAvailable && !process.env.TERMINUS_DEV) { if (config.store.enableAutomaticUpdates && this.electronUpdaterAvailable && !process.env.TERMINUS_DEV) {
this.logger.debug('Checking for updates') this.logger.debug('Checking for updates')
try { try {
this.autoUpdater.checkForUpdates() electron.autoUpdater.setFeedURL({
url: `https://update.electronjs.org/eugeny/terminus/${process.platform}-${process.arch}/${electron.app.getVersion()}`,
})
electron.autoUpdater.checkForUpdates()
} catch (e) { } catch (e) {
this.electronUpdaterAvailable = false this.electronUpdaterAvailable = false
this.logger.info('Electron updater unavailable, falling back', e) this.logger.info('Electron updater unavailable, falling back', e)
@@ -84,21 +77,8 @@ export class UpdaterService {
if (!this.electronUpdaterAvailable) { if (!this.electronUpdaterAvailable) {
this.electron.shell.openExternal(this.updateURL) this.electron.shell.openExternal(this.updateURL)
} else { } else {
if (process.platform === 'win32') { await this.downloaded
let downloadpath = await this.autoUpdater.downloadUpdate() this.electron.autoUpdater.quitAndInstall()
fs.exists(downloadpath[0], (exists) => {
if (exists) {
fs.copyFile(downloadpath[0], os.tmpdir() + 'terminus-installer-temp.exe', (err) => {
if (!err) {
spawn(os.tmpdir() + 'terminus-installer-temp.exe', ['--force-run'], { detached: true, stdio: 'ignore' })
}
})
}
})
} else {
await this.downloaded
this.autoUpdater.quitAndInstall(false, true)
}
} }
} }
} }

View File

@@ -4,12 +4,13 @@ import { Subscription } from 'rxjs'
import { AppService } from './services/app.service' import { AppService } from './services/app.service'
import { BaseTabComponent } from './components/baseTab.component' import { BaseTabComponent } from './components/baseTab.component'
import { TabHeaderComponent } from './components/tabHeader.component' import { TabHeaderComponent } from './components/tabHeader.component'
import { SplitTabComponent, SplitDirection } from './components/splitTab.component'
import { TabContextMenuItemProvider } from './api/tabContextMenuProvider' import { TabContextMenuItemProvider } from './api/tabContextMenuProvider'
/** @hidden */ /** @hidden */
@Injectable() @Injectable()
export class CloseContextMenu extends TabContextMenuItemProvider { export class TabManagementContextMenu extends TabContextMenuItemProvider {
weight = -5 weight = 99
constructor ( constructor (
private app: AppService, private app: AppService,
@@ -19,7 +20,7 @@ export class CloseContextMenu extends TabContextMenuItemProvider {
} }
async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise<Electron.MenuItemConstructorOptions[]> { async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise<Electron.MenuItemConstructorOptions[]> {
let items = [ let items: Electron.MenuItemConstructorOptions[] = [
{ {
label: 'Close', label: 'Close',
click: () => this.zone.run(() => { click: () => this.zone.run(() => {
@@ -59,6 +60,24 @@ export class CloseContextMenu extends TabContextMenuItemProvider {
}), }),
}, },
] ]
} else {
if (tab.parent instanceof SplitTabComponent) {
const directions: SplitDirection[] = ['r', 'b', 'l', 't']
items.push({
label: 'Split',
submenu: directions.map(dir => ({
label: {
r: 'Right',
b: 'Down',
l: 'Left',
t: 'Up',
}[dir],
click: () => this.zone.run(() => {
(tab.parent as SplitTabComponent).splitTab(tab, dir)
}),
})) as Electron.MenuItemConstructorOptions[],
})
}
} }
return items return items
} }
@@ -87,8 +106,10 @@ export class CommonOptionsContextMenu extends TabContextMenuItemProvider {
} }
async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise<Electron.MenuItemConstructorOptions[]> { async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise<Electron.MenuItemConstructorOptions[]> {
let items: Electron.MenuItemConstructorOptions[] = []
if (tabHeader) { if (tabHeader) {
return [ items = [
...items,
{ {
label: 'Rename', label: 'Rename',
click: () => this.zone.run(() => tabHeader?.showRenameTabModal()), click: () => this.zone.run(() => tabHeader?.showRenameTabModal()),
@@ -99,7 +120,7 @@ export class CommonOptionsContextMenu extends TabContextMenuItemProvider {
}, },
{ {
label: 'Color', label: 'Color',
sublabel: COLORS.find(x => x.value === tab.color)!.name, sublabel: COLORS.find(x => x.value === tab.color)?.name,
submenu: COLORS.map(color => ({ submenu: COLORS.map(color => ({
label: color.name, label: color.name,
type: 'radio', type: 'radio',
@@ -111,7 +132,7 @@ export class CommonOptionsContextMenu extends TabContextMenuItemProvider {
}, },
] ]
} }
return [] return items
} }
} }

View File

@@ -29,7 +29,7 @@ body {
background: $body-bg; background: $body-bg;
&.vibrant { &.vibrant {
background: rgba(0,0,0,.4); background: rgba(0,0,0,.65);
} }
} }

View File

@@ -4,7 +4,7 @@ module.exports = {
target: 'node', target: 'node',
entry: 'src/index.ts', entry: 'src/index.ts',
context: __dirname, context: __dirname,
devtool: 'eval-cheap-module-source-map', devtool: 'cheap-module-source-map',
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
filename: 'index.js', filename: 'index.js',

View File

@@ -2,10 +2,19 @@
# yarn lockfile v1 # yarn lockfile v1
"@dabh/diagnostics@^2.0.2":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31"
integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==
dependencies:
colorspace "1.1.x"
enabled "2.0.x"
kuler "^2.0.0"
"@types/js-yaml@^3.9.0": "@types/js-yaml@^3.9.0":
version "3.12.3" version "3.12.4"
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.3.tgz#abf383c5b639d0aa8b8c4a420d6a85f703357d6c" resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.4.tgz#7d3b534ec35a0585128e2d332db1403ebe057e25"
integrity sha512-otRe77JNNWzoVGLKw8TCspKswRoQToys4tuL6XYVBFxjgeM0RUrx7m3jkaTdxILxeGry3zM8mGYkGXMeQ02guA== integrity sha512-fYMgzN+9e28R81weVN49inn/u798ruU91En1ZnGvSZzCRc5jXx9B2EDhlRaWmcO1RIxFHL8AajRXzxDuJu93+A==
"@types/node@*": "@types/node@*":
version "13.7.1" version "13.7.1"
@@ -45,12 +54,15 @@ argparse@^1.0.7:
dependencies: dependencies:
sprintf-js "~1.0.2" sprintf-js "~1.0.2"
async@^2.6.1: async@^3.1.0:
version "2.6.2" version "3.2.0"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
dependencies:
lodash "^4.17.11" at-least-node@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
axios@^0.19.0: axios@^0.19.0:
version "0.19.2" version "0.19.2"
@@ -64,10 +76,10 @@ bootstrap@^4.1.3:
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01"
integrity sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA== integrity sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==
builder-util-runtime@8.6.2: builder-util-runtime@8.7.0:
version "8.6.2" version "8.7.0"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.6.2.tgz#8270e15b012d8d3b110f3e327b0fd8b0e07b1686" resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.7.0.tgz#e48ad004835c8284662e8eaf47a53468c66e8e8d"
integrity sha512-9QnIBISfhgQ2BxtRLidVqf/v5HD73vSKZDllpUmGd2L6VORGQk7cZAPmPtw4HQM3gPBelyVJ5yIjMNZ8xjmd1A== integrity sha512-G1AqqVM2vYTrSFR982c1NNzwXKrGLQjVjaZaWQdn4O6Z3YKjdMDofw88aD9jpyK9ZXkrCxR0tI3Qe9wNbyTlXg==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
sax "^1.2.4" sax "^1.2.4"
@@ -105,11 +117,6 @@ color@3.0.x:
color-convert "^1.9.1" color-convert "^1.9.1"
color-string "^1.5.2" color-string "^1.5.2"
colornames@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96"
integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=
colors@^1.2.1: colors@^1.2.1:
version "1.3.3" version "1.3.3"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
@@ -124,9 +131,9 @@ colorspace@1.1.x:
text-hex "1.0.x" text-hex "1.0.x"
core-js@^3.1.2: core-js@^3.1.2:
version "3.6.4" version "3.6.5"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
core-util-is@~1.0.0: core-util-is@~1.0.0:
version "1.0.2" version "1.0.2"
@@ -159,40 +166,23 @@ deepmerge@^4.1.1:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
diagnostics@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a"
integrity sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==
dependencies:
colorspace "1.1.x"
enabled "1.0.x"
kuler "1.0.x"
electron-updater@^4.0.6: electron-updater@^4.0.6:
version "4.2.5" version "4.3.1"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.2.5.tgz#dbced8da6f8c6fc2dc662f2776131f5a49ce018d" resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.3.1.tgz#9d485b6262bc56fcf7ee62b1dc1b3b105a3e96a7"
integrity sha512-ir8SI3capF5pN4LTQY79bP7oqiBKjgtdDW378xVId5VcGUZ+Toei2j+fgx1mq3y4Qg19z4HqLxEZ9FqMD0T0RA== integrity sha512-UDC5AHCgeiHJYDYWZG/rsl1vdAFKqI/Lm7whN57LKAk8EfhTewhcEHzheRcncLgikMcQL8gFo1KeX51tf5a5Wg==
dependencies: dependencies:
"@types/semver" "^7.1.0" "@types/semver" "^7.1.0"
builder-util-runtime "8.6.2" builder-util-runtime "8.7.0"
fs-extra "^8.1.0" fs-extra "^9.0.0"
js-yaml "^3.13.1" js-yaml "^3.13.1"
lazy-val "^1.0.4" lazy-val "^1.0.4"
lodash.isequal "^4.5.0" lodash.isequal "^4.5.0"
pako "^1.0.11"
semver "^7.1.3" semver "^7.1.3"
enabled@1.0.x: enabled@2.0.x:
version "1.0.2" version "2.0.0"
resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M= integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
dependencies:
env-variable "0.0.x"
env-variable@0.0.x:
version "0.0.5"
resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88"
integrity sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==
es6-promise@^4.0.3: es6-promise@^4.0.3:
version "4.2.6" version "4.2.6"
@@ -216,10 +206,15 @@ fast-safe-stringify@^2.0.4:
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2"
integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg== integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==
fecha@^2.3.3: fecha@^4.2.0:
version "2.3.3" version "4.2.0"
resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41"
integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==
fn.name@1.x.x:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
follow-redirects@1.5.10: follow-redirects@1.5.10:
version "1.5.10" version "1.5.10"
@@ -228,14 +223,15 @@ follow-redirects@1.5.10:
dependencies: dependencies:
debug "=3.1.0" debug "=3.1.0"
fs-extra@^8.1.0: fs-extra@^9.0.0:
version "8.1.0" version "9.0.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3"
integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==
dependencies: dependencies:
at-least-node "^1.0.0"
graceful-fs "^4.2.0" graceful-fs "^4.2.0"
jsonfile "^4.0.0" jsonfile "^6.0.1"
universalify "^0.1.0" universalify "^1.0.0"
graceful-fs@^4.1.6, graceful-fs@^4.2.0: graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.2" version "4.2.2"
@@ -260,10 +256,10 @@ is-arrayish@^0.3.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
is-stream@^1.1.0: is-stream@^2.0.0:
version "1.1.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
isarray@~1.0.0: isarray@~1.0.0:
version "1.0.0" version "1.0.0"
@@ -271,26 +267,26 @@ isarray@~1.0.0:
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
js-yaml@^3.13.1, js-yaml@^3.9.0: js-yaml@^3.13.1, js-yaml@^3.9.0:
version "3.13.1" version "3.14.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
dependencies: dependencies:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^4.0.0" esprima "^4.0.0"
jsonfile@^4.0.0: jsonfile@^6.0.1:
version "4.0.0" version "6.0.1"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==
dependencies:
universalify "^1.0.0"
optionalDependencies: optionalDependencies:
graceful-fs "^4.1.6" graceful-fs "^4.1.6"
kuler@1.0.x: kuler@^2.0.0:
version "1.0.1" version "2.0.0"
resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
integrity sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ== integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
dependencies:
colornames "^1.1.1"
lazy-val@^1.0.4: lazy-val@^1.0.4:
version "1.0.4" version "1.0.4"
@@ -302,19 +298,14 @@ lodash.isequal@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
lodash@^4.17.11: logform@^2.2.0:
version "4.17.14" version "2.2.0"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2"
integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==
logform@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/logform/-/logform-2.1.2.tgz#957155ebeb67a13164069825ce67ddb5bb2dd360"
integrity sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==
dependencies: dependencies:
colors "^1.2.1" colors "^1.2.1"
fast-safe-stringify "^2.0.4" fast-safe-stringify "^2.0.4"
fecha "^2.3.3" fecha "^4.2.0"
ms "^2.1.1" ms "^2.1.1"
triple-beam "^1.3.0" triple-beam "^1.3.0"
@@ -348,15 +339,12 @@ ngx-perfect-scrollbar@^8.0.0:
perfect-scrollbar "^1.4.0" perfect-scrollbar "^1.4.0"
resize-observer-polyfill "^1.5.0" resize-observer-polyfill "^1.5.0"
one-time@0.0.4: one-time@^1.0.0:
version "0.0.4" version "1.0.0"
resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
integrity sha1-+M33eISCb+Tf+T46nMN7HkSAdC4= integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
dependencies:
pako@^1.0.11: fn.name "1.x.x"
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
perfect-scrollbar@^1.4.0: perfect-scrollbar@^1.4.0:
version "1.4.0" version "1.4.0"
@@ -368,10 +356,10 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
readable-stream@^2.3.6: readable-stream@^2.3.7:
version "2.3.6" version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies: dependencies:
core-util-is "~1.0.0" core-util-is "~1.0.0"
inherits "~2.0.3" inherits "~2.0.3"
@@ -381,10 +369,10 @@ readable-stream@^2.3.6:
string_decoder "~1.1.1" string_decoder "~1.1.1"
util-deprecate "~1.0.1" util-deprecate "~1.0.1"
readable-stream@^3.1.1: readable-stream@^3.4.0:
version "3.3.0" version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
dependencies: dependencies:
inherits "^2.0.3" inherits "^2.0.3"
string_decoder "^1.1.1" string_decoder "^1.1.1"
@@ -456,40 +444,40 @@ triple-beam@^1.2.0, triple-beam@^1.3.0:
resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
universalify@^0.1.0: universalify@^1.0.0:
version "0.1.2" version "1.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
util-deprecate@^1.0.1, util-deprecate@~1.0.1: util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
uuid@^7.0.1: uuid@^8.0.0:
version "7.0.1" version "8.2.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.1.tgz#95ed6ff3d8c881cbf85f0f05cc3915ef994818ef" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e"
integrity sha512-yqjRXZzSJm9Dbl84H2VDHpM3zMjzSJQ+hn6C4zqd5ilW+7P4ZmLEEqwho9LjP+tGuZlF4xrHQXT0h9QZUS/pWA== integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q==
winston-transport@^4.3.0: winston-transport@^4.4.0:
version "4.3.0" version "4.4.0"
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"
integrity sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A== integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==
dependencies: dependencies:
readable-stream "^2.3.6" readable-stream "^2.3.7"
triple-beam "^1.2.0" triple-beam "^1.2.0"
winston@*, winston@^3.2.1: winston@*, winston@^3.2.1:
version "3.2.1" version "3.3.3"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07" resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
integrity sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw== integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==
dependencies: dependencies:
async "^2.6.1" "@dabh/diagnostics" "^2.0.2"
diagnostics "^1.1.1" async "^3.1.0"
is-stream "^1.1.0" is-stream "^2.0.0"
logform "^2.1.1" logform "^2.2.0"
one-time "0.0.4" one-time "^1.0.0"
readable-stream "^3.1.1" readable-stream "^3.4.0"
stack-trace "0.0.x" stack-trace "0.0.x"
triple-beam "^1.3.0" triple-beam "^1.3.0"
winston-transport "^4.3.0" winston-transport "^4.4.0"

View File

@@ -4,7 +4,7 @@ module.exports = {
target: 'node', target: 'node',
entry: 'src/index.ts', entry: 'src/index.ts',
context: __dirname, context: __dirname,
devtool: 'eval-cheap-module-source-map', devtool: 'cheap-module-source-map',
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
filename: 'index.js', filename: 'index.js',

View File

@@ -60,9 +60,9 @@ object-assign@^4.0.1:
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
semver@^7.1.1: semver@^7.1.1:
version "7.1.1" version "7.2.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.1.tgz#29104598a197d6cbe4733eeecbe968f7b43a9667" resolved "https://registry.yarnpkg.com/semver/-/semver-7.2.2.tgz#d01432d74ed3010a20ffaf909d63a691520521cd"
integrity sha512-WfuG+fl6eh3eZ2qAf6goB7nhiCd7NPXhmyFxigB/TOkQyeLP8w8GsVehvtGNtnNmyboz4TgeK40B1Kbql/8c5A== integrity sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA==
thenify-all@^1.0.0: thenify-all@^1.0.0:
version "1.6.0" version "1.6.0"

View File

@@ -52,9 +52,9 @@ ngb-tabset.vertical(type='pills', [activeId]='activeTab')
) )
| At the bottom | At the bottom
.form-line(*ngIf='hostApp.platform !== Platform.Linux') .form-line
.header .header
.title(*ngIf='hostApp.platform === Platform.Windows') Acrylic background .title(*ngIf='hostApp.platform !== Platform.macOS') Acrylic background
.title(*ngIf='hostApp.platform === Platform.macOS') Vibrancy .title(*ngIf='hostApp.platform === Platform.macOS') Vibrancy
.description Gives the window a blurred transparent background .description Gives the window a blurred transparent background
@@ -207,6 +207,15 @@ ngb-tabset.vertical(type='pills', [activeId]='activeTab')
) )
| {{screen.name}} | {{screen.name}}
.form-line(*ngIf='config.store.appearance.dock != "off"')
.header
.title Dock always on top
.description Keep docked terminal always on top
toggle(
[(ngModel)]='config.store.appearance.dockAlwaysOnTop',
(ngModelChange)='config.save(); docking.dock()',
)
.form-line(*ngIf='config.store.appearance.dock != "off"') .form-line(*ngIf='config.store.appearance.dock != "off"')
.header .header
.title Docked terminal size .title Docked terminal size
@@ -219,6 +228,15 @@ ngb-tabset.vertical(type='pills', [activeId]='activeTab')
step='0.01' step='0.01'
) )
.form-line(*ngIf='config.store.appearance.dock != "off"')
.header
.title Hide dock on blur
.description Hides the docked terminal when you click away.
toggle(
[(ngModel)]='config.store.appearance.dockHideOnBlur',
(ngModelChange)='config.save(); ',
)
.form-line .form-line
.header .header
.title Debugging .title Debugging
@@ -270,7 +288,7 @@ ngb-tabset.vertical(type='pills', [activeId]='activeTab')
th ID th ID
th Hotkey th Hotkey
ng-container(*ngFor='let hotkey of hotkeyDescriptions') ng-container(*ngFor='let hotkey of hotkeyDescriptions')
tr(*ngIf='!hotkeyFilter || hotkey.name.toLowerCase().includes(hotkeyFilter.toLowerCase())') tr(*ngIf='!hotkeyFilter || hotkeyFilterFn(hotkey, hotkeyFilter)')
td {{hotkey.name}} td {{hotkey.name}}
td {{hotkey.id}} td {{hotkey.id}}
td.pr-5 td.pr-5

View File

@@ -144,4 +144,10 @@ export class SettingsTabComponent extends BaseTabComponent {
} }
ptr[prop] = value ptr[prop] = value
} }
hotkeyFilterFn (hotkey: HotkeyDescription, query: string): boolean {
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
const s = hotkey.name + (this.getHotkey(hotkey.id) || []).toString() as string
return s.toLowerCase().includes(query.toLowerCase())
}
} }

View File

@@ -4,7 +4,7 @@ module.exports = {
target: 'node', target: 'node',
entry: 'src/index.ts', entry: 'src/index.ts',
context: __dirname, context: __dirname,
devtool: 'eval-cheap-module-source-map', devtool: 'cheap-module-source-map',
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
filename: 'index.js', filename: 'index.js',

View File

@@ -9,10 +9,12 @@
"typings": "typings/index.d.ts", "typings": "typings/index.d.ts",
"scripts": { "scripts": {
"build": "webpack --progress --color", "build": "webpack --progress --color",
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch",
"postinstall": "xcopy /i node_modules\\ssh2\\util\\pagent.exe util\\"
}, },
"files": [ "files": [
"dist" "dist",
"util/pagent.exe"
], ],
"author": "Eugene Pankov", "author": "Eugene Pankov",
"license": "MIT", "license": "MIT",

View File

@@ -24,6 +24,7 @@ export interface SSHConnection {
host: string host: string
port: number port: number
user: string user: string
auth?: null|'password'|'publicKey'|'agent'|'keyboardInteractive'
password?: string password?: string
privateKey?: string privateKey?: string
group: string | null group: string | null
@@ -36,7 +37,8 @@ export interface SSHConnection {
skipBanner?: boolean skipBanner?: boolean
disableDynamicTitle?: boolean disableDynamicTitle?: boolean
jumpHost?: string jumpHost?: string
agentForward?: boolean
warnOnClose?: boolean
algorithms?: {[t: string]: string[]} algorithms?: {[t: string]: string[]}
} }
@@ -105,6 +107,7 @@ export class SSHSession extends BaseSession {
this.shell = await this.openShellChannel({ x11: this.connection.x11 }) this.shell = await this.openShellChannel({ x11: this.connection.x11 })
} catch (err) { } catch (err) {
this.emitServiceMessage(colors.bgRed.black(' X ') + ` Remote rejected opening a shell channel: ${err}`) this.emitServiceMessage(colors.bgRed.black(' X ') + ` Remote rejected opening a shell channel: ${err}`)
return
} }
this.shell.on('greeting', greeting => { this.shell.on('greeting', greeting => {
@@ -302,7 +305,7 @@ export class SSHSession extends BaseSession {
write (data: Buffer): void { write (data: Buffer): void {
if (this.shell) { if (this.shell) {
this.shell.write(data.toString()) this.shell.write(data)
} }
} }

View File

@@ -19,20 +19,21 @@
[(ngModel)]='connection.group', [(ngModel)]='connection.group',
) )
.form-group .d-flex
label Host .form-group
input.form-control( label Host
type='text', input.form-control(
[(ngModel)]='connection.host', type='text',
) [(ngModel)]='connection.host',
)
.form-group .form-group
label Port label Port
input.form-control( input.form-control(
type='number', type='number',
placeholder='22', placeholder='22',
[(ngModel)]='connection.port', [(ngModel)]='connection.port',
) )
.form-group .form-group
label Username label Username
@@ -42,6 +43,34 @@
) )
.form-line .form-line
.header
.title Authentication
.btn-group.w-100(
[(ngModel)]='connection.auth',
ngbRadioGroup
)
label.btn.btn-outline-secondary(ngbButtonLabel)
input(type='radio', ngbButton, [value]='null')
i.far.fa-lightbulb
.m-0 Auto
label.btn.btn-outline-secondary(ngbButtonLabel)
input(type='radio', ngbButton, [value]='"password"')
i.fas.fa-font
.m-0 Password
label.btn.btn-outline-secondary(ngbButtonLabel)
input(type='radio', ngbButton, [value]='"publicKey"')
i.fas.fa-key
.m-0 Key
label.btn.btn-outline-secondary(ngbButtonLabel)
input(type='radio', ngbButton, [value]='"agent"')
i.fas.fa-user-secret
.m-0 Agent
label.btn.btn-outline-secondary(ngbButtonLabel)
input(type='radio', ngbButton, [value]='"keyboardInteractive"')
i.far.fa-keyboard
.m-0 Interactive
.form-line(*ngIf='!connection.auth || connection.auth === "password"')
.header .header
.title Password .title Password
.description(*ngIf='!hasSavedPassword') Save a password in the keychain .description(*ngIf='!hasSavedPassword') Save a password in the keychain
@@ -53,7 +82,7 @@
i.fas.fa-trash-alt i.fas.fa-trash-alt
span Forget span Forget
.form-line .form-line(*ngIf='!connection.auth || connection.auth === "publicKey"')
.header .header
.title Private key .title Private key
.description Path to the private key file .description Path to the private key file
@@ -74,13 +103,19 @@
.header .header
.title Jump host .title Jump host
select.form-control([(ngModel)]='connection.jumpHost') select.form-control([(ngModel)]='connection.jumpHost')
option([value]='x.name', *ngFor='let x of config.store.ssh.connections') {{x.name}} option([ngValue]='null') None
option([ngValue]='x.name', *ngFor='let x of config.store.ssh.connections') {{x.name}}
.form-line .form-line
.header .header
.title X11 forwarding .title X11 forwarding
toggle([(ngModel)]='connection.x11') toggle([(ngModel)]='connection.x11')
.form-line
.header
.title Agent Forwarding
toggle([(ngModel)]='connection.agentForward')
.form-line .form-line
.header .header
.title Tab color .title Tab color

View File

@@ -49,6 +49,7 @@ export class EditConnectionModalComponent {
this.hasSavedPassword = !!await this.passwordStorage.loadPassword(this.connection) this.hasSavedPassword = !!await this.passwordStorage.loadPassword(this.connection)
this.connection.algorithms = this.connection.algorithms || {} this.connection.algorithms = this.connection.algorithms || {}
this.connection.scripts = this.connection.scripts || [] this.connection.scripts = this.connection.scripts || []
this.connection.auth = this.connection.auth || null
for (const k of Object.values(SSHAlgorithmType)) { for (const k of Object.values(SSHAlgorithmType)) {
if (!this.connection.algorithms[k]) { if (!this.connection.algorithms[k]) {

View File

@@ -1,7 +1,7 @@
h3 Connections h3 Connections
.list-group.list-group-flush.mt-3.mb-3 .list-group.list-group-flush.mt-3.mb-3
ng-container(*ngFor='let group of childGroups') ng-container(*ngFor='let group of childGroups')
.list-group-item.list-group-item-action.d-flex.align-items-center( .list-group-item.list-group-item-action.d-flex.align-items-center(
(click)='groupCollapsed[group.name] = !groupCollapsed[group.name]' (click)='groupCollapsed[group.name] = !groupCollapsed[group.name]'
) )
@@ -22,7 +22,28 @@ h3 Connections
.text-muted {{connection.host}} .text-muted {{connection.host}}
button.btn.btn-outline-danger.ml-1((click)='$event.stopPropagation(); deleteConnection(connection)') button.btn.btn-outline-danger.ml-1((click)='$event.stopPropagation(); deleteConnection(connection)')
i.fas.fa-trash i.fas.fa-trash
button.btn.btn-primary((click)='createConnection()') button.btn.btn-primary((click)='createConnection()')
i.fas.fa-fw.fa-plus i.fas.fa-fw.fa-plus
span.ml-2 Add connection span.ml-2 Add connection
h3.mt-5 Options
.form-line
.header
.title Warn when closing active connections
toggle(
[(ngModel)]='config.store.ssh.warnOnClose',
(ngModelChange)='config.save()',
)
.form-line
.header
.title WinSCP path
.descriptions When WinSCP is detected, you can launch an SCP session from the context menu.
input.form-control(
type='text',
placeholder='Auto-detect',
[(ngModel)]='config.store.ssh.winSCPPath',
(ngModelChange)='config.save()',
)

View File

@@ -6,9 +6,9 @@
i.fas.fa-circle.text-danger.mr-2(*ngIf='!session.open') i.fas.fa-circle.text-danger.mr-2(*ngIf='!session.open')
strong.mr-auto(*ngIf='session') {{session.connection.user}}@{{session.connection.host}}:{{session.connection.port}} strong.mr-auto(*ngIf='session') {{session.connection.user}}@{{session.connection.host}}:{{session.connection.port}}
button.btn.btn-secondary.mr-2((click)='reconnect()', [class.btn-info]='!session.open')
span Reconnect
button.btn.btn-secondary((click)='showPortForwarding()', *ngIf='session.open') button.btn.btn-secondary((click)='showPortForwarding()', *ngIf='session.open')
i.fas.fa-plug i.fas.fa-plug
span Ports span Ports
button.btn.btn-info((click)='reconnect()', *ngIf='!session.open')
span Reconnect

View File

@@ -95,6 +95,10 @@ export class SSHTabComponent extends BaseTerminalTabComponent {
session.resize(this.size.columns, this.size.rows) session.resize(this.size.columns, this.size.rows)
}) })
session.destroyed$.subscribe(() => {
this.write('\r\n' + colors.black.bgCyan(' SSH ') + ` ${session.connection.host}: session closed\r\n`)
})
this.write('\r\n' + colors.black.bgCyan(' SSH ') + ` Connecting to ${session.connection.host}\r\n`) this.write('\r\n' + colors.black.bgCyan(' SSH ') + ` Connecting to ${session.connection.host}\r\n`)
const spinner = new Spinner({ const spinner = new Spinner({
@@ -149,8 +153,28 @@ export class SSHTabComponent extends BaseTerminalTabComponent {
modal.session = this.session modal.session = this.session
} }
reconnect (): void { async reconnect (): Promise<void> {
this.initializeSession() this.session?.destroy()
await this.initializeSession()
this.session.releaseInitialDataBuffer()
}
async canClose (): Promise<boolean> {
if (!this.session?.open) {
return true
}
if (!(this.connection.warnOnClose ?? this.config.store.ssh.warnOnClose)) {
return true
}
return (await this.electron.showMessageBox(
this.hostApp.getWindow(),
{
type: 'warning',
message: `Disconnect from ${this.connection.host}?`,
buttons: ['Cancel', 'Disconnect'],
defaultId: 1,
}
)).response === 1
} }
ngOnDestroy (): void { ngOnDestroy (): void {

View File

@@ -6,8 +6,8 @@ export class SSHConfigProvider extends ConfigProvider {
ssh: { ssh: {
connections: [], connections: [],
recentConnections: [], recentConnections: [],
options: { warnOnClose: false,
}, winSCPPath: null,
}, },
hotkeys: { hotkeys: {
ssh: [ ssh: [

View File

@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common'
import { FormsModule } from '@angular/forms' import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap' import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { ToastrModule } from 'ngx-toastr' import { ToastrModule } from 'ngx-toastr'
import TerminusCoreModule, { ToolbarButtonProvider, ConfigProvider, TabRecoveryProvider, HotkeyProvider } from 'terminus-core' import TerminusCoreModule, { ToolbarButtonProvider, ConfigProvider, TabRecoveryProvider, HotkeyProvider, TabContextMenuItemProvider } from 'terminus-core'
import { SettingsTabProvider } from 'terminus-settings' import { SettingsTabProvider } from 'terminus-settings'
import TerminusTerminalModule from 'terminus-terminal' import TerminusTerminalModule from 'terminus-terminal'
@@ -18,6 +18,7 @@ import { SSHConfigProvider } from './config'
import { SSHSettingsTabProvider } from './settings' import { SSHSettingsTabProvider } from './settings'
import { RecoveryProvider } from './recoveryProvider' import { RecoveryProvider } from './recoveryProvider'
import { SSHHotkeyProvider } from './hotkeys' import { SSHHotkeyProvider } from './hotkeys'
import { WinSCPContextMenu } from './winSCPIntegration'
/** @hidden */ /** @hidden */
@NgModule({ @NgModule({
@@ -35,6 +36,7 @@ import { SSHHotkeyProvider } from './hotkeys'
{ provide: SettingsTabProvider, useClass: SSHSettingsTabProvider, multi: true }, { provide: SettingsTabProvider, useClass: SSHSettingsTabProvider, multi: true },
{ provide: TabRecoveryProvider, useClass: RecoveryProvider, multi: true }, { provide: TabRecoveryProvider, useClass: RecoveryProvider, multi: true },
{ provide: HotkeyProvider, useClass: SSHHotkeyProvider, multi: true }, { provide: HotkeyProvider, useClass: SSHHotkeyProvider, multi: true },
{ provide: TabContextMenuItemProvider, useClass: WinSCPContextMenu, multi: true },
], ],
entryComponents: [ entryComponents: [
EditConnectionModalComponent, EditConnectionModalComponent,

View File

@@ -16,6 +16,8 @@ import { PromptModalComponent } from '../components/promptModal.component'
import { PasswordStorageService } from './passwordStorage.service' import { PasswordStorageService } from './passwordStorage.service'
import { SSHTabComponent } from '../components/sshTab.component' import { SSHTabComponent } from '../components/sshTab.component'
const WINDOWS_OPENSSH_AGENT_PIPE = '\\\\.\\pipe\\openssh-ssh-agent'
try { try {
var windowsProcessTreeNative = require('windows-process-tree/build/Release/windows_process_tree.node') // eslint-disable-line @typescript-eslint/no-var-requires, no-var var windowsProcessTreeNative = require('windows-process-tree/build/Release/windows_process_tree.node') // eslint-disable-line @typescript-eslint/no-var-requires, no-var
} catch { } } catch { }
@@ -114,7 +116,9 @@ export class SSHService {
'ssh-keygen.exe', 'ssh-keygen.exe',
) )
await execFile('icacls', [temp.path, '/inheritance:r']) await execFile('icacls', [temp.path, '/inheritance:r'])
await execFile('icacls', [temp.path, '/grant:r', `${process.env.USERNAME}:(R,W)`]) let sid = await execFile('whoami', ['/user', '/nh'])
sid = sid[0].split(' ')[0]
await execFile('icacls', [temp.path, '/grant:r', `${sid}:(R,W)`])
} }
await execFile(sshKeygenPath, [ await execFile(sshKeygenPath, [
@@ -165,8 +169,13 @@ export class SSHService {
const modal = this.ngbModal.open(PromptModalComponent) const modal = this.ngbModal.open(PromptModalComponent)
modal.componentInstance.prompt = prompt.prompt modal.componentInstance.prompt = prompt.prompt
modal.componentInstance.password = !prompt.echo modal.componentInstance.password = !prompt.echo
const result = await modal.result
results.push(result ? result.value : '') try {
const result = await modal.result
results.push(result ? result.value : '')
} catch {
results.push('')
}
} }
finish(results) finish(results)
})) }))
@@ -185,18 +194,45 @@ export class SSHService {
let agent: string|null = null let agent: string|null = null
if (this.hostApp.platform === Platform.Windows) { if (this.hostApp.platform === Platform.Windows) {
const pageantRunning = new Promise<boolean>(resolve => { if (await fs.exists(WINDOWS_OPENSSH_AGENT_PIPE)) {
windowsProcessTreeNative.getProcessList(list => { // eslint-disable-line block-scoped-var agent = WINDOWS_OPENSSH_AGENT_PIPE
resolve(list.some(x => x.name === 'pageant.exe')) } else {
}, 0) const pageantRunning = new Promise<boolean>(resolve => {
}) windowsProcessTreeNative.getProcessList(list => { // eslint-disable-line block-scoped-var
if (await pageantRunning) { resolve(list.some(x => x.name === 'pageant.exe'))
agent = 'pageant' }, 0)
})
if (pageantRunning) {
agent = 'pageant'
}
} }
} else { } else {
agent = process.env.SSH_AUTH_SOCK as string agent = process.env.SSH_AUTH_SOCK as string
} }
const authMethodsLeft = ['none']
if (!session.connection.auth || session.connection.auth === 'publicKey') {
if (!privateKey) {
log('\r\nPrivate key auth selected, but no key is loaded\r\n')
} else {
authMethodsLeft.push('publickey')
}
}
if (!session.connection.auth || session.connection.auth === 'agent') {
if (!agent) {
log('\r\nAgent auth selected, but no running agent is detected\r\n')
} else {
authMethodsLeft.push('agent')
}
}
if (!session.connection.auth || session.connection.auth === 'password') {
authMethodsLeft.push('password')
}
if (!session.connection.auth || session.connection.auth === 'keyboardInteractive') {
authMethodsLeft.push('keyboard-interactive')
}
authMethodsLeft.push('hostbased')
try { try {
ssh.connect({ ssh.connect({
host: session.connection.host, host: session.connection.host,
@@ -206,11 +242,11 @@ export class SSHService {
privateKey: privateKey || undefined, privateKey: privateKey || undefined,
tryKeyboard: true, tryKeyboard: true,
agent: agent || undefined, agent: agent || undefined,
agentForward: !!agent, agentForward: session.connection.agentForward && !!agent,
keepaliveInterval: session.connection.keepaliveInterval, keepaliveInterval: session.connection.keepaliveInterval,
keepaliveCountMax: session.connection.keepaliveCountMax, keepaliveCountMax: session.connection.keepaliveCountMax,
readyTimeout: session.connection.readyTimeout, readyTimeout: session.connection.readyTimeout,
hostVerifier: digest => { hostVerifier: (digest: string) => {
log(colors.bgWhite(' ') + ' Host key fingerprint:') log(colors.bgWhite(' ') + ' Host key fingerprint:')
log(colors.bgWhite(' ') + ' ' + colors.black.bgWhite(' SHA256 ') + colors.bgBlackBright(' ' + digest + ' ')) log(colors.bgWhite(' ') + ' ' + colors.black.bgWhite(' SHA256 ') + colors.bgBlackBright(' ' + digest + ' '))
return true return true
@@ -218,7 +254,21 @@ export class SSHService {
hostHash: 'sha256' as any, hostHash: 'sha256' as any,
algorithms: session.connection.algorithms, algorithms: session.connection.algorithms,
sock: session.jumpStream, sock: session.jumpStream,
}) authHandler: methodsLeft => {
while (true) {
let method = authMethodsLeft.shift()
if (!method) {
return false
}
if (methodsLeft && !methodsLeft.includes(method) && method !== 'agent') {
// Agent can still be used even if not in methodsLeft
this.logger.info('Server does not support auth method', method)
continue
}
return method
}
},
} as any)
} catch (e) { } catch (e) {
this.toastr.error(e.message) this.toastr.error(e.message)
reject(e) reject(e)

View File

@@ -0,0 +1,85 @@
import { execFile } from 'child_process'
import { Injectable } from '@angular/core'
import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, TabHeaderComponent, HostAppService, Platform } from 'terminus-core'
import { SSHTabComponent } from './components/sshTab.component'
import { PasswordStorageService } from './services/passwordStorage.service'
import { SSHConnection } from './api'
/* eslint-disable block-scoped-var */
try {
var wnr = require('windows-native-registry') // eslint-disable-line @typescript-eslint/no-var-requires, no-var
} catch { }
/** @hidden */
@Injectable()
export class WinSCPContextMenu extends TabContextMenuItemProvider {
weight = 10
private detectedPath?: string
constructor (
private hostApp: HostAppService,
private config: ConfigService,
private passwordStorage: PasswordStorageService,
) {
super()
if (hostApp.platform !== Platform.Windows) {
return
}
const key = wnr.getRegistryKey(wnr.HK.CR, 'WinSCP.Url\\DefaultIcon')
if (key?.['']) {
this.detectedPath = key[''].value?.split(',')[0]
this.detectedPath = this.detectedPath?.substring(1, this.detectedPath.length - 1)
}
}
async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise<Electron.MenuItemConstructorOptions[]> {
if (this.hostApp.platform !== Platform.Windows || tabHeader) {
return []
}
if (!this.getPath()) {
return []
}
if (!(tab instanceof SSHTabComponent)) {
return []
}
return [
{
label: 'Launch WinSCP',
click: (): void => {
this.launchWinSCP(tab.connection)
},
},
]
}
getPath (): string|undefined {
return this.detectedPath ?? this.config.store.ssh.winSCPPath
}
async getURI (connection: SSHConnection): Promise<string> {
let uri = `scp://${connection.user}`
const password = await this.passwordStorage.loadPassword(connection)
if (password) {
uri += ':' + encodeURIComponent(password)
}
uri += `@${connection.host}:${connection.port}/`
return uri
}
async launchWinSCP (connection: SSHConnection): Promise<void> {
const path = this.getPath()
if (!path) {
return
}
let args = [await this.getURI(connection)]
if ((!connection.auth || connection.auth === 'publicKey') && connection.privateKey) {
args.push('/privatekey')
args.push(connection.privateKey)
}
execFile(path, args)
}
}

View File

@@ -4,7 +4,7 @@ module.exports = {
target: 'node', target: 'node',
entry: 'src/index.ts', entry: 'src/index.ts',
context: __dirname, context: __dirname,
devtool: 'eval-cheap-module-source-map', devtool: 'cheap-module-source-map',
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
filename: 'index.js', filename: 'index.js',
@@ -45,10 +45,12 @@ module.exports = {
], ],
}, },
externals: [ externals: [
'child_process',
'fs', 'fs',
'keytar', 'keytar',
'path', 'path',
'ngx-toastr', 'ngx-toastr',
'windows-native-registry',
'windows-process-tree/build/Release/windows_process_tree.node', 'windows-process-tree/build/Release/windows_process_tree.node',
/^rxjs/, /^rxjs/,
/^@angular/, /^@angular/,

View File

@@ -20,9 +20,9 @@
"@types/node" "*" "@types/node" "*"
"@types/ssh2@^0.5.35": "@types/ssh2@^0.5.35":
version "0.5.41" version "0.5.44"
resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-0.5.41.tgz#70d52dcdc20da5ca373948b287766b0cae73801f" resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-0.5.44.tgz#8bda3ffe9cab038a997f6749df76cc52249d1916"
integrity sha512-C661JCfu/yXUoF3EDKatfNhb8z1iD0NUuVOLfrmQ9fOSp1ClntmnicY2u3sBG7zl2FAvjBKkdvM7j03LZXjQXQ== integrity sha512-2aKqF0no055Zs8E6eaUtgDJv9yw1ViR7GLkWhuMIMnSPIU46vJJviEFZZtEqGxZEnrPpYxvOPPpWzwll/a4YwQ==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/ssh2-streams" "*" "@types/ssh2-streams" "*"

View File

@@ -9,7 +9,7 @@ Terminus Terminal Plugin
Using the API: Using the API:
```ts ```ts
import { TerminalContextMenuItemProvider } from 'terminus-terminal' import { ShellProvider } from 'terminus-terminal'
``` ```
Exporting your subclasses: Exporting your subclasses:
@@ -19,7 +19,7 @@ Exporting your subclasses:
... ...
providers: [ providers: [
... ...
{ provide: TerminalContextMenuItemProvider, useClass: MyContextMenu, multi: true }, { provide: ShellProvider, useClass: MyShellPlugin, multi: true },
... ...
] ]
}) })

View File

@@ -26,14 +26,13 @@
"ps-node": "^0.1.6", "ps-node": "^0.1.6",
"runes": "^0.4.2", "runes": "^0.4.2",
"slugify": "^1.4.0", "slugify": "^1.4.0",
"uuid": "^7.0.1", "xterm": "^4.9.0-beta.7",
"xterm": "^4.5.0-beta.9", "xterm-addon-fit": "^0.4.0-beta.8",
"xterm-addon-fit": "^0.4.0-beta2", "xterm-addon-ligatures": "^0.4.0-beta.5",
"xterm-addon-ligatures": "^0.2.1", "xterm-addon-search": "^0.7.0-beta.2",
"xterm-addon-search": "^0.5.0", "xterm-addon-serialize": "^0.3.0",
"xterm-addon-serialize": "^0.1.1", "xterm-addon-unicode11": "^0.2.0",
"xterm-addon-unicode11": "^0.1.1", "xterm-addon-webgl": "^0.8.0",
"xterm-addon-webgl": "^0.6.0-beta.2",
"zmodem.js": "^0.1.9" "zmodem.js": "^0.1.9"
}, },
"peerDependencies": { "peerDependencies": {

View File

@@ -4,7 +4,7 @@ import { ToastrService } from 'ngx-toastr'
import colors from 'ansi-colors' import colors from 'ansi-colors'
import { NgZone, OnInit, OnDestroy, Injector, ViewChild, HostBinding, Input, ElementRef, InjectFlags } from '@angular/core' import { NgZone, OnInit, OnDestroy, Injector, ViewChild, HostBinding, Input, ElementRef, InjectFlags } from '@angular/core'
import { trigger, transition, style, animate, AnimationTriggerMetadata } from '@angular/animations' import { trigger, transition, style, animate, AnimationTriggerMetadata } from '@angular/animations'
import { AppService, ConfigService, BaseTabComponent, ElectronService, HostAppService, HotkeysService, Platform, LogService, Logger, TabContextMenuItemProvider } from 'terminus-core' import { AppService, ConfigService, BaseTabComponent, ElectronService, HostAppService, HotkeysService, Platform, LogService, Logger, TabContextMenuItemProvider, SplitTabComponent } from 'terminus-core'
import { BaseSession, SessionsService } from '../services/sessions.service' import { BaseSession, SessionsService } from '../services/sessions.service'
import { TerminalFrontendService } from '../services/terminalFrontend.service' import { TerminalFrontendService } from '../services/terminalFrontend.service'
@@ -92,6 +92,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
private hotkeysSubscription: Subscription private hotkeysSubscription: Subscription
private bellPlayer: HTMLAudioElement private bellPlayer: HTMLAudioElement
private termContainerSubscriptions: Subscription[] = [] private termContainerSubscriptions: Subscription[] = []
private allFocusModeSubscription: Subscription|null = null
get input$ (): Observable<Buffer> { return this.frontend.input$ } get input$ (): Observable<Buffer> { return this.frontend.input$ }
get output$ (): Observable<string> { return this.output } get output$ (): Observable<string> { return this.output }
@@ -172,6 +173,9 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
this.element.nativeElement.querySelector('.search-input').focus() this.element.nativeElement.querySelector('.search-input').focus()
}) })
break break
case 'pane-focus-all':
this.focusAllPanes()
break
} }
}) })
this.bellPlayer = document.createElement('audio') this.bellPlayer = document.createElement('audio')
@@ -255,6 +259,10 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
}) })
this.frontend.focus() this.frontend.focus()
this.blurred$.subscribe(() => {
this.cancelFocusAllPanes()
})
} }
async buildContextMenu (): Promise<Electron.MenuItemConstructorOptions[]> { async buildContextMenu (): Promise<Electron.MenuItemConstructorOptions[]> {
@@ -308,25 +316,25 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
data = data.replace(/\n/g, '\r') data = data.replace(/\n/g, '\r')
} }
if (!this.alternateScreenActive && data.includes('\r') && this.config.store.terminal.warnOnMultilinePaste) { if (!this.alternateScreenActive) {
const canTrim = !data.trim().includes('\r') data = data.trim()
const buttons = canTrim ? ['Paste', 'Trim whitespace and paste', 'Cancel'] : ['Paste', 'Cancel']
const result = (await this.electron.showMessageBox( if (data.includes('\r') && this.config.store.terminal.warnOnMultilinePaste) {
this.hostApp.getWindow(), const buttons = ['Paste', 'Cancel']
{ const result = (await this.electron.showMessageBox(
type: 'warning', this.hostApp.getWindow(),
detail: data, {
message: `Paste multiple lines?`, type: 'warning',
buttons, detail: data,
defaultId: 0, message: `Paste multiple lines?`,
cancelId: buttons.length - 1, buttons,
defaultId: 0,
cancelId: 1,
}
)).response
if (result === 1) {
return
} }
)).response
if (result === buttons.length - 1) {
return
}
if (result === 1) {
data = data.trim()
} }
} }
this.sendInput(data) this.sendInput(data)
@@ -366,6 +374,35 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
this.frontend.setZoom(this.zoom) this.frontend.setZoom(this.zoom)
} }
focusAllPanes (): void {
if (this.allFocusModeSubscription) {
return
}
if (this.parent instanceof SplitTabComponent) {
this.parent._allFocusMode = true
this.parent.layout()
this.allFocusModeSubscription = this.frontend.input$.subscribe(data => {
for (const tab of (this.parent as SplitTabComponent).getAllTabs()) {
if (tab !== this && tab instanceof BaseTerminalTabComponent) {
tab.sendInput(data)
}
}
})
}
}
cancelFocusAllPanes (): void {
if (!this.allFocusModeSubscription) {
return
}
if (this.parent instanceof SplitTabComponent) {
this.allFocusModeSubscription?.unsubscribe?.()
this.allFocusModeSubscription = null
this.parent._allFocusMode = false
this.parent.layout()
}
}
/** @hidden */ /** @hidden */
ngOnDestroy (): void { ngOnDestroy (): void {
this.frontend.detach(this.content.nativeElement) this.frontend.detach(this.content.nativeElement)
@@ -474,7 +511,7 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
] ]
} }
protected attachSessionHandlers (): void { protected attachSessionHandlers (destroyOnSessionClose = false): void {
// this.session.output$.bufferTime(10).subscribe((datas) => { // this.session.output$.bufferTime(10).subscribe((datas) => {
this.session.output$.subscribe(data => { this.session.output$.subscribe(data => {
if (this.enablePassthrough) { if (this.enablePassthrough) {
@@ -485,9 +522,11 @@ export class BaseTerminalTabComponent extends BaseTabComponent implements OnInit
} }
}) })
this.sessionCloseSubscription = this.session.closed$.subscribe(() => { if (destroyOnSessionClose) {
this.frontend.destroy() this.sessionCloseSubscription = this.session.closed$.subscribe(() => {
this.destroy() this.frontend.destroy()
}) this.destroy()
})
}
} }
} }

View File

@@ -19,6 +19,7 @@ export interface Profile {
name: string name: string
color?: string color?: string
sessionOptions: SessionOptions sessionOptions: SessionOptions
shell?: string
isBuiltin?: boolean isBuiltin?: boolean
icon?: string icon?: string
} }

View File

@@ -27,6 +27,9 @@ h3.mb-3 Appearance
(ngModelChange)='config.save()', (ngModelChange)='config.save()',
) )
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.ligatures && config.store.terminal.frontend == "xterm-webgl"') Ligatures are not supported by the WebGL frontend
color-scheme-preview([scheme]='config.store.terminal.colorScheme', [fontPreview]='true') color-scheme-preview([scheme]='config.store.terminal.colorScheme', [fontPreview]='true')
.form-line .form-line

View File

@@ -11,7 +11,7 @@ h3.mb-3 Shell
) )
option( option(
*ngFor='let profile of profiles', *ngFor='let profile of profiles',
[ngValue]='slugify(profile.name).toLowerCase()' [ngValue]='terminal.getProfileID(profile)'
) {{profile.name}} ) {{profile.name}}
@@ -28,8 +28,8 @@ h3.mb-3 Shell
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.useConPTY && isConPTYAvailable && !isConPTYStable') .alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.useConPTY && isConPTYAvailable && !isConPTYStable')
.mr-auto Windows 10 build 18309 or above is recommended for ConPTY .mr-auto Windows 10 build 18309 or above is recommended for ConPTY
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.profile.startsWith("WSL") && (config.store.terminal.frontend != "hterm" || !config.store.terminal.useConPTY)') .alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.profile.startsWith("WSL") && (!config.store.terminal.useConPTY)')
.mr-auto WSL terminal only supports TrueColor with ConPTY and the hterm frontend .mr-auto WSL terminal only supports TrueColor with ConPTY
.form-line(*ngIf='config.store.terminal.profile == "custom-shell"') .form-line(*ngIf='config.store.terminal.profile == "custom-shell"')
.header .header

View File

@@ -1,4 +1,3 @@
import slugify from 'slugify'
import { Component } from '@angular/core' import { Component } from '@angular/core'
import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
import { Subscription } from 'rxjs' import { Subscription } from 'rxjs'
@@ -17,14 +16,13 @@ export class ShellSettingsTabComponent {
Platform = Platform Platform = Platform
isConPTYAvailable: boolean isConPTYAvailable: boolean
isConPTYStable: boolean isConPTYStable: boolean
slugify = slugify
private configSubscription: Subscription private configSubscription: Subscription
constructor ( constructor (
public config: ConfigService, public config: ConfigService,
public hostApp: HostAppService, public hostApp: HostAppService,
public terminal: TerminalService,
private electron: ElectronService, private electron: ElectronService,
private terminalService: TerminalService,
private ngbModal: NgbModal, private ngbModal: NgbModal,
) { ) {
config.store.terminal.environment = config.store.terminal.environment || {} config.store.terminal.environment = config.store.terminal.environment || {}
@@ -38,7 +36,7 @@ export class ShellSettingsTabComponent {
} }
async ngOnInit (): Promise<void> { async ngOnInit (): Promise<void> {
this.shells = await this.terminalService.shells$.toPromise() this.shells = await this.terminal.shells$.toPromise()
} }
ngOnDestroy (): void { ngOnDestroy (): void {
@@ -46,21 +44,22 @@ export class ShellSettingsTabComponent {
} }
async reload (): Promise<void> { async reload (): Promise<void> {
this.profiles = await this.terminalService.getProfiles({ includeHidden: true }) this.profiles = await this.terminal.getProfiles({ includeHidden: true })
} }
pickWorkingDirectory (): void { async pickWorkingDirectory (): Promise<void> {
const shell = this.shells.find(x => x.id === this.config.store.terminal.shell) const profile = await this.terminal.getProfileByID(this.config.store.terminal.profile)
const shell = this.shells.find(x => x.id === profile?.shell)
if (!shell) { if (!shell) {
return return
} }
const paths = this.electron.dialog.showOpenDialog( const paths = (await this.electron.dialog.showOpenDialog(
this.hostApp.getWindow(), this.hostApp.getWindow(),
{ {
defaultPath: shell.fsBase, defaultPath: shell.fsBase,
properties: ['openDirectory', 'showHiddenFiles'], properties: ['openDirectory', 'showHiddenFiles'],
} }
) )).filePaths
if (paths) { if (paths) {
this.config.store.terminal.workingDirectory = paths[0] this.config.store.terminal.workingDirectory = paths[0]
} }
@@ -69,7 +68,8 @@ export class ShellSettingsTabComponent {
newProfile (shell: Shell): void { newProfile (shell: Shell): void {
const profile: Profile = { const profile: Profile = {
name: shell.name || '', name: shell.name || '',
sessionOptions: this.terminalService.optionsFromShell(shell), shell: shell.id,
sessionOptions: this.terminal.optionsFromShell(shell),
} }
this.config.store.terminal.profiles = [profile, ...this.config.store.terminal.profiles] this.config.store.terminal.profiles = [profile, ...this.config.store.terminal.profiles]
this.config.save() this.config.save()

View File

@@ -30,7 +30,7 @@ h3.mb-3 Terminal
) )
| Audible | Audible
.alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.bell != "audible" && config.store.terminal.shell.startsWith("wsl")') .alert.alert-info.d-flex.align-items-center(*ngIf='config.store.terminal.bell != "audible" && config.store.terminal.profile.startsWith("wsl")')
.mr-auto WSL terminal bell can only be muted via Volume Mixer .mr-auto WSL terminal bell can only be muted via Volume Mixer
button.btn.btn-secondary((click)='openWSLVolumeMixer()') Show Mixer button.btn.btn-secondary((click)='openWSLVolumeMixer()') Show Mixer

View File

@@ -60,7 +60,7 @@ export class TerminalTabComponent extends BaseTerminalTabComponent {
}) })
) )
this.attachSessionHandlers() this.attachSessionHandlers(true)
} }
async getRecoveryToken (): Promise<any> { async getRecoveryToken (): Promise<any> {

View File

@@ -99,7 +99,6 @@ export class TerminalConfigProvider extends ConfigProvider {
], ],
'new-tab': [ 'new-tab': [
'⌘-T', '⌘-T',
'⌘-N',
], ],
home: ['⌘-Left', 'Home'], home: ['⌘-Left', 'Home'],
end: ['⌘-Right', 'End'], end: ['⌘-Right', 'End'],
@@ -110,6 +109,9 @@ export class TerminalConfigProvider extends ConfigProvider {
search: [ search: [
'⌘-F', '⌘-F',
], ],
'pane-focus-all': [
'⌘-Shift-I',
],
}, },
}, },
[Platform.Windows]: { [Platform.Windows]: {
@@ -153,6 +155,9 @@ export class TerminalConfigProvider extends ConfigProvider {
search: [ search: [
'Ctrl-Shift-F', 'Ctrl-Shift-F',
], ],
'pane-focus-all': [
'Ctrl-Shift-I',
],
}, },
}, },
[Platform.Linux]: { [Platform.Linux]: {
@@ -193,6 +198,9 @@ export class TerminalConfigProvider extends ConfigProvider {
search: [ search: [
'Ctrl-Shift-F', 'Ctrl-Shift-F',
], ],
'pane-focus-all': [
'Ctrl-Shift-I',
],
}, },
}, },
} }

View File

@@ -40,6 +40,7 @@ export class XTermFrontend extends Frontend {
super() super()
this.xterm = new Terminal({ this.xterm = new Terminal({
allowTransparency: true, allowTransparency: true,
windowsMode: process.platform === 'win32',
}) })
this.xtermCore = (this.xterm as any)._core this.xtermCore = (this.xterm as any)._core
@@ -109,7 +110,9 @@ export class XTermFrontend extends Frontend {
let cols = Math.floor(l / actualCellWidth) let cols = Math.floor(l / actualCellWidth)
let rows = Math.floor(i / actualCellHeight) let rows = Math.floor(i / actualCellHeight)
this.xterm.resize(cols, rows) if (!isNaN(cols) && !isNaN(rows)) {
this.xterm.resize(cols, rows)
}
} }
} catch (e) { } catch (e) {
// tends to throw when element wasn't shown yet // tends to throw when element wasn't shown yet
@@ -122,8 +125,8 @@ export class XTermFrontend extends Frontend {
keyboardEventHandler('keyup', e) keyboardEventHandler('keyup', e)
} }
this.xtermCore._bufferService.buffers.onBufferActivate(e => { this.xterm.buffer.onBufferChange(() => {
const altBufferActive = e.activeBuffer === this.xtermCore._bufferService.buffers.alt const altBufferActive = this.xterm.buffer.active.type === 'alternate'
this.alternateScreenActive.next(altBufferActive) this.alternateScreenActive.next(altBufferActive)
}) })
} }
@@ -154,7 +157,7 @@ export class XTermFrontend extends Frontend {
host.addEventListener('mouseup', event => this.mouseEvent.next(event as MouseEvent)) host.addEventListener('mouseup', event => this.mouseEvent.next(event as MouseEvent))
host.addEventListener('mousewheel', event => this.mouseEvent.next(event as MouseEvent)) host.addEventListener('mousewheel', event => this.mouseEvent.next(event as MouseEvent))
const ro = new window['ResizeObserver'](() => this.resizeHandler()) const ro = new window['ResizeObserver'](() => setTimeout(() => this.resizeHandler()))
ro.observe(host) ro.observe(host)
} }
@@ -167,10 +170,17 @@ export class XTermFrontend extends Frontend {
} }
copySelection (): void { copySelection (): void {
require('electron').remote.clipboard.write({ const text = this.getSelection()
text: this.getSelection(), if (text.length < 1024 * 32) {
html: this.getSelectionAsHTML(), require('electron').remote.clipboard.write({
}) text: this.getSelection(),
html: this.getSelectionAsHTML(),
})
} else {
require('electron').remote.clipboard.write({
text: this.getSelection(),
})
}
} }
clearSelection (): void { clearSelection (): void {
@@ -311,7 +321,7 @@ export class XTermFrontend extends Frontend {
private getLineAsHTML (y: number, start: number, end: number): string { private getLineAsHTML (y: number, start: number, end: number): string {
let html = '<div>' let html = '<div>'
let lastStyle: string|null = null let lastStyle: string|null = null
const line = (this.xterm.buffer.getLine(y) as any)._line const line = (this.xterm.buffer.active.getLine(y) as any)._line
const cell = new CellData() const cell = new CellData()
for (let i = start; i < end; i++) { for (let i = start; i < end; i++) {
line.loadCell(i, cell) line.loadCell(i, cell)

View File

@@ -1,4 +1,3 @@
import slugify from 'slugify'
import { Injectable } from '@angular/core' import { Injectable } from '@angular/core'
import { HotkeyDescription, HotkeyProvider } from 'terminus-core' import { HotkeyDescription, HotkeyProvider } from 'terminus-core'
import { TerminalService } from './services/terminal.service' import { TerminalService } from './services/terminal.service'
@@ -67,6 +66,10 @@ export class TerminalHotkeyProvider extends HotkeyProvider {
id: 'search', id: 'search',
name: 'Search', name: 'Search',
}, },
{
id: 'pane-focus-all',
name: 'Focus all panes at once',
},
] ]
constructor ( constructor (
@@ -78,7 +81,7 @@ export class TerminalHotkeyProvider extends HotkeyProvider {
return [ return [
...this.hotkeys, ...this.hotkeys,
...profiles.map(profile => ({ ...profiles.map(profile => ({
id: `profile.${slugify(profile.name).toLowerCase()}`, id: `profile.${this.terminal.getProfileID(profile)}`,
name: `New tab: ${profile.name}`, name: `New tab: ${profile.name}`,
})), })),
] ]

View File

@@ -1,5 +1,4 @@
import * as fs from 'mz/fs' import * as fs from 'mz/fs'
import slugify from 'slugify'
import { NgModule } from '@angular/core' import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser' import { BrowserModule } from '@angular/platform-browser'
@@ -187,8 +186,7 @@ export default class TerminalModule { // eslint-disable-line @typescript-eslint/
hostApp.newWindow() hostApp.newWindow()
} }
if (hotkey.startsWith('profile.')) { if (hotkey.startsWith('profile.')) {
const profiles = await terminal.getProfiles() const profile = await terminal.getProfileByID(hotkey.split('.')[1])
const profile = profiles.find(x => slugify(x.name).toLowerCase() === hotkey.split('.')[1])
if (profile) { if (profile) {
terminal.openTabWithOptions(profile.sessionOptions) terminal.openTabWithOptions(profile.sessionOptions)
} }

View File

@@ -1,7 +1,7 @@
import * as psNode from 'ps-node' import * as psNode from 'ps-node'
import * as fs from 'mz/fs' import * as fs from 'mz/fs'
import * as os from 'os' import * as os from 'os'
import * as nodePTY from 'node-pty' import * as nodePTY from '@terminus-term/node-pty'
import { Observable, Subject } from 'rxjs' import { Observable, Subject } from 'rxjs'
import { first } from 'rxjs/operators' import { first } from 'rxjs/operators'
@@ -73,6 +73,8 @@ export abstract class BaseSession {
this.open = false this.open = false
this.closed.next() this.closed.next()
this.destroyed.next() this.destroyed.next()
this.closed.complete()
this.destroyed.complete()
this.output.complete() this.output.complete()
this.binaryOutput.complete() this.binaryOutput.complete()
await this.gracefullyKillProcess() await this.gracefullyKillProcess()
@@ -279,7 +281,8 @@ export class Session extends BaseSession {
} }
if (process.platform === 'linux') { if (process.platform === 'linux') {
try { try {
return fs.readlink(`/proc/${this.truePID}/cwd`) const cwd = await fs.readlink(`/proc/${this.truePID}/cwd`)
return cwd
} catch (exc) { } catch (exc) {
console.error(exc) console.error(exc)
return null return null

View File

@@ -40,6 +40,7 @@ export class TerminalService {
...this.config.store.terminal.profiles, ...this.config.store.terminal.profiles,
...skipDefault ? [] : shells.filter(x => includeHidden || !x.hidden).map(shell => ({ ...skipDefault ? [] : shells.filter(x => includeHidden || !x.hidden).map(shell => ({
name: shell.name, name: shell.name,
shell: shell.id,
icon: shell.icon, icon: shell.icon,
sessionOptions: this.optionsFromShell(shell), sessionOptions: this.optionsFromShell(shell),
isBuiltin: true, isBuiltin: true,
@@ -47,14 +48,25 @@ export class TerminalService {
] ]
} }
getProfileID (profile: Profile): string {
return slugify(profile.name, { remove: /[:.]/g }).toLowerCase()
}
async getProfileByID (id: string): Promise<Profile> {
const profiles = await this.getProfiles({ includeHidden: true })
return profiles.find(x => this.getProfileID(x) === id) || profiles[0]
}
/** /**
* Launches a new terminal with a specific shell and CWD * Launches a new terminal with a specific shell and CWD
* @param pause Wait for a keypress when the shell exits * @param pause Wait for a keypress when the shell exits
*/ */
async openTab (profile?: Profile, cwd?: string|null, pause?: boolean): Promise<TerminalTabComponent> { async openTab (profile?: Profile, cwd?: string|null, pause?: boolean): Promise<TerminalTabComponent> {
if (!profile) { if (!profile) {
const profiles = await this.getProfiles({ includeHidden: true }) profile = await this.getProfileByID(this.config.store.terminal.profile)
profile = profiles.find(x => slugify(x.name).toLowerCase() === this.config.store.terminal.profile) || profiles[0] if (!profile) {
profile = (await this.getProfiles({ includeHidden: true }))[0]
}
} }
cwd = cwd || profile.sessionOptions.cwd cwd = cwd || profile.sessionOptions.cwd

View File

@@ -88,13 +88,16 @@ export class WSLShellProvider extends ShellProvider {
if (!childKey.DistributionName) { if (!childKey.DistributionName) {
continue continue
} }
const wslVersion = (childKey.Flags?.value || 0) & 8 ? 2 : 1
const name = childKey.DistributionName.value const name = childKey.DistributionName.value
const fsBase = wslVersion === 2 ? `\\\\wsl$\\${name}` : childKey.BasePath.value as string + '\\rootfs'
const slug = slugify(name, { remove: /[:.]/g })
const shell: Shell = { const shell: Shell = {
id: `wsl-${slugify(name)}`, id: `wsl-${slug}`,
name: `WSL / ${name}`, name: `WSL / ${name}`,
command: wslPath, command: wslPath,
args: ['-d', name], args: ['-d', name],
fsBase: childKey.BasePath.value as string + '\\rootfs', fsBase,
env: { env: {
TERM: 'xterm-color', TERM: 'xterm-color',
COLORTERM: 'truecolor', COLORTERM: 'truecolor',

View File

@@ -1,6 +1,6 @@
import { Injectable, NgZone, Optional, Inject } from '@angular/core' import { Injectable, NgZone, Optional, Inject } from '@angular/core'
import { ToastrService } from 'ngx-toastr' import { ToastrService } from 'ngx-toastr'
import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, TabHeaderComponent } from 'terminus-core' import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, TabHeaderComponent, SplitTabComponent } from 'terminus-core'
import { TerminalTabComponent } from './components/terminalTab.component' import { TerminalTabComponent } from './components/terminalTab.component'
import { UACService } from './services/uac.service' import { UACService } from './services/uac.service'
import { TerminalService } from './services/terminal.service' import { TerminalService } from './services/terminal.service'
@@ -113,6 +113,15 @@ export class NewTabContextMenu extends TabContextMenuItemProvider {
}) })
} }
if (tab instanceof BaseTerminalTabComponent && tab.parent instanceof SplitTabComponent && tab.parent.getAllTabs().length > 1) {
items.push({
label: 'Focus all panes',
click: () => this.zone.run(() => {
tab.focusAllPanes()
}),
})
}
return items return items
} }
} }

View File

@@ -4,7 +4,7 @@ module.exports = {
target: 'node', target: 'node',
entry: 'src/index.ts', entry: 'src/index.ts',
context: __dirname, context: __dirname,
devtool: 'eval-cheap-module-source-map', devtool: 'cheap-module-source-map',
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
filename: 'index.js', filename: 'index.js',
@@ -65,7 +65,7 @@ module.exports = {
'path', 'path',
'macos-native-processlist', 'macos-native-processlist',
'windows-native-registry', 'windows-native-registry',
'node-pty', '@terminus-term/node-pty',
'windows-process-tree', 'windows-process-tree',
'os', 'os',
/^rxjs/, /^rxjs/,

View File

@@ -67,10 +67,10 @@ font-finder@^1.0.3, font-finder@^1.0.4:
get-system-fonts "^2.0.0" get-system-fonts "^2.0.0"
promise-stream-reader "^1.0.1" promise-stream-reader "^1.0.1"
font-ligatures@^1.3.2: font-ligatures@^1.3.3:
version "1.3.2" version "1.3.3"
resolved "https://registry.yarnpkg.com/font-ligatures/-/font-ligatures-1.3.2.tgz#227eb5fc38fef34b5373aa19b555320b82842a71" resolved "https://registry.yarnpkg.com/font-ligatures/-/font-ligatures-1.3.3.tgz#63fff18dc8adb3a11fe5eec1f4e8d7edfa8075b9"
integrity sha512-h9t+gvKVr/c2GnQs4GhXHY39/qyLlXNaIxupU1cxj7YOXEFT8+sJfcchIrZ9UETZUUT7dNcI7RDOXN7gFtuw2g== integrity sha512-NSGpHgVNX81M7AWS1XylK1UZbN3QllfUIDAAuPv6TUcl5O2b781JcKS5L2RopAU0AqlTyX3ZuX/04eaMpbVrHA==
dependencies: dependencies:
font-finder "^1.0.3" font-finder "^1.0.3"
lru-cache "^4.1.3" lru-cache "^4.1.3"
@@ -219,48 +219,43 @@ tiny-inflate@^1.0.2:
resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7"
integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c= integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=
uuid@^7.0.1: xterm-addon-fit@^0.4.0-beta.8:
version "7.0.1" version "0.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.1.tgz#95ed6ff3d8c881cbf85f0f05cc3915ef994818ef" resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.4.0.tgz#06e0c5d0a6aaacfb009ef565efa1c81e93d90193"
integrity sha512-yqjRXZzSJm9Dbl84H2VDHpM3zMjzSJQ+hn6C4zqd5ilW+7P4ZmLEEqwho9LjP+tGuZlF4xrHQXT0h9QZUS/pWA== integrity sha512-p4BESuV/g2L6pZzFHpeNLLnep9mp/DkF3qrPglMiucSFtD8iJxtMufEoEJbN8LZwB4i+8PFpFvVuFrGOSpW05w==
xterm-addon-fit@^0.4.0-beta2: xterm-addon-ligatures@^0.4.0-beta.5:
version "0.4.0-beta2" version "0.4.0-beta.5"
resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.4.0-beta2.tgz#c638ea7d41c55b535825f41b1cdb7358a94dfca4" resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.4.0-beta.5.tgz#b3592a52a0156f67db6a74af3c1a86ef44b0174e"
integrity sha512-7EHWk8SPCmKuw9ux1mFek2SfBw1QjJ/ObYA87tubOtJi7mAZ0eIb9IE5ditcma9Nyz/cR/ROQQxoRn4UbDvyfA== integrity sha512-1IyXJtpz/q1PrHIjz6Baob/FHqGUXaCsU0XOXbVc9xf/ZMrBp+gYI6zFHea9PfaniMCTLRn0oOI4z7SzpHcNVA==
xterm-addon-ligatures@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.2.1.tgz#487125dbb25818a6f88c3464c9a8a0eb4218bdae"
integrity sha512-UGoWTM7MBRRXMyGX6oMdaBhrO6SIJTriPo2U+QyQSs4H5J64ZiMZBsJe7ieOLmsKSAC/T+c39moU6sJGbWnylg==
dependencies: dependencies:
font-finder "^1.0.4" font-finder "^1.0.4"
font-ligatures "^1.3.2" font-ligatures "^1.3.3"
xterm-addon-search@^0.5.0: xterm-addon-search@^0.7.0-beta.2:
version "0.5.0" version "0.7.0"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.5.0.tgz#cd3a2f8056084c28e236d4e732da37682010bcc2" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.7.0.tgz#c929d3e5cbb335e82bff72f158ea82936d9cd4ef"
integrity sha512-zLVqVTrg5w2nk9fRj3UuVKCPo/dmFe/cLf3EM9Is5Dm6cgOoXmeo9eq2KgD8A0gquAflTFTf0ya2NaFmShHwyg== integrity sha512-6060evmJJ+tZcjnx33FXaeEHLpuXEa7l9UzUsYfMlCKbu88AbE+5LJocTKCHYd71cwCwb9pjmv/G1o9Rf9Zbcg==
xterm-addon-serialize@^0.1.1: xterm-addon-serialize@^0.3.0:
version "0.1.2" version "0.3.0"
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.1.2.tgz#339a38520bf90cf51f447cb74f3ae0e530d5ee39" resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.3.0.tgz#b4f24089285801bcc5f601791a4cac416d528a6a"
integrity sha512-etSTiN+I3lqWefMixiiVo1V4lPjmfInFmwtjbYDYWyUwPU5tveEZZSu15b52Q26IPaJdl8RxBgNTYu6Q3YauLQ== integrity sha512-g+eGqgvQiON4CCEku0iG53obZxi353wig2XRR75DOoHlPMLrO63kvt2V+OahnJlxCpsWQ1BFu4Q5HquQnS6uvQ==
xterm-addon-unicode11@^0.1.1: xterm-addon-unicode11@^0.2.0:
version "0.1.1" version "0.2.0"
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.1.1.tgz#b209ef137db38096f68636af4ef4d0c0acba85ad" resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.2.0.tgz#9ed0c482b353908bba27778893ca80823382737c"
integrity sha512-z6vJTL+dpNljwAYzYoyDjJP8A2XjZuEosl0sRa+FGRf3jEyEVWquDM53MfUd1ztVdAPQ839qR6eYK1BXV04Bhw== integrity sha512-rjFDItPc/IDoSiEnoDFwKroNwLD/7t9vYKENjrcKVZg5tgJuuUj8D4rZtP6iVCjSB1LTLYmUs4L/EmCqIyLR/Q==
xterm-addon-webgl@^0.6.0-beta.2: xterm-addon-webgl@^0.8.0:
version "0.6.0-beta.3" version "0.8.0"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.6.0-beta.3.tgz#48abe4607659caaec3175c0105298bba5e34be27" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.8.0.tgz#4bc6bb4dbfea5b0d2d7978d6c5cef922d584fb4f"
integrity sha512-2mhW/4Qv4i4KhEbtOAL4bc9FPGXON8XuM3vfKXT0EauXy/7ygtPu8IqrYNvNo0uJUoW6gOf0d5+/6kUMak2YYg== integrity sha512-dlpYPsv0C9S6v6+T/h/d/otSbdUTizMJdxvSoS34tUpMOHev6iW7Zqt5KRFqYxl4vCqpDk9Wmhb3fKL3kwX5fQ==
xterm@^4.5.0-beta.9: xterm@^4.9.0-beta.7:
version "4.5.0-beta.13" version "4.9.0-beta.7"
resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.5.0-beta.13.tgz#02565a8dda2be1ba266bb93f745d848817b09399" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.9.0-beta.7.tgz#606b7a8eae77dd1a28c75eb15a4e956daf432dbe"
integrity sha512-Ly5c2b4fZLfwuCbU2J4yBhE5Sxq1C4jMpulsOCkokxQwcCldiUezZdFGNXUW+0pV6idGDHB89GlOIvU4JF9K+g== integrity sha512-h1XfOqO080kBLRTgnSe3/Pjq/dXxdPBAsXxTQ1hfdC2Emo8QWqu7jrW7/5VAhPnt8XWmyXUeCiAxqM2n40gaAw==
yallist@^2.1.2: yallist@^2.1.2:
version "2.1.2" version "2.1.2"

Binary file not shown.

1957
yarn.lock

File diff suppressed because it is too large Load Diff