Compare commits

...

730 Commits

Author SHA1 Message Date
Eugene Pankov
0c601592e3 detect store-installed powershell - fixes #5212 2021-12-23 14:15:48 +01:00
Eugene Pankov
d644c299ae serial: fixed parity settings on Windows - fixes #5267 2021-12-23 11:29:50 +01:00
Eugene Pankov
6119c2b73d Merge branch 'master' of github.com:Eugeny/tabby 2021-12-22 22:36:10 +01:00
Eugene Pankov
ccf4f05437 disallow disabling the plugin manager - #5257 2021-12-22 22:36:06 +01:00
Eugeny
5110808069 Update issue-report.md 2021-12-22 22:33:08 +01:00
Eugene Pankov
ba61a7f359 Revert "electron-remote fixes"
This reverts commit 8587cd31dd.
2021-12-22 22:23:02 +01:00
Eugene Pankov
f2aef8d6d5 Merge branch 'master' of github.com:Eugeny/tabby 2021-12-22 21:16:53 +01:00
Eugene Pankov
8587cd31dd electron-remote fixes 2021-12-22 21:16:50 +01:00
Eugene Pankov
8a8e7cd99f upgraded xterm 2021-12-22 21:16:45 +01:00
Eugeny
ddb01b3722 Merge pull request #5198 from Eugeny/dependabot/npm_and_yarn/electron-16.0.5 2021-12-22 21:01:01 +01:00
dependabot[bot]
66bb03a463 Bump electron from 13.5.1 to 16.0.5
Bumps [electron](https://github.com/electron/electron) from 13.5.1 to 16.0.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.5.1...v16.0.5)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-22 09:10:20 +00:00
Eugene Pankov
5f88a02647 Merge branch 'electron-upgrade' 2021-12-22 10:06:51 +01:00
Eugene Pankov
538df37f5e support for unencrypted PuTTY v3 keys - #5145 2021-12-22 00:28:14 +01:00
Eugene Pankov
aba5e9dcfa show font name autocompletion hint 2021-12-22 00:04:11 +01:00
Eugene Pankov
c7589acc87 prevent window controls flickering 2021-12-22 00:04:01 +01:00
Eugene Pankov
39786e023e expose the terminal.scrollbackLines setting 2021-12-21 23:37:22 +01:00
Eugene Pankov
7900134f67 expose the terminal.linePadding setting 2021-12-21 23:37:09 +01:00
Eugene Pankov
d080adc19d fixed terminal toolbar padding when on top on macOS - fixes #5220 2021-12-19 18:44:12 +01:00
Eugene Pankov
4f189f6839 fixed #5219 2021-12-19 18:40:19 +01:00
Eugene Pankov
87ed979588 lint 2021-12-19 18:11:46 +01:00
Eugene Pankov
e90db7f07f UI switch for --disable-gpu - #5131, #3499 2021-12-19 18:11:43 +01:00
Eugene Pankov
5249a9076a config defaults tweaks 2021-12-19 17:56:50 +01:00
Eugene Pankov
cfc9333c02 use real file modes for zmodem uploads - fixes #4141 2021-12-19 17:56:42 +01:00
Eugene Pankov
81aa747d83 lint 2021-12-15 23:30:33 +01:00
Eugene Pankov
0e9723cb3b updated window docking logic 2021-12-15 23:21:56 +01:00
Eugene Pankov
899484a5d9 fixed config sync - fixes #5146, fixes #3164 2021-12-15 21:48:54 +01:00
Eugeny
4c2feb1b35 Update issue-report.md 2021-12-14 10:08:52 +01:00
Eugeny
d6d75b8c53 Update issue templates 2021-12-14 10:07:39 +01:00
Eugene Pankov
6eff3902ca don't disable vibrancy while dragging if it's not fluent 2021-12-12 14:24:55 +01:00
Eugene Pankov
8f71f29007 electron 16 2021-12-12 14:15:04 +01:00
Eugene Pankov
b6fd909d67 electron 14 2021-12-12 14:05:55 +01:00
Eugene Pankov
9500fa8770 dep fix 2021-12-12 13:18:20 +01:00
Eugene Pankov
f92d9c85cb allowRendererProcessReuse 2021-12-12 13:14:24 +01:00
Eugene Pankov
04533a683b upgraded node-serialport 2021-12-12 12:23:24 +01:00
Eugene Pankov
08a38bbf61 serial: slow feed mode - fixes #4901 2021-12-12 12:23:15 +01:00
Eugene Pankov
5f94e84542 theme tweaks, fixed #5068 2021-12-12 12:18:02 +01:00
Eugene Pankov
bdcd2720c4 properly disable yargs warning 2021-12-12 12:10:48 +01:00
Eugene Pankov
4784a076fa disable vibrancy on Windows by default 2021-12-12 12:03:18 +01:00
Eugene Pankov
07c522385f fixed yargs deprecation warnings 2021-12-12 12:03:10 +01:00
Eugene Pankov
d039d76cff fixed restored local tabs being unresponsive - fixes #5122, fixes #5124, fixes #5101 2021-12-12 12:03:01 +01:00
Eugene Pankov
f91754ce7c build fix 2021-12-09 14:10:49 +01:00
Eugene Pankov
5911794b20 Update build.yml 2021-12-09 13:29:08 +01:00
Eugene Pankov
f640bf9443 Revert "Update build.yml"
This reverts commit 9f50d8506c.
2021-12-09 13:28:55 +01:00
Eugene Pankov
9f50d8506c Update build.yml 2021-12-09 13:02:26 +01:00
Eugene Pankov
361f6c2fe5 Update build.yml 2021-12-09 11:25:46 +01:00
Eugene Pankov
8cac38e1ef Update build.yml 2021-12-09 11:18:31 +01:00
Eugene Pankov
75757d027e Update README.md 2021-12-09 01:07:52 +01:00
Eugene Pankov
0c8b6e56da theme tweaks 2021-12-08 23:33:45 +01:00
Eugene Pankov
5be4a12ee5 theme updates 2021-12-08 23:25:46 +01:00
Eugene Pankov
433c7d33d9 fixed tab title recovery for split tabs - fixes #4810 2021-12-08 21:45:58 +01:00
Eugene Pankov
b755346ac0 fixed #5001 2021-12-08 21:01:48 +01:00
Eugene Pankov
4c663e4a20 profile settings: allow filtering by description - fixes #5022 2021-12-08 20:58:13 +01:00
Eugene Pankov
a34e4c236d lint 2021-12-08 20:38:16 +01:00
Eugene Pankov
b2b91f0cfd fixed X11 display spec parsing - fixes #5073, fixes #4978 2021-12-08 20:25:37 +01:00
Eugene Pankov
bbb02f4e64 bundle the clickable-links plugin with Tabby 2021-12-08 19:54:26 +01:00
Eugene Pankov
3eaf46e09d disabled ssh algorithm blacklist by default - fixes #4995, fixes #5072 2021-12-08 19:32:41 +01:00
Eugeny
fc02d27056 Merge pull request #5052 from Eugeny/dependabot/npm_and_yarn/node-sass-7.0.0 2021-12-07 09:10:48 +01:00
Eugeny
0fe7d81a5f Merge pull request #4988 from Eugeny/dependabot/npm_and_yarn/typedoc-0.22.10 2021-12-07 09:10:17 +01:00
dependabot[bot]
59dbe6ba83 Bump node-sass from 6.0.1 to 7.0.0
Bumps [node-sass](https://github.com/sass/node-sass) from 6.0.1 to 7.0.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/v6.0.1...v7.0.0)

---
updated-dependencies:
- dependency-name: node-sass
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-07 04:05:50 +00:00
Eugene Pankov
860a577ddb fixed ESM default imports 2021-12-06 19:13:26 +01:00
dependabot[bot]
2edb9cc5b8 Bump typedoc from 0.22.9 to 0.22.10
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.9 to 0.22.10.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.9...v0.22.10)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-06 17:39:46 +00:00
Eugene Pankov
5bc13965e1 Update package.json 2021-12-06 18:35:33 +01:00
Eugene Pankov
2ca93fdb98 Update build.yml 2021-12-06 18:16:20 +01:00
Eugene Pankov
aa62ca9a6e Update ssh.ts 2021-12-06 18:12:54 +01:00
Eugene Pankov
1928cda394 Update build.yml 2021-12-06 18:06:07 +01:00
Eugene Pankov
64f8e033c4 Update ssh.ts 2021-12-06 18:03:22 +01:00
Eugene Pankov
23280c2143 Update build.yml 2021-12-06 17:46:38 +01:00
Eugene Pankov
d2ec08e3f8 build updates 2021-12-06 12:14:06 +01:00
Eugeny
b186f986ac Merge pull request #4964 from Eugeny/dependabot/npm_and_yarn/app/electron-updater-4.6.1 2021-12-06 11:51:05 +01:00
Eugeny
dbf91228fe Merge pull request #4970 from Eugeny/dependabot/npm_and_yarn/electron-builder-22.14.5 2021-12-06 11:50:42 +01:00
Eugeny
b58198b82b Merge pull request #4996 from Eugeny/dependabot/npm_and_yarn/webpack-5.64.4 2021-12-06 11:50:03 +01:00
Eugeny
eca92760f3 Merge pull request #5002 from Eugeny/dependabot/npm_and_yarn/app/serialport-9.2.8 2021-12-06 11:49:50 +01:00
Eugeny
d4815ca827 Merge pull request #4997 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/ssh2-0.5.49 2021-12-06 11:49:33 +01:00
Eugeny
4c19122acb Merge pull request #5009 from Eugeny/dependabot/github_actions/actions/setup-node-2.5.0 2021-12-06 11:49:25 +01:00
Eugene Pankov
6bdbca4e19 Update build.yml 2021-12-06 11:46:52 +01:00
Eugene Pankov
bb47a5d76f ssh: respect keyboard-interactive prompt echo setting - fixes #5045 2021-12-06 09:19:49 +01:00
Eugene Pankov
f308fd481d bumped plugins 2021-12-06 09:19:32 +01:00
Eugene Pankov
34adf767eb ensure patch-package runs on web 2021-12-01 10:04:09 +01:00
Eugene Pankov
2c6a26b01a bumped windows build image 2021-11-30 19:05:49 +01:00
dependabot[bot]
e596553dbf Bump actions/setup-node from 2.4.0 to 2.5.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2.4.0...v2.5.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-30 04:14:38 +00:00
dependabot[bot]
990b1b8623 Bump serialport from 9.2.5 to 9.2.8 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 9.2.5 to 9.2.8.
- [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@9.2.5...@serialport/bindings@9.2.8)

---
updated-dependencies:
- dependency-name: serialport
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-29 04:01:51 +00:00
Eugene Pankov
9856249c88 fixed #5000 - native socksv5 connection support in ssh and connection mode UI overhaul 2021-11-28 18:21:26 +01:00
dependabot[bot]
7818f0642f Bump @types/ssh2 from 0.5.48 to 0.5.49 in /tabby-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.48 to 0.5.49.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

---
updated-dependencies:
- dependency-name: "@types/ssh2"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-26 04:20:02 +00:00
dependabot[bot]
bcea319eb8 Bump webpack from 5.61.0 to 5.64.4
Bumps [webpack](https://github.com/webpack/webpack) from 5.61.0 to 5.64.4.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.61.0...v5.64.4)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-26 04:05:14 +00:00
Eugeny
246ae9fe77 Merge pull request #4993 from Eugeny/all-contributors/add-NessunKim 2021-11-25 12:36:26 +01:00
allcontributors[bot]
b4a678640e docs: update .all-contributorsrc [skip ci] 2021-11-25 11:36:13 +00:00
allcontributors[bot]
8692c17ea4 docs: update README.md [skip ci] 2021-11-25 11:36:12 +00:00
Eugeny
59ee098fde Merge pull request #4992 from NessunKim/hotkey-backticks 2021-11-25 12:36:11 +01:00
Nessun Kim
cd09043558 Fix hotkey setter to handle backticks and tildes properly 2021-11-25 20:12:00 +09:00
dependabot[bot]
be8f8eec70 Bump electron-builder from 22.11.7 to 22.14.5
Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 22.11.7 to 22.14.5.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/v22.14.5/packages/electron-builder)

---
updated-dependencies:
- dependency-name: electron-builder
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 04:07:44 +00:00
dependabot[bot]
85fb2c5725 Bump electron-updater from 4.3.9 to 4.6.1 in /app
Bumps [electron-updater](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-updater) from 4.3.9 to 4.6.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/HEAD/packages/electron-updater)

---
updated-dependencies:
- dependency-name: electron-updater
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-22 04:02:00 +00:00
Eugene Pankov
2baede4675 ignore fewer errors in profileSettingsTab 2021-11-21 17:51:32 +01:00
Eugeny
176992a629 Merge pull request #4962 from highfredo/master 2021-11-21 17:49:06 +01:00
highfredo
905e7ffc43 Deepclone profile before passing it to the configuration component and fix uncaught error on modal dismiss 2021-11-21 13:43:02 +01:00
Eugene Pankov
8ff130ebfd fixed #4931 - allow empty username to work with winscp integration 2021-11-20 17:39:10 +01:00
Eugene Pankov
064bcb31d8 fixed toolbar color in paper theme - fixes #4954 2021-11-20 17:24:09 +01:00
Eugene Pankov
25e4e5e8b4 Merge branch 'master' of github.com:Eugeny/tabby 2021-11-20 13:36:32 +01:00
Eugene Pankov
e3018086fb build against an older glibc 2021-11-20 13:36:27 +01:00
Eugeny
f3908da0a6 Merge pull request #4889 from Eugeny/dependabot/npm_and_yarn/shell-quote-1.7.3 2021-11-19 22:58:43 +01:00
Eugeny
2e57ffb169 Merge pull request #4907 from Eugeny/dependabot/npm_and_yarn/electron-rebuild-3.2.5 2021-11-19 22:58:11 +01:00
Eugeny
bda8199e5d Merge pull request #4923 from Eugeny/dependabot/npm_and_yarn/typedoc-0.22.9 2021-11-19 22:57:50 +01:00
Eugeny
a6cbb64f59 Merge pull request #4960 from Eugeny/all-contributors/add-highfredo 2021-11-19 22:57:03 +01:00
allcontributors[bot]
8b1efaeb53 docs: update .all-contributorsrc [skip ci] 2021-11-19 21:56:14 +00:00
allcontributors[bot]
fa767adf52 docs: update README.md [skip ci] 2021-11-19 21:56:13 +00:00
Eugene Pankov
096a6128c9 style tweaks 2021-11-19 22:53:34 +01:00
highfredo
a5fa022792 Autofill port forwarding inputs with the deleted port 2021-11-19 20:18:32 +01:00
highfredo
2922df08f4 Add description to ssh port forwarding 2021-11-19 20:17:08 +01:00
Eugeny
700aae3ab0 Merge pull request #4929 from Eugeny/all-contributors/add-composer404 2021-11-15 21:49:06 +01:00
allcontributors[bot]
cad6b4d1ee docs: update .all-contributorsrc [skip ci] 2021-11-15 20:45:34 +00:00
Eugeny
2b57061949 Merge pull request #4928 from composer404/master 2021-11-15 21:45:33 +01:00
allcontributors[bot]
ca5b0a95d9 docs: update README.md [skip ci] 2021-11-15 20:45:33 +00:00
Eugene Pankov
0e3b486e22 don't auto-update on quit 2021-11-15 21:44:02 +01:00
Kozik Przemysław
f3e5ad4a2a Merge branch 'master' of github.com:composer404/tabby 2021-11-15 20:22:25 +01:00
Kozik Przemysław
ad2ab61927 toolbar icons update 2021-11-15 20:21:58 +01:00
Kozik Przemysław
e2464cf3b1 Merge branch 'master' of github.com:composer404/tabby 2021-11-15 20:19:00 +01:00
Kozik Przemysław
4c2959b4c4 toolbar icons update 2021-11-15 20:18:28 +01:00
Kozik Przemysław
4718e9ff22 Toolbar icons update 2021-11-15 20:16:24 +01:00
dependabot[bot]
8899e57f81 Bump typedoc from 0.22.7 to 0.22.9
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.7 to 0.22.9.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.7...v0.22.9)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-15 04:08:47 +00:00
Eugene Pankov
14098177e4 bumped plugins 2021-11-14 16:23:29 +01:00
Eugene Pankov
3c68e2bd29 config sync is experimental no more 2021-11-14 15:50:40 +01:00
Eugeny
bebec4f638 Merge pull request #4921 from composer404/master 2021-11-14 15:33:54 +01:00
Kozik Przemysław
f16f00cc7e update plugin list in KR version 2021-11-14 15:06:26 +01:00
Kozik Przemysław
b01b25b084 plugin list update 2021-11-14 14:59:49 +01:00
Eugene Pankov
39389f77d0 added support for long-clicking for context menu when right click is set to paste (#4858) 2021-11-14 10:59:08 +01:00
Eugene Pankov
a1dbcdbae3 handle failing dscl 2021-11-13 19:04:30 +01:00
Eugene Pankov
92f5b5a4ae plugin settings updates 2021-11-13 17:07:02 +01:00
dependabot[bot]
f379159a70 Bump electron-rebuild from 3.2.3 to 3.2.5
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 3.2.3 to 3.2.5.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v3.2.3...v3.2.5)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-11 04:03:25 +00:00
dependabot[bot]
ec850344fc Bump shell-quote from 1.7.2 to 1.7.3
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-08 04:06:41 +00:00
Eugene Pankov
8a0a9700aa added missing exports 2021-11-07 11:40:52 +01:00
Eugeny
7cd51d5611 Merge pull request #4869 from Eugeny/dependabot/npm_and_yarn/sentry/cli-1.71.0
Bump @sentry/cli from 1.67.2 to 1.71.0
2021-11-07 10:08:14 +01:00
Eugeny
eda7b42edb Merge pull request #4822 from Eugeny/dependabot/npm_and_yarn/types/js-yaml-4.0.4
Bump @types/js-yaml from 4.0.2 to 4.0.4
2021-11-07 10:07:38 +01:00
Eugeny
981ab25a91 Merge pull request #4695 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.33.0
Bump @typescript-eslint/eslint-plugin from 4.31.1 to 4.33.0
2021-11-07 10:07:23 +01:00
Eugeny
f0dded8eb5 Merge pull request #4624 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/ansi-regex-6.0.1
Bump ansi-regex from 6.0.0 to 6.0.1 in /tabby-ssh
2021-11-07 10:06:54 +01:00
Eugeny
1f0e7e44cc Merge pull request #4656 from Eugeny/dependabot/npm_and_yarn/app/yargs-17.2.1
Bump yargs from 17.1.0 to 17.2.1 in /app
2021-11-07 10:06:19 +01:00
Eugeny
95c31d99c0 Merge pull request #4750 from Eugeny/dependabot/npm_and_yarn/webpack-bundle-analyzer-4.5.0
Bump webpack-bundle-analyzer from 4.4.2 to 4.5.0
2021-11-07 10:05:47 +01:00
Eugeny
e3db0dfbab Merge pull request #4799 from Eugeny/dependabot/npm_and_yarn/tabby-plugin-manager/types/semver-7.3.9
Bump @types/semver from 7.3.7 to 7.3.9 in /tabby-plugin-manager
2021-11-07 10:00:58 +01:00
Eugeny
559ebf0852 Merge pull request #4804 from Eugeny/dependabot/npm_and_yarn/app/node-abi-3.3.0
Bump node-abi from 3.2.0 to 3.3.0 in /app
2021-11-07 10:00:45 +01:00
Eugeny
0e8abae46f Merge pull request #4820 from Eugeny/dependabot/npm_and_yarn/typedoc-0.22.7
Bump typedoc from 0.22.3 to 0.22.7
2021-11-07 10:00:36 +01:00
dependabot[bot]
bfe034d77f Bump @types/js-yaml from 4.0.2 to 4.0.4
Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 4.0.2 to 4.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml)

---
updated-dependencies:
- dependency-name: "@types/js-yaml"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 22:03:06 +00:00
dependabot[bot]
50a1656f61 Bump webpack-bundle-analyzer from 4.4.2 to 4.5.0
Bumps [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) from 4.4.2 to 4.5.0.
- [Release notes](https://github.com/webpack-contrib/webpack-bundle-analyzer/releases)
- [Changelog](https://github.com/webpack-contrib/webpack-bundle-analyzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/webpack-bundle-analyzer/compare/v4.4.2...v4.5.0)

---
updated-dependencies:
- dependency-name: webpack-bundle-analyzer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 22:01:57 +00:00
dependabot[bot]
f70780f618 Bump typedoc from 0.22.3 to 0.22.7
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.3 to 0.22.7.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.3...v0.22.7)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 21:59:02 +00:00
dependabot[bot]
712bd0cd04 Bump @types/semver from 7.3.7 to 7.3.9 in /tabby-plugin-manager
Bumps [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver) from 7.3.7 to 7.3.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

---
updated-dependencies:
- dependency-name: "@types/semver"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 21:58:42 +00:00
Eugene Pankov
123d544cd1 removed old dep 2021-11-06 22:57:45 +01:00
dependabot[bot]
414966732c Bump node-abi from 3.2.0 to 3.3.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/main/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 21:53:41 +00:00
dependabot[bot]
58de0773f4 Bump yargs from 17.1.0 to 17.2.1 in /app
Bumps [yargs](https://github.com/yargs/yargs) from 17.1.0 to 17.2.1.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v17.1.0...v17.2.1)

---
updated-dependencies:
- dependency-name: yargs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 21:53:20 +00:00
Eugene Pankov
22505195ec Merge branch 'master' of github.com:Eugeny/tabby 2021-11-06 22:51:57 +01:00
Eugeny
ea2c9b3d9f Merge pull request #4877 from Eugeny/dependabot/npm_and_yarn/css-loader-6.5.1 2021-11-06 22:51:48 +01:00
Eugeny
f39405640f Merge pull request #4524 from Eugeny/dependabot/npm_and_yarn/app/tar-4.4.19 2021-11-06 22:51:10 +01:00
Eugeny
436b366743 Merge pull request #4823 from Eugeny/dependabot/npm_and_yarn/utils-decorators-1.10.4 2021-11-06 22:50:10 +01:00
Eugeny
c3719f896d Merge pull request #4534 from Eugeny/dependabot/npm_and_yarn/npmlog-5.0.1 2021-11-06 22:49:43 +01:00
dependabot[bot]
654e5f4453 Bump tar from 4.4.13 to 4.4.19 in /app
Bumps [tar](https://github.com/npm/node-tar) from 4.4.13 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.13...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 21:49:03 +00:00
Eugeny
fa54deb091 Merge pull request #4796 from Eugeny/dependabot/npm_and_yarn/webpack-cli-4.9.1 2021-11-06 22:49:01 +01:00
Eugeny
346dbdf7bb Merge pull request #4848 from Eugeny/dependabot/npm_and_yarn/sass-loader-12.3.0 2021-11-06 22:48:38 +01:00
Eugeny
f246eb7736 Merge pull request #4861 from Eugeny/dependabot/npm_and_yarn/app/serialport-9.2.5 2021-11-06 22:48:16 +01:00
Eugeny
f7454c8064 Merge pull request #4862 from Eugeny/dependabot/npm_and_yarn/webpack-5.61.0 2021-11-06 22:48:10 +01:00
Eugene Pankov
271f8d155c removed old dep 2021-11-06 22:46:55 +01:00
Eugene Pankov
6b93c2609e swallow ligature related font parsing errors - fixes #4840 2021-11-06 22:42:49 +01:00
Eugene Pankov
2c342a7d44 removed old ligature / webgl warning 2021-11-06 22:14:56 +01:00
dependabot[bot]
5b18f88b90 Bump css-loader from 6.2.0 to 6.5.1
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.2.0 to 6.5.1.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.2.0...v6.5.1)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 15:20:27 +00:00
dependabot[bot]
d0ae5e42f4 Bump @sentry/cli from 1.67.2 to 1.71.0
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 1.67.2 to 1.71.0.
- [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.67.2...1.71.0)

---
updated-dependencies:
- dependency-name: "@sentry/cli"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-06 15:19:27 +00:00
Eugene Pankov
59d642434a fixed "infinite" transfer speed display 2021-11-06 16:15:09 +01:00
Eugene Pankov
f2d6931f1a icon updates 2021-11-06 15:56:43 +01:00
Eugene Pankov
2fb73b0951 updated FontAwesome 2021-11-06 13:55:47 +01:00
Eugene Pankov
f3312852a9 refreshed search panel design 2021-11-06 13:41:20 +01:00
Eugene Pankov
781a4a76c0 bumped xterm 2021-11-06 10:31:51 +01:00
Eugeny
475ff14f78 Update codeql-analysis.yml 2021-11-02 10:30:28 +01:00
dependabot[bot]
b6698138b6 Bump webpack from 5.57.1 to 5.61.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.57.1 to 5.61.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.57.1...v5.61.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 04:09:42 +00:00
dependabot[bot]
6251d7737c Bump serialport from 9.2.1 to 9.2.5 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 9.2.1 to 9.2.5.
- [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@9.2.1...v9.2.5)

---
updated-dependencies:
- dependency-name: serialport
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 04:03:34 +00:00
Eugeny
06e700c6a2 Create codeql-analysis.yml 2021-10-31 22:54:43 +01:00
Eugene Pankov
ff65e2abb4 Update README.md 2021-10-31 22:52:47 +01:00
Eugene Pankov
a16c397843 bumped plugins 2021-10-31 18:21:04 +01:00
Eugene Pankov
da2ba0ec49 lint 2021-10-31 17:38:30 +01:00
Eugene Pankov
9d8e19622f avoid multiple parallel passphrase prompts - fixes #4811 2021-10-31 16:18:49 +01:00
Eugene Pankov
f820a2a631 fixed scrollbar positioning on resize - fixes #4854 2021-10-31 10:55:37 +01:00
Eugene Pankov
da089fc46a now DEFINITELY re-added AES-GCM 2021-10-29 09:13:51 +02:00
Eugene Pankov
937243a9d9 honor default ssh username for the quick connect box - fixes #4663 2021-10-28 09:55:54 +02:00
Eugene Pankov
a2de29e5ac lint 2021-10-28 09:55:20 +02:00
Eugene Pankov
25cdf6d6bf fixed transfers dropdown being clipped by the terminal - fixes #4688 2021-10-28 09:53:46 +02:00
Eugene Pankov
b5cf66c232 prevent Cmd-R from reloading in production - fixes #4772 2021-10-28 09:26:55 +02:00
Eugene Pankov
7be3904123 make titlebar double-click maximize window on macOS - fixes #4754 2021-10-28 09:26:32 +02:00
Eugene Pankov
3109ea0220 re-added AES-GCM ciphers - fixes #4849, fixes #4846, fixes #4844 2021-10-28 09:08:06 +02:00
dependabot[bot]
63297cb6a6 Bump sass-loader from 12.1.0 to 12.3.0
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 12.1.0 to 12.3.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v12.1.0...v12.3.0)

---
updated-dependencies:
- dependency-name: sass-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 04:05:58 +00:00
Eugene Pankov
ed480a2954 ssh: re-allow aes*-gcm ciphers by default 2021-10-27 13:04:03 +02:00
Eugene Pankov
3da6f6ffa6 bump 2021-10-27 13:03:48 +02:00
Eugene Pankov
881d5d599d re-added sha1 patch for web 2021-10-25 09:13:57 +02:00
dependabot[bot]
b0b4614610 Bump utils-decorators from 1.10.2 to 1.10.4
Bumps [utils-decorators](https://github.com/vlio20/utils-decorators) from 1.10.2 to 1.10.4.
- [Release notes](https://github.com/vlio20/utils-decorators/releases)
- [Changelog](https://github.com/vlio20/utils-decorators/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vlio20/utils-decorators/commits)

---
updated-dependencies:
- dependency-name: utils-decorators
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-25 04:06:48 +00:00
Eugene Pankov
f0e96b5f8b settings UI tweaks 2021-10-24 22:50:21 +02:00
Eugene Pankov
6fed2cb9c0 ssh: allow overriding X11 display - fixes #3975 2021-10-24 22:34:59 +02:00
Eugene Pankov
8e2ffa1654 fixed X11 port detection for UNIX sockets - fixes #4818, fixes #2003 2021-10-24 22:23:50 +02:00
Eugene Pankov
c25d4bd768 ui tweaks 2021-10-23 19:17:43 +02:00
Eugene Pankov
9f8f2966d9 fixed #4794 - env var expansion in profiles 2021-10-23 19:14:33 +02:00
Eugene Pankov
5c976948dd merge env vars case insensitively (fixes #4778) 2021-10-23 10:04:44 +02:00
Eugene Pankov
ff4b137088 word 2021-10-23 09:53:43 +02:00
Eugene Pankov
e3214e38d3 disable preventAccidentalTabClosure by default 2021-10-22 22:00:32 +02:00
dependabot[bot]
4b1553abc7 Bump webpack-cli from 4.8.0 to 4.9.1
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.8.0 to 4.9.1.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.8.0...webpack-cli@4.9.1)

---
updated-dependencies:
- dependency-name: webpack-cli
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-20 04:04:52 +00:00
Eugene Pankov
2fc457dd78 handle cancelled username modal 2021-10-19 22:39:10 +02:00
Eugeny
3621ea934c Merge pull request #4731 from Eugeny/dependabot/npm_and_yarn/ssh2-1.5.0 2021-10-19 19:46:14 +02:00
Eugeny
b275dac08a Merge pull request #4757 from Eugeny/dependabot/npm_and_yarn/app/windows-process-tree-0.3.2 2021-10-19 19:44:22 +02:00
Eugeny
47e1bfc810 Merge pull request #4779 from tainoNZ/master 2021-10-18 14:32:37 +02:00
Eugeny
37e9ba48b1 Merge pull request #4788 from Eugeny/all-contributors/add-tainoNZ 2021-10-18 13:54:41 +02:00
allcontributors[bot]
a54d537536 docs: update .all-contributorsrc [skip ci] 2021-10-18 11:54:25 +00:00
allcontributors[bot]
0c2b221c06 docs: update README.md [skip ci] 2021-10-18 11:54:24 +00:00
Eugene Pankov
e3375741af lint 2021-10-18 13:53:27 +02:00
Aaron Davison
d82a88bcc6 added additional options for vault remember password 2021-10-18 16:00:17 +13:00
Eugeny
f7cab00e4d Merge pull request #4776 from Eugeny/all-contributors/add-Me1onRind 2021-10-16 23:08:53 +02:00
Eugeny
7f733b8029 Merge pull request #4775 from Me1onRind/add_duplicate_tab_hotkey 2021-10-16 23:08:35 +02:00
allcontributors[bot]
d6291c8af4 docs: update .all-contributorsrc [skip ci] 2021-10-16 21:08:35 +00:00
allcontributors[bot]
563852c024 docs: update README.md [skip ci] 2021-10-16 21:08:34 +00:00
Me1onRind
1941d9b748 add duplicate tab hotkey 2021-10-16 22:49:03 +08:00
dependabot[bot]
3473be99bf Bump windows-process-tree from 0.3.0 to 0.3.2 in /app
Bumps [windows-process-tree](https://github.com/Microsoft/vscode-windows-process-tree) from 0.3.0 to 0.3.2.
- [Release notes](https://github.com/Microsoft/vscode-windows-process-tree/releases)
- [Commits](https://github.com/Microsoft/vscode-windows-process-tree/compare/v0.3.0...0.3.2)

---
updated-dependencies:
- dependency-name: windows-process-tree
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 04:01:22 +00:00
dependabot[bot]
10cb6a81c7 Bump ssh2 from 1.4.0 to 1.5.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 04:05:53 +00:00
dependabot[bot]
cb65906290 Bump @typescript-eslint/eslint-plugin from 4.31.1 to 4.33.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.31.1 to 4.33.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/v4.33.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 21:51:29 +00:00
dependabot[bot]
7a83d85884 Bump npmlog from 5.0.0 to 5.0.1
Bumps [npmlog](https://github.com/npm/npmlog) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/npm/npmlog/releases)
- [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/npmlog/compare/v5.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: npmlog
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 21:51:14 +00:00
Eugeny
35f0d6908a Merge pull request #4666 from Eugeny/dependabot/npm_and_yarn/node-abi-3.2.0 2021-10-07 23:47:20 +02:00
Eugeny
2c2d100c27 Merge pull request #4698 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-4.33.0 2021-10-07 23:47:02 +02:00
Eugeny
ab623a7a91 Merge pull request #4708 from Eugeny/dependabot/npm_and_yarn/app/angular/cdk-12.2.9 2021-10-07 23:46:56 +02:00
Eugeny
e2e606602b Merge pull request #4704 from Eugeny/dependabot/npm_and_yarn/core-js-3.18.2 2021-10-07 23:46:36 +02:00
Eugeny
cd3149b601 Merge pull request #4664 from Eugeny/dependabot/npm_and_yarn/app/node-abi-3.2.0 2021-10-07 23:45:56 +02:00
Eugeny
50748db958 Merge pull request #4697 from Eugeny/dependabot/npm_and_yarn/slugify-1.6.1 2021-10-07 23:45:33 +02:00
Eugeny
8049dc7332 Merge pull request #4705 from Eugeny/dependabot/npm_and_yarn/webpack-5.57.1 2021-10-07 23:45:28 +02:00
Eugeny
f468796877 Merge pull request #4707 from Eugeny/dependabot/npm_and_yarn/app/rxjs-7.4.0 2021-10-07 23:45:07 +02:00
Eugene Pankov
c093780230 Merge branch 'master' of https://github.com/Eugeny/tabby 2021-10-07 21:58:36 +02:00
Eugene Pankov
c67e44cc9d admin tabs: more reliable resize detection 2021-10-07 21:57:33 +02:00
dependabot[bot]
db45d0c87a Bump @angular/cdk from 12.2.0 to 12.2.9 in /app
Bumps [@angular/cdk](https://github.com/angular/components) from 12.2.0 to 12.2.9.
- [Release notes](https://github.com/angular/components/releases)
- [Changelog](https://github.com/angular/components/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/components/compare/12.2.0...12.2.9)

---
updated-dependencies:
- dependency-name: "@angular/cdk"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 04:02:32 +00:00
dependabot[bot]
4107a01a01 Bump rxjs from 7.2.0 to 7.4.0 in /app
Bumps [rxjs](https://github.com/reactivex/rxjs) from 7.2.0 to 7.4.0.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/7.2.0...7.4.0)

---
updated-dependencies:
- dependency-name: rxjs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 04:02:12 +00:00
dependabot[bot]
5e378844a1 Bump webpack from 5.52.1 to 5.57.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.52.1 to 5.57.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.52.1...v5.57.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 04:05:57 +00:00
dependabot[bot]
623496ff52 Bump core-js from 3.15.2 to 3.18.2
Bumps [core-js](https://github.com/zloirock/core-js) from 3.15.2 to 3.18.2.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/compare/v3.15.2...v3.18.2)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 04:05:29 +00:00
dependabot[bot]
5082814023 Bump @typescript-eslint/parser from 4.28.5 to 4.33.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.28.5 to 4.33.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/v4.33.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 04:05:02 +00:00
dependabot[bot]
9836b7aefb Bump slugify from 1.6.0 to 1.6.1
Bumps [slugify](https://github.com/simov/slugify) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/simov/slugify/releases)
- [Commits](https://github.com/simov/slugify/compare/v1.6.0...v1.6.1)

---
updated-dependencies:
- dependency-name: slugify
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 04:04:43 +00:00
Eugene Pankov
cb9681ef41 Update build.yml 2021-10-04 15:46:25 +02:00
Eugene Pankov
7527b8ac2d bumped electron 2021-10-04 13:01:11 +02:00
Eugene Pankov
da081ba706 bumped ci ubuntu 2021-10-04 12:37:44 +02:00
Eugene Pankov
e6063da813 Merge branch 'master' of github.com:Eugeny/tabby 2021-10-04 12:34:34 +02:00
Eugene Pankov
e6b4cb94bd bumped electron-builder 2021-10-04 12:32:09 +02:00
Eugene Pankov
56b843c007 bumped electron 2021-10-04 07:13:59 +02:00
Eugene Pankov
a26b30f0bc Update selectorModal.component.ts 2021-10-04 07:13:50 +02:00
Eugene Pankov
4a1d8cdd0d fixed admin tabs on windows - fixes #4669, fixes #4601, fixed #4594 2021-10-01 18:56:28 +02:00
dependabot[bot]
7a0920b87c Bump node-abi from 3.1.0 to 3.2.0
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/master/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 04:04:19 +00:00
dependabot[bot]
26199ebb76 Bump node-abi from 3.1.0 to 3.2.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/master/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 04:01:38 +00:00
Eugene Pankov
e3e01558b2 less sync ipc 2021-09-25 18:11:35 +02:00
Eugene Pankov
1852486818 blacklisted terminus-scrollbar plugin 2021-09-25 17:37:45 +02:00
Eugene Pankov
d7ea394a15 update api docs links 2021-09-25 01:01:31 +02:00
Eugene Pankov
c4a1d8aa56 setup docs deployment 2021-09-25 00:36:21 +02:00
Eugeny
be39591c54 Merge pull request #4644 from Eugeny/dependabot/npm_and_yarn/node-abi-3.1.0 2021-09-25 00:10:56 +02:00
Eugeny
94320265b8 Merge pull request #4642 from Eugeny/dependabot/npm_and_yarn/app/node-abi-3.1.0 2021-09-25 00:10:50 +02:00
Eugene Pankov
b94a943694 ui tweaks 2021-09-25 00:07:33 +02:00
Eugene Pankov
1674ec1ebf pull utils-decorators dep up 2021-09-24 23:59:34 +02:00
Eugene Pankov
3923e46f22 fixed #4586 - fix disableDynamicTabTitle to work with switch-profile 2021-09-24 23:55:19 +02:00
Eugene Pankov
ed71b499b9 automatically trim trailing newline when pasting 2021-09-24 23:43:57 +02:00
Eugene Pankov
924fb90220 fixed #4537 - macos: focus app when showing a new window 2021-09-24 23:41:19 +02:00
Eugene Pankov
00191763cf fixed #4629 - missing activity highlight 2021-09-24 23:29:41 +02:00
Eugene Pankov
555a21d648 fixed #4630 - added theme setting for cursor accent color 2021-09-24 23:12:17 +02:00
Eugene Pankov
9d88db83ee fixed #3961 - broadcast more actions when "focus all panes" is active 2021-09-24 23:05:05 +02:00
dependabot[bot]
2bdecc899d Bump node-abi from 3.0.0 to 3.1.0
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/master/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-24 04:04:06 +00:00
dependabot[bot]
ab8992f0aa Bump node-abi from 3.0.0 to 3.1.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/master/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-24 04:02:03 +00:00
dependabot[bot]
31b203f81a Bump ansi-regex from 6.0.0 to 6.0.1 in /tabby-ssh
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v6.0.0...v6.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 21:34:28 +00:00
Eugeny
e474ad573a Merge pull request #4577 from Eugeny/dependabot/npm_and_yarn/app/source-map-support-0.5.20
Bump source-map-support from 0.5.19 to 0.5.20 in /app
2021-09-20 23:33:31 +02:00
Eugene Pankov
4c6227fccf fixed #4608 - make ssh username setting optional 2021-09-20 23:28:21 +02:00
Eugene Pankov
02b7b12ea5 added OSC52 support (remote copy) 2021-09-19 17:02:42 +02:00
Eugene Pankov
d319a54fee show recent profiles in the start page - fixes #4585 2021-09-19 13:35:26 +02:00
Eugene Pankov
397a93bd6f a bit more reliable hotkey handling 2021-09-17 22:09:35 +02:00
Eugene Pankov
8d3f4137a1 don't copy text if empty 2021-09-17 00:23:30 +02:00
Eugene Pankov
3a615a070b Merge branch 'master' of github.com:Eugeny/tabby 2021-09-17 00:23:15 +02:00
Eugene Pankov
95a04788e5 hotkey fixes 2021-09-17 00:23:12 +02:00
Eugene Pankov
60a1a1f21c telnet command sequence fixes 2021-09-17 00:23:04 +02:00
Eugeny
4ad5627823 Merge pull request #4532 from Eugeny/dependabot/npm_and_yarn/electron-notarize-1.1.1 2021-09-16 23:45:50 +02:00
Eugeny
5a83621c64 Merge pull request #4541 from Eugeny/dependabot/npm_and_yarn/app/serialport-9.2.1 2021-09-16 23:45:41 +02:00
Eugeny
ed6d2fc005 Merge pull request #4587 from Eugeny/dependabot/npm_and_yarn/webpack-5.52.1 2021-09-16 23:45:31 +02:00
Eugeny
63f05a7388 Merge pull request #4588 from Eugeny/dependabot/npm_and_yarn/typedoc-0.22.3 2021-09-16 23:45:16 +02:00
Eugeny
a687377d16 Merge pull request #4596 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.31.1 2021-09-16 23:44:24 +02:00
Eugeny
9dc8f66153 Merge pull request #4606 from Eugeny/dependabot/npm_and_yarn/sentry/electron-2.5.4 2021-09-16 23:43:15 +02:00
dependabot[bot]
e155174bd7 Bump @sentry/electron from 2.5.2 to 2.5.4
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.5.2 to 2.5.4.
- [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/2.5.2...2.5.4)

---
updated-dependencies:
- dependency-name: "@sentry/electron"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-16 04:03:15 +00:00
dependabot[bot]
6c06e24b48 Bump @typescript-eslint/eslint-plugin from 4.29.0 to 4.31.1
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.29.0 to 4.31.1.
- [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/v4.31.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-14 04:04:27 +00:00
Eugene Pankov
a99fcbb71d shortcutName 2021-09-13 09:53:53 +02:00
dependabot[bot]
95b8b0b4dd Bump typedoc from 0.21.6 to 0.22.3
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.21.6 to 0.22.3.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.21.6...v0.22.3)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 04:07:24 +00:00
dependabot[bot]
c47fe51422 Bump webpack from 5.51.1 to 5.52.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.51.1 to 5.52.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.51.1...v5.52.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 04:05:04 +00:00
dependabot[bot]
25b3aa5850 Bump source-map-support from 0.5.19 to 0.5.20 in /app
Bumps [source-map-support](https://github.com/evanw/node-source-map-support) from 0.5.19 to 0.5.20.
- [Release notes](https://github.com/evanw/node-source-map-support/releases)
- [Commits](https://github.com/evanw/node-source-map-support/compare/v0.5.19...v0.5.20)

---
updated-dependencies:
- dependency-name: source-map-support
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 04:01:52 +00:00
Eugene Pankov
a87d8871ad bumped xterm, check bracketedPaste state via terminal modes 2021-09-09 23:07:18 +02:00
Eugene Pankov
d6fa3b02a9 ssh: reworked keyboard-interactive auth UI - fixes #4540 2021-09-09 22:43:39 +02:00
Eugene Pankov
8a514fff17 lint 2021-09-09 22:17:15 +02:00
Eugene Pankov
00b43e88dc fixed saving profiles - fixes #4567, fixes #4330 2021-09-09 22:02:32 +02:00
Eugeny
7048c2c10c Merge pull request #4574 from Eugeny/all-contributors/add-BoYeonJang 2021-09-09 12:00:51 +02:00
Eugene Pankov
3f64789c55 Update README.md 2021-09-09 12:00:39 +02:00
Eugene Pankov
38e7f7f1b6 Update README.md 2021-09-09 12:00:14 +02:00
Eugene Pankov
b337bc5cfd word 2021-09-09 11:56:56 +02:00
allcontributors[bot]
4ac5daed8c docs: update .all-contributorsrc [skip ci] 2021-09-09 09:56:42 +00:00
allcontributors[bot]
82b724174c docs: update README.md [skip ci] 2021-09-09 09:56:41 +00:00
Eugeny
e7ab2bcffd Merge pull request #4548 from BoYeonJang/Korean_translatio 2021-09-09 11:56:23 +02:00
장보연
3518c74508 Update README.md in Korean 2021-09-07 10:21:50 +09:00
Eugene Pankov
a9515d38d1 bumped plugins 2021-09-06 23:38:58 +02:00
Eugene Pankov
e32bce29e0 mention Clippy plugin 2021-09-06 23:38:55 +02:00
Eugeny
48ca696b0b Merge pull request #4512 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/ssh2-0.5.48 2021-09-06 14:57:39 +02:00
Eugeny
7bd9a887a6 Merge pull request #4543 from Eugeny/dependabot/npm_and_yarn/ssh2-1.4.0
Bump ssh2 from 1.3.0 to 1.4.0
2021-09-06 14:56:11 +02:00
dependabot[bot]
7bc66e9382 Bump ssh2 from 1.3.0 to 1.4.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 04:06:52 +00:00
dependabot[bot]
ff3feb61bc Bump serialport from 9.2.0 to 9.2.1 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 9.2.0 to 9.2.1.
- [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@9.2.0...@serialport/bindings@9.2.1)

---
updated-dependencies:
- dependency-name: serialport
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 04:01:41 +00:00
dependabot[bot]
2cb98d65da Bump electron-notarize from 1.0.1 to 1.1.1
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.0.1 to 1.1.1.
- [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/v1.0.1...v1.1.1)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 04:04:24 +00:00
Eugene Pankov
b7ac65fce0 added msys2 built-in profiles - fixes #2962 2021-09-02 23:52:31 +02:00
Eugene Pankov
601fff454d auto-search powershell $PATH 2021-09-02 23:24:29 +02:00
Eugene Pankov
730084425e fixed config sync host URL 2021-09-02 23:07:16 +02:00
Eugene Pankov
646094f210 Update README.md 2021-09-02 23:07:09 +02:00
Eugene Pankov
d5c9e1e9f6 keep a backup of the config file 2021-09-02 22:40:01 +02:00
Eugene Pankov
8d0bcb94b1 better separate profiles by group - fixes #4517 2021-09-02 22:30:21 +02:00
Eugene Pankov
f681f0e50a added scrolling to transfers menu 2021-09-02 19:42:17 +02:00
Eugeny
2185f59111 Merge pull request #4530 from Eugeny/dependabot/npm_and_yarn/electron-rebuild-3.2.3 2021-09-02 12:50:09 +02:00
Eugeny
c5ba0b1e42 Merge pull request #4525 from Eugeny/dependabot/npm_and_yarn/app/node-abi-3.0.0
Bump node-abi from 2.30.0 to 3.0.0 in /app
2021-09-02 12:45:55 +02:00
Eugeny
b522284834 Merge pull request #4527 from Eugeny/dependabot/npm_and_yarn/macos-release-3.0.1
Bump macos-release from 3.0.0 to 3.0.1
2021-09-02 12:45:49 +02:00
Eugeny
3e2adfb0b8 Merge pull request #4528 from Eugeny/dependabot/npm_and_yarn/node-abi-3.0.0 2021-09-02 12:45:40 +02:00
dependabot[bot]
1a6f6759b9 Bump electron-rebuild from 3.2.0 to 3.2.3
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 3.2.0 to 3.2.3.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v3.2.0...v3.2.3)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 04:09:16 +00:00
dependabot[bot]
43a67bcd9d Bump node-abi from 2.30.0 to 3.0.0
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.30.0 to 3.0.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/master/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.30.0...v3.0.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 04:05:53 +00:00
dependabot[bot]
5f7621cd8c Bump macos-release from 3.0.0 to 3.0.1
Bumps [macos-release](https://github.com/sindresorhus/macos-release) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sindresorhus/macos-release/releases)
- [Commits](https://github.com/sindresorhus/macos-release/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: macos-release
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 04:04:33 +00:00
dependabot[bot]
5e30a0b250 Bump node-abi from 2.30.0 to 3.0.0 in /app
Bumps [node-abi](https://github.com/lgeiger/node-abi) from 2.30.0 to 3.0.0.
- [Release notes](https://github.com/lgeiger/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/master/.releaserc.json)
- [Commits](https://github.com/lgeiger/node-abi/compare/v2.30.0...v3.0.0)

---
updated-dependencies:
- dependency-name: node-abi
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 04:01:27 +00:00
Eugene Pankov
8f02072762 Update README.md 2021-09-01 11:03:07 +02:00
dependabot[bot]
79fdba44c6 Bump @types/ssh2 from 0.5.47 to 0.5.48 in /tabby-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.47 to 0.5.48.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

---
updated-dependencies:
- dependency-name: "@types/ssh2"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-31 04:20:16 +00:00
Eugene Pankov
efe0bad650 publish to repo on tags only 2021-08-29 18:39:01 +02:00
Eugene Pankov
a244362935 Update README.md 2021-08-29 18:36:47 +02:00
Eugene Pankov
924f5f13b1 Update build.yml 2021-08-29 17:11:51 +02:00
Eugeny
8f8dbd2023 Update build.yml 2021-08-29 16:47:23 +02:00
Eugeny
952d31a7d5 Update build.yml 2021-08-29 16:46:26 +02:00
Eugeny
f6e90a3121 Update build.yml 2021-08-29 16:21:48 +02:00
Eugeny
2818af7402 Update build.yml 2021-08-28 22:51:16 +02:00
Eugene Pankov
9a36bdb9d1 added packagecloud uploads 2021-08-28 20:27:56 +02:00
Eugene Pankov
033468b0b0 prevent string_decoder from mangling non-utf output - fixes #4025, fixes #4178, fixes #4373, fixes #4282 2021-08-28 20:15:20 +02:00
Eugene Pankov
e6d83c6c58 fixed terminal padding with toolbar pinned 2021-08-28 17:07:32 +02:00
Eugene Pankov
49d58c69bc sftp: handle incorrect reported CWD 2021-08-28 17:07:23 +02:00
Eugene Pankov
67ff355ca3 Merge branch 'master' of github.com:Eugeny/tabby 2021-08-28 16:42:14 +02:00
Eugene Pankov
5b0a7b39b7 emergency brake for spinner output 2021-08-28 16:42:11 +02:00
Eugene Pankov
4ff5dea346 fixed #768 again 2021-08-28 14:26:46 +02:00
Eugene Pankov
4f244a126c Merge branch 'master' of github.com:Eugeny/tabby 2021-08-27 20:46:52 +02:00
Eugeny
1926dffb7b Merge pull request #4487 from Eugeny/dependabot/npm_and_yarn/sentry/electron-2.5.2
Bump @sentry/electron from 2.5.1 to 2.5.2
2021-08-27 20:46:47 +02:00
Eugene Pankov
8642725b9f possibly fixed proxy command issues 2021-08-27 20:41:48 +02:00
Eugene Pankov
7252f80573 fixed #4483 - repeat keydown events affecting hotkeys 2021-08-27 20:02:32 +02:00
Eugene Pankov
2d331332a4 ui tweaks 2021-08-27 19:56:09 +02:00
Eugene Pankov
f36e2551b5 moved recentProfiles from config to localStorage 2021-08-27 19:54:20 +02:00
Eugene Pankov
bcf09c59e3 fixed app not quitting completely on cmd-q 2021-08-27 18:26:57 +02:00
Eugene Pankov
b84c41d668 Merge branch 'master' of github.com:Eugeny/tabby 2021-08-27 18:12:19 +02:00
dependabot[bot]
2fbbb18bd9 Bump @sentry/electron from 2.5.1 to 2.5.2
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.5.1 to 2.5.2.
- [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/2.5.1...2.5.2)

---
updated-dependencies:
- dependency-name: "@sentry/electron"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-26 04:05:38 +00:00
Eugeny
d48c2ddb36 Merge pull request #4479 from Eugeny/dependabot/npm_and_yarn/tabby-settings/marked-3.0.2
Bump marked from 2.1.3 to 3.0.2 in /tabby-settings
2021-08-25 22:07:14 +02:00
Eugeny
2b55e72be2 Merge pull request #4429 from Eugeny/dependabot/npm_and_yarn/app/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /app
2021-08-25 22:06:21 +02:00
Eugeny
b21fcf8f2b Merge pull request #4392 from Eugeny/dependabot/npm_and_yarn/path-parse-1.0.7 2021-08-25 22:06:06 +02:00
Eugeny
02a99e8118 Merge pull request #4447 from Eugeny/dependabot/npm_and_yarn/typedoc-0.21.6
Bump typedoc from 0.21.5 to 0.21.6
2021-08-25 22:05:59 +02:00
Eugene Pankov
fa66c96d60 #768 - fixed altgraph modifier handling 2021-08-25 22:02:57 +02:00
dependabot[bot]
888c8217ca Bump marked from 2.1.3 to 3.0.2 in /tabby-settings
Bumps [marked](https://github.com/markedjs/marked) from 2.1.3 to 3.0.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v2.1.3...v3.0.2)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-25 04:24:35 +00:00
Eugene Pankov
de3aab4996 web related fixes 2021-08-25 01:25:40 +02:00
Eugene Pankov
8d587d27e5 reintroduced electron-updater 2021-08-24 19:13:49 +02:00
Eugeny
fa7bb79122 Merge pull request #4470 from Eugeny/dependabot/npm_and_yarn/electron-13.2.2 2021-08-24 18:56:44 +02:00
dependabot[bot]
f3255a7f31 Bump electron from 13.2.1 to 13.2.2
Bumps [electron](https://github.com/electron/electron) from 13.2.1 to 13.2.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.2.1...v13.2.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-24 04:04:35 +00:00
Eugeny
69680cbb8d Merge pull request #4465 from Eugeny/dependabot/npm_and_yarn/electron-rebuild-3.2.0
Bump electron-rebuild from 3.1.1 to 3.2.0
2021-08-23 09:08:12 +02:00
Eugene Pankov
69c693a0a3 lint 2021-08-23 08:59:36 +02:00
dependabot[bot]
69cdd5fb4a Bump electron-rebuild from 3.1.1 to 3.2.0
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-23 04:03:29 +00:00
Eugene Pankov
59101cfcb3 added generic hotkeys for profile selectors by type 2021-08-22 20:59:50 +02:00
Eugene Pankov
7120e32c91 fixed terminal toolbar padding - fixes #4384 2021-08-22 20:50:38 +02:00
Eugene Pankov
0a0d94ec91 sftp: fixed upload renaming - fixes #4383, fixes #4455 2021-08-22 20:23:51 +02:00
Eugene Pankov
43e3277c0d removed libappindicator from the dependencies list - fixes #4425 2021-08-22 20:17:01 +02:00
Eugene Pankov
da28596968 handle shift-insert through hotkeys system - fixes #3565, fixes #4451 2021-08-22 20:12:23 +02:00
Eugene Pankov
c1c7654380 xterm: potentially fix dead key handling issues - fixes #768 2021-08-22 17:42:38 +02:00
Eugene Pankov
20116d7af6 global profile settings - fixes #4098 2021-08-22 00:10:56 +02:00
dependabot[bot]
8c32fe010c Bump typedoc from 0.21.5 to 0.21.6
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.21.5 to 0.21.6.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.21.5...v0.21.6)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-21 21:50:22 +00:00
Eugene Pankov
0a3debb691 drop eslint-plugin-import 2021-08-21 23:45:41 +02:00
Eugeny
a3e5d04aac Merge pull request #4441 from Eugeny/dependabot/npm_and_yarn/tslib-2.3.1
Bump tslib from 2.3.0 to 2.3.1
2021-08-21 23:44:08 +02:00
Eugeny
153c98c03a Merge pull request #4419 from Eugeny/dependabot/npm_and_yarn/webpack-cli-4.8.0 2021-08-21 23:43:19 +02:00
Eugeny
90fa980b70 Merge pull request #4439 from Eugeny/dependabot/npm_and_yarn/ssh2-1.3.0 2021-08-21 23:43:08 +02:00
Eugeny
42bfde0e7f Merge pull request #4438 from Eugeny/dependabot/npm_and_yarn/electron-13.2.1
Bump electron from 13.1.9 to 13.2.1
2021-08-21 23:41:34 +02:00
Eugeny
14122bcfa2 Merge pull request #4453 from Eugeny/dependabot/npm_and_yarn/webpack-5.51.1 2021-08-21 23:41:18 +02:00
dependabot[bot]
84879af11a Bump webpack from 5.50.0 to 5.51.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.50.0 to 5.51.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.50.0...v5.51.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-20 04:03:49 +00:00
dependabot[bot]
1c371347e9 Bump tslib from 2.3.0 to 2.3.1
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.3.0...2.3.1)

---
updated-dependencies:
- dependency-name: tslib
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-19 21:33:46 +00:00
dependabot[bot]
0c08a4d10c Bump electron from 13.1.9 to 13.2.1
Bumps [electron](https://github.com/electron/electron) from 13.1.9 to 13.2.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.9...v13.2.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-19 21:33:23 +00:00
dependabot[bot]
3a66aaf9d7 Bump ssh2 from 1.2.0 to 1.3.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.2.0...v1.3.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-19 21:32:13 +00:00
Eugene Pankov
1992d99556 faster startup on macOS 2021-08-19 23:29:44 +02:00
Eugene Pankov
60046da4b3 perf: tweak pty flow control 2021-08-19 23:14:38 +02:00
Eugene Pankov
e33e954e41 Update package.json 2021-08-19 23:14:31 +02:00
Eugene Pankov
f5e5091b10 perf: debounce activity updates 2021-08-19 23:14:26 +02:00
Eugene Pankov
38691b80f2 moved deep-equal dependency out 2021-08-19 23:14:12 +02:00
Eugene Pankov
8d5eef6fa7 fixed up tab progress and title updates 2021-08-19 15:43:02 +02:00
Eugene Pankov
e0f935519a prevent reporting the same progress value twice 2021-08-19 12:16:40 +02:00
Eugene Pankov
0f6855d978 only leave a process running on macOS- fixes #4442 2021-08-19 09:35:42 +02:00
dependabot[bot]
1b9081ce80 Bump webpack-cli from 4.7.0 to 4.8.0
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.7.0 to 4.8.0.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.7.0...webpack-cli@4.8.0)

---
updated-dependencies:
- dependency-name: webpack-cli
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-18 22:02:01 +00:00
dependabot[bot]
e1098d9502 Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-18 21:58:48 +00:00
Eugene Pankov
3102f39706 Update yarn.lock 2021-08-18 23:57:58 +02:00
Eugene Pankov
46ac0a6caf Update yarn.lock 2021-08-18 23:56:23 +02:00
Eugene Pankov
68e1db040a bumped node-pty 2021-08-18 23:56:20 +02:00
Eugene Pankov
e34772b8b8 throw build errors in CI 2021-08-18 23:29:35 +02:00
dependabot[bot]
14a4acdd92 Bump path-parse from 1.0.6 to 1.0.7 in /app
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-17 06:59:49 +00:00
Eugene Pankov
cf6558ec6a lint 2021-08-16 20:11:22 +02:00
Eugene Pankov
f5f88d3d9d fixed touchbar activity indicators 2021-08-16 20:10:34 +02:00
Eugene Pankov
64955bfcd6 fixed macos-release imports 2021-08-16 20:10:30 +02:00
Eugene Pankov
9fa9021a81 fixed xterm cursor blinker leak - fixes #4166 2021-08-16 20:10:22 +02:00
Eugene Pankov
43183401b7 dropped nested corejs dep 2021-08-16 20:10:15 +02:00
dependabot[bot]
880b9ce82b Bump macos-release from 2.5.0 to 3.0.0
Bumps [macos-release](https://github.com/sindresorhus/macos-release) from 2.5.0 to 3.0.0.
- [Release notes](https://github.com/sindresorhus/macos-release/releases)
- [Commits](https://github.com/sindresorhus/macos-release/compare/v2.5.0...v3.0.0)

---
updated-dependencies:
- dependency-name: macos-release
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-16 20:10:04 +02:00
Eugene Pankov
3584af524b telnet: added potentially missing WILL responses 2021-08-15 22:31:40 +02:00
Eugene Pankov
af174933d6 telnet: fixed size negotiation order 2021-08-15 19:58:28 +02:00
Eugene Pankov
c4490717c0 lint 2021-08-15 19:42:26 +02:00
Eugene Pankov
70b6be7301 autocomplete profile colors - fixes #4231 2021-08-15 16:16:26 +02:00
Eugene Pankov
8d5b0fe863 macOS: don't exit when the last window is closed - fixes #4263 2021-08-15 14:42:48 +02:00
Eugene Pankov
03045eb952 fixed titlebar not adjusting to macOS fullscreen mode - fixes #4274 2021-08-15 14:40:40 +02:00
Eugene Pankov
f7b0272be5 allow type aliases 2021-08-15 14:23:26 +02:00
Eugene Pankov
4fa16c8a20 fixed split attachment - fixes #4374 2021-08-15 14:13:29 +02:00
Eugene Pankov
855a7bbe14 include platform arch in github issues 2021-08-15 13:47:56 +02:00
Eugene Pankov
2b3694f517 theme tweaks 2021-08-15 13:47:46 +02:00
Eugene Pankov
101177a865 fixed jump hosts using a partial profile - fixes #3294, fixes #4307, fixes #4396 2021-08-15 13:38:11 +02:00
Eugene Pankov
8b33f98c79 reduce hotkey timeout 2021-08-15 13:25:14 +02:00
Eugene Pankov
98e52f50a9 lint 2021-08-14 23:37:42 +02:00
Eugene Pankov
7551201796 fixed recovery of custom tab titles - fixes #4406 2021-08-14 23:36:41 +02:00
Eugene Pankov
3fe2dccb94 fixed instantiating saved layouts - fixes #4413 2021-08-14 23:34:01 +02:00
Eugene Pankov
f53eb31274 theme tweaks 2021-08-14 23:27:13 +02:00
Eugene Pankov
81663f351a show icon colors in profile selector - fixes #4405 2021-08-14 23:14:14 +02:00
Eugeny
bf5d037cff Merge pull request #4385 from Eugeny/dependabot/npm_and_yarn/electron-13.1.9
Bump electron from 13.1.8 to 13.1.9
2021-08-11 10:52:47 +02:00
Eugeny
53d9af3279 Merge pull request #4386 from Eugeny/dependabot/npm_and_yarn/electron-rebuild-3.1.1
Bump electron-rebuild from 2.3.5 to 3.1.1
2021-08-11 10:52:33 +02:00
Eugeny
b7dd354313 Merge pull request #4394 from Eugeny/dependabot/npm_and_yarn/webpack-5.50.0
Bump webpack from 5.48.0 to 5.50.0
2021-08-11 10:52:14 +02:00
dependabot[bot]
d8bc9ce859 Bump webpack from 5.48.0 to 5.50.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.48.0 to 5.50.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.48.0...v5.50.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-11 04:05:45 +00:00
dependabot[bot]
1bb9358f77 Bump electron-rebuild from 2.3.5 to 3.1.1
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 2.3.5 to 3.1.1.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v2.3.5...v3.1.1)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 04:05:35 +00:00
dependabot[bot]
fa77ff3995 Bump electron from 13.1.8 to 13.1.9
Bumps [electron](https://github.com/electron/electron) from 13.1.8 to 13.1.9.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.8...v13.1.9)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-10 04:04:55 +00:00
Eugene Pankov
1ae8d9c643 removed hterm - #4295 2021-08-08 22:06:08 +02:00
Eugene Pankov
a560f0c96e Update README.md 2021-08-08 18:04:21 +02:00
Eugene Pankov
434bacf185 fixed hotkey race condition 2021-08-08 17:54:53 +02:00
Eugene Pankov
79de7ec015 selector ui tweaks 2021-08-08 17:54:39 +02:00
Eugene Pankov
dfdb3b051b fixed hotkey IDs for profiles with "." in name - fixes #4367 2021-08-07 19:35:11 +02:00
Eugene Pankov
9fbf9136fc moved touchbar handling into main process 2021-08-07 19:34:37 +02:00
Eugene Pankov
25fdba7104 throttle global hotkey - fixes #4371 2021-08-07 10:25:49 +02:00
Eugeny
c91707e94f Merge pull request #4331 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.29.0
Bump @typescript-eslint/eslint-plugin from 4.28.5 to 4.29.0
2021-08-06 10:12:53 +02:00
Eugeny
d665eef430 Merge pull request #4349 from Eugeny/dependabot/npm_and_yarn/app/yargs-17.1.0
Bump yargs from 17.0.1 to 17.1.0 in /app
2021-08-06 10:12:42 +02:00
Eugeny
4579e839cd Merge pull request #4350 from Eugeny/dependabot/npm_and_yarn/app/angular/cdk-12.2.0
Bump @angular/cdk from 12.1.2 to 12.2.0 in /app
2021-08-06 10:12:14 +02:00
Eugeny
6e952180ec Merge pull request #4351 from Eugeny/dependabot/npm_and_yarn/fortawesome/fontawesome-free-5.15.4
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4
2021-08-06 10:12:04 +02:00
Eugeny
a947254ca8 Merge pull request #4360 from Eugeny/dependabot/npm_and_yarn/graceful-fs-4.2.8
Bump graceful-fs from 4.2.6 to 4.2.8
2021-08-06 10:11:05 +02:00
Eugeny
1eb4a7fc26 Merge pull request #4361 from Eugeny/dependabot/github_actions/actions/setup-node-2.4.0
Bump actions/setup-node from 2.2.0 to 2.4.0
2021-08-06 10:10:48 +02:00
Eugeny
78f25a7679 Merge pull request #4364 from Eugeny/all-contributors/add-al-wi 2021-08-06 10:09:35 +02:00
allcontributors[bot]
0c4d8b0784 docs: update .all-contributorsrc [skip ci] 2021-08-06 08:09:22 +00:00
Eugeny
e2c8093b97 Merge pull request #4363 from al-wi/profile-filter-terms
Profile filter per search term instead of the entire search input
2021-08-06 10:09:21 +02:00
allcontributors[bot]
c497a71361 docs: update README.md [skip ci] 2021-08-06 08:09:21 +00:00
Alexander Wiedemann
ec2982b1c4 Filter per search term instead of the entire search input 2021-08-06 09:55:15 +02:00
Eugene Pankov
be0aeefdb3 Update baseTerminalTab.component.ts 2021-08-06 09:52:37 +02:00
Eugene Pankov
eadd8d563e more hotkey fixes 2021-08-06 09:52:34 +02:00
Eugene Pankov
08f1ad4c75 hotkey handling fixes 2021-08-06 09:43:54 +02:00
Eugene Pankov
426606ba06 fixed split tab index - fixes #4249 2021-08-06 09:07:38 +02:00
Eugene Pankov
7b59ba4b73 reworked hotkey handling - fixes #4355, fixes #4326, fixes #4340 2021-08-06 09:03:55 +02:00
dependabot[bot]
0471fcec15 Bump actions/setup-node from 2.2.0 to 2.4.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.2.0 to 2.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2.2.0...v2.4.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-06 04:19:59 +00:00
dependabot[bot]
4110d09dab Bump graceful-fs from 4.2.6 to 4.2.8
Bumps [graceful-fs](https://github.com/isaacs/node-graceful-fs) from 4.2.6 to 4.2.8.
- [Release notes](https://github.com/isaacs/node-graceful-fs/releases)
- [Commits](https://github.com/isaacs/node-graceful-fs/compare/v4.2.6...v4.2.8)

---
updated-dependencies:
- dependency-name: graceful-fs
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-06 04:07:47 +00:00
Eugene Pankov
533837f5b7 another possible fix for profile editing - #4330 2021-08-05 10:44:00 +02:00
dependabot[bot]
144924e579 Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.3 to 5.15.4.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.3...5.15.4)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 04:03:37 +00:00
dependabot[bot]
6902ccdb95 Bump @angular/cdk from 12.1.2 to 12.2.0 in /app
Bumps [@angular/cdk](https://github.com/angular/components) from 12.1.2 to 12.2.0.
- [Release notes](https://github.com/angular/components/releases)
- [Changelog](https://github.com/angular/components/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/components/compare/12.1.2...12.2.0)

---
updated-dependencies:
- dependency-name: "@angular/cdk"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 04:01:54 +00:00
dependabot[bot]
7ed5aff168 Bump yargs from 17.0.1 to 17.1.0 in /app
Bumps [yargs](https://github.com/yargs/yargs) from 17.0.1 to 17.1.0.
- [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/v17.0.1...v17.1.0)

---
updated-dependencies:
- dependency-name: yargs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-05 04:01:42 +00:00
Eugene Pankov
3f0db97a68 finally fixed docs 2021-08-04 20:53:42 +02:00
Eugene Pankov
231594d709 fixed docs build 2021-08-04 20:28:22 +02:00
Eugene Pankov
e4ae114c71 removed old ssh2 patch 2021-08-04 20:22:39 +02:00
Eugene Pankov
20000d16f8 fixed build order 2021-08-04 20:21:14 +02:00
Eugene Pankov
5e0a9b2e52 Merge branch 'master' of github.com:Eugeny/tabby 2021-08-04 19:51:11 +02:00
Eugene Pankov
fa70447223 keep "disable dynamic title" while duplicating or restoring a tab - fixes #4334 2021-08-04 19:51:08 +02:00
dependabot[bot]
acf418b52f Bump @typescript-eslint/eslint-plugin from 4.28.5 to 4.29.0
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.28.5 to 4.29.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/v4.29.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-04 17:45:36 +00:00
Eugene Pankov
28b84e38ca fixed profiles not getting saved on Windows - fixes #4330 2021-08-04 19:44:02 +02:00
Eugeny
3c4a078fa5 Merge pull request #4322 from Eugeny/dependabot/npm_and_yarn/typedoc-0.21.5
Bump typedoc from 0.21.4 to 0.21.5
2021-08-04 19:41:21 +02:00
Eugeny
52f4e88420 Merge pull request #4333 from Eugeny/dependabot/npm_and_yarn/webpack-5.48.0 2021-08-04 19:40:47 +02:00
Eugeny
16d9045a80 Merge pull request #4336 from Eugeny/dependabot/npm_and_yarn/electron-13.1.8
Bump electron from 13.1.7 to 13.1.8
2021-08-04 19:39:37 +02:00
Eugeny
07d7d8daba Merge pull request #4321 from Eugeny/dependabot/npm_and_yarn/electron-notarize-1.0.1 2021-08-04 19:39:16 +02:00
Eugeny
b2b9476298 Merge pull request #4320 from Eugeny/dependabot/npm_and_yarn/eslint-7.32.0
Bump eslint from 7.31.0 to 7.32.0
2021-08-04 19:38:48 +02:00
Eugeny
cf7f3dffe3 Merge pull request #4317 from Eugeny/dependabot/npm_and_yarn/ssh2-1.2.0
Bump ssh2 from 1.1.0 to 1.2.0
2021-08-04 19:38:30 +02:00
Eugene Pankov
621005eb27 build order fix 2021-08-04 19:28:41 +02:00
dependabot[bot]
d46e1de8aa Bump electron from 13.1.7 to 13.1.8
Bumps [electron](https://github.com/electron/electron) from 13.1.7 to 13.1.8.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.7...v13.1.8)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-04 04:03:36 +00:00
Eugene Pankov
c44f3c5f25 lint 2021-08-03 15:13:17 +02:00
dependabot[bot]
b3f9d48609 Bump webpack from 5.47.1 to 5.48.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.47.1 to 5.48.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.47.1...v5.48.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-03 04:06:40 +00:00
Eugene Pankov
edd7e9c7b7 set default cancel button in message boxes 2021-08-02 21:01:35 +02:00
Eugene Pankov
ab8061ab39 better new profile name handling - fixes #4325 2021-08-02 20:52:39 +02:00
Eugene Pankov
c1a1f53707 added a default name for duplicated profiles - fixes #4325 2021-08-02 20:03:02 +02:00
Eugene Pankov
04097a0ef5 serial: revert default CRLF processing to none - #4325 2021-08-02 20:00:38 +02:00
Eugene Pankov
85be974e64 reworked drop zones to allow more pane drop positions 2021-08-02 17:40:54 +02:00
Eugene Pankov
0df5fb4a34 fixed start page button flickering - fixes #4298 2021-08-02 09:25:05 +02:00
Eugene Pankov
920b2b85b3 Update appRoot.component.pug 2021-08-02 09:22:42 +02:00
Eugene Pankov
4e4788bf57 fixed glitchy window drag in macOS - fixes #4324 2021-08-02 09:17:08 +02:00
dependabot[bot]
9aa60a9d0d Bump typedoc from 0.21.4 to 0.21.5
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.21.4 to 0.21.5.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.21.4...v0.21.5)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 04:08:14 +00:00
dependabot[bot]
451ac51520 Bump electron-notarize from 1.0.0 to 1.0.1
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.0.0 to 1.0.1.
- [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/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 04:07:48 +00:00
dependabot[bot]
04084aef33 Bump eslint from 7.31.0 to 7.32.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.31.0 to 7.32.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.31.0...v7.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 04:07:29 +00:00
dependabot[bot]
4198ca3fae Bump ssh2 from 1.1.0 to 1.2.0
Bumps [ssh2](https://github.com/mscdex/ssh2) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/mscdex/ssh2/releases)
- [Commits](https://github.com/mscdex/ssh2/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: ssh2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-02 04:05:32 +00:00
Eugene Pankov
3b09dfa145 sftp: allow editing remote files locally - fixes #4311 2021-08-01 16:13:11 +02:00
Eugene Pankov
923b559857 bumped plugins 2021-08-01 10:17:53 +02:00
Eugene Pankov
58682b6bf1 serial: disable local echo by default 2021-08-01 10:17:52 +02:00
Eugene Pankov
88c4198145 Merge branch 'master' of github.com:Eugeny/tabby 2021-07-31 19:28:05 +02:00
Eugene Pankov
a6c535414f switched to webpack asset modules 2021-07-31 19:28:01 +02:00
Eugeny
6ebb7723ff Merge pull request #4212 from Eugeny/dependabot/npm_and_yarn/slugify-1.6.0
Bump slugify from 1.5.3 to 1.6.0
2021-07-31 19:17:14 +02:00
Eugeny
07dd6600dc Merge pull request #4300 from Eugeny/dependabot/npm_and_yarn/webpack-5.47.1
Bump webpack from 5.46.0 to 5.47.1
2021-07-31 19:12:05 +02:00
Eugene Pankov
cc6cfec907 added a default color to split tab spanners 2021-07-31 18:59:52 +02:00
Eugene Pankov
4ecfcfda36 ui tweaks 2021-07-31 18:02:39 +02:00
Eugene Pankov
c5681b1376 allow rearranging panes within a tab 2021-07-31 17:57:43 +02:00
Eugene Pankov
1fc57018e3 allow modifier-only hotkeys 2021-07-31 17:18:03 +02:00
Eugene Pankov
8b8bacdf69 fixed config file getting spontaneously erased - fixes #4293 2021-07-31 15:28:10 +02:00
dependabot[bot]
3aaa419f8b Bump webpack from 5.46.0 to 5.47.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.46.0 to 5.47.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.46.0...v5.47.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-30 04:05:41 +00:00
Eugene Pankov
94819019ec bumped plugins 2021-07-29 21:20:41 +02:00
Eugene Pankov
7b37035f75 toolbar dropdown ui fix 2021-07-29 21:20:34 +02:00
Eugene Pankov
a5ef3507c3 toolbar ui fix 2021-07-29 21:20:29 +02:00
Eugene Pankov
b9c6d30678 include titles of all panes in a split tab's title 2021-07-29 21:20:25 +02:00
Eugene Pankov
009556f984 possible fix for #4293 2021-07-29 21:07:47 +02:00
Eugene Pankov
87007d5ae3 demo progress report fix 2021-07-29 21:07:31 +02:00
Eugene Pankov
61ea2c77c8 config sync ui updates 2021-07-29 21:07:22 +02:00
Eugene Pankov
c5dbccf807 fixed keepalive timeout 2021-07-28 20:45:32 +02:00
Eugene Pankov
ab4bf45c10 Update README.md 2021-07-27 21:09:39 +02:00
Eugene Pankov
61853428de bumped plugins 2021-07-27 20:46:56 +02:00
Eugene Pankov
ae8c0128cb updated config sync timing 2021-07-27 20:43:00 +02:00
Eugene Pankov
744e731a22 Update theme.scss 2021-07-27 20:41:49 +02:00
Eugene Pankov
bb34e21791 plugins bump 2021-07-27 20:40:28 +02:00
Eugene Pankov
74f91b7cb3 don't remember tabs if recovery is disabled 2021-07-27 20:40:08 +02:00
Eugene Pankov
7bcf3dbabe Update theme.scss 2021-07-27 20:37:18 +02:00
Eugene Pankov
273111fb05 update default sync host 2021-07-27 20:36:39 +02:00
Eugene Pankov
8ba067d90e style tweaks 2021-07-27 20:36:34 +02:00
Eugeny
b68f71ec62 Merge pull request #4211 from Eugeny/dependabot/npm_and_yarn/sentry/cli-1.67.2
Bump @sentry/cli from 1.67.1 to 1.67.2
2021-07-27 20:30:55 +02:00
Eugeny
7100d12818 Merge pull request #4256 from Eugeny/dependabot/npm_and_yarn/npmlog-5.0.0
Bump npmlog from 4.1.2 to 5.0.0
2021-07-27 20:30:28 +02:00
Eugeny
f041f0f07a Merge pull request #4255 from Eugeny/dependabot/npm_and_yarn/webpack-5.46.0
Bump webpack from 5.43.0 to 5.46.0
2021-07-27 20:30:11 +02:00
Eugene Pankov
6deb9ab48a bumped eslint 2021-07-27 20:29:15 +02:00
Eugene Pankov
1e1c05c138 Merge branch 'master' of github.com:Eugeny/tabby 2021-07-27 20:27:45 +02:00
Eugeny
8cfc20a81c Merge pull request #4273 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-4.28.5
Bump @typescript-eslint/parser from 4.28.3 to 4.28.5
2021-07-27 20:27:31 +02:00
Eugene Pankov
c853c96ae9 lint 2021-07-27 20:27:19 +02:00
Eugene Pankov
85fe9eb4ec don't show drop hints when dragging the tab onto itself 2021-07-27 20:27:03 +02:00
Eugeny
cf5af26d6e Merge pull request #4227 from Eugeny/dependabot/npm_and_yarn/eslint-7.31.0
Bump eslint from 7.30.0 to 7.31.0
2021-07-27 20:26:45 +02:00
Eugene Pankov
90e56e7605 added v8-compile-cache 2021-07-27 09:59:35 +02:00
dependabot[bot]
1c4e527db6 Bump @typescript-eslint/parser from 4.28.3 to 4.28.5
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.28.3 to 4.28.5.
- [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/v4.28.5/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-27 04:04:35 +00:00
Eugene Pankov
75a0aadce4 build fix 2021-07-24 20:18:52 +02:00
Eugene Pankov
01e3e91e51 Update index.ts 2021-07-24 17:52:32 +02:00
Eugene Pankov
7514fa41a1 Create release.yml 2021-07-24 16:40:25 +02:00
Eugene Pankov
69115fb77a experimental config sync 2021-07-24 16:31:32 +02:00
Eugene Pankov
99ab8dacd4 ui tweaks 2021-07-24 16:31:10 +02:00
Eugene Pankov
e30d2cd85b added CDK polyfills 2021-07-24 16:30:55 +02:00
Eugene Pankov
657915b1fe fixed hotkey removal crashes 2021-07-24 16:03:48 +02:00
Eugene Pankov
90149def0a fixed #4230 - option to limit or disable "recent profiles" 2021-07-24 10:35:24 +02:00
Eugene Pankov
1926eca929 lint 2021-07-24 10:25:29 +02:00
Eugene Pankov
f20ba3e8bc ssh: enable keepalive by default 2021-07-24 10:15:08 +02:00
Eugene Pankov
6f972ab4cc lint 2021-07-24 10:14:07 +02:00
Eugene Pankov
129bc8a9f1 transfer menu UI fix 2021-07-24 10:06:44 +02:00
Eugene Pankov
4673aa498e fixed #4235 - prevent OS from sleeping during transfers 2021-07-24 10:04:14 +02:00
Eugene Pankov
a2e0db2a16 open SFTP panel in the CWD 2021-07-24 09:44:47 +02:00
dependabot[bot]
8def92eb5e Bump npmlog from 4.1.2 to 5.0.0
Bumps [npmlog](https://github.com/npm/npmlog) from 4.1.2 to 5.0.0.
- [Release notes](https://github.com/npm/npmlog/releases)
- [Changelog](https://github.com/npm/npmlog/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/npmlog/compare/v4.1.2...v5.0.0)

---
updated-dependencies:
- dependency-name: npmlog
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-23 04:08:10 +00:00
dependabot[bot]
5b7e8f73b5 Bump webpack from 5.43.0 to 5.46.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.43.0 to 5.46.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.43.0...v5.46.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-23 04:07:40 +00:00
Eugene Pankov
7fa29b4b37 transfers ui fixes 2021-07-22 21:35:47 +02:00
Eugene Pankov
a859baac97 fixed #4237 sftp: upload into a temp file first 2021-07-22 21:35:39 +02:00
Eugene Pankov
b7a676f668 ng2-dnd cleanup 2021-07-21 23:06:50 +02:00
Eugene Pankov
26d81f10a6 dropped ng2-dnd 2021-07-21 23:05:26 +02:00
Eugene Pankov
be4cc804a2 allow dragging other tabs into existing split tabs - fixes #1347 2021-07-21 22:59:58 +02:00
dependabot[bot]
1b253ccb0a Bump eslint from 7.30.0 to 7.31.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.30.0 to 7.31.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.30.0...v7.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-19 04:07:10 +00:00
dependabot[bot]
8bfc1dc302 Bump slugify from 1.5.3 to 1.6.0
Bumps [slugify](https://github.com/simov/slugify) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/simov/slugify/releases)
- [Commits](https://github.com/simov/slugify/compare/v1.5.3...v1.6.0)

---
updated-dependencies:
- dependency-name: slugify
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-18 14:53:38 +00:00
Eugene Pankov
ff49b9e38a settings: added release notes 2021-07-18 16:48:13 +02:00
Eugene Pankov
439e407595 serial: fixed missing port names in builtin profiles 2021-07-18 15:22:46 +02:00
Eugene Pankov
1eed32f8d8 local: UI to support single "command line" in profiles 2021-07-18 15:22:35 +02:00
Eugene Pankov
66098b5c6d Update hostWindow.service.ts 2021-07-18 14:08:20 +02:00
Eugene Pankov
a725d25e46 web: added proper platform detection and hotkey handling 2021-07-17 16:39:08 +02:00
Eugene Pankov
4e42dfd46b plugin version bump 2021-07-17 00:54:38 +02:00
Eugene Pankov
c2657568a6 updated web demo for new profiles 2021-07-17 00:52:16 +02:00
Eugene Pankov
dbe7b8cf56 plugin version bump 2021-07-17 00:52:07 +02:00
Eugene Pankov
a82a65ed46 plugin version bump 2021-07-16 23:59:45 +02:00
Eugene Pankov
893d9a9887 fixed button discoloration 2021-07-16 23:59:12 +02:00
Eugeny
1facd46901 Merge pull request #4216 from Eugeny/all-contributors/add-KingMob 2021-07-16 23:54:00 +02:00
allcontributors[bot]
7af89e1d07 docs: update .all-contributorsrc [skip ci] 2021-07-16 21:53:41 +00:00
Eugeny
50b2040d16 Merge pull request #4215 from KingMob/bugfix/get-shell-names-correctly 2021-07-16 23:53:40 +02:00
allcontributors[bot]
a65505c498 docs: update README.md [skip ci] 2021-07-16 21:53:40 +00:00
Matthew Davidson
7e8c19e97b Correctly name profiles for shells outside /usr
Shells outside /usr get named incorrectly. E.g., if I add /usr/local/bin/fish
to /etc/shells, when Tabby starts up, it think the profile name should be "local".
2021-07-16 16:50:32 -04:00
Eugeny
8ac101cf9c Merge pull request #4213 from Eugeny/dependabot/npm_and_yarn/electron-13.1.7 2021-07-16 11:31:54 +02:00
dependabot[bot]
6297987e4f Bump electron from 13.1.6 to 13.1.7
Bumps [electron](https://github.com/electron/electron) from 13.1.6 to 13.1.7.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.6...v13.1.7)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-16 04:07:07 +00:00
dependabot[bot]
8c8c49055b Bump @sentry/cli from 1.67.1 to 1.67.2
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 1.67.1 to 1.67.2.
- [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.67.1...1.67.2)

---
updated-dependencies:
- dependency-name: "@sentry/cli"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-16 04:04:06 +00:00
Eugene Pankov
cbd7c7c02f remove outline buttons 2021-07-14 00:21:23 +02:00
Eugene Pankov
57a198b082 typing cleanup 2021-07-14 00:03:05 +02:00
Eugene Pankov
e245629c5a ui tweak 2021-07-13 23:53:43 +02:00
Eugene Pankov
760311ffa0 lint 2021-07-13 23:50:31 +02:00
Eugene Pankov
2f13f3a401 strongly typed partial profiles wip 2021-07-13 23:44:23 +02:00
Eugene Pankov
5ddf36d4c1 lint 2021-07-13 22:23:46 +02:00
Eugene Pankov
a632a599d3 WSL: fixed multiple distro detection 2021-07-13 22:20:59 +02:00
Eugene Pankov
ca9f11484c move terminal-tab to use .profile 2021-07-13 21:47:06 +02:00
Eugene Pankov
9d224cbce2 Merge branch 'master' of github.com:Eugeny/terminus 2021-07-13 20:37:20 +02:00
Eugeny
7df36b89c3 Merge pull request #4198 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-4.28.3
Bump @typescript-eslint/parser from 4.28.2 to 4.28.3
2021-07-13 20:19:47 +02:00
Eugene Pankov
8b62aa24ea Merge branch 'master' of github.com:Eugeny/terminus 2021-07-13 20:19:31 +02:00
Eugene Pankov
9502240480 reworked login scripts - fixes #1349 2021-07-13 20:19:28 +02:00
dependabot[bot]
31efa2f9c1 Bump @typescript-eslint/parser from 4.28.2 to 4.28.3
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.28.2 to 4.28.3.
- [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/v4.28.3/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 17:53:20 +00:00
Eugeny
b40192f2ad Merge pull request #4196 from Eugeny/dependabot/npm_and_yarn/style-loader-3.1.0
Bump style-loader from 3.0.0 to 3.1.0
2021-07-13 19:48:29 +02:00
Eugeny
489ea5f891 Merge pull request #4197 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-4.28.3 2021-07-13 19:46:30 +02:00
Eugeny
05eb24cd99 Merge pull request #4191 from Eugeny/dependabot/npm_and_yarn/typedoc-0.21.4
Bump typedoc from 0.21.2 to 0.21.4
2021-07-13 19:46:21 +02:00
Eugene Pankov
5053743b1b fixed dynamic port forward listener not getting cleaned up - fixes #4200 2021-07-13 19:27:02 +02:00
Eugene Pankov
6d7f25870e Merge branch 'master' of github.com:Eugeny/terminus 2021-07-13 19:26:21 +02:00
Eugeny
6cdee22164 Delete clink.html 2021-07-13 16:04:26 +02:00
Eugene Pankov
c043d5bc83 delegate getDescription to ProfilesService 2021-07-13 10:28:27 +02:00
Eugene Pankov
d7741f07a1 fixed configproxy 2021-07-13 10:28:08 +02:00
dependabot[bot]
14c0b8891d Bump @typescript-eslint/eslint-plugin from 4.28.2 to 4.28.3
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 4.28.2 to 4.28.3.
- [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/v4.28.3/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 04:04:47 +00:00
dependabot[bot]
ea1d8e95f3 Bump style-loader from 3.0.0 to 3.1.0
Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 3.0.0 to 3.1.0.
- [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/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: style-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 04:04:14 +00:00
Eugene Pankov
50c20f08f8 fixed 'hide dock on blur' 2021-07-12 23:35:42 +02:00
Eugene Pankov
8f55333d23 fixed visual layout of readline prompts 2021-07-12 22:31:17 +02:00
Eugene Pankov
3be98e6244 fixed home/end keys in ssh sessions 2021-07-12 22:23:46 +02:00
Eugene Pankov
5e771534a8 wording 2021-07-12 21:29:38 +02:00
Eugene Pankov
ba33f18af7 fixed ssh connections 2021-07-12 21:29:34 +02:00
Eugene Pankov
82f3b61b5e bump 2021-07-12 21:29:28 +02:00
dependabot[bot]
f587fd279c Bump typedoc from 0.21.2 to 0.21.4
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.21.2 to 0.21.4.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.21.2...v0.21.4)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-12 04:05:50 +00:00
Eugene Pankov
8d13cb0fe8 bump 2021-07-11 23:04:48 +02:00
Eugene Pankov
d1a6baf858 bump 2021-07-11 23:03:55 +02:00
Eugene Pankov
25034342c3 bumped plugins 2021-07-11 23:02:27 +02:00
Eugene Pankov
379775bcd3 import fix 2021-07-11 23:02:23 +02:00
Eugene Pankov
ff18926bf9 WSA wip 2021-07-11 22:59:39 +02:00
Eugene Pankov
37e564130e web preload progress callback 2021-07-11 16:31:00 +02:00
Eugene Pankov
d8a8d41614 lint 2021-07-11 16:24:04 +02:00
Eugene Pankov
7db3335938 bump, include source maps in releases 2021-07-11 16:12:36 +02:00
Eugene Pankov
c1051379c1 add tabby-web-demo to the repo 2021-07-11 16:00:59 +02:00
Eugeny
f7a0fb488b Merge pull request #4175 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/xterm-addon-ligatures-0.5.1
Bump xterm-addon-ligatures from 0.5.0 to 0.5.1 in /tabby-terminal
2021-07-11 12:39:02 +02:00
Eugene Pankov
2706045cc2 tab context menu option to save split layouts as profiles - fixes #3468 2021-07-11 12:38:35 +02:00
Eugene Pankov
908f90cd52 automatically clean up defaults from the config file 2021-07-11 00:06:52 +02:00
Eugene Pankov
67bbbd7f65 allow renaming and replacing files in the vault - fixes #4110 2021-07-10 21:31:18 +02:00
Eugene Pankov
0008b2f022 preserve file modes for up- and downloads - fixes #4141 2021-07-10 20:39:45 +02:00
Eugene Pankov
3e61630c6a added a way to switch a pane's profile - fixes #1007, fixes #2963, fixes #3082, fixes #4151 2021-07-10 20:05:31 +02:00
Eugene Pankov
6f912dc12b make sure ssh ident goes out in a single packet - #4167 2021-07-10 17:51:37 +02:00
Eugene Pankov
e1f2e176ce actually implement telnet protocol - fixes #4164 2021-07-10 16:09:24 +02:00
Eugene Pankov
f39b4c6dbe Update buttonProvider.ts 2021-07-10 14:47:41 +02:00
Eugene Pankov
c49ff68ed6 avoid duplicate entries in recent profiles - fixes #4179 2021-07-10 14:30:33 +02:00
Eugene Pankov
891cf42338 make ssh the default quick-connect profile - fixes #4181 2021-07-10 14:10:55 +02:00
Eugene Pankov
b9763044ee close streamProcessor in telnet tabs 2021-07-09 10:31:12 +02:00
Eugene Pankov
46e0035327 sort profiles by groups - fixes #4163 2021-07-09 10:02:58 +02:00
Eugene Pankov
6df8707b6d Merge branch 'master' of github.com:Eugeny/terminus 2021-07-09 09:58:35 +02:00
Eugene Pankov
24b7922539 fixed high contrast appearance for theme previews 2021-07-09 09:58:31 +02:00
Eugene Pankov
485665d449 fixed toggle switch appearance in windows high contrast mode - fixes #4165 2021-07-09 09:47:51 +02:00
Eugene Pankov
e09a011c23 hint about ssh connections being moved to profiles 2021-07-09 09:47:09 +02:00
Eugene Pankov
833a348fdb fixed matchedHotkey deprecation - fixes #4153, fixes #4156 2021-07-09 09:46:54 +02:00
Eugene Pankov
26ff6f17e7 fixed toolbar state loading 2021-07-09 09:10:10 +02:00
dependabot[bot]
d026e634e5 Bump xterm-addon-ligatures from 0.5.0 to 0.5.1 in /tabby-terminal
Bumps [xterm-addon-ligatures](https://github.com/xtermjs/xterm.js) from 0.5.0 to 0.5.1.
- [Release notes](https://github.com/xtermjs/xterm.js/releases)
- [Commits](https://github.com/xtermjs/xterm.js/commits)

---
updated-dependencies:
- dependency-name: xterm-addon-ligatures
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-09 04:25:46 +00:00
Eugeny
356a2f38b6 Merge pull request #4160 from Eugeny/dependabot/npm_and_yarn/sentry/cli-1.67.1 2021-07-08 22:04:39 +02:00
Eugeny
bdb37a9a18 Merge pull request #4169 from Eugeny/all-contributors/add-cypherbits 2021-07-08 22:04:29 +02:00
allcontributors[bot]
22d89041f8 docs: update .all-contributorsrc [skip ci] 2021-07-08 20:04:20 +00:00
allcontributors[bot]
d5285cf268 docs: update README.md [skip ci] 2021-07-08 20:04:19 +00:00
Eugene Pankov
3db98aa421 expose more plugin loader apis 2021-07-08 22:03:41 +02:00
Eugene Pankov
47dba5b52c avoid including all of the util-decorators in the bundle 2021-07-08 22:03:25 +02:00
Eugene Pankov
72874a1e84 Update HACKING.md 2021-07-08 22:03:03 +02:00
Eugene Pankov
fc1deb67e8 Merge branch 'master' of github.com:Eugeny/terminus 2021-07-08 22:01:43 +02:00
Eugeny
d0bb3c731c Merge pull request #4168 from cypherbits/master 2021-07-08 22:01:34 +02:00
cypherbits
13e54a46d7 add Ubuntu 20.04 compile requeriments 2021-07-08 18:46:44 +02:00
Eugene Pankov
55a975bc8b Merge branch 'master' of github.com:Eugeny/terminus 2021-07-08 16:09:09 +02:00
Eugene Pankov
a62752efec bumped package versions 2021-07-08 16:07:45 +02:00
dependabot[bot]
4e97ce5117 Bump @sentry/cli from 1.64.2 to 1.67.1
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 1.64.2 to 1.67.1.
- [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.64.2...1.67.1)

---
updated-dependencies:
- dependency-name: "@sentry/cli"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-08 11:36:24 +00:00
Eugeny
19a5f2dc2d Merge pull request #4161 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/node-16.0.1
Bump @types/node from 16.0.0 to 16.0.1 in /tabby-ssh
2021-07-08 13:32:41 +02:00
Eugeny
52433afd13 Merge pull request #4159 from Eugeny/dependabot/npm_and_yarn/types/node-16.0.1
Bump @types/node from 16.0.0 to 16.0.1
2021-07-08 13:32:26 +02:00
Eugeny
e1d9f50426 Merge pull request #4158 from Eugeny/dependabot/npm_and_yarn/sentry/electron-2.5.1
Bump @sentry/electron from 2.5.0 to 2.5.1
2021-07-08 13:32:19 +02:00
Eugeny
5837c61ac4 Merge pull request #4157 from Eugeny/dependabot/npm_and_yarn/app/types/node-16.0.1
Bump @types/node from 16.0.0 to 16.0.1 in /app
2021-07-08 13:32:11 +02:00
dependabot[bot]
8c03e5b1aa Bump @types/node from 16.0.0 to 16.0.1 in /tabby-ssh
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-08 04:24:47 +00:00
dependabot[bot]
66074e3eb6 Bump @types/node from 16.0.0 to 16.0.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-08 04:04:14 +00:00
dependabot[bot]
221746f3e7 Bump @sentry/electron from 2.5.0 to 2.5.1
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.5.0 to 2.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/2.5.0...2.5.1)

---
updated-dependencies:
- dependency-name: "@sentry/electron"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-08 04:03:47 +00:00
dependabot[bot]
2c59e30c39 Bump @types/node from 16.0.0 to 16.0.1 in /app
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-08 04:01:31 +00:00
Eugene Pankov
4e13a601cc tab padding fix 2021-07-07 21:33:35 +02:00
Eugene Pankov
a159890cba lint 2021-07-07 21:33:26 +02:00
Eugene Pankov
4534eefc1d lint 2021-07-07 21:03:55 +02:00
Eugene Pankov
e06c44f973 externals fix 2021-07-07 21:00:40 +02:00
Eugene Pankov
c1616b1a7a bumped eslint 2021-07-07 20:45:47 +02:00
Eugeny
5b34fa9371 Merge pull request #4146 from Eugeny/dependabot/npm_and_yarn/types/fs-extra-9.0.12
Bump @types/fs-extra from 9.0.11 to 9.0.12
2021-07-07 20:41:03 +02:00
Eugeny
956a923ea2 Merge pull request #4124 from Eugeny/dependabot/npm_and_yarn/app/types/node-16.0.0
Bump @types/node from 15.12.5 to 16.0.0 in /app
2021-07-07 20:40:58 +02:00
Eugene Pankov
224abcb2c4 new toolbar design 2021-07-07 20:11:38 +02:00
dependabot[bot]
e8af224f7b Bump @types/fs-extra from 9.0.11 to 9.0.12
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.11 to 9.0.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

---
updated-dependencies:
- dependency-name: "@types/fs-extra"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 11:34:02 +00:00
dependabot[bot]
a1d39563c3 Bump @types/node from 15.12.5 to 16.0.0 in /app
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 15.12.5 to 16.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 11:29:45 +00:00
Eugeny
621536a078 Merge pull request #4150 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/ssh2-0.5.47
Bump @types/ssh2 from 0.5.46 to 0.5.47 in /tabby-ssh
2021-07-07 13:28:06 +02:00
Eugeny
3cf9353d08 Merge pull request #4149 from Eugeny/dependabot/npm_and_yarn/tabby-core/types/js-yaml-4.0.2
Bump @types/js-yaml from 4.0.1 to 4.0.2 in /tabby-core
2021-07-07 13:27:59 +02:00
dependabot[bot]
6a2fa7efa9 Bump @types/js-yaml from 4.0.1 to 4.0.2 in /tabby-core
Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml)

---
updated-dependencies:
- dependency-name: "@types/js-yaml"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 11:27:53 +00:00
Eugeny
6b0fe0e2d1 Merge pull request #4148 from Eugeny/dependabot/npm_and_yarn/tabby-plugin-manager/types/semver-7.3.7
Bump @types/semver from 7.3.6 to 7.3.7 in /tabby-plugin-manager
2021-07-07 13:27:34 +02:00
Eugeny
923876dc23 Merge pull request #4147 from Eugeny/dependabot/npm_and_yarn/webpack-5.43.0
Bump webpack from 5.42.1 to 5.43.0
2021-07-07 13:27:25 +02:00
Eugeny
233ae9cbe6 Merge pull request #4145 from Eugeny/dependabot/npm_and_yarn/types/js-yaml-4.0.2
Bump @types/js-yaml from 4.0.1 to 4.0.2
2021-07-07 13:26:56 +02:00
Eugeny
09daf8102d Merge pull request #4144 from Eugeny/dependabot/npm_and_yarn/app/types/mz-2.7.4
Bump @types/mz from 2.7.3 to 2.7.4 in /app
2021-07-07 13:26:48 +02:00
Eugene Pankov
fd7893e9f8 Update README.md 2021-07-07 10:48:24 +02:00
dependabot[bot]
cf5c3e71f6 Bump @types/ssh2 from 0.5.46 to 0.5.47 in /tabby-ssh
Bumps [@types/ssh2](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2) from 0.5.46 to 0.5.47.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2)

---
updated-dependencies:
- dependency-name: "@types/ssh2"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 04:27:47 +00:00
dependabot[bot]
5c30bbb7e4 Bump @types/semver from 7.3.6 to 7.3.7 in /tabby-plugin-manager
Bumps [@types/semver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver) from 7.3.6 to 7.3.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/semver)

---
updated-dependencies:
- dependency-name: "@types/semver"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 04:26:44 +00:00
dependabot[bot]
afce339187 Bump webpack from 5.42.1 to 5.43.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.42.1 to 5.43.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.42.1...v5.43.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 04:05:44 +00:00
dependabot[bot]
d528d1148b Bump @types/js-yaml from 4.0.1 to 4.0.2
Bumps [@types/js-yaml](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/js-yaml) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/js-yaml)

---
updated-dependencies:
- dependency-name: "@types/js-yaml"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 04:04:32 +00:00
dependabot[bot]
786b31e2a2 Bump @types/mz from 2.7.3 to 2.7.4 in /app
Bumps [@types/mz](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mz) from 2.7.3 to 2.7.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mz)

---
updated-dependencies:
- dependency-name: "@types/mz"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-07 04:01:47 +00:00
Eugene Pankov
0ad32fa79d moved profile settings view to settings plugin, web entry cleanup 2021-07-07 01:22:50 +02:00
Eugene Pankov
93a89e3c86 lint 2021-07-06 21:56:52 +02:00
Eugene Pankov
4e667edf9f lint 2021-07-06 21:50:40 +02:00
Eugene Pankov
403bafe0a2 lint 2021-07-06 21:47:15 +02:00
Eugene Pankov
40209dc60d bundle built-in modules together 2021-07-06 21:22:57 +02:00
Eugene Pankov
1ccd1df6e1 prevent duplication in available plugins 2021-07-06 21:03:10 +02:00
Eugene Pankov
800c1fa039 don't log cwd check failures as errors 2021-07-06 20:29:11 +02:00
Eugene Pankov
0a67987e3c use eval sourcemaps in dev mode on windows 2021-07-06 20:29:01 +02:00
Eugene Pankov
6c7a8092a4 fixed config reload race condition 2021-07-06 20:28:53 +02:00
Eugene Pankov
9f87886a9b ui tweaks 2021-07-06 19:34:00 +02:00
Eugene Pankov
0aa5df421d added auto detection for vs developer prompt 2021-07-06 19:33:53 +02:00
Eugene Pankov
d3498a6a46 make comspec setting optional - fixes #4143 2021-07-06 19:03:34 +02:00
Eugene Pankov
41a53a3e8e lint 2021-07-06 10:44:30 +02:00
Eugene Pankov
636942ff86 updated rxjs imports 2021-07-06 09:43:16 +02:00
Eugene Pankov
d1b874c191 Merge branch 'master' of github.com:Eugeny/terminus 2021-07-06 09:40:58 +02:00
Eugene Pankov
89f369abe6 es2021 compilation 2021-07-06 09:40:54 +02:00
Eugeny
f7cea92900 Merge pull request #4135 from Eugeny/dependabot/npm_and_yarn/app/rxjs-7.2.0
Bump rxjs from 7.1.0 to 7.2.0 in /app
2021-07-06 09:40:20 +02:00
Eugeny
9a611709d0 Merge pull request #4102 from Eugeny/dependabot/npm_and_yarn/tabby-core/core-js-3.15.2
Bump core-js from 3.14.0 to 3.15.2 in /tabby-core
2021-07-06 08:56:25 +02:00
dependabot[bot]
2094409d23 Bump core-js from 3.14.0 to 3.15.2 in /tabby-core
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.14.0 to 3.15.2.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.15.2/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 06:56:19 +00:00
Eugeny
2b061d3f77 Merge pull request #4129 from Eugeny/dependabot/npm_and_yarn/eslint-7.30.0
Bump eslint from 7.29.0 to 7.30.0
2021-07-06 08:56:16 +02:00
Eugeny
ed06c78a16 Merge pull request #4122 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/node-16.0.0 2021-07-06 08:56:03 +02:00
Eugeny
36a6af05c4 Merge pull request #4126 from Eugeny/dependabot/npm_and_yarn/types/node-16.0.0
Bump @types/node from 15.12.5 to 16.0.0
2021-07-06 08:55:57 +02:00
dependabot[bot]
64b4eed9c3 Bump @types/node from 14.14.31 to 16.0.0 in /tabby-ssh
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.31 to 16.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 06:55:14 +00:00
Eugeny
afc9270846 Merge pull request #4139 from Eugeny/dependabot/npm_and_yarn/electron-13.1.6
Bump electron from 13.1.5 to 13.1.6
2021-07-06 08:54:21 +02:00
Eugeny
2ea5edc101 Merge pull request #4138 from Eugeny/dependabot/npm_and_yarn/webpack-5.42.1
Bump webpack from 5.42.0 to 5.42.1
2021-07-06 08:54:06 +02:00
dependabot[bot]
869a7e866c Bump electron from 13.1.5 to 13.1.6
Bumps [electron](https://github.com/electron/electron) from 13.1.5 to 13.1.6.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.5...v13.1.6)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 04:06:39 +00:00
dependabot[bot]
1bd3b5301b Bump webpack from 5.42.0 to 5.42.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.42.0 to 5.42.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.42.0...v5.42.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 04:05:54 +00:00
dependabot[bot]
4ff66a39d8 Bump rxjs from 7.1.0 to 7.2.0 in /app
Bumps [rxjs](https://github.com/reactivex/rxjs) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/reactivex/rxjs/releases)
- [Changelog](https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reactivex/rxjs/compare/7.1.0...7.2.0)

---
updated-dependencies:
- dependency-name: rxjs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-06 04:02:49 +00:00
dependabot[bot]
a3857d5dc8 Bump @types/node from 15.12.5 to 16.0.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 15.12.5 to 16.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-05 22:01:21 +00:00
Eugene Pankov
bf762cc4c7 moved login scripts processing into tabby-terminal 2021-07-05 23:56:38 +02:00
Eugene Pankov
461cd2bec7 deprecated matchedHotkey 2021-07-05 22:52:32 +02:00
Eugene Pankov
da599567f8 cleanup 2021-07-05 22:27:58 +02:00
Eugene Pankov
7f921c4d34 added a profile selector hotkey 2021-07-05 22:27:55 +02:00
Eugene Pankov
0eb006f297 Merge branch 'master' of github.com:Eugeny/terminus 2021-07-05 22:14:45 +02:00
Eugene Pankov
07095f3476 moved spinner intro baseTerminalTab 2021-07-05 22:14:42 +02:00
dependabot[bot]
59b283067b Bump eslint from 7.29.0 to 7.30.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.29.0 to 7.30.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.29.0...v7.30.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-05 13:09:45 +00:00
Eugeny
3635eee77d Merge pull request #4106 from Eugeny/dependabot/npm_and_yarn/app/ng-bootstrap/ng-bootstrap-10.0.0
Bump @ng-bootstrap/ng-bootstrap from 9.1.1 to 10.0.0 in /app
2021-07-05 15:01:34 +02:00
Eugeny
64df798dc1 Merge pull request #4130 from Eugeny/dependabot/npm_and_yarn/types/webpack-env-1.16.2
Bump @types/webpack-env from 1.16.0 to 1.16.2
2021-07-05 15:01:07 +02:00
Eugeny
f091206e37 Merge pull request #4104 from Eugeny/dependabot/npm_and_yarn/tabby-terminal/utils-decorators-1.10.0
Bump utils-decorators from 1.8.3 to 1.10.0 in /tabby-terminal
2021-07-05 15:00:46 +02:00
Eugeny
3148927395 Merge pull request #4101 from Eugeny/dependabot/npm_and_yarn/tabby-local/utils-decorators-1.10.0 2021-07-05 15:00:41 +02:00
Eugeny
fb39bfd560 Merge pull request #4103 from Eugeny/dependabot/npm_and_yarn/tabby-settings/utils-decorators-1.10.0
Bump utils-decorators from 1.8.3 to 1.10.0 in /tabby-settings
2021-07-05 15:00:35 +02:00
Eugeny
f8cd9fcea7 Merge pull request #4134 from Eugeny/all-contributors/add-logicmachine123 2021-07-05 15:00:02 +02:00
Eugeny
f1148cc47f Merge pull request #4111 from Eugeny/dependabot/npm_and_yarn/electron-13.1.5
Bump electron from 13.1.4 to 13.1.5
2021-07-05 14:56:15 +02:00
Eugeny
ffcc0d549a Merge pull request #4097 from Eugeny/dependabot/github_actions/actions/setup-node-2.2.0
Bump actions/setup-node from 2.1.5 to 2.2.0
2021-07-05 14:55:51 +02:00
Eugeny
861dd8ef86 Merge pull request #4125 from Eugeny/dependabot/npm_and_yarn/webpack-5.42.0
Bump webpack from 5.41.0 to 5.42.0
2021-07-05 14:55:23 +02:00
Eugeny
1e5e46eae1 Merge pull request #4123 from Eugeny/dependabot/npm_and_yarn/ws-7.5.2
Bump ws from 7.4.4 to 7.5.2
2021-07-05 14:55:08 +02:00
Eugeny
d644eec56e Merge pull request #4092 from Eugeny/dependabot/npm_and_yarn/core-js-3.15.2
Bump core-js from 3.14.0 to 3.15.2
2021-07-05 14:54:51 +02:00
allcontributors[bot]
a656699afd docs: update .all-contributorsrc [skip ci] 2021-07-05 12:53:55 +00:00
allcontributors[bot]
93db8fa046 docs: update README.md [skip ci] 2021-07-05 12:53:54 +00:00
dependabot[bot]
05669046e9 Bump @types/webpack-env from 1.16.0 to 1.16.2
Bumps [@types/webpack-env](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/webpack-env) from 1.16.0 to 1.16.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/webpack-env)

---
updated-dependencies:
- dependency-name: "@types/webpack-env"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-05 04:06:00 +00:00
Eugene Pankov
025d2d1748 fixed relative symlink resolution - fixes #4119 2021-07-04 19:35:27 +02:00
Eugene Pankov
e17ba8c351 move createSession() into session 2021-07-04 17:11:21 +02:00
dependabot[bot]
d3dee44475 Bump webpack from 5.41.0 to 5.42.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.41.0 to 5.42.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.41.0...v5.42.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 14:54:10 +00:00
dependabot[bot]
0f0699d46a Bump @ng-bootstrap/ng-bootstrap from 9.1.1 to 10.0.0 in /app
Bumps [@ng-bootstrap/ng-bootstrap](https://github.com/ng-bootstrap/ng-bootstrap) from 9.1.1 to 10.0.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/9.1.1...10.0.0)

---
updated-dependencies:
- dependency-name: "@ng-bootstrap/ng-bootstrap"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 14:51:49 +00:00
dependabot[bot]
b7540e59a8 Bump ws from 7.4.4 to 7.5.2
Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.5.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.4...7.5.2)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 14:50:07 +00:00
Eugene Pankov
827345d899 added a telnet client - fixes #760 2021-07-04 16:48:48 +02:00
Eugene Pankov
59de67ca58 artifact names 2021-07-04 16:19:11 +02:00
Eugene Pankov
ccad826ca9 updated README links 2021-07-04 16:18:30 +02:00
dependabot[bot]
838acc0a23 Bump core-js from 3.14.0 to 3.15.2
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.14.0 to 3.15.2.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.15.2/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 13:15:14 +00:00
dependabot[bot]
804ae44ec8 Bump electron from 13.1.4 to 13.1.5
Bumps [electron](https://github.com/electron/electron) from 13.1.4 to 13.1.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.4...v13.1.5)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 13:13:52 +00:00
dependabot[bot]
5f04c3b74b Bump utils-decorators from 1.8.3 to 1.10.0 in /tabby-terminal
Bumps [utils-decorators](https://github.com/vlio20/utils-decorators) from 1.8.3 to 1.10.0.
- [Release notes](https://github.com/vlio20/utils-decorators/releases)
- [Commits](https://github.com/vlio20/utils-decorators/commits/1.10.0)

---
updated-dependencies:
- dependency-name: utils-decorators
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 13:10:28 +00:00
dependabot[bot]
4afd49e38c Bump utils-decorators from 1.8.3 to 1.10.0 in /tabby-local
Bumps [utils-decorators](https://github.com/vlio20/utils-decorators) from 1.8.3 to 1.10.0.
- [Release notes](https://github.com/vlio20/utils-decorators/releases)
- [Commits](https://github.com/vlio20/utils-decorators/commits/1.10.0)

---
updated-dependencies:
- dependency-name: utils-decorators
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 13:10:21 +00:00
dependabot[bot]
ba32c69001 Bump utils-decorators from 1.8.3 to 1.10.0 in /tabby-settings
Bumps [utils-decorators](https://github.com/vlio20/utils-decorators) from 1.8.3 to 1.10.0.
- [Release notes](https://github.com/vlio20/utils-decorators/releases)
- [Commits](https://github.com/vlio20/utils-decorators/commits/1.10.0)

---
updated-dependencies:
- dependency-name: utils-decorators
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 13:10:04 +00:00
dependabot[bot]
e9a3947488 Bump actions/setup-node from 2.1.5 to 2.2.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.1.5 to 2.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2.1.5...v2.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-04 13:09:55 +00:00
Eugene Pankov
b2f4b44123 workflow update 2021-07-04 15:09:34 +02:00
Eugene Pankov
f4eacc1d66 build workflow update 2021-07-04 15:06:27 +02:00
Eugene Pankov
9155104662 moved stream processing into tabby-terminal 2021-07-04 14:05:25 +02:00
Eugene Pankov
cbbd38ca83 lint 2021-07-04 14:05:13 +02:00
Eugene Pankov
e5cf72e79b context menu dep fix 2021-07-04 14:04:40 +02:00
Eugene Pankov
a71d9c0727 fixed default profile names 2021-07-04 13:47:54 +02:00
Eugene Pankov
26e2c60265 option to always ask for baud rate 2021-07-04 13:47:38 +02:00
Eugene Pankov
a5a0546e68 config migration fix 2021-07-04 13:06:00 +02:00
Eugene Pankov
92b34fbc08 new profile system 2021-07-04 12:23:27 +02:00
Eugene Pankov
38b7e44f64 updated plugin links 2021-07-02 00:39:27 +02:00
Eugene Pankov
3aa957a3f5 updated to-string-loader 2021-07-02 00:39:17 +02:00
394 changed files with 13763 additions and 13474 deletions

View File

@@ -406,6 +406,96 @@
"contributions": [
"design"
]
},
{
"login": "logicmachine123",
"name": "Logic Machine",
"avatar_url": "https://avatars.githubusercontent.com/u/63876444?v=4",
"profile": "https://git.io/JnP49",
"contributions": [
"doc"
]
},
{
"login": "cypherbits",
"name": "cypherbits",
"avatar_url": "https://avatars.githubusercontent.com/u/10424900?v=4",
"profile": "https://github.com/cypherbits",
"contributions": [
"doc"
]
},
{
"login": "KingMob",
"name": "Matthew Davidson",
"avatar_url": "https://avatars.githubusercontent.com/u/946421?v=4",
"profile": "https://modulolotus.net",
"contributions": [
"code"
]
},
{
"login": "al-wi",
"name": "Alexander Wiedemann",
"avatar_url": "https://avatars.githubusercontent.com/u/11092199?v=4",
"profile": "https://github.com/al-wi",
"contributions": [
"code"
]
},
{
"login": "BoYeonJang",
"name": "장보연",
"avatar_url": "https://avatars.githubusercontent.com/u/59506394?v=4",
"profile": "https://www.notion.so/3d45c6bd2cbd4f938873a4bd12e23375",
"contributions": [
"doc"
]
},
{
"login": "Me1onRind",
"name": "zZ",
"avatar_url": "https://avatars.githubusercontent.com/u/19531270?v=4",
"profile": "https://github.com/Me1onRind",
"contributions": [
"code"
]
},
{
"login": "tainoNZ",
"name": "Aaron Davison",
"avatar_url": "https://avatars.githubusercontent.com/u/49261322?v=4",
"profile": "https://github.com/tainoNZ",
"contributions": [
"code"
]
},
{
"login": "composer404",
"name": "Przemyslaw Kozik",
"avatar_url": "https://avatars.githubusercontent.com/u/58251560?v=4",
"profile": "https://github.com/composer404",
"contributions": [
"design"
]
},
{
"login": "highfredo",
"name": "Alfredo Arellano de la Fuente",
"avatar_url": "https://avatars.githubusercontent.com/u/5951524?v=4",
"profile": "https://github.com/highfredo",
"contributions": [
"code"
]
},
{
"login": "NessunKim",
"name": "MH Kim",
"avatar_url": "https://avatars.githubusercontent.com/u/12974079?v=4",
"profile": "https://github.com/NessunKim",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,

View File

@@ -36,7 +36,9 @@ rules:
'@typescript-eslint/prefer-readonly': off
'@typescript-eslint/require-await': off
'@typescript-eslint/strict-boolean-expressions': off
'@typescript-eslint/no-misused-promises': off
'@typescript-eslint/no-misused-promises':
- error
- checksVoidReturn: false
'@typescript-eslint/typedef': off
'@typescript-eslint/consistent-type-imports': off
'@typescript-eslint/sort-type-union-intersection-members': off
@@ -95,7 +97,9 @@ rules:
- error
- single
- allowTemplateLiterals: true
'@typescript-eslint/no-confusing-void-expression': off
'@typescript-eslint/no-confusing-void-expression':
- error
- ignoreArrowShorthand: true
'@typescript-eslint/no-non-null-assertion': off
'@typescript-eslint/no-unnecessary-condition':
- error
@@ -116,3 +120,9 @@ rules:
'@typescript-eslint/no-var-requires': off
'@typescript-eslint/no-unsafe-argument': off
'@typescript-eslint/restrict-plus-operands': off
'@typescript-eslint/space-infix-ops': off
'@typescript-eslint/no-type-alias':
- error
- allowAliases: in-unions-and-intersections
allowLiterals: always
allowCallbacks: always

View File

@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

23
.github/ISSUE_TEMPLATE/issue-report.md vendored Normal file
View File

@@ -0,0 +1,23 @@
---
name: Issue report
about: Report a problem
title: ''
labels: 'T: Bug'
assignees: ''
---
<!--
Before submitting an issue, make sure that:
* You're running the latest Tabby version: https://github.com/Eugeny/tabby/releases
* You've searched the existing issues: https://github.com/Eugeny/tabby/issues
* Your problem is not caused by third-party plugins (disable _third-party_ plugins, restart and try to reproduce the problem).
*Reports are accepted in English ONLY.*
-->
**Describe the problem**:
[A clear and concise description of what the bug is.]
**To Reproduce**:
[Steps to reproduce the behavior]

313
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,313 @@
name: Package-Build
on: [push, pull_request]
jobs:
Lint:
runs-on: macos-11.0
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.5.0
with:
node-version: 16
- name: Install deps
run: |
npm i -g yarn@1.19.1
cd app
yarn
cd ..
rm app/node_modules/.yarn-integrity
yarn
- name: Build typings
run: yarn run build:typings
- name: Lint
run: yarn run lint
macOS-Build:
runs-on: macos-11.0
needs: Lint
strategy:
matrix:
include:
- arch: x86_64
- arch: arm64
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.5.0
with:
node-version: 16
- name: Install deps
run: |
sudo npm i -g yarn@1.22.1
cd app
yarn
cd ..
rm app/node_modules/.yarn-integrity
yarn
- name: Build native deps
run: scripts/build-native.js
env:
ARCH: ${{matrix.arch}}
- name: Build native deps
run: |
rm -rf app/node_modules/cpu-features
rm -rf app/node_modules/ssh2/crypto/build
if: ${{ matrix.arch == 'arm64' }}
- name: Webpack
run: yarn run build
- name: Prepackage plugins
run: scripts/prepackage-plugins.js
env:
ARCH: ${{matrix.arch}}
- run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js
- name: Build and sign packages
run: scripts/build-macos.js
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
ARCH: ${{matrix.arch}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
USE_HARD_LINKS: false
# DEBUG: electron-builder,electron-builder:*
- name: Build packages without signing
run: scripts/build-macos.js
if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
env:
ARCH: ${{matrix.arch}}
# DEBUG: electron-builder,electron-builder:*
- name: Upload symbols
run: |
sudo npm install -g @sentry/cli --unsafe-perm
./scripts/sentry-upload.js
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
- name: Package artifacts
run: |
mkdir artifact-pkg
mv dist/*.pkg artifact-pkg/
mkdir artifact-zip
mv dist/*.zip artifact-zip/
- uses: actions/upload-artifact@master
name: Upload PKG
with:
name: macOS .pkg (${{matrix.arch}})
path: artifact-pkg
- uses: actions/upload-artifact@master
name: Upload ZIP
with:
name: macOS .zip (${{matrix.arch}})
path: artifact-zip
Linux-Build:
runs-on: ubuntu-18.04 # build against an older glibc for compatibility
needs: Lint
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Install Node
uses: actions/setup-node@v2.5.0
with:
node-version: 16
- name: Install deps
run: |
sudo apt-get update
sudo apt-get install libarchive-tools zsh
npm i -g yarn@1.19.1
cd app
yarn
cd ..
rm app/node_modules/.yarn-integrity
yarn
- name: Build native deps
run: scripts/build-native.js
- name: Webpack
run: yarn run build
- name: Prepackage plugins
run: scripts/prepackage-plugins.js
- name: Build packages
run: scripts/build-linux.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
USE_HARD_LINKS: false
# DEBUG: electron-builder,electron-builder:*
- name: Build web resources
run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
- name: Upload symbols
run: |
sudo npm install -g @sentry/cli --unsafe-perm
./scripts/sentry-upload.js
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
- name: Upload packages to packagecloud.io
uses: TykTechnologies/packagecloud-action@main
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
with:
repo: 'eugeny/tabby'
dir: 'dist'
- name: Package artifacts
run: |
mkdir artifact-deb
mv dist/*.deb artifact-deb/ || true
mkdir artifact-rpm
mv dist/*.rpm artifact-rpm/ || true
mkdir artifact-pacman
mv dist/*.pacman artifact-pacman/ || true
mkdir artifact-snap
mv dist/*.snap artifact-snap/ || true
mkdir artifact-tar.gz
mv dist/*.tar.gz artifact-tar.gz/ || true
mkdir artifact-web
mv tabby-web.tar.gz artifact-web/ || true
- uses: actions/upload-artifact@master
name: Upload DEB
with:
name: Linux DEB
path: artifact-deb
- uses: actions/upload-artifact@master
name: Upload RPM
with:
name: Linux RPM
path: artifact-rpm
- uses: actions/upload-artifact@master
name: Upload Pacman Package
with:
name: Linux Pacman
path: artifact-pacman
- uses: actions/upload-artifact@master
name: Upload Snap
with:
name: Linux Snap
path: artifact-snap
- uses: actions/upload-artifact@master
name: Upload Linux tarball
with:
name: Linux tarball
path: artifact-tar.gz
- uses: actions/upload-artifact@master
name: Upload web tarball
with:
name: Web tarball
path: artifact-web
Windows-Build:
runs-on: windows-2022
needs: Lint
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.5.0
with:
node-version: 16
- name: Update node-gyp
run: |
npm install --global node-gyp@8.4.1
npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"}
- name: Build
shell: powershell
run: |
npm i -g yarn@1.19.1
yarn
node scripts/build-native.js
yarn run build
node scripts/prepackage-plugins.js
- name: Build and sign packages
run: node scripts/build-windows.js
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
DEBUG: electron-builder,electron-builder:*
- name: Build packages without signing
run: node scripts/build-windows.js
if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
- name: Upload symbols
run: |
npm install @sentry/cli
node scripts/sentry-upload.js
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
- name: Package artifacts
run: |
mkdir artifact-setup
mv dist/*-setup.exe artifact-setup/
mkdir artifact-portable
mv dist/*-portable.zip artifact-portable/
- uses: actions/upload-artifact@master
name: Upload installer
with:
name: Windows installer
path: artifact-setup
- uses: actions/upload-artifact@master
name: Upload portable build
with:
name: Windows portable build
path: artifact-portable

70
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '26 7 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@@ -2,7 +2,7 @@ name: Docs
on: push
jobs:
build:
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }}
steps:
@@ -12,14 +12,12 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.1.5
uses: actions/setup-node@v2.5.0
with:
node-version: 14
- name: Build
run: |
eval $(ssh-agent -s)
ssh-add <(echo "$DOCS_PRIVATE_KEY")
yarn cache clean
cd app
yarn
@@ -28,7 +26,13 @@ jobs:
yarn
yarn run build:typings
yarn run docs
rsync -e "ssh -o StrictHostKeyChecking=no" -arv docs/api/ root@ajenti.org:/srv/terminus-docs/
env:
DOCS_PRIVATE_KEY: ${{ secrets.DOCS_PRIVATE_KEY }}
- uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_TABBY_DOCS }}'
channelId: live
projectId: tabby-docs

View File

@@ -1,31 +0,0 @@
name: Lint
on: [push, pull_request]
jobs:
build:
runs-on: macOS-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.1.5
with:
node-version: 14
- name: Install deps
run: |
npm i -g yarn@1.19.1
cd app
yarn
cd ..
rm app/node_modules/.yarn-integrity
yarn
- name: Build typings
run: yarn run build:typings
- name: Lint
run: yarn run lint

View File

@@ -1,107 +0,0 @@
name: Linux Build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Install Node
uses: actions/setup-node@v2.1.5
with:
node-version: 14
- name: Install deps
run: |
sudo apt-get update
sudo apt-get install bsdtar zsh
npm i -g yarn@1.19.1
cd app
yarn
cd ..
rm app/node_modules/.yarn-integrity
yarn
npm run patch
- name: Build native deps
run: scripts/build-native.js
- name: Webpack
run: yarn run build
- name: Prepackage plugins
run: scripts/prepackage-plugins.js
- name: Build packages
run: scripts/build-linux.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
USE_HARD_LINKS: false
# DEBUG: electron-builder,electron-builder:*
- name: Build web resources
run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
- name: Upload symbols
run: |
sudo npm install -g @sentry/cli --unsafe-perm
./scripts/sentry-upload.js
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
- name: Package artifacts
run: |
mkdir artifact-deb
mv dist/*.deb artifact-deb/ || true
mkdir artifact-rpm
mv dist/*.rpm artifact-rpm/ || true
mkdir artifact-pacman
mv dist/*.pacman artifact-pacman/ || true
mkdir artifact-snap
mv dist/*.snap artifact-snap/ || true
mkdir artifact-tar.gz
mv dist/*.tar.gz artifact-tar.gz/ || true
mkdir artifact-web
mv tabby-web.tar.gz artifact-web/ || true
- uses: actions/upload-artifact@master
name: Upload DEB
with:
name: Linux DEB
path: artifact-deb
- uses: actions/upload-artifact@master
name: Upload RPM
with:
name: Linux RPM
path: artifact-rpm
- uses: actions/upload-artifact@master
name: Upload Pacman Package
with:
name: Linux Pacman
path: artifact-pacman
- uses: actions/upload-artifact@master
name: Upload Snap
with:
name: Linux Snap
path: artifact-snap
- uses: actions/upload-artifact@master
name: Upload Linux tarball
with:
name: Linux tarball
path: artifact-tar.gz
- uses: actions/upload-artifact@master
name: Upload web tarball
with:
name: Web tarball
path: artifact-web

View File

@@ -1,99 +0,0 @@
name: macOS Build
on: [push, pull_request]
jobs:
build:
runs-on: macos-11.0
strategy:
matrix:
include:
- arch: x86_64
- arch: arm64
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.1.5
with:
node-version: 14
- name: Install deps
run: |
sudo npm i -g yarn@1.22.1
cd app
yarn
cd ..
rm app/node_modules/.yarn-integrity
yarn
- name: Build native deps
run: scripts/build-native.js
env:
ARCH: ${{matrix.arch}}
- name: Build native deps
run: |
rm -rf app/node_modules/cpu-features
rm -rf app/node_modules/ssh2/crypto/build
if: ${{ matrix.arch == 'arm64' }}
- name: Webpack
run: yarn run build
- name: Prepackage plugins
run: scripts/prepackage-plugins.js
env:
ARCH: ${{matrix.arch}}
- run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js
- name: Build and sign packages
run: scripts/build-macos.js
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
ARCH: ${{matrix.arch}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
USE_HARD_LINKS: false
# DEBUG: electron-builder,electron-builder:*
- name: Build packages without signing
run: scripts/build-macos.js
if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
env:
ARCH: ${{matrix.arch}}
# DEBUG: electron-builder,electron-builder:*
- name: Upload symbols
run: |
sudo npm install -g @sentry/cli --unsafe-perm
./scripts/sentry-upload.js
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
- name: Package artifacts
run: |
mkdir artifact-pkg
mv dist/*.pkg artifact-pkg/
mkdir artifact-zip
mv dist/*.zip artifact-zip/
- uses: actions/upload-artifact@master
name: Upload PKG
with:
name: macOS .pkg (${{matrix.arch}})
path: artifact-pkg
- uses: actions/upload-artifact@master
name: Upload ZIP
with:
name: macOS .zip (${{matrix.arch}})
path: artifact-zip

19
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
---
name: "tagged-release"
on:
push:
tags:
- "v*"
jobs:
tagged-release:
name: "Tagged Release"
runs-on: "ubuntu-latest"
steps:
- uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
draft: true

View File

@@ -1,66 +0,0 @@
name: Windows Build
on: [push, pull_request]
jobs:
build:
runs-on: windows-2016
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
with:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v2.1.5
with:
node-version: 14
- name: Build
shell: powershell
run: |
npm i -g yarn@1.19.1
yarn
node scripts/build-native.js
yarn run build
node scripts/prepackage-plugins.js
- name: Build and sign packages
run: node scripts/build-windows.js
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CSC_KEY_PASSWORD }}
# DEBUG: electron-builder,electron-builder:*
- name: Build packages without signing
run: node scripts/build-windows.js
if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
- name: Upload symbols
run: |
npm install @sentry/cli
node scripts/sentry-upload.js
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
- name: Package artifacts
run: |
mkdir artifact-setup
mv dist/*-setup.exe artifact-setup/
mkdir artifact-portable
mv dist/*-portable.zip artifact-portable/
- uses: actions/upload-artifact@master
name: Upload installer
with:
name: Installer
path: artifact-setup
- uses: actions/upload-artifact@master
name: Upload portable build
with:
name: Portable build
path: artifact-portable

View File

@@ -15,8 +15,8 @@ yarn
```
```
# Linux (Debian here as an example)
sudo apt install libfontconfig-dev libsecret-1-dev bsdtar libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1
# Linux (Debian/Ubuntu here as an example)
sudo apt install libfontconfig-dev libsecret-1-dev libarchive-tools libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1 cmake
yarn
./scripts/build-native.js
```
@@ -145,4 +145,6 @@ export default class MyModule { }
See `tabby-core/src/api.ts`, `tabby-settings/src/api.ts`, `tabby-local/src/api.ts` and `tabby-terminal/src/api.ts` for the available extension points.
Also check out [the example plugin](https://github.com/Eugeny/tabby-clippy).
Publish your plugin on NPM with a `tabby-plugin` keyword to make it appear in the Plugin Manager.

217
README.ko-KR.md Normal file
View File

@@ -0,0 +1,217 @@
[![](docs/readme.png)](https://tabby.sh)
<p align="center">
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> &nbsp; <a href="https://nightly.link/Eugeny/tabby/workflows/build/master"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> &nbsp; <a href="https://matrix.to/#/#tabby-general:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/tabby-general:matrix.org?logo=matrix&style=for-the-badge&color=magenta"></a>
</p>
<p align="center">
<a href="https://ko-fi.com/J3J8KWTF">
<img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=2" width="150">
</a>
</p>
----
### 다운로드:
* [Latest release](https://github.com/Eugeny/tabby/releases/latest)
* [Repositories](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu-based](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM-based](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
* [Latest nightly build](https://nightly.link/Eugeny/tabby/workflows/build/master)
----
**Tabby** (구 **Terminus**)는 Windows, macOS 및 Linux용으로 뛰어난 구성의 터미널 에뮬레이터, SSH 및 시리얼 클라이언트입니다.
* 통합 SSH 클라이언트 및 연결 관리자
* 통합 시리얼 터미널
* 테마 및 색 구성표
* 전체 구성이 가능한 단축키 및 다중 코드 단축키
* 창 분할
* 이전 탭 사용을 기억
* PowerShell (및 PS Core), WSL, Git-Bash, Cygwin, Cmder 및 CMD 지원
* Zmodem을 통한 SSH 세션 간의 직접 파일 전송
* 2바이트 문자를 포함한 전체 유니코드 지원
* 빠르게 출력되는 것에 대해 휩쓸리지 않음
* 탭 완성을 포함한 Windows에서의 적절한 셸 환경 (Clink을 통해)
* SSH 시크릿 및 구성을 위한 통합 암호화 컨테이너
# 목차 <!-- omit in toc -->
- [Tabby는 무엇인가](#tabby는-무엇인가)
- [터미널 기능](#터미널-기능)
- [SSH 클라이언트](#ssh-클라이언트)
- [시리얼 터미널](#시리얼-터미널)
- [포터블](#포터블)
- [플러그인](#플러그인)
- [테마](#테마)
- [기여](#기여)
<a name="about"></a>
# Tabby는 무엇인가
* **Tabby는** Windows의 표준 터미널 (conhost), PowerShell ISE, PuTTY 또는 iTerm의 대안 프로그램입니다.
* **Tabby는** 새로운 셸이나 MinGW 또는 Cygwin을 대체하지 **않습니다**. 가볍지도 않습니다. - RAM 사용량이 중요한 경우, [Conemu](https://conemu.github.io) 또는 [Alacritty](https://github.com/jwilm/alacritty)를 고려하십시오.
<a name="terminal"></a>
# 터미널 기능
![](docs/readme-terminal.png)
* A V220 터미널 + 다양한 확장
* 여러 개의 분할 창 중첩
* 모든 측면에 탭이 위치함
* 전역 스폰 단축키가 있는 도킹 가능한 윈도우 ("Quake console")
* 진행률 탐지
* 프로세스 완료 시 알림
* 괄호 붙여넣기, 여러 줄 붙여넣기 경고
* 폰트 합자(ligatures)
* 커스텀 셸 프로필
* RMB 붙여넣기 및 복사 선택 옵션 (PuTTY 스타일)
<a name="ssh"></a>
# SSH 클라이언트
![](docs/readme-ssh.png)
* 연결 관리자가 있는 SSH2 클라이언트
* X11 및 포트 포워딩
* 자동 jump 호스트 관리
* 에이전트 전달 (Pageant 및 Windows 기본 OpenSSH 에이전트 포함)
* 로그인 스크립트
<a name="serial"></a>
# 시리얼 터미널
* 연결 저장
* Readline 입력 지원
* 선택적 hex byte별 입력 및 hexdump 출력
* 개행 변환
* 자동 재접속
<a name="portable"></a>
# 포터블
`Tabby.exe`가 있는 동일한 위치에 `data` 폴더를 생성하면 Windows에서 Tabby가 포터블 앱으로 실행됩니다.
<a name="plugins"></a>
# 플러그인
플러그인과 테마는 Tabby 내부의 설정에서 직접 설치할 수 있습니다.
* [clickable-links](https://github.com/Eugeny/tabby-clickable-links) - m터미널의 경로 및 URL을 클릭 가능하게
* [docker](https://github.com/Eugeny/tabby-docker) - Docker 컨테이너에 연결
* [title-control](https://github.com/kbjr/terminus-title-control) - 접두사, 접미사 및/또는 문자열 제거를 제공하여 터미널 탭의 제목을 수정
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - 하나 또는 모든 터미널 탭에 신속한 명령 전송
* [save-output](https://github.com/Eugeny/tabby-save-output) - 터미널 출력을 파일에 기록
* [sync-config](https://github.com/starxg/terminus-sync-config) - 구성을 Gist 또는 Gitee에 동기화
* [clippy](https://github.com/Eugeny/tabby-clippy) - 항상 당신을 귀찮게 하는 예제 플러그인
* [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - 주어진 구성을 기반으로 사용자 정의 작업 공간 프로필을 생성할 수 있습니다
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - Tabby의 탭에서 선택한 텍스트로 기본 시스템 브라우저를 엽니다
<a name="themes"></a>
# 테마
* [hype](https://github.com/Eugeny/tabby-theme-hype) - Hyper에서 영감을 받은 테마
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - Tabby를 위해 여유로움을 제공하는 테마
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
* [altair](https://github.com/yxuko/terminus-altair)
# 스폰서 <!-- omit in toc -->
[![](https://assets-production.packagecloud.io/assets/packagecloud-logo-light-scaled-26ce8e96060fddf74afbd4445e63ba35590d4aaa56edc98495bb390ef3cae0ae.png)](https://packagecloud.io)
[**packagecloud**](https://packagecloud.io)가 무료 Debian/RPM 저장소 호스팅을 제공하였습니다.
<a name="contributing"></a>
# 기여
Pull requests and plugins are welcome!
프로젝트 배치 방법에 대한 자세한 내용과 매우 간단한 플러그인 개발 튜토리얼은 [HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md) 및 [API docs](https://docs.tabby.sh/)를 참조하십시오.
---
<a name="contributors"></a>
여기있는 멋진 사람들에게 진심으로 감사합니다. ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="http://www.russellmyers.com"><img src="https://avatars2.githubusercontent.com/u/184085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Russell Myers</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mezner" title="Code">💻</a></td>
<td align="center"><a href="http://www.morwire.com"><img src="https://avatars1.githubusercontent.com/u/3991658?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Austin Warren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ehwarren" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Drachenkaetzchen"><img src="https://avatars1.githubusercontent.com/u/162974?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Felicia Hummel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Drachenkaetzchen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mikemaccana"><img src="https://avatars2.githubusercontent.com/u/172594?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike MacCana</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mikemaccana" title="Tests">⚠️</a> <a href="#design-mikemaccana" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/yxuko"><img src="https://avatars1.githubusercontent.com/u/1786317?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yacine Kanzari</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yxuko" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/BBJip"><img src="https://avatars2.githubusercontent.com/u/32908927?v=4?s=100" width="100px;" alt=""/><br /><sub><b>BBJip</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BBJip" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Futagirl"><img src="https://avatars2.githubusercontent.com/u/33533958?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Futagirl</b></sub></a><br /><a href="#design-Futagirl" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://www.levrik.io"><img src="https://avatars3.githubusercontent.com/u/9491603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Levin Rickert</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=levrik" title="Code">💻</a></td>
<td align="center"><a href="https://kwonoj.github.io"><img src="https://avatars2.githubusercontent.com/u/1210596?v=4?s=100" width="100px;" alt=""/><br /><sub><b>OJ Kwon</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=kwonoj" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Domain"><img src="https://avatars2.githubusercontent.com/u/903197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>domain</b></sub></a><br /><a href="#plugin-Domain" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Domain" title="Code">💻</a></td>
<td align="center"><a href="http://www.jbrumond.me"><img src="https://avatars1.githubusercontent.com/u/195127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>James Brumond</b></sub></a><br /><a href="#plugin-kbjr" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://www.growingwiththeweb.com"><img src="https://avatars0.githubusercontent.com/u/2193314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Imms</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Code">💻</a> <a href="#plugin-Tyriar" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/baflo"><img src="https://avatars2.githubusercontent.com/u/834350?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Florian Bachmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=baflo" title="Code">💻</a></td>
<td align="center"><a href="http://michael-kuehnel.de"><img src="https://avatars2.githubusercontent.com/u/441011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kühnel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mischah" title="Code">💻</a> <a href="#design-mischah" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/NieLeben"><img src="https://avatars3.githubusercontent.com/u/47182955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tilmann Meyer</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NieLeben" title="Code">💻</a></td>
<td align="center"><a href="http://www.jubeat.net"><img src="https://avatars3.githubusercontent.com/u/11289158?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PM Extra</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/issues?q=author%3APMExtra" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://jjuhas.keybase.pub//"><img src="https://avatars1.githubusercontent.com/u/6438760?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=IgnusG" title="Code">💻</a></td>
<td align="center"><a href="https://hans-koch.me"><img src="https://avatars0.githubusercontent.com/u/1093709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hans Koch</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hammster" title="Code">💻</a></td>
<td align="center"><a href="http://thepuzzlemaker.info"><img src="https://avatars3.githubusercontent.com/u/12666617?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dak Smyth</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ThePuzzlemaker" title="Code">💻</a></td>
<td align="center"><a href="http://yfwz100.github.io"><img src="https://avatars2.githubusercontent.com/u/983211?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wang Zhi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yfwz100" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jack1142"><img src="https://avatars0.githubusercontent.com/u/6032823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jack1142</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=jack1142" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/hdougie"><img src="https://avatars1.githubusercontent.com/u/450799?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Howie Douglas</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hdougie" title="Code">💻</a></td>
<td align="center"><a href="https://chriskaczor.com"><img src="https://avatars2.githubusercontent.com/u/180906?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Kaczor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ckaczor" title="Code">💻</a></td>
<td align="center"><a href="https://www.boxmein.net"><img src="https://avatars1.githubusercontent.com/u/358714?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johannes Kadak</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=boxmein" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/LeSeulArtichaut"><img src="https://avatars1.githubusercontent.com/u/38361244?v=4?s=100" width="100px;" alt=""/><br /><sub><b>LeSeulArtichaut</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LeSeulArtichaut" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/CyrilTaylor"><img src="https://avatars0.githubusercontent.com/u/12631466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cyril Taylor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=CyrilTaylor" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/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?s=100" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=orin220444" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Goobles"><img src="https://avatars3.githubusercontent.com/u/8776771?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gobius Dolhain</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/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?s=100" width="100px;" alt=""/><br /><sub><b>Gwilherm Folliot</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/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?s=100" width="100px;" alt=""/><br /><sub><b>Dmitry Pronin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/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?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan Beverley</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=JonathanBeverley" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/zend"><img src="https://avatars1.githubusercontent.com/u/25160?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zenghai Liang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=zend" title="Code">💻</a></td>
<td align="center"><a href="https://about.me/matishadow"><img src="https://avatars0.githubusercontent.com/u/9083085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mateusz Tracz</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=matishadow" title="Code">💻</a></td>
<td align="center"><a href="https://zergpool.com"><img src="https://avatars3.githubusercontent.com/u/36234677?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pinpin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=pinpins" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/TakuroOnoda"><img src="https://avatars0.githubusercontent.com/u/1407926?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Takuro Onoda</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TakuroOnoda" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/frauhottelmann"><img src="https://avatars2.githubusercontent.com/u/902705?v=4?s=100" width="100px;" alt=""/><br /><sub><b>frauhottelmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=frauhottelmann" title="Code">💻</a></td>
<td align="center"><a href="http://patalong.pl"><img src="https://avatars.githubusercontent.com/u/29167842?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piotr Patalong</b></sub></a><br /><a href="#design-VectorKappa" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/clarkwang"><img src="https://avatars.githubusercontent.com/u/157076?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Clark Wang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=clarkwang" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/iamchating"><img src="https://avatars.githubusercontent.com/u/7088153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>iamchating</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=iamchating" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/starxg"><img src="https://avatars.githubusercontent.com/u/34997494?v=4?s=100" width="100px;" alt=""/><br /><sub><b>starxg</b></sub></a><br /><a href="#plugin-starxg" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://hashnote.net/"><img src="https://avatars.githubusercontent.com/u/546312?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alisue</b></sub></a><br /><a href="#design-lambdalisue" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ydcool"><img src="https://avatars.githubusercontent.com/u/5668295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dominic Yin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ydcool" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bdr99"><img src="https://avatars.githubusercontent.com/u/2292715?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Rothweiler</b></sub></a><br /><a href="#design-bdr99" title="Design">🎨</a></td>
<td align="center"><a href="https://git.io/JnP49"><img src="https://avatars.githubusercontent.com/u/63876444?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Logic Machine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=logicmachine123" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cypherbits"><img src="https://avatars.githubusercontent.com/u/10424900?v=4?s=100" width="100px;" alt=""/><br /><sub><b>cypherbits</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=cypherbits" title="Documentation">📖</a></td>
<td align="center"><a href="https://modulolotus.net"><img src="https://avatars.githubusercontent.com/u/946421?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Davidson</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=KingMob" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/al-wi"><img src="https://avatars.githubusercontent.com/u/11092199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexander Wiedemann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=al-wi" title="Code">💻</a></td>
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
이 프로젝트는 [모든 기여자](https://github.com/all-contributors/all-contributors)의 규격을 따릅니다. 어떠한 종류의 기여도 모두 환영합니다!
<img src="https://ga-beacon.appspot.com/UA-3278102-18/github/readme" width="1"/>

View File

@@ -1,38 +1,49 @@
![](docs/readme.png)
[![](docs/readme.png)](https://tabby.sh)
<p align="center">
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=RELEASE&logo=github&style=for-the-badge"></a> <a href="https://nightly.link/Eugeny/tabby/workflows/windows/master"><img src="https://shields.io/badge/-Nightly-blue?logo=windows&style=for-the-badge"/></a> <a href="https://nightly.link/Eugeny/tabby/workflows/macos/master"><img src="https://shields.io/badge/-Nightly-black?logo=apple&style=for-the-badge"/></a> <a href="https://nightly.link/Eugeny/tabby/workflows/linux/master"><img src="https://shields.io/badge/-Nightly-orange?logo=linux&style=for-the-badge"/></a> <a href="https://gitter.im/terminus-terminal/community"><img alt="Gitter" src="https://img.shields.io/gitter/room/terminus/community.svg?color=magenta&logo=gitter&style=for-the-badge"></a>
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> &nbsp; <a href="https://nightly.link/Eugeny/tabby/workflows/build/master"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> &nbsp; <a href="https://matrix.to/#/#tabby-general:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/tabby-general:matrix.org?logo=matrix&style=for-the-badge&color=magenta"></a> &nbsp; <a href="https://twitter.com/eugeeeeny"><img alt="Twitter" src="https://shields.io/badge/Subscribe-News-blue?logo=twitter&style=for-the-badge&color=blue"></a>
</p>
<p align="center">
<a href="https://ko-fi.com/J3J8KWTF">
<img src="https://ko-fi.com/img/githubbutton_sm.svg">
<img src="https://cdn.ko-fi.com/cdn/kofi3.png?v=2" width="150">
</a>
</p>
----
**Tabby** (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux
### Downloads:
* Integrated SSH client and connection manager
* [Latest release](https://github.com/Eugeny/tabby/releases/latest)
* [Repositories](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu-based](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM-based](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
* [Latest nightly build](https://nightly.link/Eugeny/tabby/workflows/build/master)
<br/>
<p align="center">
This README is also available in: <a href="./README.ko-KR.md">Korean</a>
</p>
----
[**Tabby**](https://tabby.sh) (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux
* Integrated SSH and Telnet client and connection manager
* Integrated serial terminal
* Theming and color schemes
* Fully configurable shortcuts and multi-chord shortcuts
* Split panes
* Remembers your tabs
* PowerShell (and PS Core), WSL, Git-Bash, Cygwin, Cmder and CMD support
* PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder and CMD support
* Direct file transfer from/to SSH sessions via Zmodem
* Full Unicode support including double-width characters
* Doesn't choke on fast-flowing outputs
* Proper shell experience on Windows including tab completion (via Clink)
* Integrated encrypted container for SSH secrets and configuration
* SSH, SFTP and Telnet client available as a [web app](https://tabby.sh/app) (also [self-hosted](https://github.com/Eugeny/tabby-web)).
---
# Contents <!-- omit in toc -->
# Contents
- [Contents](#contents)
- [What Tabby is and isn't](#what-tabby-is-and-isnt)
- [Terminal features](#terminal-features)
- [SSH Client](#ssh-client)
@@ -43,13 +54,15 @@
- [Contributing](#contributing)
<a name="about"></a>
# What Tabby is and isn't
* **Tabby is** an alternative to Windows' standard terminal (conhost), PowerShell ISE, PuTTY or iTerm
* **Tabby is** an alternative to Windows' standard terminal (conhost), PowerShell ISE, PuTTY, macOS Terminal.app and iTerm
* **Tabby is not** a new shell or a MinGW or Cygwin replacement. Neither is it lightweight - if RAM usage is of importance, consider [Conemu](https://conemu.github.io) or [Alacritty](https://github.com/jwilm/alacritty)
<a name="terminal"></a>
# Terminal features
![](docs/readme-terminal.png)
@@ -95,28 +108,37 @@ Tabby will run as a portable app on Windows, if you create a `data` folder in th
Plugins and themes can be installed directly from the Settings view inside Tabby.
* [clickable-links](https://github.com/Eugeny/terminus-clickable-links) - makes paths and URLs in the terminal clickable
* [title-control](https://github.com/kbjr/terminus-title-control) - allows modifying the title of the terminal tabs by providing a prefix, suffix, and/or strings to be removed
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - quickly send commands to one or all terminal tabs
* [save-output](https://github.com/Eugeny/terminus-save-output) - record terminal output into a file
* [scrollbar](https://github.com/kbjr/terminus-scrollbar) - adds a scrollbar to hterm tabs
* [sync-config](https://github.com/starxg/terminus-sync-config) - sync the config to Gist or Gitee
* [clickable-links](https://github.com/Eugeny/tabby-clickable-links) - makes paths and URLs in the terminal clickable
* [docker](https://github.com/Eugeny/tabby-docker) - connect to Docker containers
* [title-control](https://github.com/kbjr/terminus-title-control) - allows modifying the title of the terminal tabs by providing a prefix, suffix, and/or strings to be removed
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - quickly send commands to one or all terminal tabs
* [save-output](https://github.com/Eugeny/tabby-save-output) - record terminal output into a file
* [sync-config](https://github.com/starxg/terminus-sync-config) - sync the config to Gist or Gitee
* [clippy](https://github.com/Eugeny/tabby-clippy) - an example plugin which annoys you all the time
* [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - allows creating custom workspace profiles based on the given config
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - opens default system browser with a text selected from the Tabby's tab
<a name="themes"></a>
# Themes
* [hype](https://github.com/Eugeny/terminus-theme-hype) - a Hyper inspired theme
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - the Relaxed theme for Tabby
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
* [altair](https://github.com/yxuko/terminus-altair)
* [hype](https://github.com/Eugeny/tabby-theme-hype) - a Hyper inspired theme
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - the Relaxed theme for Tabby
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
* [altair](https://github.com/yxuko/terminus-altair)
# Sponsors <!-- omit in toc -->
[![](https://assets-production.packagecloud.io/assets/packagecloud-logo-light-scaled-26ce8e96060fddf74afbd4445e63ba35590d4aaa56edc98495bb390ef3cae0ae.png)](https://packagecloud.io)
[**packagecloud**](https://packagecloud.io) has provided free Debian/RPM repository hosting
<a name="contributing"></a>
# Contributing
Pull requests and plugins are welcome!
See [HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md) and [API docs](http://ajenti.org/terminus-docs/) for information of how the project is laid out, and a very brief plugin development tutorial.
See [HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md) and [API docs](https://docs.tabby.sh/) for information of how the project is laid out, and a very brief plugin development tutorial.
---
<a name="contributors"></a>
@@ -184,6 +206,18 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<tr>
<td align="center"><a href="https://github.com/ydcool"><img src="https://avatars.githubusercontent.com/u/5668295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dominic Yin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ydcool" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bdr99"><img src="https://avatars.githubusercontent.com/u/2292715?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Rothweiler</b></sub></a><br /><a href="#design-bdr99" title="Design">🎨</a></td>
<td align="center"><a href="https://git.io/JnP49"><img src="https://avatars.githubusercontent.com/u/63876444?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Logic Machine</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=logicmachine123" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/cypherbits"><img src="https://avatars.githubusercontent.com/u/10424900?v=4?s=100" width="100px;" alt=""/><br /><sub><b>cypherbits</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=cypherbits" title="Documentation">📖</a></td>
<td align="center"><a href="https://modulolotus.net"><img src="https://avatars.githubusercontent.com/u/946421?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthew Davidson</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=KingMob" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/al-wi"><img src="https://avatars.githubusercontent.com/u/11092199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexander Wiedemann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=al-wi" title="Code">💻</a></td>
<td align="center"><a href="https://www.notion.so/3d45c6bd2cbd4f938873a4bd12e23375"><img src="https://avatars.githubusercontent.com/u/59506394?v=4?s=100" width="100px;" alt=""/><br /><sub><b>장보연</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BoYeonJang" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Me1onRind"><img src="https://avatars.githubusercontent.com/u/19531270?v=4?s=100" width="100px;" alt=""/><br /><sub><b>zZ</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Me1onRind" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/tainoNZ"><img src="https://avatars.githubusercontent.com/u/49261322?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aaron Davison</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=tainoNZ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/composer404"><img src="https://avatars.githubusercontent.com/u/58251560?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Przemyslaw Kozik</b></sub></a><br /><a href="#design-composer404" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/highfredo"><img src="https://avatars.githubusercontent.com/u/5951524?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alfredo Arellano de la Fuente</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=highfredo" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/NessunKim"><img src="https://avatars.githubusercontent.com/u/12974079?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MH Kim</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NessunKim" title="Code">💻</a></td>
</tr>
</table>
@@ -193,3 +227,5 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
<img src="https://ga-beacon.appspot.com/UA-3278102-18/github/readme" width="1"/>

View File

@@ -1,8 +1,10 @@
import { app, ipcMain, Menu, Tray, shell, screen, globalShortcut, MenuItemConstructorOptions } from 'electron'
import * as promiseIpc from 'electron-promise-ipc'
import promiseIpc from 'electron-promise-ipc'
import * as remote from '@electron/remote/main'
import { exec } from 'mz/child_process'
import * as path from 'path'
import * as fs from 'fs'
import { Subject, throttleTime } from 'rxjs'
import { loadConfig } from './config'
import { Window, WindowOptions } from './window'
@@ -19,6 +21,9 @@ export class Application {
private tray?: Tray
private ptyManager = new PTYManager()
private windows: Window[] = []
private globalHotkey$ = new Subject<void>()
private quitRequested = false
private configStore: any
userPluginsPath: string
constructor () {
@@ -28,17 +33,20 @@ export class Application {
ipcMain.on('app:config-change', (_event, config) => {
this.broadcast('host:config-change', config)
this.configStore = config
})
ipcMain.on('app:register-global-hotkey', (_event, specs) => {
globalShortcut.unregisterAll()
for (const spec of specs) {
globalShortcut.register(spec, () => {
this.onGlobalHotkey()
})
globalShortcut.register(spec, () => this.globalHotkey$.next())
}
})
this.globalHotkey$.pipe(throttleTime(100)).subscribe(() => {
this.onGlobalHotkey()
})
;(promiseIpc as any).on('plugin-manager:install', (name, version) => {
return pluginManager.install(this.userPluginsPath, name, version)
})
@@ -47,13 +55,25 @@ export class Application {
return pluginManager.uninstall(this.userPluginsPath, name)
})
const configData = loadConfig()
;(promiseIpc as any).on('get-default-mac-shell', async () => {
try {
return (await exec(`/usr/bin/dscl . -read /Users/${process.env.LOGNAME} UserShell`))[0].toString().split(' ')[1].trim()
} catch {
return '/bin/bash'
}
})
this.configStore = loadConfig()
if (process.platform === 'linux') {
app.commandLine.appendSwitch('no-sandbox')
if (((configData.appearance || {}).opacity || 1) !== 1) {
if (((this.configStore.appearance || {}).opacity || 1) !== 1) {
app.commandLine.appendSwitch('enable-transparent-visuals')
app.disableHardwareAcceleration()
}
if (this.configStore.hacks?.disableGPU) {
app.commandLine.appendSwitch('disable-gpu')
app.disableHardwareAcceleration()
}
}
this.userPluginsPath = path.join(
@@ -68,11 +88,16 @@ export class Application {
app.commandLine.appendSwitch('disable-http-cache')
app.commandLine.appendSwitch('max-active-webgl-contexts', '9000')
app.commandLine.appendSwitch('lang', 'EN')
app.allowRendererProcessReuse = false
for (const flag of configData.flags || [['force_discrete_gpu', '0']]) {
for (const flag of this.configStore.flags || [['force_discrete_gpu', '0']]) {
app.commandLine.appendSwitch(flag[0], flag[1])
}
app.on('window-all-closed', () => {
if (this.quitRequested || process.platform !== 'darwin') {
app.quit()
}
})
}
init (): void {
@@ -84,6 +109,9 @@ export class Application {
async newWindow (options?: WindowOptions): Promise<Window> {
const window = new Window(this, options)
this.windows.push(window)
if (this.windows.length === 1){
window.makeMain()
}
window.visible$.subscribe(visible => {
if (visible) {
this.disableTray()
@@ -93,16 +121,28 @@ export class Application {
})
window.closed$.subscribe(() => {
this.windows = this.windows.filter(x => x !== window)
if (!this.windows.some(x => x.isMainWindow)) {
this.windows[0]?.makeMain()
this.windows[0]?.present()
}
})
if (process.platform === 'darwin') {
this.setupMenu()
}
await window.ready
window.present()
return window
}
onGlobalHotkey (): void {
if (this.windows.some(x => x.isFocused() && x.isVisible())) {
let isPresent = this.windows.some(x => x.isFocused() && x.isVisible())
const isDockedOnTop = this.windows.some(x => x.isDockedOnTop())
if (isDockedOnTop) {
// if docked and on top, hide even if not focused right now
isPresent = this.windows.some(x => x.isVisible())
}
if (isPresent) {
for (const window of this.windows) {
window.hide()
}
@@ -171,7 +211,7 @@ export class Application {
focus (): void {
for (const window of this.windows) {
window.show()
window.present()
}
}
@@ -217,7 +257,8 @@ export class Application {
{
label: 'Quit',
accelerator: 'Cmd+Q',
click () {
click: () => {
this.quitRequested = true
app.quit()
},
},
@@ -240,7 +281,6 @@ export class Application {
{
label: 'View',
submenu: [
{ role: 'reload' },
{ role: 'toggleDevTools' },
{ type: 'separator' },
{ role: 'togglefullscreen' },
@@ -268,6 +308,10 @@ export class Application {
},
]
if (process.env.TABBY_DEV) {
template[2].submenu['unshift']({ role: 'reload' })
}
Menu.setApplicationMenu(Menu.buildFromTemplate(template))
}
}

View File

@@ -16,12 +16,6 @@ export function parseArgs (argv: string[], cwd: string): any {
.command('profile [profileName]', 'open a tab with specified profile', {
profileName: { type: 'string' },
})
.command('connect-ssh [connectionName]', 'open a tab for a saved SSH connection', {
connectionName: { type: 'string' },
})
.command('connect-serial [connectionName]', 'open a tab for a saved serial connection', {
connectionName: { type: 'string' },
})
.command('paste [text]', 'paste stdin into the active tab', yargs => {
return yargs.option('escape', {
alias: 'e',
@@ -31,7 +25,7 @@ export function parseArgs (argv: string[], cwd: string): any {
type: 'string',
})
})
.version('version', '', app.getVersion())
.version(app.getVersion())
.option('debug', {
alias: 'd',
describe: 'Show DevTools on start',
@@ -41,11 +35,6 @@ export function parseArgs (argv: string[], cwd: string): any {
describe: 'Start minimized',
type: 'boolean',
})
.option('version', {
alias: 'v',
describe: 'Show version and exit',
type: 'boolean',
})
.help('help')
.parse()
}

View File

@@ -1,3 +1,4 @@
import 'v8-compile-cache'
import './portable'
import 'source-map-support/register'
import './sentry'
@@ -25,10 +26,6 @@ app.on('activate', () => {
}
})
app.on('window-all-closed', () => {
app.quit()
})
process.on('uncaughtException' as any, err => {
console.log(err)
application.broadcast('uncaughtException', err)

View File

@@ -1,4 +1,4 @@
import * as LRU from 'lru-cache'
import LRU from 'lru-cache'
import * as fs from 'fs'
const lru = new LRU({ max: 256, maxAge: 250 })
const origLstat = fs.realpathSync.bind(fs)

View File

@@ -1,18 +1,27 @@
import * as nodePTY from 'node-pty'
import { StringDecoder } from './stringDecoder'
import * as nodePTY from '@tabby-gang/node-pty'
import { v4 as uuidv4 } from 'uuid'
import { ipcMain } from 'electron'
import { Application } from './app'
import { UTF8Splitter } from './utfSplitter'
import { Subject, debounceTime } from 'rxjs'
class PTYDataQueue {
private buffers: Buffer[] = []
private delta = 0
private maxChunk = 1024
private maxDelta = 1024 * 50
private maxChunk = 1024 * 100
private maxDelta = this.maxChunk * 5
private flowPaused = false
private decoder = new StringDecoder()
private decoder = new UTF8Splitter()
private output$ = new Subject<Buffer>()
constructor (private pty: nodePTY.IPty, private onData: (data: Buffer) => void) { }
constructor (private pty: nodePTY.IPty, private onData: (data: Buffer) => void) {
this.output$.pipe(debounceTime(500)).subscribe(() => {
const remainder = this.decoder.flush()
if (remainder.length) {
this.onData(remainder)
}
})
}
push (data: Buffer) {
this.buffers.push(data)
@@ -61,7 +70,9 @@ class PTYDataQueue {
}
private emitData (data: Buffer) {
this.onData(this.decoder.write(data))
const validChunk = this.decoder.write(data)
this.onData(validChunk)
this.output$.next(validChunk)
}
private pause () {
@@ -79,6 +90,7 @@ class PTYDataQueue {
export class PTY {
private pty: nodePTY.IPty
private outputQueue: PTYDataQueue
exited = false
constructor (private id: string, private app: Application, ...args: any[]) {
this.pty = (nodePTY as any).spawn(...args)
@@ -90,7 +102,10 @@ export class PTY {
setImmediate(() => this.emit('data', data))
})
this.pty.on('data', data => this.outputQueue.push(Buffer.from(data)))
this.pty.onData(data => this.outputQueue.push(Buffer.from(data)))
this.pty.onExit(() => {
this.exited = true
})
}
getPID (): number {
@@ -133,7 +148,7 @@ export class PTYManager {
})
ipcMain.on('pty:exists', (event, id) => {
event.returnValue = !!this.ptys[id]
event.returnValue = this.ptys[id] && !this.ptys[id].exited
})
ipcMain.on('pty:get-pid', (event, id) => {

32
app/lib/utfSplitter.ts Normal file
View File

@@ -0,0 +1,32 @@
const partials = [
[0b110, 5, 0],
[0b1110, 4, 1],
[0b11110, 3, 2],
]
export class UTF8Splitter {
private internal = Buffer.alloc(0)
write (data: Buffer): Buffer {
this.internal = Buffer.concat([this.internal, data])
let keep = 0
for (const [pattern, shift, maxOffset] of partials) {
for (let offset = 0; offset < maxOffset + 1; offset++) {
if (this.internal[this.internal.length - offset - 1] >> shift === pattern) {
keep = Math.max(keep, offset + 1)
}
}
}
const result = this.internal.slice(0, this.internal.length - keep)
this.internal = this.internal.slice(this.internal.length - keep)
return result
}
flush (): Buffer {
const result = this.internal
this.internal = Buffer.alloc(0)
return result
}
}

View File

@@ -1,13 +1,13 @@
import * as glasstron from 'glasstron'
import { Subject, Observable } from 'rxjs'
import { debounceTime } from 'rxjs/operators'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions } from 'electron'
import { Subject, Observable, debounceTime } from 'rxjs'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage } from 'electron'
import ElectronConfig = require('electron-config')
import { enable as enableRemote } from '@electron/remote/main'
import * as os from 'os'
import * as path from 'path'
import macOSRelease from 'macos-release'
import * as compareVersions from 'compare-versions'
import { compare as compareVersions } from 'compare-versions'
import type { Application } from './app'
import { parseArgs } from './cli'
@@ -15,7 +15,7 @@ import { loadConfig } from './config'
let DwmEnableBlurBehindWindow: any = null
if (process.platform === 'win32') {
DwmEnableBlurBehindWindow = require('windows-blurbehind').DwmEnableBlurBehindWindow
DwmEnableBlurBehindWindow = require('@tabby-gang/windows-blurbehind').DwmEnableBlurBehindWindow
}
export interface WindowOptions {
@@ -27,10 +27,13 @@ abstract class GlasstronWindow extends BrowserWindow {
abstract setBlur (_: boolean)
}
const macOSVibrancyType = process.platform === 'darwin' ? compareVersions.compare(macOSRelease().version, '10.14', '>=') ? 'fullscreen-ui' : 'dark' : null
const macOSVibrancyType = process.platform === 'darwin' ? compareVersions(macOSRelease().version, '10.14', '>=') ? 'fullscreen-ui' : 'dark' : null
const activityIcon = nativeImage.createFromPath(`${app.getAppPath()}/assets/activity.png`)
export class Window {
ready: Promise<void>
isMainWindow = false
private visible = new Subject<boolean>()
private closed = new Subject<void>()
private window?: GlasstronWindow
@@ -40,6 +43,9 @@ export class Window {
private lastVibrancy: { enabled: boolean, type?: string } | null = null
private disableVibrancyWhileDragging = false
private configStore: any
private touchBarControl: any
private isFluentVibrancy = false
private dockHidden = false
get visible$ (): Observable<boolean> { return this.visible }
get closed$ (): Observable<void> { return this.closed }
@@ -63,7 +69,6 @@ export class Window {
nodeIntegration: true,
preload: path.join(__dirname, 'sentry.js'),
backgroundThrottling: false,
enableRemoteModule: true,
contextIsolation: false,
},
maximizable: true,
@@ -114,21 +119,32 @@ export class Window {
}
this.window.focus()
this.window.moveTop()
application.focus()
}
})
this.window.on('blur', () => {
if (this.configStore.appearance?.dock !== 'off' && this.configStore.appearance?.dockHideOnBlur) {
if ((this.configStore.appearance?.dock ?? 'off') !== 'off' && this.configStore.appearance?.dockHideOnBlur) {
this.hide()
}
})
enableRemote(this.window.webContents)
this.window.loadURL(`file://${app.getAppPath()}/dist/index.html`, { extraHeaders: 'pragma: no-cache\n' })
this.window.webContents.setVisualZoomLevelLimits(1, 1)
this.window.webContents.setZoomFactor(1)
if (process.platform !== 'darwin') {
if (process.platform === 'darwin') {
this.touchBarControl = new TouchBar.TouchBarSegmentedControl({
segments: [],
change: index => this.send('touchbar-selection', index),
})
this.window.setTouchBar(new TouchBar({
items: [this.touchBarControl],
}))
} else {
this.window.setMenu(null)
}
@@ -145,6 +161,11 @@ export class Window {
})
}
makeMain (): void {
this.isMainWindow = true
this.window.webContents.send('host:became-main-window')
}
setVibrancy (enabled: boolean, type?: string, userRequested?: boolean): void {
if (userRequested ?? true) {
this.lastVibrancy = { enabled, type }
@@ -154,6 +175,7 @@ export class Window {
this.window.blurType = enabled ? type === 'fluent' ? 'acrylic' : 'blurbehind' : null
try {
this.window.setBlur(enabled)
this.isFluentVibrancy = enabled && type === 'fluent'
} catch (error) {
console.error('Failed to set window blur', error)
}
@@ -168,11 +190,6 @@ export class Window {
}
}
show (): void {
this.window.show()
this.window.moveTop()
}
focus (): void {
this.window.focus()
}
@@ -184,6 +201,7 @@ export class Window {
this.window.webContents.send(event, ...args)
if (event === 'host:config-change') {
this.configStore = args[0]
this.enableDockedWindowStyles(this.isDockedOnTop())
}
}
@@ -199,45 +217,69 @@ export class Window {
return this.window.isVisible()
}
hide (): void {
isDockedOnTop (): boolean {
return this.isMainWindow && this.configStore.appearance?.dock && this.configStore.appearance?.dock !== 'off' && (this.configStore.appearance?.dockAlwaysOnTop ?? true)
}
async hide (): Promise<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()
}
if (this.isDockedOnTop()) {
await this.enableDockedWindowStyles(false)
}
}
this.window.blur()
this.window.hide()
}
async show (): Promise<void> {
await this.enableDockedWindowStyles(this.isDockedOnTop())
this.window.show()
this.window.focus()
}
async present (): Promise<void> {
await this.show()
this.window.moveTop()
}
passCliArguments (argv: string[], cwd: string, secondInstance: boolean): void {
this.send('cli', parseArgs(argv, cwd), cwd, secondInstance)
}
private async enableDockedWindowStyles (enabled: boolean) {
if (process.platform === 'darwin') {
if (enabled) {
if (!this.dockHidden) {
app.dock.hide()
this.dockHidden = true
}
this.window.setAlwaysOnTop(true, 'screen-saver', 1)
if (!this.window.isVisibleOnAllWorkspaces()) {
this.window.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true })
}
if (this.window.fullScreenable) {
this.window.setFullScreenable(false)
}
} else {
if (this.dockHidden) {
await app.dock.show()
this.dockHidden = false
}
if (this.window.isAlwaysOnTop()) {
this.window.setAlwaysOnTop(false)
}
if (this.window.isVisibleOnAllWorkspaces()) {
this.window.setVisibleOnAllWorkspaces(false)
}
if (!this.window.fullScreenable) {
this.window.setFullScreenable(true)
}
}
}
}
private setupWindowManagement () {
this.window.on('show', () => {
this.visible.next(true)
@@ -299,7 +341,7 @@ export class Window {
config: this.configStore,
executable: app.getPath('exe'),
windowID: this.window.id,
isFirstWindow: this.window.id === 1,
isMainWindow: this.isMainWindow,
userPluginsPath: this.application.userPluginsPath,
})
})
@@ -346,8 +388,7 @@ export class Window {
if (this.window.isMinimized()) {
this.window.restore()
}
this.window.show()
this.window.moveTop()
this.present()
})
ipcMain.on('window-close', event => {
@@ -358,15 +399,23 @@ export class Window {
this.window.close()
})
ipcMain.on('window-set-touch-bar', (_event, segments, selectedIndex) => {
this.touchBarControl.segments = segments.map(s => ({
label: s.label,
icon: s.hasActivity ? activityIcon : undefined,
}))
this.touchBarControl.selectedIndex = selectedIndex
})
this.window.webContents.on('new-window', event => event.preventDefault())
ipcMain.on('window-set-disable-vibrancy-while-dragging', (_event, value) => {
this.disableVibrancyWhileDragging = value
})
let moveEndedTimeout: number|null = null
let moveEndedTimeout: any = null
const onBoundsChange = () => {
if (!this.lastVibrancy?.enabled || !this.disableVibrancyWhileDragging) {
if (!this.lastVibrancy?.enabled || !this.disableVibrancyWhileDragging || !this.isFluentVibrancy) {
return
}
this.setVibrancy(false, undefined, false)
@@ -379,6 +428,18 @@ export class Window {
}
this.window.on('move', onBoundsChange)
this.window.on('resize', onBoundsChange)
ipcMain.on('window-set-traffic-light-position', (_event, x, y) => {
this.window.setTrafficLightPosition({ x, y })
})
ipcMain.on('window-set-opacity', (_event, opacity) => {
this.window.setOpacity(opacity)
})
ipcMain.on('window-set-progress-bar', (_event, value) => {
this.window.setProgressBar(value, { mode: value < 0 ? 'none' : 'normal' })
})
}
private destroy () {

View File

@@ -10,49 +10,43 @@
"main": "dist/main.js",
"version": "1.0.0-alpha.1",
"scripts": {
"postinstall": "patch-package",
"build": "webpack --progress --color --display-modules",
"watch": "webpack --progress --color --watch"
},
"dependencies": {
"@angular/animations": "^12.0.0",
"@angular/common": "^12.0.0",
"@angular/compiler": "^12.0.0",
"@angular/core": "^12.0.0",
"@angular/forms": "^12.0.0",
"@angular/platform-browser": "^12.0.0",
"@angular/platform-browser-dynamic": "^12.0.0",
"@electron/remote": "1.2.0",
"@ng-bootstrap/ng-bootstrap": "^9.1.1",
"@angular/cdk": "^12.2.9",
"@electron/remote": "2.0.1",
"@tabby-gang/node-pty": "^0.11.0-beta.200",
"any-promise": "^1.3.0",
"electron-config": "2.0.0",
"electron-debug": "^3.2.0",
"electron-promise-ipc": "^2.2.4",
"electron-updater": "^4.6.1",
"fontmanager-redux": "1.1.0",
"glasstron": "0.0.7",
"js-yaml": "4.1.0",
"keytar": "^7.7.0",
"mz": "^2.7.0",
"native-process-working-directory": "^1.0.2",
"ngx-toastr": "^14.0.0",
"node-pty": "^0.10.1",
"npm": "6",
"rxjs": "^7.1.0",
"yargs": "^17.0.1",
"zone.js": "^0.11.4"
"rxjs": "^7.4.0",
"source-map-support": "^0.5.20",
"v8-compile-cache": "^2.3.0",
"yargs": "^17.2.1"
},
"optionalDependencies": {
"@tabby-gang/windows-blurbehind": "^3.0.0",
"macos-native-processlist": "^2.0.0",
"serialport": "^9.2.0",
"windows-blurbehind": "^1.0.1",
"windows-native-registry": "^3.0.0",
"windows-process-tree": "^0.3.0"
"serialport": "^10.0.0",
"windows-native-registry": "^3.1.0",
"windows-process-tree": "^0.3.2"
},
"devDependencies": {
"@types/mz": "2.7.3",
"@types/node": "15.12.5",
"@types/mz": "2.7.4",
"@types/node": "16.0.1",
"ngx-filesize": "^2.0.16",
"node-abi": "^2.30.0",
"source-map-support": "^0.5.19"
"patch-package": "^6.4.7"
},
"peerDependencies": {
"tabby-community-color-schemes": "*",

View File

@@ -0,0 +1,14 @@
diff --git a/node_modules/@serialport/bindings/src/serialport.cpp b/node_modules/@serialport/bindings/src/serialport.cpp
index c48e150..00a5f5a 100644
--- a/node_modules/@serialport/bindings/src/serialport.cpp
+++ b/node_modules/@serialport/bindings/src/serialport.cpp
@@ -269,7 +269,8 @@ Napi::Value Drain(const Napi::CallbackInfo& info) {
}
inline SerialPortParity ToParityEnum(const Napi::String& napistr) {
- const char* str = napistr.Utf8Value().c_str();
+ auto tmp = napistr.Utf8Value();
+ const char* str = tmp.c_str();
size_t count = strlen(str);
SerialPortParity parity = SERIALPORT_PARITY_NONE;
if (!strncasecmp(str, "none", count)) {

View File

@@ -1,3 +1,4 @@
import 'v8-compile-cache'
import '../lib/lru'
import 'source-sans-pro/source-sans-pro.css'
import 'source-code-pro/source-code-pro.css'

View File

@@ -5,13 +5,15 @@ import 'rxjs'
import './global.scss'
import './toastr.scss'
// Importing before @angular/*
import { findPlugins, initModuleLookup, loadPlugins } from './plugins'
import { enableProdMode, NgModuleRef, ApplicationRef } from '@angular/core'
import { enableDebugTools } from '@angular/platform-browser'
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
import { ipcRenderer } from 'electron'
import { getRootModule } from './app.module'
import { findPlugins, initModuleLookup, loadPlugins } from './plugins'
import { BootstrapData, BOOTSTRAP_DATA, PluginInfo } from '../../tabby-core/src/api/mainProcess'
// Always land on the start view

View File

@@ -2,6 +2,7 @@ body {
min-height: 100vh;
overflow: hidden;
background: #1D272D;
-webkit-font-smoothing: antialiased;
}
.modal-dialog, .modal-backdrop, .no-drag {
@@ -16,19 +17,22 @@ body {
display: none;
}
.btn {
display: inline-flex;
align-items: center;
flex-wrap: nowrap;
a, button {
&.btn {
display: inline-flex;
align-items: center;
flex-wrap: nowrap;
& > svg {
pointer-events: none;
& > svg {
pointer-events: none;
width: 16px;
height: 16px;
}
}
}
.form-line {
display: flex;
border-top: 1px solid rgba(0, 0, 0, 0.2);
align-items: center;
padding: 10px 0;
margin: 0;
@@ -115,7 +119,8 @@ ngb-typeahead-window {
.hover-reveal-parent:hover &,
*:hover > &,
&:hover {
&:hover,
&.show {
opacity: 1;
}
}
@@ -158,3 +163,35 @@ ngb-typeahead-window {
text-overflow: ellipsis;
overflow: hidden;
}
.list-group-item > button {
margin: -7px 0;
}
.content-box {
max-width: 600px;
}
// Windows high contrast mode
@media screen and (forced-colors: active) {
.custom-switch .custom-control-label::before {
background: buttonface;
}
.custom-switch .custom-control-label::after {
background: buttontext;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
background: activetext;
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
background: canvas;
}
color-scheme-preview, terminaltab > .content {
forced-color-adjust: none;
}
}

View File

@@ -0,0 +1,6 @@
export const PLUGIN_BLACKLIST = [
'terminus-shell-selector', // superseded by profiles
'terminus-scrollbar', // now useless
'terminus-clickable-links', // now bundled with Tabby
'tabby-clickable-links', // now bundled with Tabby
]

View File

@@ -2,6 +2,7 @@ import * as fs from 'mz/fs'
import * as path from 'path'
import * as remote from '@electron/remote'
import { PluginInfo } from '../../tabby-core/src/api/mainProcess'
import { PLUGIN_BLACKLIST } from './pluginBlacklist'
const nodeModule = require('module') // eslint-disable-line @typescript-eslint/no-var-requires
@@ -18,28 +19,47 @@ function normalizePath (p: string): string {
const builtinPluginsPath = process.env.TABBY_DEV ? path.dirname(remote.app.getAppPath()) : path.join((process as any).resourcesPath, 'builtin-plugins')
const cachedBuiltinModules = {
'@angular/animations': require('@angular/animations'),
'@angular/common': require('@angular/common'),
'@angular/compiler': require('@angular/compiler'),
'@angular/core': require('@angular/core'),
'@angular/forms': require('@angular/forms'),
'@angular/platform-browser': require('@angular/platform-browser'),
'@angular/platform-browser/animations': require('@angular/platform-browser/animations'),
'@angular/platform-browser-dynamic': require('@angular/platform-browser-dynamic'),
'@ng-bootstrap/ng-bootstrap': require('@ng-bootstrap/ng-bootstrap'),
'ngx-toastr': require('ngx-toastr'),
rxjs: require('rxjs'),
'rxjs/operators': require('rxjs/operators'),
'zone.js/dist/zone.js': require('zone.js/dist/zone.js'),
}
const builtinModules = [
'@angular/animations',
'@angular/common',
'@angular/compiler',
'@angular/core',
'@angular/forms',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@ng-bootstrap/ng-bootstrap',
'ngx-toastr',
'rxjs',
'rxjs/operators',
...Object.keys(cachedBuiltinModules),
'tabby-core',
'tabby-local',
'tabby-settings',
'tabby-terminal',
'zone.js/dist/zone.js',
]
export type ProgressCallback = (current: number, total: number) => void // eslint-disable-line @typescript-eslint/no-type-alias
const originalRequire = (global as any).require
;(global as any).require = function (query: string) {
if (cachedBuiltinModules[query]) {
return cachedBuiltinModules[query]
}
return originalRequire.apply(this, [query])
}
const cachedBuiltinModules = {}
const originalModuleRequire = nodeModule.prototype.require
nodeModule.prototype.require = function (query: string) {
if (cachedBuiltinModules[query]) {
return cachedBuiltinModules[query]
}
return originalModuleRequire.call(this, query)
}
export type ProgressCallback = (current: number, total: number) => void
export function initModuleLookup (userPluginsPath: string): void {
global['module'].paths.map((x: string) => nodeModule.globalPaths.push(normalizePath(x)))
@@ -57,24 +77,10 @@ export function initModuleLookup (userPluginsPath: string): void {
}
builtinModules.forEach(m => {
cachedBuiltinModules[m] = nodeRequire(m)
if (!cachedBuiltinModules[m]) {
cachedBuiltinModules[m] = nodeRequire(m)
}
})
const originalRequire = (global as any).require
;(global as any).require = function (query: string) {
if (cachedBuiltinModules[query]) {
return cachedBuiltinModules[query]
}
return originalRequire.apply(this, [query])
}
const originalModuleRequire = nodeModule.prototype.require
nodeModule.prototype.require = function (query: string) {
if (cachedBuiltinModules[query]) {
return cachedBuiltinModules[query]
}
return originalModuleRequire.call(this, query)
}
}
export async function findPlugins (): Promise<PluginInfo[]> {
@@ -104,7 +110,7 @@ export async function findPlugins (): Promise<PluginInfo[]> {
})
}
for (const packageName of pluginNames) {
if (packageName.startsWith(PREFIX) || packageName.startsWith(LEGACY_PREFIX)) {
if ((packageName.startsWith(PREFIX) || packageName.startsWith(LEGACY_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
candidateLocations.push({ pluginDir, packageName })
}
}

View File

@@ -7,7 +7,8 @@
height: 100vh;
display: flex;
animation: 0.5s ease-out fadeIn;
background: radial-gradient(#3a66820a 0%, #000e17 30%, black 100%);
background-image: radial-gradient(#3a66820a 0%, #000e17 30%, black 100%);
background-color: black;
&>div {
width: 200px;

View File

@@ -6,6 +6,7 @@
"declaration": false,
"noImplicitAny": false,
"removeComments": false,
"esModuleInterop": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,

View File

@@ -3,11 +3,13 @@
"baseUrl": "./lib",
"module": "commonjs",
"target": "es2017",
"moduleResolution": "node",
"declaration": false,
"noImplicitAny": false,
"removeComments": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"esModuleInterop": true,
"sourceMap": true,
"noUnusedParameters": true,
"noImplicitReturns": true,

View File

@@ -31,52 +31,29 @@ module.exports = {
{
test: /\.ts$/,
use: {
loader: 'awesome-typescript-loader',
loader: 'ts-loader',
options: {
configFileName: path.resolve(__dirname, 'tsconfig.json'),
configFile: path.resolve(__dirname, 'tsconfig.json'),
},
},
},
{ test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
{ test: /\.css$/, use: ['style-loader', 'css-loader', 'sass-loader'] },
{
test: /\.(png|svg)$/,
use: {
loader: 'url-loader',
options: {
limit: 999999,
},
},
},
{
test: /\.(ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
use: {
loader: 'file-loader',
options: {
name: 'fonts/[name].[ext]',
},
},
test: /\.(png|svg|ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
type: 'asset',
},
],
},
externals: {
'@angular/core': 'commonjs @angular/core',
'@angular/compiler': 'commonjs @angular/compiler',
'@angular/platform-browser': 'commonjs @angular/platform-browser',
'@angular/platform-browser-dynamic': 'commonjs @angular/platform-browser-dynamic',
'@angular/forms': 'commonjs @angular/forms',
'@angular/common': 'commonjs @angular/common',
'@ng-bootstrap/ng-bootstrap': 'commonjs @ng-bootstrap/ng-bootstrap',
'@electron/remote': 'commonjs @electron/remote',
'v8-compile-cache': 'commonjs v8-compile-cache',
child_process: 'commonjs child_process',
electron: 'commonjs electron',
fs: 'commonjs fs',
'ngx-toastr': 'commonjs ngx-toastr',
module: 'commonjs module',
mz: 'commonjs mz',
path: 'commonjs path',
rxjs: 'commonjs rxjs',
'zone.js': 'commonjs zone.js/dist/zone.js',
},
plugins: [
new webpack.optimize.ModuleConcatenationPlugin(),

View File

@@ -25,34 +25,33 @@ module.exports = {
{
test: /\.ts$/,
use: {
loader: 'awesome-typescript-loader',
loader: 'ts-loader',
options: {
configFileName: path.resolve(__dirname, 'tsconfig.main.json'),
configFile: path.resolve(__dirname, 'tsconfig.main.json'),
},
},
},
],
},
externals: {
'v8-compile-cache': 'commonjs v8-compile-cache',
'any-promise': 'commonjs any-promise',
electron: 'commonjs electron',
'electron-config': 'commonjs electron-config',
'electron-debug': 'commonjs electron-debug',
'electron-promise-ipc': 'commonjs electron-promise-ipc',
'electron-vibrancy': 'commonjs electron-vibrancy',
fs: 'commonjs fs',
glasstron: 'commonjs glasstron',
mz: 'commonjs mz',
npm: 'commonjs npm',
'node-pty': 'commonjs node-pty',
'node:os': 'commonjs os',
'@tabby-gang/node-pty': 'commonjs @tabby-gang/node-pty',
path: 'commonjs path',
rxjs: 'commonjs rxjs',
'rxjs/operators': 'commonjs rxjs/operators',
util: 'commonjs util',
'source-map-support': 'commonjs source-map-support',
'windows-swca': 'commonjs windows-swca',
'windows-native-registry': 'commonjs windows-native-registry',
'windows-blurbehind': 'commonjs windows-blurbehind',
'@tabby-gang/windows-blurbehind': 'commonjs @tabby-gang/windows-blurbehind',
'yargs/yargs': 'commonjs yargs/yargs',
},
plugins: [

File diff suppressed because it is too large Load Diff

View File

@@ -46,7 +46,7 @@ nsis:
artifactName: tabby-${version}-setup.${ext}
installerIcon: "./build/windows/icon.ico"
allowToChangeInstallationDirectory: true
shortcutName: Tabby Terminal
mac:
category: public.app-category.video
icon: "./build/mac/icon.icns"
@@ -85,7 +85,6 @@ deb:
- gnome-keyring
- libnotify4
- libsecret-1-0
- libappindicator1
- libxtst6
- libnss3
afterInstall: build/linux/after-install.tpl

Binary file not shown.

File diff suppressed because it is too large Load Diff

10
firebase.json Normal file
View File

@@ -0,0 +1,10 @@
{
"hosting": {
"public": "docs/api",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}

View File

@@ -1,40 +1,53 @@
{
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.15.3",
"@sentry/cli": "^1.64.2",
"@sentry/electron": "^2.5.0",
"@terminus-term/to-string-loader": "1.1.7-beta.1",
"@angular/animations": "^12.0.0",
"@angular/common": "^12.0.0",
"@angular/compiler": "^12.0.0",
"@angular/core": "^12.0.0",
"@angular/forms": "^12.0.0",
"@angular/platform-browser": "^12.0.0",
"@angular/platform-browser-dynamic": "^12.0.0",
"@fortawesome/fontawesome-free": "^6.0.0-beta.2",
"@ng-bootstrap/ng-bootstrap": "^10.0.0",
"@sentry/cli": "^1.71.0",
"@sentry/electron": "^2.5.4",
"@tabby-gang/to-string-loader": "^1.1.7-beta.2",
"@types/deep-equal": "1.0.1",
"@types/electron-config": "^3.2.2",
"@types/electron-debug": "^2.1.0",
"@types/fs-extra": "^9.0.11",
"@types/js-yaml": "^4.0.1",
"@types/node": "15.12.5",
"@types/webpack-env": "^1.16.0",
"@typescript-eslint/eslint-plugin": "^4.25.0",
"@typescript-eslint/parser": "^4.28.0",
"@types/fs-extra": "^9.0.12",
"@types/js-yaml": "^4.0.4",
"@types/node": "16.0.1",
"@types/sortablejs": "^1.10.7",
"@types/webpack-env": "^1.16.2",
"@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0",
"apply-loader": "2.0.0",
"awesome-typescript-loader": "^5.2.1",
"compare-versions": "^3.6.0",
"core-js": "^3.14.0",
"axios": "^0.21.1",
"clone-deep": "^4.0.1",
"compare-versions": "^4",
"core-js": "^3.18.2",
"cross-env": "7.0.3",
"css-loader": "5.2.6",
"electron": "13.1.4",
"electron-builder": "22.10.5",
"css-loader": "^6.5.1",
"deep-equal": "2.0.5",
"electron": "16.0.5",
"electron-builder": "^22.14.5",
"electron-download": "^4.1.1",
"electron-installer-snap": "^5.1.0",
"electron-notarize": "^1.0.0",
"electron-rebuild": "^2.3.5",
"eslint": "^7.29.0",
"eslint-plugin-import": "^2.23.4",
"electron-notarize": "^1.1.1",
"electron-rebuild": "^3.2.5",
"eslint": "^7.32.0",
"file-loader": "^6.2.0",
"graceful-fs": "^4.2.6",
"graceful-fs": "^4.2.8",
"html-loader": "2.1.2",
"json-loader": "0.5.7",
"lru-cache": "^6.0.0",
"macos-release": "^2.5.0",
"node-abi": "^2.30.0",
"node-sass": "^6.0.1",
"npmlog": "4.1.2",
"macos-release": "^3.0.1",
"ngx-sortablejs": "^11.1.0",
"ngx-toastr": "^14.0.0",
"node-abi": "^3.2.0",
"node-sass": "^7.0.0",
"npmlog": "5.0.1",
"npx": "^10.2.2",
"patch-package": "^6.4.7",
"pug": "^3.0.2",
@@ -43,37 +56,44 @@
"pug-loader": "^2.4.0",
"pug-static-loader": "2.0.0",
"raw-loader": "4.0.2",
"sass-loader": "^12.1.0",
"sass-loader": "^12.3.0",
"shell-quote": "^1.7.3",
"shelljs": "0.8.4",
"slugify": "^1.6.1",
"sortablejs": "^1.14.0",
"source-code-pro": "^2.38.0",
"source-map-loader": "^3.0.0",
"source-sans-pro": "3.6.0",
"style-loader": "^3.0.0",
"ssh2": "^1.5.0",
"style-loader": "^3.2.1",
"svg-inline-loader": "^0.8.2",
"tslib": "^2.3.0",
"typedoc": "^0.21.2",
"typescript": "^4.2.4",
"url-loader": "^4.1.1",
"ts-loader": "^9.2.3",
"tslib": "^2.3.1",
"typedoc": "^0.22.10",
"typescript": "^4.3.5",
"utils-decorators": "^1.10.4",
"val-loader": "4.0.0",
"webpack": "^5.41.0",
"webpack-bundle-analyzer": "^4.4.2",
"webpack-cli": "^4.7.0",
"yaml-loader": "0.6.0"
"webpack": "^5.64.4",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^4.9.1",
"yaml-loader": "0.6.0",
"zone.js": "^0.11.4"
},
"resolutions": {
"*/node-abi": "^2.30.0",
"lzma-native": "^8.0.0",
"*/node-abi": "^3.5.0",
"**/graceful-fs": "^4.2.4"
},
"scripts": {
"build": "npm run build:typings && webpack --color --config app/webpack.main.config.js && webpack --color --config app/webpack.config.js && webpack --color --config tabby-core/webpack.config.js && webpack --color --config tabby-settings/webpack.config.js && webpack --color --config tabby-terminal/webpack.config.js && webpack --color --config tabby-local/webpack.config.js && webpack --color --config tabby-plugin-manager/webpack.config.js && webpack --color --config tabby-community-color-schemes/webpack.config.js && webpack --color --config tabby-ssh/webpack.config.js && webpack --color --config tabby-serial/webpack.config.js && webpack --color --config tabby-electron/webpack.config.js && webpack --color --config tabby-web/webpack.config.js && webpack --color --config web/webpack.config.js",
"build": "npm run build:typings && node scripts/build-modules.js",
"build:typings": "node scripts/build-typings.js",
"watch": "cross-env TABBY_DEV=1 webpack --progress --color --watch",
"start": "cross-env TABBY_DEV=1 electron app --debug --inspect",
"start:prod": "electron app --debug",
"prod": "cross-env TABBY_DEV=1 electron app",
"docs": "typedoc --out docs/api --tsconfig tabby-core/src/tsconfig.typings.json tabby-core/src/index.ts && typedoc --out docs/api/terminal --tsconfig tabby-terminal/tsconfig.typings.json tabby-terminal/src/index.ts && typedoc --out docs/api/local --tsconfig tabby-local/tsconfig.typings.json tabby-local/src/index.ts && typedoc --out docs/api/settings --tsconfig tabby-settings/tsconfig.typings.json tabby-settings/src/index.ts",
"docs": "node scripts/build-docs.js",
"lint": "eslint --ext ts */src */lib",
"postinstall": "node ./scripts/install-deps.js",
"patch": "patch-package; cd web; patch-package"
"postinstall": "patch-package && node ./scripts/install-deps.js"
},
"private": true
}

View File

@@ -1,13 +0,0 @@
diff --git a/node_modules/app-builder-lib/out/appInfo.js b/node_modules/app-builder-lib/out/appInfo.js
index 25a159e..d8a0262 100644
--- a/node_modules/app-builder-lib/out/appInfo.js
+++ b/node_modules/app-builder-lib/out/appInfo.js
@@ -165,7 +165,7 @@ class AppInfo {
get linuxPackageName() {
const name = this.name; // https://github.com/electron-userland/electron-builder/issues/2963
- return name.startsWith("@") ? this.sanitizedProductName : name;
+ return 'tabby-terminal'
}
get sanitizedName() {

View File

@@ -0,0 +1,15 @@
diff --git a/node_modules/app-builder-lib/out/appInfo.js b/node_modules/app-builder-lib/out/appInfo.js
index 363f32c..a0434a9 100644
--- a/node_modules/app-builder-lib/out/appInfo.js
+++ b/node_modules/app-builder-lib/out/appInfo.js
@@ -100,9 +100,7 @@ class AppInfo {
return this.info.metadata.name;
}
get linuxPackageName() {
- const name = this.name;
- // https://github.com/electron-userland/electron-builder/issues/2963
- return name.startsWith("@") ? this.sanitizedProductName : name;
+ return 'tabby-terminal'
}
get sanitizedName() {
return filename_1.sanitizeFileName(this.name);

9
scripts/build-docs.js Executable file
View File

@@ -0,0 +1,9 @@
#!/usr/bin/env node
const sh = require('shelljs')
const vars = require('./vars')
const log = require('npmlog')
vars.packagesWithDocs.forEach(([dest, src]) => {
log.info('docs', src)
sh.exec(`yarn typedoc --out docs/api/${dest} --tsconfig ${src}/tsconfig.typings.json ${src}/src/index.ts`)
})

22
scripts/build-modules.js Executable file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env node
const vars = require('./vars')
const log = require('npmlog')
const webpack = require('webpack')
const { promisify } = require('util')
const configs = [
'../app/webpack.main.config.js',
'../app/webpack.config.js',
...vars.allPackages.map(x => `../${x}/webpack.config.js`),
]
;(async () => {
for (const c of configs) {
log.info('build', c)
const stats = await promisify(webpack)(require(c))
console.log(stats.toString({ colors: true }))
if (stats.hasErrors()) {
process.exit(1)
}
}
})()

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env node
const jsYaml = require('js-yaml')
const fs = require('fs')
const path = require('path')
const metadata = jsYaml.load(fs.readFileSync(path.resolve(__dirname, '../node_modules/@fortawesome/fontawesome-free/metadata/icons.yml')))
let result = {}
for (let key in metadata) {
result[key] = metadata[key].styles.map(x => x[0])
}
fs.writeFileSync(path.resolve(__dirname, '../tabby-core/src/icons.json'), JSON.stringify(result))

View File

@@ -4,8 +4,11 @@ const path = require('path')
const vars = require('./vars')
const log = require('npmlog')
const localBinPath = path.resolve(__dirname, '../node_modules/.bin');
const npx = `${localBinPath}/npx`;
const localBinPath = path.resolve(__dirname, '../node_modules/.bin')
const npx = `${localBinPath}/npx`
log.info('patch')
sh.exec(`${npx} patch-package`)
log.info('deps', 'app')
@@ -15,19 +18,20 @@ sh.cd('..')
sh.cd('web')
sh.exec(`${npx} yarn install --force`)
sh.exec(`${npx} patch-package`)
sh.cd('..')
vars.builtinPlugins.forEach(plugin => {
log.info('deps', plugin)
sh.cd(plugin)
sh.exec(`${npx} yarn install --force`)
sh.cd('..')
vars.allPackages.forEach(plugin => {
log.info('deps', plugin)
sh.cd(plugin)
sh.exec(`${npx} yarn install --force`)
sh.cd('..')
})
if (['darwin', 'linux'].includes(process.platform)) {
sh.cd('node_modules')
for (let x of vars.builtinPlugins) {
sh.ln('-fs', '../' + x, x)
}
sh.cd('..')
sh.cd('node_modules')
for (let x of vars.builtinPlugins) {
sh.ln('-fs', '../' + x, x)
}
sh.cd('..')
}

View File

@@ -2,11 +2,12 @@
const sh = require('shelljs')
const vars = require('./vars')
const log = require('npmlog')
const { execSync } = require('child_process')
vars.builtinPlugins.forEach(plugin => {
vars.allPackages.forEach(plugin => {
log.info('bump', plugin)
sh.cd(plugin)
sh.exec('npm --no-git-tag-version version ' + vars.version)
sh.exec('npm publish')
execSync('npm publish', { stdio: 'inherit' })
sh.cd('..')
})

View File

@@ -9,7 +9,7 @@ sh.exec(`${sentryCli} releases new ${vars.version}`)
if (process.platform === 'darwin') {
for (const path of [
'app/node_modules/@serialport/bindings/build/Release/bindings.node',
'app/node_modules/node-pty/build/Release/pty.node',
'app/node_modules/@tabby-gang/node-pty/build/Release/pty.node',
'app/node_modules/fontmanager-redux/build/Release/fontmanager.node',
'app/node_modules/macos-native-processlist/build/Release/native.node',
]) {

View File

@@ -5,28 +5,44 @@ const childProcess = require('child_process')
const electronInfo = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../node_modules/electron/package.json')))
exports.version = childProcess.execSync('git describe --tags', {encoding:'utf-8'})
exports.version = childProcess.execSync('git describe --tags', { encoding:'utf-8' })
exports.version = exports.version.substring(1).trim()
exports.version = exports.version.replace('-', '-c')
if (exports.version.includes('-c')) {
exports.version = semver.inc(exports.version, 'prepatch').replace('-0', '-nightly.0')
exports.version = semver.inc(exports.version, 'prepatch').replace('-0', `-nightly.${process.env.REV ?? 0}`)
}
exports.builtinPlugins = [
'tabby-core',
'tabby-settings',
'tabby-terminal',
'tabby-electron',
'tabby-local',
'tabby-web',
'tabby-community-color-schemes',
'tabby-plugin-manager',
'tabby-ssh',
'tabby-serial',
'tabby-core',
'tabby-settings',
'tabby-terminal',
'tabby-web',
'tabby-community-color-schemes',
'tabby-ssh',
'tabby-serial',
'tabby-telnet',
'tabby-electron',
'tabby-local',
'tabby-plugin-manager',
'tabby-linkifier',
]
exports.packagesWithDocs = [
['.', 'tabby-core'],
['terminal', 'tabby-terminal'],
['local', 'tabby-local'],
['settings', 'tabby-settings'],
]
exports.allPackages = [
...exports.builtinPlugins,
'web',
'tabby-web-demo',
]
exports.bundledModules = [
'@angular',
'@ng-bootstrap',
'@angular',
'@ng-bootstrap',
]
exports.electronVersion = electronInfo.version

View File

@@ -1 +0,0 @@
dist

View File

@@ -1,6 +1,6 @@
{
"name": "tabby-community-color-schemes",
"version": "1.0.144",
"version": "1.0.165-nightly.0",
"description": "Community color schemes for Tabby",
"keywords": [
"tabby-builtin-plugin"

View File

@@ -1 +0,0 @@
dist

View File

@@ -1,7 +1,13 @@
Tabby Core Plugin
--------------------
# Tabby Core Plugin
See also: [Settings plugin API](./settings/), [Terminal plugin API](./terminal/), [Local terminal API](./local/)
See also:
* [Settings plugin API](./settings/)
* [Terminal plugin API](./terminal/)
* [Local terminal API](./local/)
* [Linkifier plugin API](./linkifier/)
This module provides:
* tabbed interface services
* toolbar UI

View File

@@ -1,6 +1,6 @@
{
"name": "tabby-core",
"version": "1.0.144",
"version": "1.0.165-nightly.0",
"description": "Tabby core",
"keywords": [
"tabby-builtin-plugin"
@@ -17,16 +17,10 @@
"author": "Eugene Pankov",
"license": "MIT",
"devDependencies": {
"@types/js-yaml": "^4.0.0",
"bootstrap": "^4.1.3",
"clone-deep": "^4.0.1",
"core-js": "^3.1.2",
"deep-equal": "^2.0.5",
"deepmerge": "^4.1.1",
"electron-updater": "^4.0.6",
"js-yaml": "^4.0.0",
"mixpanel": "^0.13.0",
"ng2-dnd": "^5.0.2",
"ngx-filesize": "^2.0.16",
"ngx-perfect-scrollbar": "^10.1.0",
"readable-stream": "3.6.0",

View File

@@ -1,8 +1,8 @@
export { BaseComponent, SubscriptionContainer } from '../components/base.component'
export { BaseTabComponent, BaseTabProcess } from '../components/baseTab.component'
export { TabHeaderComponent } from '../components/tabHeader.component'
export { SplitTabComponent, SplitContainer } from '../components/splitTab.component'
export { TabRecoveryProvider, RecoveredTab, RecoveryToken } from './tabRecovery'
export { SplitTabComponent, SplitContainer, SplitDirection, SplitOrientation } from '../components/splitTab.component'
export { TabRecoveryProvider, RecoveryToken } from './tabRecovery'
export { ToolbarButtonProvider, ToolbarButton } from './toolbarButtonProvider'
export { ConfigProvider } from './configProvider'
export { HotkeyProvider, HotkeyDescription } from './hotkeyProvider'
@@ -16,18 +16,23 @@ export { BootstrapData, PluginInfo, BOOTSTRAP_DATA } from './mainProcess'
export { HostWindowService } from './hostWindow'
export { HostAppService, Platform } from './hostApp'
export { FileProvider } from './fileProvider'
export { ProfileProvider, Profile, PartialProfile, ProfileSettingsComponent } from './profileProvider'
export { PromptModalComponent } from '../components/promptModal.component'
export { AppService } from '../services/app.service'
export { ConfigService } from '../services/config.service'
export { ConfigService, configMerge, ConfigProxy } from '../services/config.service'
export { DockingService, Screen } from '../services/docking.service'
export { Logger, ConsoleLogger, LogService } from '../services/log.service'
export { HomeBaseService } from '../services/homeBase.service'
export { HotkeysService } from '../services/hotkeys.service'
export { KeyEventData, KeyName, Keystroke, altKeyName, metaKeyName } from '../services/hotkeys.util'
export { NotificationsService } from '../services/notifications.service'
export { ThemesService } from '../services/themes.service'
export { ProfilesService } from '../services/profiles.service'
export { SelectorService } from '../services/selector.service'
export { TabsService } from '../services/tabs.service'
export { TabRecoveryService } from '../services/tabRecovery.service'
export { TabsService, NewTabParameters, TabComponentType } from '../services/tabs.service'
export { UpdaterService } from '../services/updater.service'
export { VaultService, Vault, VaultSecret, VAULT_SECRET_TYPE_FILE } from '../services/vault.service'
export { VaultService, Vault, VaultSecret, VaultFileSecret, VAULT_SECRET_TYPE_FILE, StoredVault, VaultSecretKey } from '../services/vault.service'
export { FileProvidersService } from '../services/fileProviders.service'
export * from '../utils'

View File

@@ -16,7 +16,7 @@ export interface PluginInfo {
export interface BootstrapData {
config: Record<string, any>
executable: string
isFirstWindow: boolean
isMainWindow: boolean
windowID: number
installedPlugins: PluginInfo[]
userPluginsPath: string

View File

@@ -13,6 +13,7 @@ export interface MessageBoxOptions {
detail?: string
buttons: string[]
defaultId?: number
cancelId?: number
}
export interface MessageBoxResult {
@@ -21,6 +22,7 @@ export interface MessageBoxResult {
export abstract class FileTransfer {
abstract getName (): string
abstract getMode (): number
abstract getSize (): number
abstract close (): void
@@ -46,6 +48,9 @@ export abstract class FileTransfer {
}
protected increaseProgress (bytes: number): void {
if (!bytes) {
return
}
this.completedBytes += bytes
this.lastChunkSpeed = bytes * 1000 / (Date.now() - this.lastChunkStartTime)
this.lastChunkStartTime = Date.now()
@@ -95,7 +100,7 @@ export abstract class PlatformService {
abstract loadConfig (): Promise<string>
abstract saveConfig (content: string): Promise<void>
abstract startDownload (name: string, size: number): Promise<FileDownload|null>
abstract startDownload (name: string, mode: number, size: number): Promise<FileDownload|null>
abstract startUpload (options?: FileUploadOptions): Promise<FileUpload[]>
startUploadFromDragEvent (event: DragEvent, multiple = false): FileUpload[] {
@@ -188,6 +193,10 @@ export class HTMLFileUpload extends FileUpload {
return this.file.name
}
getMode (): number {
return 0o644
}
getSize (): number {
return this.file.size
}

View File

@@ -0,0 +1,60 @@
/* eslint-disable @typescript-eslint/no-type-alias */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/no-empty-function */
import { BaseTabComponent } from '../components/baseTab.component'
import { NewTabParameters } from '../services/tabs.service'
export interface Profile {
id: string
type: string
name: string
group?: string
options: any
icon?: string
color?: string
disableDynamicTitle: boolean
weight: number
isBuiltin: boolean
isTemplate: boolean
}
export type PartialProfile<T extends Profile> = Omit<Omit<Omit<{
[K in keyof T]?: T[K]
}, 'options'>, 'type'>, 'name'> & {
type: string
name: string
options?: {
[K in keyof T['options']]?: T['options'][K]
}
}
export interface ProfileSettingsComponent<P extends Profile> {
profile: P
save?: () => void
}
export abstract class ProfileProvider<P extends Profile> {
id: string
name: string
supportsQuickConnect = false
settingsComponent?: new (...args: any[]) => ProfileSettingsComponent<P>
configDefaults = {}
abstract getBuiltinProfiles (): Promise<PartialProfile<P>[]>
abstract getNewTabParameters (profile: P): Promise<NewTabParameters<BaseTabComponent>>
getSuggestedName (profile: PartialProfile<P>): string|null {
return null
}
abstract getDescription (profile: PartialProfile<P>): string
quickConnect (query: string): PartialProfile<P>|null {
return null
}
deleteProfile (profile: P): void { }
}

View File

@@ -1,8 +1,10 @@
export interface SelectorOption<T> {
name: string
description?: string
group?: string
result?: T
icon?: string
freeInputPattern?: string
color?: string
callback?: (string?) => void
}

View File

@@ -1,17 +1,6 @@
import deepClone from 'clone-deep'
import { TabComponentType } from '../services/tabs.service'
export interface RecoveredTab {
/**
* Component type to be instantiated
*/
type: TabComponentType
/**
* Component instance inputs
*/
options?: any
}
import { BaseTabComponent } from '../components/baseTab.component'
import { NewTabParameters } from '../services/tabs.service'
export interface RecoveryToken {
[_: string]: any
@@ -35,19 +24,20 @@ export interface RecoveryToken {
* }
* ```
*/
export abstract class TabRecoveryProvider {
export abstract class TabRecoveryProvider <T extends BaseTabComponent> {
/**
* @param recoveryToken a recovery token found in the saved tabs list
* @returns [[boolean]] whether this [[TabRecoveryProvider]] can recover a tab from this token
*/
abstract applicableTo (recoveryToken: RecoveryToken): Promise<boolean>
/**
* @param recoveryToken a recovery token found in the saved tabs list
* @returns [[RecoveredTab]] descriptor containing tab type and component inputs
* @returns [[NewTabParameters]] descriptor containing tab type and component inputs
* or `null` if this token is from a different tab type or is not supported
*/
abstract recover (recoveryToken: RecoveryToken): Promise<RecoveredTab>
abstract recover (recoveryToken: RecoveryToken): Promise<NewTabParameters<T>>
/**
* @param recoveryToken a recovery token found in the saved tabs list

View File

@@ -27,6 +27,10 @@ export interface ToolbarButton {
/** @hidden */
submenuItems?: ToolbarButton[]
showInToolbar?: boolean
showInStartPage?: boolean
}
/**

View File

@@ -0,0 +1,53 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { Injectable } from '@angular/core'
import { ToolbarButton, ToolbarButtonProvider } from './api/toolbarButtonProvider'
import { HostAppService, Platform } from './api/hostApp'
import { HotkeysService } from './services/hotkeys.service'
import { ProfilesService } from './services/profiles.service'
/** @hidden */
@Injectable()
export class ButtonProvider extends ToolbarButtonProvider {
constructor (
private hostApp: HostAppService,
private profilesService: ProfilesService,
hotkeys: HotkeysService,
) {
super()
hotkeys.hotkey$.subscribe(hotkey => {
if (hotkey === 'profile-selector') {
this.activate()
}
})
}
async activate () {
const profile = await this.profilesService.showProfileSelector()
if (profile) {
this.profilesService.launchProfile(profile)
}
}
provide (): ToolbarButton[] {
return [
{
icon: this.hostApp.platform === Platform.Web
? require('./icons/plus.svg')
: require('./icons/profiles.svg'),
title: 'Profiles and connections',
click: () => this.activate(),
},
...this.profilesService.getRecentProfiles().map(profile => ({
icon: require('./icons/history.svg'),
title: profile.name,
showInToolbar: false,
showinStartPage: true,
click: async () => {
const p = (await this.profilesService.getProfiles()).find(x => x.id === profile.id) ?? profile
this.profilesService.launchProfile(p)
},
})),
]
}
}

View File

@@ -1,6 +1,41 @@
import { Injectable } from '@angular/core'
import { HostAppService } from './api/hostApp'
import { CLIHandler, CLIEvent } from './api/cli'
import { HostWindowService } from './api/hostWindow'
import { ProfilesService } from './services/profiles.service'
@Injectable()
export class ProfileCLIHandler extends CLIHandler {
firstMatchOnly = true
priority = 0
constructor (
private profiles: ProfilesService,
private hostWindow: HostWindowService,
) {
super()
}
async handle (event: CLIEvent): Promise<boolean> {
const op = event.argv._[0]
if (op === 'profile') {
this.handleOpenProfile(event.argv.profileName)
return true
}
return false
}
private async handleOpenProfile (profileName: string) {
const profile = (await this.profiles.getProfiles()).find(x => x.name === profileName)
if (!profile) {
console.error('Requested profile', profileName, 'not found')
return
}
this.profiles.openNewTabForProfile(profile)
this.hostWindow.bringToFront()
}
}
@Injectable()
export class LastCLIHandler extends CLIHandler {

View File

@@ -1,6 +1,7 @@
title-bar(
*ngIf='ready && !hostWindow.isFullScreen && config.store.appearance.frame == "full" && config.store.appearance.dock == "off"',
[class.inset]='hostApp.platform == Platform.macOS && !hostWindow.isFullScreen'
*ngIf='ready && !hostWindow.isFullscreen && config.store.appearance.frame == "full" && config.store.appearance.dock == "off"',
(dblclick)='hostWindow.toggleMaximize()',
[class.inset]='hostApp.platform == Platform.macOS && !hostWindow.isFullscreen'
)
.content(
@@ -8,21 +9,19 @@ title-bar(
[class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left"',
[class.tabs-on-side]='hasVerticalTabs()',
)
.tab-bar
.tab-bar((dblclick)='hostWindow.toggleMaximize()')
.inset.background(*ngIf='hostApp.platform == Platform.macOS \
&& !hostWindow.isFullScreen \
&& !hostWindow.isFullscreen \
&& config.store.appearance.frame == "thin" \
&& (config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left")')
.tabs(
dnd-sortable-container,
[sortableData]='app.tabs',
cdkDropList,
[cdkDropListOrientation]='(config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "bottom") ? "horizontal" : "vertical"',
(cdkDropListDropped)='onTabsReordered($event)',
cdkAutoDropGroup='app-tabs'
)
tab-header(
*ngFor='let tab of app.tabs; let idx = index',
dnd-sortable,
[sortableIndex]='idx',
(onDragStart)='onTabDragStart()',
(onDragEnd)='onTabDragEnd()',
[index]='idx',
[tab]='tab',
[active]='tab == app.activeTab',
@@ -30,7 +29,7 @@ title-bar(
[@.disabled]='hasVerticalTabs()',
(click)='app.selectTab(tab)',
[class.fully-draggable]='hostApp.platform != Platform.macOS',
[class.drag-region]='hostApp.platform == Platform.macOS && !tabsDragging',
[class.drag-region]='hostApp.platform == Platform.macOS && !(app.tabDragActive$|async)',
)
.btn-group.background
@@ -58,15 +57,20 @@ title-bar(
div([class.ml-3]='hasIcons(button.submenuItems)') {{item.title}}
.d-flex(
*ngIf='activeTransfers.length > 0',
ngbDropdown,
[(open)]='activeTransfersDropdownOpen'
container='body',
#activeTransfersDropdown='ngbDropdown'
)
button.btn.btn-secondary.btn-tab-bar(
*ngIf='activeTransfers.length > 0',
title='File transfers',
ngbDropdownToggle
) !{require('../icons/download-solid.svg')}
transfers-menu(ngbDropdownMenu, [(transfers)]='activeTransfers')
) !{require('../icons/transfers.svg')}
transfers-menu(
ngbDropdownMenu,
[(transfers)]='activeTransfers',
(transfersChange)='onTransfersChange()'
)
.drag-space.background([class.persistent]='config.store.appearance.frame == "thin" && hostApp.platform != Platform.macOS')
@@ -109,6 +113,7 @@ title-bar(
start-page.content-tab.content-tab-active(*ngIf='ready && app.tabs.length == 0')
tab-body.content-tab(
#tabBodies,
*ngFor='let tab of unsortedTabs',
[class.content-tab-active]='tab == app.activeTab',
[active]='tab == app.activeTab',

View File

@@ -6,7 +6,6 @@
overflow: hidden;
user-select: none;
-webkit-user-drag: none;
-webkit-font-smoothing: antialiased;
will-change: transform;
cursor: default;
animation: 0.5s ease-out fadeIn;
@@ -132,6 +131,14 @@ $side-tab-width: 200px;
window-controls {
padding-left: 10px;
}
.cdk-drag-animating {
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}
.cdk-drop-list-dragging tab-header:not(.cdk-drag-placeholder) {
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}
}
.content {

View File

@@ -1,7 +1,8 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { Component, Inject, Input, HostListener, HostBinding } from '@angular/core'
import { Component, Inject, Input, HostListener, HostBinding, ViewChildren, ViewChild } from '@angular/core'
import { trigger, style, animate, transition, state } from '@angular/animations'
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
import { NgbDropdown, NgbModal } from '@ng-bootstrap/ng-bootstrap'
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop'
import { HostAppService, Platform } from '../api/hostApp'
import { HotkeysService } from '../services/hotkeys.service'
@@ -12,6 +13,7 @@ import { UpdaterService } from '../services/updater.service'
import { BaseTabComponent } from './baseTab.component'
import { SafeModeModalComponent } from './safeModeModal.component'
import { TabBodyComponent } from './tabBody.component'
import { AppService, FileTransfer, HostWindowService, PlatformService, ToolbarButton, ToolbarButtonProvider } from '../api'
/** @hidden */
@@ -57,14 +59,14 @@ export class AppRootComponent {
@HostBinding('class.platform-darwin') platformClassMacOS = process.platform === 'darwin'
@HostBinding('class.platform-linux') platformClassLinux = process.platform === 'linux'
@HostBinding('class.no-tabs') noTabs = true
tabsDragging = false
@ViewChildren(TabBodyComponent) tabBodies: TabBodyComponent[]
@ViewChild('activeTransfersDropdown') activeTransfersDropdown: NgbDropdown
unsortedTabs: BaseTabComponent[] = []
updatesAvailable = false
activeTransfers: FileTransfer[] = []
activeTransfersDropdownOpen = false
private logger: Logger
private constructor (
constructor (
private hotkeys: HotkeysService,
private updater: UpdaterService,
public hostWindow: HostWindowService,
@@ -80,7 +82,7 @@ export class AppRootComponent {
this.logger = log.create('main')
this.logger.info('v', platform.getAppVersion())
this.hotkeys.matchedHotkey.subscribe((hotkey: string) => {
this.hotkeys.hotkey$.subscribe((hotkey: string) => {
if (hotkey.startsWith('tab-')) {
const index = parseInt(hotkey.split('-')[1])
if (index <= this.app.tabs.length) {
@@ -106,10 +108,13 @@ export class AppRootComponent {
if (hotkey === 'move-tab-right') {
this.app.moveSelectedTabRight()
}
if (hotkey === 'reopen-tab') {
this.app.reopenLastTab()
if (hotkey === 'duplicate-tab') {
this.app.duplicateTab(this.app.activeTab)
}
}
if (hotkey === 'reopen-tab') {
this.app.reopenLastTab()
}
if (hotkey === 'toggle-fullscreen') {
hostWindow.toggleFullscreen()
}
@@ -126,16 +131,23 @@ export class AppRootComponent {
this.app.tabOpened$.subscribe(tab => {
this.unsortedTabs.push(tab)
this.noTabs = false
this.app.emitTabDragEnded()
})
this.app.tabClosed$.subscribe(tab => {
this.app.tabRemoved$.subscribe(tab => {
for (const tabBody of this.tabBodies) {
if (tabBody.tab === tab) {
tabBody.detach()
}
}
this.unsortedTabs = this.unsortedTabs.filter(x => x !== tab)
this.noTabs = app.tabs.length === 0
this.app.emitTabDragEnded()
})
platform.fileTransferStarted$.subscribe(transfer => {
this.activeTransfers.push(transfer)
this.activeTransfersDropdownOpen = true
this.activeTransfersDropdown.open()
})
config.ready$.toPromise().then(() => {
@@ -173,17 +185,6 @@ export class AppRootComponent {
return this.config.store.appearance.tabsLocation === 'left' || this.config.store.appearance.tabsLocation === 'right'
}
onTabDragStart () {
this.tabsDragging = true
}
onTabDragEnd () {
setTimeout(() => {
this.tabsDragging = false
this.app.emitTabsChanged()
})
}
async generateButtonSubmenu (button: ToolbarButton) {
if (button.submenu) {
button.submenuItems = await button.submenu()
@@ -194,12 +195,24 @@ export class AppRootComponent {
return submenuItems.some(x => !!x.icon)
}
onTabsReordered (event: CdkDragDrop<BaseTabComponent[]>) {
moveItemInArray(this.app.tabs, event.previousIndex, event.currentIndex)
this.app.emitTabsChanged()
}
onTransfersChange () {
if (this.activeTransfers.length === 0) {
this.activeTransfersDropdown.close()
}
}
private getToolbarButtons (aboveZero: boolean): ToolbarButton[] {
let buttons: ToolbarButton[] = []
this.config.enabledServices(this.toolbarButtonProviders).forEach(provider => {
buttons = buttons.concat(provider.provide())
})
return buttons
.filter(x => x.showInToolbar ?? true)
.filter(button => (button.weight ?? 0) > 0 === aboveZero)
.sort((a: ToolbarButton, b: ToolbarButton) => (a.weight ?? 0) - (b.weight ?? 0))
}

View File

@@ -1,5 +1,5 @@
import { Observable, Subject } from 'rxjs'
import { ViewRef } from '@angular/core'
import { Observable, Subject, distinctUntilChanged } from 'rxjs'
import { EmbeddedViewRef, ViewContainerRef, ViewRef } from '@angular/core'
import { RecoveryToken } from '../api/tabRecovery'
import { BaseComponent } from './base.component'
@@ -52,6 +52,10 @@ export abstract class BaseTabComponent extends BaseComponent {
* your tab state to be saved sooner
*/
protected recoveryStateChangedHint = new Subject<void>()
protected viewContainer?: ViewContainerRef
/* @hidden */
viewContainerEmbeddedRef?: EmbeddedViewRef<any>
private progressClearTimeout: number
private titleChange = new Subject<string>()
@@ -61,10 +65,12 @@ export abstract class BaseTabComponent extends BaseComponent {
private activity = new Subject<boolean>()
private destroyed = new Subject<void>()
private _destroyCalled = false
get focused$ (): Observable<void> { return this.focused }
get blurred$ (): Observable<void> { return this.blurred }
get titleChange$ (): Observable<string> { return this.titleChange }
get progress$ (): Observable<number|null> { return this.progress }
get titleChange$ (): Observable<string> { return this.titleChange.pipe(distinctUntilChanged()) }
get progress$ (): Observable<number|null> { return this.progress.pipe(distinctUntilChanged()) }
get activity$ (): Observable<boolean> { return this.activity }
get destroyed$ (): Observable<void> { return this.destroyed }
get recoveryStateChangedHint$ (): Observable<void> { return this.recoveryStateChangedHint }
@@ -107,16 +113,20 @@ export abstract class BaseTabComponent extends BaseComponent {
* Shows the acticity marker on the tab header
*/
displayActivity (): void {
this.hasActivity = true
this.activity.next(true)
if (!this.hasActivity) {
this.hasActivity = true
this.activity.next(true)
}
}
/**
* Removes the acticity marker from the tab header
*/
clearActivity (): void {
this.hasActivity = false
this.activity.next(false)
if (this.hasActivity) {
this.hasActivity = false
this.activity.next(false)
}
}
/**
@@ -152,10 +162,29 @@ export abstract class BaseTabComponent extends BaseComponent {
this.blurred.next()
}
insertIntoContainer (container: ViewContainerRef): EmbeddedViewRef<any> {
this.viewContainerEmbeddedRef = container.insert(this.hostView) as EmbeddedViewRef<any>
this.viewContainer = container
return this.viewContainerEmbeddedRef
}
removeFromContainer (): void {
if (!this.viewContainer || !this.viewContainerEmbeddedRef) {
return
}
this.viewContainer.detach(this.viewContainer.indexOf(this.viewContainerEmbeddedRef))
this.viewContainerEmbeddedRef = undefined
this.viewContainer = undefined
}
/**
* Called before the tab is closed
*/
destroy (skipDestroyedEvent = false): void {
if (this._destroyCalled) {
return
}
this._destroyCalled = true
this.focused.complete()
this.blurred.complete()
this.titleChange.complete()
@@ -166,6 +195,7 @@ export abstract class BaseTabComponent extends BaseComponent {
this.destroyed.next()
}
this.destroyed.complete()
this.hostView.destroy()
}
/** @hidden */

View File

@@ -1,19 +1,19 @@
.modal-body
input.form-control(
[type]='password ? "password" : "text"',
[type]='password ? "password" : "text"',
autofocus,
[(ngModel)]='value',
#input,
[placeholder]='prompt',
[(ngModel)]='value',
#input,
[placeholder]='prompt',
(keyup.enter)='ok()',
(keyup.esc)='cancel()',
)
.d-flex.align-items-start.mt-2
checkbox(
*ngIf='showRememberCheckbox',
[(ngModel)]='remember',
[(ngModel)]='remember',
text='Remember'
)
button.btn.btn-primary.ml-auto(
(click)='ok()',
) Enter
) OK

View File

@@ -2,5 +2,5 @@
input.form-control(type='text', #input, [(ngModel)]='value', (keyup.enter)='save()', autofocus)
.modal-footer
button.btn.btn-outline-primary((click)='save()') Save
button.btn.btn-outline-secondary((click)='close()') Cancel
button.btn.btn-primary((click)='save()') Save
button.btn.btn-secondary((click)='close()') Cancel

View File

@@ -4,4 +4,4 @@
pre {{error}}
.modal-footer
button.btn.btn-outline-primary((click)='close()') Close
button.btn.btn-primary((click)='close()') Close

View File

@@ -1,5 +1,5 @@
.modal-body
input.form-control(
input.form-control.form-control-lg(
type='text',
[(ngModel)]='filter',
autofocus,
@@ -7,20 +7,26 @@
(ngModelChange)='onFilterChange()'
)
.list-group(*ngIf='filteredOptions.length')
a.list-group-item.list-group-item-action.d-flex.align-items-center(
#item,
(click)='selectOption(option)',
[class.active]='selectedIndex == i',
*ngFor='let option of filteredOptions; let i = index'
)
i.icon(
class='fa-fw fas fa-{{option.icon}}',
*ngIf='!iconIsSVG(option.icon)'
.list-group.list-group-light(*ngIf='filteredOptions.length')
ng-container(*ngFor='let option of filteredOptions; let i = index')
label.group-header(
*ngIf='hasGroups && option.group !== filteredOptions[i - 1]?.group'
) {{option.group}}
a.list-group-item.list-group-item-action.d-flex.align-items-center(
#item,
(click)='selectOption(option)',
[class.active]='selectedIndex == i'
)
.icon(
[fastHtmlBind]='option.icon',
*ngIf='iconIsSVG(option.icon)'
)
.mr-2.title {{getOptionText(option)}}
.text-muted {{option.description}}
i.icon(
class='fa-fw {{option.icon}}',
style='color: {{option.color}}',
*ngIf='!iconIsSVG(option.icon)'
)
.icon(
[fastHtmlBind]='option.icon',
style='color: {{option.color}}',
*ngIf='iconIsSVG(option.icon)'
)
.title.mr-2 {{getOptionText(option)}}
.description.no-wrap.text-muted {{option.description}}
.no-wrap.badge.badge-secondary.text-muted.ml-auto(*ngIf='selectedIndex == i') Enter

View File

@@ -7,6 +7,17 @@
overflow: auto;
border-top-left-radius: 0;
border-top-right-radius: 0;
padding: 10px 15px;
}
.group-header {
padding: 0 1rem;
margin: 15px 0 10px;
font-weight: bold;
&:first-child {
margin-top: 5px;
}
}
.icon {
@@ -16,9 +27,14 @@
.title {
margin-left: 10px;
flex: none;
}
.description {
flex: 1 1 0;
}
input {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border-radius: 0;
border: none;
}

View File

@@ -14,6 +14,7 @@ export class SelectorModalComponent<T> {
@Input() filter = ''
@Input() name: string
@Input() selectedIndex = 0
hasGroups = false
@ViewChildren('item') itemChildren: QueryList<ElementRef>
constructor (
@@ -22,14 +23,17 @@ export class SelectorModalComponent<T> {
ngOnInit (): void {
this.onFilterChange()
this.hasGroups = this.options.some(x => x.group)
}
@HostListener('keyup', ['$event']) onKeyUp (event: KeyboardEvent): void {
if (event.key === 'ArrowUp') {
this.selectedIndex--
event.preventDefault()
}
if (event.key === 'ArrowDown') {
this.selectedIndex++
event.preventDefault()
}
if (event.key === 'Enter') {
this.selectOption(this.filteredOptions[this.selectedIndex])
@@ -48,15 +52,23 @@ export class SelectorModalComponent<T> {
onFilterChange (): void {
const f = this.filter.trim().toLowerCase()
if (!f) {
this.filteredOptions = this.options.filter(x => !x.freeInputPattern)
this.filteredOptions = this.options.slice()
.sort((a, b) => a.group?.localeCompare(b.group ?? '') ?? 0)
.filter(x => !x.freeInputPattern)
} else {
const terms = f.split(' ')
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
this.filteredOptions = this.options.filter(x => x.freeInputPattern ?? (x.name + (x.description ?? '')).toLowerCase().includes(f))
this.filteredOptions = this.options.filter(x => x.freeInputPattern ?? this.filterMatches(x, terms))
}
this.selectedIndex = Math.max(0, this.selectedIndex)
this.selectedIndex = Math.min(this.filteredOptions.length - 1, this.selectedIndex)
}
filterMatches (option: SelectorOption<T>, terms: string[]): boolean {
const content = (option.group ?? '') + option.name + (option.description ?? '')
return terms.every(term => content.toLowerCase().includes(term))
}
getOptionText (option: SelectorOption<T>): string {
if (option.freeInputPattern) {
return option.freeInputPattern.replace('%s', this.filter)

View File

@@ -0,0 +1,18 @@
import { HostBinding, ElementRef } from '@angular/core'
import { BaseComponent } from './base.component'
export abstract class SelfPositioningComponent extends BaseComponent {
@HostBinding('style.left') cssLeft: string
@HostBinding('style.top') cssTop: string
@HostBinding('style.width') cssWidth: string | null
@HostBinding('style.height') cssHeight: string | null
constructor (protected element: ElementRef) { super() }
protected setDimensions (x: number, y: number, w: number, h: number, unit = '%'): void {
this.cssLeft = `${x}${unit}`
this.cssTop = `${y}${unit}`
this.cssWidth = w ? `${w}${unit}` : null
this.cssHeight = h ? `${h}${unit}` : null
}
}

View File

@@ -1,13 +1,13 @@
import { Observable, Subject } from 'rxjs'
import { Component, Injectable, ViewChild, ViewContainerRef, EmbeddedViewRef, AfterViewInit, OnDestroy } from '@angular/core'
import { BaseTabComponent, BaseTabProcess } from './baseTab.component'
import { TabRecoveryProvider, RecoveredTab, RecoveryToken } from '../api/tabRecovery'
import { TabsService } from '../services/tabs.service'
import { TabRecoveryProvider, RecoveryToken } from '../api/tabRecovery'
import { TabsService, NewTabParameters } from '../services/tabs.service'
import { HotkeysService } from '../services/hotkeys.service'
import { TabRecoveryService } from '../services/tabRecovery.service'
export type SplitOrientation = 'v' | 'h' // eslint-disable-line @typescript-eslint/no-type-alias
export type SplitDirection = 'r' | 't' | 'b' | 'l' // eslint-disable-line @typescript-eslint/no-type-alias
export type SplitOrientation = 'v' | 'h'
export type SplitDirection = 'r' | 't' | 'b' | 'l'
/**
* Describes a horizontal or vertical split row or column
@@ -93,13 +93,13 @@ export class SplitContainer {
return s
}
async serialize (): Promise<RecoveryToken> {
async serialize (tabsRecovery: TabRecoveryService): Promise<RecoveryToken> {
const children: any[] = []
for (const child of this.children) {
if (child instanceof SplitContainer) {
children.push(await child.serialize())
children.push(await child.serialize(tabsRecovery))
} else {
children.push(await child.getRecoveryToken())
children.push(await tabsRecovery.getFullRecoveryToken(child))
}
}
return {
@@ -123,6 +123,25 @@ export interface SplitSpannerInfo {
index: number
}
/**
* Represents a tab drop zone
*/
export type SplitDropZoneInfo = {
x: number
y: number
w: number
h: number
} & ({
type: 'absolute'
container: SplitContainer
position: number
} | {
type: 'relative'
relativeTo?: BaseTabComponent|SplitContainer
side: SplitDirection
})
/**
* Split tab is a tab that contains other tabs and allows further splitting them
* You'll mainly encounter it inside [[AppService]].tabs
@@ -137,6 +156,21 @@ export interface SplitSpannerInfo {
[index]='spanner.index'
(change)='onSpannerAdjusted(spanner)'
></split-tab-spanner>
<split-tab-drop-zone
*ngFor='let dropZone of _dropZones'
[parent]='this'
[dropZone]='dropZone'
(tabDropped)='onTabDropped($event, dropZone)'
>
</split-tab-drop-zone>
<split-tab-pane-label
*ngFor='let tab of getAllTabs()'
cdkDropList
cdkAutoDropGroup='app-tabs'
[tab]='tab'
[parent]='this'
>
</split-tab-pane-label>
`,
styles: [require('./splitTab.component.scss')],
})
@@ -157,6 +191,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
/** @hidden */
_spanners: SplitSpannerInfo[] = []
/** @hidden */
_dropZones: SplitDropZoneInfo[] = []
/** @hidden */
_allFocusMode = false
@@ -166,12 +203,19 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
private viewRefs: Map<BaseTabComponent, EmbeddedViewRef<any>> = new Map()
private tabAdded = new Subject<BaseTabComponent>()
private tabAdopted = new Subject<BaseTabComponent>()
private tabRemoved = new Subject<BaseTabComponent>()
private splitAdjusted = new Subject<SplitSpannerInfo>()
private focusChanged = new Subject<BaseTabComponent>()
private initialized = new Subject<void>()
get tabAdded$ (): Observable<BaseTabComponent> { return this.tabAdded }
/**
* Fired when an existing top-level tab is dragged into this tab
*/
get tabAdopted$ (): Observable<BaseTabComponent> { return this.tabAdopted }
get tabRemoved$ (): Observable<BaseTabComponent> { return this.tabRemoved }
/**
@@ -209,7 +253,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
})
this.blurred$.subscribe(() => this.getAllTabs().forEach(x => x.emitBlurred()))
this.subscribeUntilDestroyed(this.hotkeys.matchedHotkey, hotkey => {
this.subscribeUntilDestroyed(this.hotkeys.hotkey$, hotkey => {
if (!this.hasFocus || !this.focusedTab) {
return
}
@@ -262,6 +306,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
async ngAfterViewInit (): Promise<void> {
if (this._recoveredState) {
await this.recoverContainer(this.root, this._recoveredState, this._recoveredState.duplicate)
this.updateTitle()
this.layout()
setTimeout(() => {
if (this.hasFocus) {
@@ -330,51 +375,77 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
}
}
addTab (tab: BaseTabComponent, relative: BaseTabComponent|null, side: SplitDirection): Promise<void> {
return this.add(tab, relative, side)
}
/**
* Inserts a new `tab` to the `side` of the `relative` tab
*/
async addTab (tab: BaseTabComponent, relative: BaseTabComponent|null, side: SplitDirection): Promise<void> {
tab.parent = this
async add (thing: BaseTabComponent|SplitContainer, relative: BaseTabComponent|SplitContainer|null, side: SplitDirection): Promise<void> {
if (thing instanceof SplitTabComponent) {
const tab = thing
thing = tab.root
tab.root = new SplitContainer()
for (const child of thing.getAllTabs()) {
child.removeFromContainer()
}
tab.destroy()
}
let target = (relative ? this.getParentOf(relative) : null) ?? this.root
let insertIndex = relative ? target.children.indexOf(relative) : -1
if (thing instanceof BaseTabComponent) {
if (thing.parent instanceof SplitTabComponent) {
thing.parent.removeTab(thing)
}
thing.removeFromContainer()
thing.parent = this
}
let target = relative ? this.getParentOf(relative) : null
if (!target) {
// Rewrap the root container just in case the orientation isn't compatibile
target = new SplitContainer()
target.orientation = ['l', 'r'].includes(side) ? 'h' : 'v'
target.children = [this.root]
target.ratios = [1]
this.root = target
}
let insertIndex = relative
? target.children.indexOf(relative) + ('tl'.includes(side) ? 0 : 1)
: 'tl'.includes(side) ? 0 : -1
if (
target.orientation === 'v' && ['l', 'r'].includes(side) ||
target.orientation === 'h' && ['t', 'b'].includes(side)
) {
// Inserting into a container but the orientation isn't compatible
const newContainer = new SplitContainer()
newContainer.orientation = target.orientation === 'v' ? 'h' : 'v'
newContainer.orientation = ['l', 'r'].includes(side) ? 'h' : 'v'
newContainer.children = relative ? [relative] : []
newContainer.ratios = [1]
target.children[insertIndex] = newContainer
target.children.splice(relative ? target.children.indexOf(relative) : -1, 1, newContainer)
target = newContainer
insertIndex = 0
}
if (insertIndex === -1) {
insertIndex = 0
} else {
insertIndex += side === 'l' || side === 't' ? 0 : 1
insertIndex = 'tl'.includes(side) ? 0 : 1
}
for (let i = 0; i < target.children.length; i++) {
target.ratios[i] *= target.children.length / (target.children.length + 1)
}
if (insertIndex === -1) {
insertIndex = target.ratios.length
}
target.ratios.splice(insertIndex, 0, 1 / (target.children.length + 1))
target.children.splice(insertIndex, 0, tab)
target.children.splice(insertIndex, 0, thing)
this.recoveryStateChangedHint.next()
await this.initialized$.toPromise()
this.attachTabView(tab)
setImmediate(() => {
this.layout()
this.tabAdded.next(tab)
this.focus(tab)
})
for (const tab of thing instanceof SplitContainer ? thing.getAllTabs() : [thing]) {
this.attachTabView(tab)
this.onAfterTabAdded(tab)
}
}
removeTab (tab: BaseTabComponent): void {
@@ -386,8 +457,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
parent.ratios.splice(index, 1)
parent.children.splice(index, 1)
this.detachTabView(tab)
tab.removeFromContainer()
tab.parent = null
this.viewRefs.delete(tab)
this.layout()
@@ -399,6 +471,22 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
}
}
replaceTab (tab: BaseTabComponent, newTab: BaseTabComponent): void {
const parent = this.getParentOf(tab)
if (!parent) {
return
}
const position = parent.children.indexOf(tab)
parent.children[position] = newTab
tab.removeFromContainer()
this.attachTabView(newTab)
tab.parent = null
newTab.parent = this
this.recoveryStateChangedHint.next()
this.onAfterTabAdded(newTab)
this.updateTitle()
}
/**
* Moves focus in the given direction
*/
@@ -453,7 +541,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
async splitTab (tab: BaseTabComponent, dir: SplitDirection): Promise<BaseTabComponent|null> {
const newTab = await this.tabsService.duplicate(tab)
if (newTab) {
this.addTab(newTab, tab, dir)
await this.addTab(newTab, tab, dir)
}
return newTab
}
@@ -484,7 +572,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
/** @hidden */
async getRecoveryToken (): Promise<any> {
return this.root.serialize()
return this.root.serialize(this.tabRecovery)
}
/** @hidden */
@@ -498,6 +586,20 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
this.splitAdjusted.next(spanner)
}
/** @hidden */
onTabDropped (tab: BaseTabComponent, zone: SplitDropZoneInfo) { // eslint-disable-line @typescript-eslint/explicit-module-boundary-types
if (tab === this) {
return
}
if (zone.type === 'relative') {
this.add(tab, zone.relativeTo ?? null, zone.side)
} else {
this.add(tab, zone.container.children[zone.position], zone.container.orientation === 'h' ? 'r' : 'b')
}
this.tabAdopted.next(tab)
}
destroy (): void {
super.destroy()
for (const x of this.getAllTabs()) {
@@ -508,20 +610,31 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
layout (): void {
this.root.normalize()
this._spanners = []
this._dropZones = []
this.layoutInternal(this.root, 0, 0, 100, 100)
}
private attachTabView (tab: BaseTabComponent) {
const ref = this.viewContainer.insert(tab.hostView) as EmbeddedViewRef<any> // eslint-disable-line @typescript-eslint/no-unnecessary-type-assertion
this.viewRefs.set(tab, ref)
clearActivity (): void {
for (const tab of this.getAllTabs()) {
tab.clearActivity()
}
super.clearActivity()
}
private updateTitle (): void {
this.setTitle(this.getAllTabs().map(x => x.title).join(' | '))
}
private attachTabView (tab: BaseTabComponent) {
const ref = tab.insertIntoContainer(this.viewContainer)
this.viewRefs.set(tab, ref)
tab.addEventListenerUntilDestroyed(ref.rootNodes[0], 'click', () => this.focus(tab))
tab.subscribeUntilDestroyed(tab.titleChange$, t => this.setTitle(t))
tab.subscribeUntilDestroyed(tab.titleChange$, () => this.updateTitle())
tab.subscribeUntilDestroyed(tab.activity$, a => a ? this.displayActivity() : this.clearActivity())
tab.subscribeUntilDestroyed(tab.progress$, p => this.setProgress(p))
if (tab.title) {
this.setTitle(tab.title)
this.updateTitle()
}
tab.subscribeUntilDestroyed(tab.recoveryStateChangedHint$, () => {
this.recoveryStateChangedHint.next()
@@ -531,17 +644,53 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
})
}
private detachTabView (tab: BaseTabComponent) {
const ref = this.viewRefs.get(tab)
if (ref) {
this.viewRefs.delete(tab)
this.viewContainer.remove(this.viewContainer.indexOf(ref))
}
private onAfterTabAdded (tab: BaseTabComponent) {
setImmediate(() => {
this.layout()
this.tabAdded.next(tab)
this.focus(tab)
})
}
private layoutInternal (root: SplitContainer, x: number, y: number, w: number, h: number) {
const size = root.orientation === 'v' ? h : w
const sizes = root.ratios.map(ratio => ratio * size)
const thickness = 10
if (root === this.root) {
this._dropZones.push({
x: x - thickness / 2,
y: y + thickness,
w: thickness,
h: h - thickness * 2,
type: 'relative',
side: 'l',
})
this._dropZones.push({
x,
y: y - thickness / 2,
w,
h: thickness,
type: 'relative',
side: 't',
})
this._dropZones.push({
x: x + w - thickness / 2,
y: y + thickness,
w: thickness,
h: h - thickness * 2,
type: 'relative',
side: 'r',
})
this._dropZones.push({
x,
y: y + h - thickness / 2,
w,
h: thickness,
type: 'relative',
side: 'b',
})
}
root.x = x
root.y = y
@@ -577,8 +726,63 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
}
}
}
offset += sizes[i]
if (i !== root.ratios.length - 1) {
// Spanner area
this._dropZones.push({
type: 'relative',
relativeTo: root.children[i],
side: root.orientation === 'v' ? 'b': 'r',
x: root.orientation === 'v' ? childX + thickness : childX + offset - thickness / 2,
y: root.orientation === 'v' ? childY + offset - thickness / 2 : childY + thickness,
w: root.orientation === 'v' ? childW - thickness * 2 : thickness,
h: root.orientation === 'v' ? thickness : childH - thickness * 2,
})
}
// Sides
if (root.orientation === 'v') {
this._dropZones.push({
x: childX,
y: childY + thickness,
w: thickness,
h: childH - thickness * 2,
type: 'relative',
relativeTo: child,
side: 'l',
})
this._dropZones.push({
x: childX + w - thickness,
y: childY + thickness,
w: thickness,
h: childH - thickness * 2,
type: 'relative',
relativeTo: child,
side: 'r',
})
} else {
this._dropZones.push({
x: childX + thickness,
y: childY,
w: childW - thickness * 2,
h: thickness,
type: 'relative',
relativeTo: child,
side: 't',
})
this._dropZones.push({
x: childX + thickness,
y: childY + childH - thickness,
w: childW - thickness * 2,
h: thickness,
type: 'relative',
relativeTo: child,
side: 'b',
})
}
if (i !== 0) {
this._spanners.push({
container: root,
@@ -594,6 +798,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
root.ratios = state.ratios
root.children = children
for (const childState of state.children) {
if (!childState) {
continue
}
if (childState.type === 'app:split-tab') {
const child = new SplitContainer()
await this.recoverContainer(child, childState, duplicate)
@@ -601,7 +808,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
} else {
const recovered = await this.tabRecovery.recoverTab(childState, duplicate)
if (recovered) {
const tab = this.tabsService.create(recovered.type, recovered.options)
const tab = this.tabsService.create(recovered)
children.push(tab)
tab.parent = this
this.attachTabView(tab)
@@ -618,16 +825,16 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
}
/** @hidden */
@Injectable()
export class SplitTabRecoveryProvider extends TabRecoveryProvider {
@Injectable({ providedIn: 'root' })
export class SplitTabRecoveryProvider extends TabRecoveryProvider<SplitTabComponent> {
async applicableTo (recoveryToken: RecoveryToken): Promise<boolean> {
return recoveryToken.type === 'app:split-tab'
}
async recover (recoveryToken: RecoveryToken): Promise<RecoveredTab> {
async recover (recoveryToken: RecoveryToken): Promise<NewTabParameters<SplitTabComponent>> {
return {
type: SplitTabComponent,
options: { _recoveredState: recoveryToken },
inputs: { _recoveredState: recoveryToken },
}
}

View File

@@ -0,0 +1,39 @@
:host {
position: absolute;
display: flex;
z-index: 5;
padding: 15px;
transition: all 125ms cubic-bezier(0, 0, 0.2, 1);
> div {
flex: 1 1 0;
width: 100%;
height: 100%;
opacity: 0;
background: rgba(255, 255, 255, .125);
border-radius: 5px;
border: 1px solid rgba(255, 255, 255, .25);
transition: all 125ms cubic-bezier(0, 0, 0.2, 1);
}
&.highlighted {
padding: 0px;
border-radius: 3px;
> div {
opacity: 1;
background: rgba(255, 255, 255, .5);
}
}
&:not(.active) {
pointer-events: none;
opacity: 0;
}
::ng-deep tab-header {
// placeholders
opacity: 0;
}
}

View File

@@ -0,0 +1,54 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { Component, Input, HostBinding, ElementRef, Output, EventEmitter } from '@angular/core'
import { AppService } from '../services/app.service'
import { BaseTabComponent } from './baseTab.component'
import { SelfPositioningComponent } from './selfPositioning.component'
import { SplitDropZoneInfo } from './splitTab.component'
/** @hidden */
@Component({
selector: 'split-tab-drop-zone',
template: `
<div
cdkDropList
(cdkDropListDropped)="tabDropped.emit($event.item.data); isHighlighted = false"
(cdkDropListEntered)="isHighlighted = true"
(cdkDropListExited)="isHighlighted = false"
cdkAutoDropGroup='app-tabs'
>
</div>
`,
styles: [require('./splitTabDropZone.component.scss')],
})
export class SplitTabDropZoneComponent extends SelfPositioningComponent {
@Input() dropZone: SplitDropZoneInfo
@Input() parent: BaseTabComponent
@Output() tabDropped = new EventEmitter<BaseTabComponent>()
@HostBinding('class.active') isActive = false
@HostBinding('class.highlighted') isHighlighted = false
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
constructor (
element: ElementRef,
app: AppService,
) {
super(element)
this.subscribeUntilDestroyed(app.tabDragActive$, tab => {
this.isActive = !!tab && tab !== this.parent && (this.dropZone.type === 'relative' || tab !== this.dropZone.container.children[this.dropZone.position])
this.layout()
})
}
ngOnChanges () {
this.layout()
}
layout () {
this.setDimensions(
this.dropZone.x,
this.dropZone.y,
this.dropZone.w,
this.dropZone.h,
)
}
}

View File

@@ -0,0 +1,35 @@
:host {
position: absolute;
background: rgba(255, 255, 255, .25);
display: flex;
align-items: center;
justify-content: center;
pointer-events: none;
z-index: 10;
opacity: 0;
transition: .125s opacity cubic-bezier(0.86, 0, 0.07, 1);
}
div {
background: rgba(0, 0, 0, .7);
padding: 20px 30px;
font-size: 18px;
color: #fff;
display: flex;
align-items: center;
border-radius: 5px;
cursor: move;
}
:host.active {
opacity: 1;
> div {
pointer-events: initial;
}
}
label {
margin: 0;
cursor: move;
}

View File

@@ -0,0 +1,80 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { Component, Input, HostBinding, ElementRef } from '@angular/core'
import { HotkeysService } from '../services/hotkeys.service'
import { AppService } from '../services/app.service'
import { BaseTabComponent } from './baseTab.component'
import { SelfPositioningComponent } from './selfPositioning.component'
/** @hidden */
@Component({
selector: 'split-tab-pane-label',
template: `
<div
cdkDrag
[cdkDragData]='tab'
(cdkDragStarted)='onTabDragStart(tab)'
(cdkDragEnded)='onTabDragEnd()'
>
<i class="fa fa-window-maximize mr-3"></i>
<label>{{tab.title}}</label>
</div>
`,
styles: [require('./splitTabPaneLabel.component.scss')],
})
export class SplitTabPaneLabelComponent extends SelfPositioningComponent {
@Input() tab: BaseTabComponent
@Input() parent: BaseTabComponent
@HostBinding('class.active') isActive = false
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
constructor (
element: ElementRef,
hotkeys: HotkeysService,
private app: AppService,
) {
super(element)
this.subscribeUntilDestroyed(hotkeys.hotkey$, hk => {
if (hk === 'rearrange-panes' && this.parent.hasFocus) {
this.isActive = true
this.layout()
}
})
this.subscribeUntilDestroyed(hotkeys.hotkeyOff$, hk => {
if (hk === 'rearrange-panes') {
this.isActive = false
}
})
}
ngOnChanges () {
this.layout()
}
onTabDragStart (tab: BaseTabComponent): void {
this.app.emitTabDragStarted(tab)
}
onTabDragEnd (): void {
setTimeout(() => {
this.app.emitTabDragEnded()
this.app.emitTabsChanged()
})
}
layout () {
const tabElement: HTMLElement|undefined = this.tab.viewContainerEmbeddedRef?.rootNodes[0]
if (!tabElement) {
// being destroyed
return
}
this.setDimensions(
tabElement.offsetLeft,
tabElement.offsetTop,
tabElement.clientWidth,
tabElement.clientHeight,
'px'
)
}
}

View File

@@ -3,6 +3,7 @@
position: absolute;
z-index: 5;
transition: 0.125s background;
background: rgba(0, 0, 0, .2);
&.v {
cursor: ns-resize;

View File

@@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { Component, Input, HostBinding, ElementRef, Output, EventEmitter } from '@angular/core'
import { SelfPositioningComponent } from './selfPositioning.component'
import { SplitContainer } from './splitTab.component'
/** @hidden */
@@ -8,20 +9,19 @@ import { SplitContainer } from './splitTab.component'
template: '',
styles: [require('./splitTabSpanner.component.scss')],
})
export class SplitTabSpannerComponent {
export class SplitTabSpannerComponent extends SelfPositioningComponent {
@Input() container: SplitContainer
@Input() index: number
@Output() change = new EventEmitter<void>()
@HostBinding('class.active') isActive = false
@HostBinding('class.h') isHorizontal = false
@HostBinding('class.v') isVertical = true
@HostBinding('style.left') cssLeft: string
@HostBinding('style.top') cssTop: string
@HostBinding('style.width') cssWidth: string | null
@HostBinding('style.height') cssHeight: string | null
private marginOffset = -5
constructor (private element: ElementRef) { }
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
constructor (element: ElementRef) {
super(element)
}
ngAfterViewInit () {
this.element.nativeElement.addEventListener('dblclick', () => {
@@ -92,11 +92,4 @@ export class SplitTabSpannerComponent {
this.container.ratios[this.index] = ratio
this.change.emit()
}
private setDimensions (x: number, y: number, w: number, h: number) {
this.cssLeft = `${x}%`
this.cssTop = `${y}%`
this.cssWidth = w ? `${w}%` : null
this.cssHeight = h ? `${h}%` : null
}
}

View File

@@ -3,9 +3,9 @@ div
h1.tabby-title Tabby
sup α
.list-group
.list-group.mb-4
a.list-group-item.list-group-item-action.d-flex(
*ngFor='let button of getButtons()',
*ngFor='let button of getButtons(); trackBy: buttonsTrackBy',
(click)='button.click()',
)
.d-flex.align-self-center([innerHTML]='sanitizeIcon(button.icon)')
@@ -13,10 +13,10 @@ div
footer.d-flex.align-items-center
.btn-group.mr-auto
button.btn.btn-secondary((click)='homeBase.openGitHub()')
button.btn.btn-dark((click)='homeBase.openGitHub()')
i.fab.fa-github
span GitHub
button.btn.btn-secondary((click)='homeBase.reportBug()')
button.btn.btn-dark((click)='homeBase.reportBug()')
i.fas.fa-bug
span Report a problem

View File

@@ -13,7 +13,7 @@ import { ToolbarButton, ToolbarButtonProvider } from '../api'
export class StartPageComponent {
version: string
private constructor (
constructor (
private config: ConfigService,
private domSanitizer: DomSanitizer,
public homeBase: HomeBaseService,
@@ -25,6 +25,7 @@ export class StartPageComponent {
return this.config.enabledServices(this.toolbarButtonProviders)
.map(provider => provider.provide())
.reduce((a, b) => a.concat(b))
.filter(x => x.showInStartPage ?? true)
.filter(x => !!x.click)
.sort((a: ToolbarButton, b: ToolbarButton) => (a.weight ?? 0) - (b.weight ?? 0))
}
@@ -32,4 +33,8 @@ export class StartPageComponent {
sanitizeIcon (icon?: string): any {
return this.domSanitizer.bypassSecurityTrustHtml(icon ?? '')
}
buttonsTrackBy (btn: ToolbarButton): any {
return btn.title + btn.icon
}
}

View File

@@ -6,9 +6,6 @@ import { BaseTabComponent } from '../components/baseTab.component'
@Component({
selector: 'tab-body',
template: `
<!--perfect-scrollbar [config]="{ suppressScrollX: true }" *ngIf="scrollable">
<ng-template #scrollablePlaceholder></ng-template>
</perfect-scrollbar-->
<ng-template #placeholder></ng-template>
`,
styles: [
@@ -19,20 +16,22 @@ import { BaseTabComponent } from '../components/baseTab.component'
export class TabBodyComponent implements OnChanges {
@Input() @HostBinding('class.active') active: boolean
@Input() tab: BaseTabComponent
@ViewChild('placeholder', { read: ViewContainerRef }) placeholder: ViewContainerRef
@ViewChild('placeholder', { read: ViewContainerRef }) placeholder?: ViewContainerRef
ngOnChanges (changes) {
if (changes.tab) {
if (this.placeholder) {
this.placeholder.detach()
}
this.placeholder?.detach()
setImmediate(() => {
this.placeholder.insert(this.tab.hostView)
this.placeholder?.insert(this.tab.hostView)
})
}
}
detach () {
this.placeholder?.detach()
}
ngOnDestroy () {
this.placeholder.detach()
this.placeholder?.detach()
}
}

View File

@@ -2,9 +2,18 @@
.progressbar([style.width]='progress + "%"', *ngIf='progress != null')
.activity-indicator(*ngIf='tab.activity$|async')
.index(*ngIf='!config.store.terminal.hideTabIndex', #handle) {{index + 1}}
.index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform === Platform.macOS', cdkDragHandle) {{index + 1}}
.index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform !== Platform.macOS') {{index + 1}}
.name(
[title]='tab.customTitle || tab.title',
[class.no-hover]='config.store.terminal.hideCloseButton'
cdkDrag,
cdkDragRootElement='tab-header',
[cdkDragData]='tab',
(cdkDragStarted)='onTabDragStart(tab)',
(cdkDragEnded)='onTabDragEnd()',
) {{tab.customTitle || tab.title}}
button(*ngIf='!config.store.terminal.hideCloseButton',(click)='app.closeTab(tab, true)') &times;
ng-content

View File

@@ -1,6 +1,5 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import { Component, Input, Optional, Inject, HostBinding, HostListener, ViewChild, ElementRef, NgZone } from '@angular/core'
import { SortableComponent } from 'ng2-dnd'
import { Component, Input, Optional, Inject, HostBinding, HostListener, NgZone } from '@angular/core'
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
import { TabContextMenuItemProvider } from '../api/tabContextMenuProvider'
import { BaseTabComponent } from './baseTab.component'
@@ -13,11 +12,6 @@ import { BaseComponent } from './base.component'
import { MenuItemOptions } from '../api/menu'
import { PlatformService } from '../api/platform'
/** @hidden */
export interface SortableComponentProxy {
setDragHandle: (_: HTMLElement) => void
}
/** @hidden */
@Component({
selector: 'tab-header',
@@ -29,21 +23,20 @@ export class TabHeaderComponent extends BaseComponent {
@Input() @HostBinding('class.active') active: boolean
@Input() tab: BaseTabComponent
@Input() progress: number|null
@ViewChild('handle') handle?: ElementRef
Platform = Platform
private constructor (
constructor (
public app: AppService,
public config: ConfigService,
private hostApp: HostAppService,
public hostApp: HostAppService,
private ngbModal: NgbModal,
private hotkeys: HotkeysService,
private platform: PlatformService,
private zone: NgZone,
@Inject(SortableComponent) private parentDraggable: SortableComponentProxy,
@Optional() @Inject(TabContextMenuItemProvider) protected contextMenuProviders: TabContextMenuItemProvider[],
) {
super()
this.subscribeUntilDestroyed(this.hotkeys.matchedHotkey, (hotkey) => {
this.subscribeUntilDestroyed(this.hotkeys.hotkey$, (hotkey) => {
if (this.app.activeTab === this.tab) {
if (hotkey === 'rename-tab') {
this.showRenameTabModal()
@@ -61,18 +54,13 @@ export class TabHeaderComponent extends BaseComponent {
})
}
ngAfterViewInit () {
if (this.handle && this.hostApp.platform === Platform.macOS) {
this.parentDraggable.setDragHandle(this.handle.nativeElement)
}
}
showRenameTabModal (): void {
const modal = this.ngbModal.open(RenameTabModalComponent)
modal.componentInstance.value = this.tab.customTitle || this.tab.title
modal.result.then(result => {
this.tab.setTitle(result)
this.tab.customTitle = result
this.app.emitTabsChanged()
}).catch(() => null)
}
@@ -85,12 +73,24 @@ export class TabHeaderComponent extends BaseComponent {
return items.slice(1)
}
onTabDragStart (tab: BaseTabComponent) {
this.app.emitTabDragStarted(tab)
}
onTabDragEnd () {
setTimeout(() => {
this.app.emitTabDragEnded()
this.app.emitTabsChanged()
})
}
@HostBinding('class.flex-width') get isFlexWidthEnabled (): boolean {
return this.config.store.appearance.flexTabs
}
@HostListener('dblclick') onDoubleClick (): void {
@HostListener('dblclick', ['$event']) onDoubleClick ($event: MouseEvent): void {
this.showRenameTabModal()
$event.stopPropagation()
}
@HostListener('mousedown', ['$event']) async onMouseDown ($event: MouseEvent) {

View File

@@ -5,7 +5,7 @@
.icon(*ngIf='isDownload(transfer)') !{require('../icons/download.svg')}
.icon(*ngIf='!isDownload(transfer)') !{require('../icons/upload.svg')}
.main
label {{transfer.getName()}}
label.no-wrap([title]='transfer.getName()') {{transfer.getName()}}
.status(*ngIf='transfer.isComplete()')
ngb-progressbar(type='success', [value]='100')
.status(*ngIf='transfer.isCancelled()')

View File

@@ -1,11 +1,14 @@
:host {
min-width: 300px;
max-height: 80vh;
overflow-y: auto;
}
.transfer {
display: flex;
align-items: center;
padding: 5px 0 5px 25px;
width: 100%;
.icon {
padding: 4px 7px;
@@ -16,12 +19,16 @@
}
.main {
width: 100%;
display: flex;
flex-direction: column;
min-width: 0;
margin-right: auto;
margin-bottom: 3px;
width: 100%;
label {
margin: 0;
max-width: 100%;
}
}
@@ -44,3 +51,7 @@
button {
flex: none;
}
svg {
height: 14px;
}

View File

@@ -43,6 +43,7 @@ export class TransfersMenuComponent {
message: 'There are active file transfers',
buttons: ['Abort all', 'Do not abort'],
defaultId: 1,
cancelId: 1,
})).response === 1) {
return
}

View File

@@ -3,7 +3,7 @@
h3.m-0 Vault is locked
.ml-auto(ngbDropdown, placement='bottom-right')
button.btn.btn-link(ngbDropdownToggle, (click)='$event.stopPropagation()')
span(*ngIf='rememberFor') Remember for {{rememberFor}} min
span(*ngIf='rememberFor') Remember for {{getRememberForDisplay(rememberFor)}}
span(*ngIf='!rememberFor') Do not remember
div(ngbDropdownMenu)
button.dropdown-item(
@@ -12,7 +12,7 @@
button.dropdown-item(
*ngFor='let x of rememberOptions',
(click)='rememberFor = x',
) {{x}} min
) {{getRememberForDisplay(x)}}
.input-group
input.form-control.form-control-lg(

View File

@@ -8,7 +8,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
export class UnlockVaultModalComponent {
passphrase: string
rememberFor = 1
rememberOptions = [1, 5, 15, 60]
rememberOptions = [1, 5, 15, 60, 1440, 10080]
@ViewChild('input') input: ElementRef
constructor (
@@ -33,4 +33,14 @@ export class UnlockVaultModalComponent {
cancel (): void {
this.modalInstance.close(null)
}
getRememberForDisplay (rememberOption: number): string {
if (rememberOption >= 1440) {
return `${Math.round(rememberOption/1440*10)/10} day`
} else if (rememberOption >= 60) {
return `${Math.round(rememberOption/60*10)/10} hour`
} else {
return `${rememberOption} min`
}
}
}

View File

@@ -19,18 +19,6 @@
.description Toggles the Tabby window visibility
toggle([(ngModel)]='enableGlobalHotkey')
.form-line
.header
.title Enable #[strong SSH] plugin
.description Adds an SSH connection manager UI to Tabby
toggle([(ngModel)]='enableSSH')
.form-line
.header
.title Enable #[strong Serial] plugin
.description Allows attaching Tabby to serial ports
toggle([(ngModel)]='enableSerial')
.text-center.mt-5
button.btn.btn-primary((click)='closeAndDisable()') Close and never show again

View File

@@ -11,8 +11,6 @@ import { HostWindowService } from '../api/hostWindow'
styles: [require('./welcomeTab.component.scss')],
})
export class WelcomeTabComponent extends BaseTabComponent {
enableSSH = false
enableSerial = false
enableGlobalHotkey = true
constructor (
@@ -21,23 +19,15 @@ export class WelcomeTabComponent extends BaseTabComponent {
) {
super()
this.setTitle('Welcome')
this.enableSSH = !config.store.pluginBlacklist.includes('ssh')
this.enableSerial = !config.store.pluginBlacklist.includes('serial')
}
closeAndDisable () {
async closeAndDisable () {
this.config.store.enableWelcomeTab = false
this.config.store.pluginBlacklist = []
if (!this.enableSSH) {
this.config.store.pluginBlacklist.push('ssh')
}
if (!this.enableSerial) {
this.config.store.pluginBlacklist.push('serial')
}
if (!this.enableGlobalHotkey) {
this.config.store.hotkeys['toggle-window'] = []
}
this.config.save()
await this.config.save()
this.hostWindow.reload()
}
}

View File

@@ -13,6 +13,7 @@ button {
line-height: 0;
text-align: center;
align-items: center;
justify-content: center;
&:not(:hover):not(:active) {
background: transparent;
@@ -21,4 +22,9 @@ button {
&:focus {
box-shadow: none;
}
svg {
width: 10px;
height: 10px;
}
}

View File

@@ -10,7 +10,7 @@ import { AppService } from '../services/app.service'
styles: [require('./windowControls.component.scss')],
})
export class WindowControlsComponent {
private constructor (public hostWindow: HostWindowService, public app: AppService) { }
constructor (public hostWindow: HostWindowService, public app: AppService) { }
async closeWindow () {
this.app.closeWindow()

View File

@@ -18,6 +18,9 @@ hotkeys:
- 'Ctrl-Shift-PageUp'
move-tab-right:
- 'Ctrl-Shift-PageDown'
rearrange-panes:
- 'Ctrl-Shift'
duplicate-tab: []
tab-1:
- 'Alt-1'
tab-2:
@@ -69,4 +72,7 @@ hotkeys:
pane-maximize:
- 'Ctrl-Alt-Enter'
close-pane: []
pluginBlacklist: ['ssh']
switch-profile:
- 'Ctrl-Alt-T'
profile-selector:
- 'Ctrl-Shift-T'

View File

@@ -16,6 +16,8 @@ hotkeys:
- '⌘-Shift-Left'
move-tab-right:
- '⌘-Shift-Right'
rearrange-panes:
- '⌘-Shift'
tab-1:
- '⌘-1'
tab-2:
@@ -36,6 +38,7 @@ hotkeys:
- '⌘-9'
tab-10:
- '⌘-0'
duplicate-tab: []
tab-11: []
tab-12: []
tab-13: []
@@ -68,4 +71,7 @@ hotkeys:
- '⌘-⌥-Enter'
close-pane:
- '⌘-Shift-W'
pluginBlacklist: ['ssh']
profile-selector:
- '⌘-E'
switch-profile:
- '⌘-Shift-E'

View File

@@ -19,6 +19,9 @@ hotkeys:
- 'Ctrl-Shift-PageUp'
move-tab-right:
- 'Ctrl-Shift-PageDown'
rearrange-panes:
- 'Ctrl-Shift'
duplicate-tab: []
tab-1:
- 'Alt-1'
tab-2:
@@ -70,4 +73,7 @@ hotkeys:
pane-maximize:
- 'Ctrl-Alt-Enter'
close-pane: []
pluginBlacklist: []
switch-profile:
- 'Ctrl-Alt-T'
profile-selector:
- 'Ctrl-Shift-T'

View File

@@ -12,10 +12,20 @@ appearance:
frame: thin
css: '/* * { color: blue !important; } */'
opacity: 1.0
vibrancy: true
vibrancy: false
vibrancyType: 'blur'
terminal:
recoverTabs: true
showBuiltinProfiles: true
showRecentProfiles: 3
hotkeys:
profile:
__nonStructural: true
profile-selectors:
__nonStructural: true
profiles: []
profileDefaults:
__nonStructural: true
recoverTabs: true
enableAnalytics: true
enableWelcomeTab: true
electronFlags:
@@ -24,3 +34,7 @@ enableAutomaticUpdates: true
version: 1
vault: null
encrypted: false
enableExperimentalFeatures: false
pluginBlacklist: []
hacks:
disableGPU: false

Some files were not shown because too many files have changed in this diff Show More