Compare commits

..

171 Commits

Author SHA1 Message Date
dependabot[bot]
00d2c26bc9 build(deps-dev): bump patch-package in /tabby-terminal
Bumps [patch-package](https://github.com/ds300/patch-package) from 6.5.0 to 8.0.0.
- [Release notes](https://github.com/ds300/patch-package/releases)
- [Changelog](https://github.com/ds300/patch-package/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ds300/patch-package/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-03 08:25:05 +00:00
Eugene
7572f3c26f Merge pull request #8751 from Eugeny/dependabot/npm_and_yarn/app/serialport-11.0.1 2023-08-03 10:23:48 +02:00
Eugene
326d8b3fb1 Merge pull request #8752 from Eugeny/dependabot/npm_and_yarn/app/atomically-2.0.2 2023-08-03 10:23:39 +02:00
Eugene
9b4f1a3a0d Merge pull request #8720 from Eugeny/dependabot/npm_and_yarn/word-wrap-1.2.4 2023-08-03 10:22:51 +02:00
Eugene
0d275595cf Merge pull request #8656 from Eugeny/dependabot/github_actions/actions/setup-node-3.7.0 2023-08-03 10:22:25 +02:00
dependabot[bot]
7860c73e49 build(deps-dev): bump atomically from 1.7.0 to 2.0.2 in /app
Bumps [atomically](https://github.com/fabiospampinato/atomically) from 1.7.0 to 2.0.2.
- [Commits](https://github.com/fabiospampinato/atomically/compare/v1.7.0...v2.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-27 04:54:46 +00:00
dependabot[bot]
fa9dea0f64 build(deps): bump serialport from 11.0.0 to 11.0.1 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 11.0.0 to 11.0.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/v11.0.0...v11.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-27 04:54:31 +00:00
Eugene Pankov
0101ffddb6 Update build-macos.mjs 2023-07-19 10:21:00 +02:00
Eugene Pankov
726ad23a32 Update build.yml 2023-07-19 09:56:45 +02:00
Eugene Pankov
4fe2a45664 Update build-macos.mjs 2023-07-19 09:13:43 +02:00
Eugene Pankov
6f8d687529 Update build-macos.mjs 2023-07-19 09:08:21 +02:00
Eugene Pankov
9d05fbeb90 use native notarization 2023-07-19 00:03:58 +02:00
Eugene Pankov
299be86498 automatic dark/light theme - fixes #3934 2023-07-18 23:48:43 +02:00
Eugene Pankov
bd337a4197 updated patch 2023-07-18 23:18:54 +02:00
Eugene Pankov
a1cb0ff223 fix deprecation 2023-07-18 23:17:07 +02:00
Eugene Pankov
ae2f3f162e bumped electron-builder 2023-07-18 22:46:20 +02:00
dependabot[bot]
91cb9e5c63 Bump actions/setup-node from 3.6.0 to 3.7.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3.6.0...v3.7.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>
2023-07-18 20:07:17 +00:00
dependabot[bot]
e2cc9b98ee build(deps): bump word-wrap from 1.2.3 to 1.2.4
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-18 20:06:31 +00:00
Eugene Pankov
b8f2204d4f Update build.yml 2023-07-18 22:05:36 +02:00
Eugene Pankov
35bca545f8 Update README.md 2023-07-18 21:07:05 +02:00
Eugene
8b89db41d2 Merge pull request #8709 from Clem-Fern/feat#8680 2023-07-18 17:12:14 +02:00
Clem
d36b2b21c9 feat(settings): Eugeny/tabby#8680 configurable priotity on quick connect profile selector option 2023-07-18 14:10:31 +02:00
Eugene
2d8a0aff61 Merge pull request #8711 from Eugeny/all-contributors/add-FeroTheFox 2023-07-16 23:12:59 +02:00
allcontributors[bot]
db916c922a update README.id-ID.md [skip ci] 2023-07-16 21:09:41 +00:00
allcontributors[bot]
dfc438258d update .all-contributorsrc [skip ci] 2023-07-16 21:09:40 +00:00
allcontributors[bot]
6a714a746f update README.es-ES.md [skip ci] 2023-07-16 21:09:38 +00:00
allcontributors[bot]
54284741e0 update README.pt-BR.md [skip ci] 2023-07-16 21:04:18 +00:00
allcontributors[bot]
e4b545f231 update README.ja-JP.md [skip ci] 2023-07-16 21:04:17 +00:00
allcontributors[bot]
c27566a561 update README.de-DE.md [skip ci] 2023-07-16 21:03:44 +00:00
allcontributors[bot]
43121c33f2 update README.it-IT.md [skip ci] 2023-07-16 21:03:43 +00:00
allcontributors[bot]
4b34f76997 update README.ko-KR.md [skip ci] 2023-07-16 21:03:42 +00:00
allcontributors[bot]
24db1cb99a update README.ru-RU.md [skip ci] 2023-07-16 21:03:41 +00:00
allcontributors[bot]
147d22f386 update README.zh-CN.md [skip ci] 2023-07-16 21:03:40 +00:00
allcontributors[bot]
c04b93c56c update README.md [skip ci] 2023-07-16 21:03:39 +00:00
Eugene
ddab79d3ac Merge pull request #8707 from FeroTheFox/master 2023-07-16 23:02:58 +02:00
Evan / Fero
c501f541c8 fix: @input typo 2023-07-16 13:29:50 -07:00
Evan / Fero
8af3c95212 fix: linting 2023-07-16 12:06:11 -07:00
Evan / Fero
2fa612fe2c feat: use @input on titlebar component; chore: comment cleaning 2023-07-16 11:57:19 -07:00
Eugene
725bc225f1 Merge pull request #8710 from Eugeny/all-contributors/add-wljince007 2023-07-16 12:34:23 +02:00
allcontributors[bot]
8451848ba6 update .all-contributorsrc [skip ci] 2023-07-16 10:02:57 +00:00
allcontributors[bot]
186a4afa1c update README.id-ID.md [skip ci] 2023-07-16 09:59:26 +00:00
allcontributors[bot]
1d1b149ea8 update README.es-ES.md [skip ci] 2023-07-16 09:58:32 +00:00
allcontributors[bot]
b217aaf03b update README.pt-BR.md [skip ci] 2023-07-16 09:54:21 +00:00
allcontributors[bot]
c7471f737f update README.ja-JP.md [skip ci] 2023-07-16 09:53:23 +00:00
allcontributors[bot]
124d600bfd update README.de-DE.md [skip ci] 2023-07-16 09:50:34 +00:00
allcontributors[bot]
a3f2405092 update README.it-IT.md [skip ci] 2023-07-16 09:50:33 +00:00
allcontributors[bot]
a92f8956d4 update README.ko-KR.md [skip ci] 2023-07-16 09:50:32 +00:00
allcontributors[bot]
22fb2dbda2 update README.ru-RU.md [skip ci] 2023-07-16 09:50:31 +00:00
allcontributors[bot]
303eab2f0e update README.zh-CN.md [skip ci] 2023-07-16 09:50:30 +00:00
allcontributors[bot]
8a12e7c6d1 update README.md [skip ci] 2023-07-16 09:50:29 +00:00
Eugene
821dcbff69 Merge pull request #8693 from wljince007/v1.0.197_fixerror 2023-07-16 11:50:18 +02:00
wljince007
44d8c3f04b config of different configProviders combination merge together 2023-07-16 17:46:27 +08:00
Evan / Fero
af515e01cf Merge remote-tracking branch 'upstream/master' 2023-07-15 20:07:57 -07:00
Clem Fern
aba773b546 lint 2023-07-15 21:37:23 +02:00
Clem Fern
9ac5286017 fix(core): push all freeInputPattern into filteredOptions selectorModal 2023-07-15 21:35:01 +02:00
Clem Fern
555c7f7b20 feat(telnet): enable quick connect 2023-07-15 21:32:47 +02:00
Clem Fern
3857beb46b feat(core): Eugeny/tabby#8680 push all quick-connect provider into profile selector 2023-07-15 21:10:16 +02:00
Eugene Pankov
fcac52a844 fixed #5862 - configurable Backspace behaviour 2023-07-15 12:17:47 +02:00
Eugene Pankov
4736b11c62 bumped node-pty 2023-07-15 11:30:29 +02:00
Eugene Pankov
a128a647d9 renamed patch 2023-07-15 11:30:29 +02:00
Evan / Fero
9638be5349 Update appRoot.component.pug 2023-07-14 12:36:36 -07:00
Evan / Fero
9c863762c3 Fix: formatting err 2023-07-14 12:27:35 -07:00
Evan / Fero
539c213ef6 Fix: linting errors 2023-07-14 12:15:53 -07:00
Evan / Fero
d2bdb55c6d Fix: spacer div doesn't need full height 2023-07-14 12:14:05 -07:00
Evan / Fero
4edc0be280 Fix: wrong condition for spacer div 2023-07-14 12:07:51 -07:00
Evan / Fero
f10b8c0f35 Fix: spacer div should not appear in vertical tab layout 2023-07-14 12:04:32 -07:00
Evan / Fero
e38b826fd6 fix: WCO color, settings icon position 2023-07-14 11:57:27 -07:00
Evan / Fero
2f1c388a8b Feat: implement window controls overlay 2023-07-13 23:53:33 -07:00
Eugene
e7f7d9b024 Merge pull request #8663 from Clem-Fern/feat#5688 2023-07-11 20:01:10 +02:00
Clem
47a6e81998 fix Eugeny/tabby#8534 by @Eugeny 2023-07-11 19:00:27 +02:00
Clem
eea3ab9c74 Revert "fix Eugeny/tabby#8534 : skip yaml unacceptable kind of object to dump"
This reverts commit 82a262026f.
2023-07-11 18:49:53 +02:00
Clem
0313e872fd fix(core): new config migration to recover profile without ID 2023-07-10 18:03:14 +02:00
Eugene
84422d4453 Merge pull request #8678 from Eugeny/all-contributors/add-DehanLUO 2023-07-10 09:15:26 +02:00
allcontributors[bot]
32696cc047 update .all-contributorsrc [skip ci] 2023-07-10 07:06:10 +00:00
allcontributors[bot]
78485617e9 update README.ja-JP.md [skip ci] 2023-07-10 07:06:06 +00:00
allcontributors[bot]
56f6b88ac2 update README.es-ES.md [skip ci] 2023-07-10 07:05:52 +00:00
allcontributors[bot]
50fac29c5e update README.pt-BR.md [skip ci] 2023-07-10 07:05:50 +00:00
allcontributors[bot]
c13effeadc update README.id-ID.md [skip ci] 2023-07-10 07:05:47 +00:00
allcontributors[bot]
f0f0bbedf9 update README.de-DE.md [skip ci] 2023-07-10 07:05:38 +00:00
allcontributors[bot]
897d6167a9 update README.it-IT.md [skip ci] 2023-07-10 07:05:37 +00:00
allcontributors[bot]
a63011ca15 update README.ko-KR.md [skip ci] 2023-07-10 07:05:36 +00:00
allcontributors[bot]
eae2095787 update README.ru-RU.md [skip ci] 2023-07-10 07:05:36 +00:00
allcontributors[bot]
3efe6ce4cd update README.zh-CN.md [skip ci] 2023-07-10 07:05:34 +00:00
allcontributors[bot]
4966397fca update README.md [skip ci] 2023-07-10 07:05:33 +00:00
Eugene
57da067727 Merge pull request #8677 from DehanLUO/master 2023-07-10 09:05:32 +02:00
DehanLUO
fa50c7d9fa Stop local echo when remote echo is on 2023-07-10 02:10:54 -04:00
DehanLUO
9a82c4c5c0 Stop local echo when remote echo is on 2023-07-10 01:48:48 -04:00
Clem
a4136bec6e lint 2023-07-07 15:15:13 +02:00
Clem
82a262026f fix Eugeny/tabby#8534 : skip yaml unacceptable kind of object to dump 2023-07-07 15:06:47 +02:00
Clem
6709217a86 fix(tabby-terminal): save icon/color/group/dynamic title/behavior on session end with 'Save As' Profile 2023-07-07 15:03:57 +02:00
Clem
4bbf86a7a7 fix(tabby-terminal): create an ID for 'Save As' Profile 2023-07-07 11:23:19 +02:00
Clem
d98fbe8b44 feat(tabby-terminal): Eugeny/tabby#5688 add global Save As Profile context menu 2023-07-07 10:37:28 +02:00
Clem
3d9b15a82d ref(tabby-local): remove SaveAsProfile context menu 2023-07-07 10:35:03 +02:00
Eugene Pankov
77b74ad659 added Czech locale, updated other locales 2023-06-28 10:46:13 +02:00
Eugene Pankov
8de26cfeb8 updated contributors 2023-06-26 16:55:38 +02:00
Eugene Pankov
87a893480c Cross Compile linux armhf/arm64 artifacts #8613 by @Jai-JAP 2023-06-26 16:29:37 +02:00
Eugene
d6d6ec39c8 Merge pull request #8612 from qyecst/patch-1 2023-06-24 00:00:24 +02:00
qyecst
1579356d54 Update settingsTabBody.component.ts
increase the value of max-width to avoid shadowing the font size in the Settings (Settings - Appearance - Font).
2023-06-24 03:27:37 +08:00
Eugene Pankov
60a63d9c65 lint 2023-06-16 18:08:37 +02:00
Eugene
5e673106e9 Merge pull request #8589 from Clem-Fern/feat#6518 2023-06-16 18:08:11 +02:00
Clem
27c8b920ea refactoring Eugeny/tabby#8589 (shouldTabBeDestroyedOnSessionClose) 2023-06-16 16:23:30 +02:00
Eugene Pankov
bc8ac12aef fixed #8588 - hide hidden profiles in the "new profile" selector 2023-06-16 16:12:43 +02:00
Clem Fern
7f2340e701 feat: add disconnect tab hotkey 2023-06-15 21:34:41 +02:00
Clem Fern
b0350b6a35 feat: Eugeny/tabby#6518 add disconnect tab context menu item 2023-06-15 21:17:58 +02:00
Clem Fern
cea5cc73ff ref: Eugeny/tabby/pull#8416 2023-06-15 21:07:24 +02:00
Eugene
ad764d2f50 Merge pull request #7485 from Eugeny/dependabot/npm_and_yarn/tabby-web-demo/loader-utils-1.4.2 2023-06-14 23:41:43 +02:00
Eugene
1c8054ccb1 Merge pull request #7593 from Eugeny/dependabot/npm_and_yarn/app/decode-uri-component-0.2.2 2023-06-14 23:41:34 +02:00
Eugene
2de56e3c9b Merge pull request #7616 from Eugeny/dependabot/npm_and_yarn/qs-6.4.1 2023-06-14 23:41:21 +02:00
Eugene
b75174d248 Merge pull request #7629 from Eugeny/dependabot/npm_and_yarn/app/qs-6.5.3 2023-06-14 23:41:11 +02:00
Eugene
d200f1e3ef Merge pull request #7764 from Eugeny/dependabot/npm_and_yarn/tabby-web-demo/json5-1.0.2 2023-06-14 23:40:58 +02:00
Eugene
5c2ea50e8e Merge pull request #7749 from Eugeny/dependabot/github_actions/actions/setup-node-3.6.0 2023-06-14 23:39:59 +02:00
Eugene
b3b1e02cfc Merge pull request #8432 from Eugeny/dependabot/npm_and_yarn/tabby-settings/ngx-infinite-scroll-16.0.0 2023-06-14 23:39:50 +02:00
Eugene
c77c166b26 Merge pull request #8473 from Eugeny/dependabot/npm_and_yarn/sentry/cli-2.18.1 2023-06-14 23:39:42 +02:00
Eugene
deee2d3ad6 Merge pull request #8506 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/strip-ansi-7.1.0 2023-06-14 23:39:32 +02:00
Eugene
bb579303dc Merge pull request #8509 from Eugeny/dependabot/npm_and_yarn/tabby-electron/winston-3.9.0 2023-06-14 23:39:23 +02:00
dependabot[bot]
6cd9db2e2b Bump strip-ansi from 7.0.0 to 7.1.0 in /tabby-ssh
Bumps [strip-ansi](https://github.com/chalk/strip-ansi) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/chalk/strip-ansi/releases)
- [Commits](https://github.com/chalk/strip-ansi/compare/v7.0.0...v7.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 21:39:10 +00:00
Eugene
c0853b4f7c Merge pull request #8536 from Eugeny/dependabot/npm_and_yarn/app/electron/remote-2.0.10 2023-06-14 23:39:05 +02:00
Eugene
15c66139f9 Merge pull request #8539 from Eugeny/dependabot/npm_and_yarn/app/ngx-filesize-3.0.2 2023-06-14 23:38:53 +02:00
Eugene
aceb13598a Merge pull request #8564 from Eugeny/dependabot/npm_and_yarn/node-abi-3.45.0 2023-06-14 23:38:39 +02:00
Eugene
31359a1c1e Merge pull request #8566 from Eugeny/dependabot/npm_and_yarn/core-js-3.31.0 2023-06-14 23:38:31 +02:00
Eugene
67a3871a38 Merge pull request #8569 from Eugeny/dependabot/npm_and_yarn/app/types/node-20.3.1 2023-06-14 23:38:26 +02:00
Eugene
e40449b71e Merge pull request #8570 from Eugeny/dependabot/npm_and_yarn/tabby-ssh/types/node-20.3.1 2023-06-14 23:38:18 +02:00
Eugene
275d140afb Merge pull request #8572 from Eugeny/dependabot/npm_and_yarn/types/node-20.3.1 2023-06-14 23:38:10 +02:00
Eugene
69ca03cbe7 Merge pull request #8577 from Eugeny/dependabot/npm_and_yarn/sass-1.63.4 2023-06-14 23:38:04 +02:00
Eugene
39bbb1c853 Merge pull request #8325 from Eugeny/dependabot/npm_and_yarn/app/yargs-17.7.2 2023-06-14 23:37:57 +02:00
Eugene
1e1e9af027 Merge pull request #8327 from Eugeny/dependabot/npm_and_yarn/axios-1.4.0 2023-06-14 23:37:48 +02:00
Eugene
1656e359ac Merge pull request #8340 from Eugeny/dependabot/npm_and_yarn/app/serialport-11.0.0 2023-06-14 23:37:34 +02:00
Eugene
d66b286570 Merge pull request #8390 from Eugeny/dependabot/npm_and_yarn/tabby-core/readable-stream-4.4.0 2023-06-14 23:37:21 +02:00
Eugene
c93431d8a6 Merge pull request #8350 from Eugeny/dependabot/npm_and_yarn/tabby-electron/which-3.0.1 2023-06-14 23:36:28 +02:00
Eugene
460cd4f606 Merge pull request #8425 from Eugeny/dependabot/npm_and_yarn/utils-decorators-2.0.6 2023-06-14 23:35:59 +02:00
Eugene
2c8e20b9bd Merge pull request #8426 from Eugeny/dependabot/npm_and_yarn/tabby-plugin-manager/semver-7.5.1 2023-06-14 23:35:48 +02:00
Eugene
2ff1141fe9 Merge pull request #8544 from Eugeny/dependabot/npm_and_yarn/webpack-5.86.0 2023-06-14 23:34:21 +02:00
Eugene Pankov
4d83848e8d lint 2023-06-14 23:34:05 +02:00
Eugene Pankov
1e9f5ca1dc bumped xterm to 5.2 2023-06-14 23:16:14 +02:00
dependabot[bot]
4a92fbd088 Bump webpack from 5.75.0 to 5.86.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.75.0 to 5.86.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.75.0...v5.86.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 16:03:12 +00:00
Eugene Pankov
2c0e50771f migrated to @electron/notarize 2023-06-14 17:57:25 +02:00
dependabot[bot]
515565b618 Bump sass from 1.58.0 to 1.63.4
Bumps [sass](https://github.com/sass/dart-sass) from 1.58.0 to 1.63.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.58.0...1.63.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-14 05:11:13 +00:00
dependabot[bot]
285dfa31d2 Bump @types/node from 16.0.1 to 20.3.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.0.1 to 20.3.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-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 05:00:45 +00:00
dependabot[bot]
5777cf81dd Bump @types/node from 16.0.1 to 20.3.1 in /tabby-ssh
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.0.1 to 20.3.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-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 04:59:23 +00:00
dependabot[bot]
30078a78ce Bump @types/node from 18.11.19 to 20.3.1 in /app
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.11.19 to 20.3.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-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 04:56:50 +00:00
dependabot[bot]
534401f0e2 Bump core-js from 3.21.1 to 3.31.0
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.21.1 to 3.31.0.
- [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.31.0/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>
2023-06-12 05:13:51 +00:00
dependabot[bot]
2533415f25 Bump node-abi from 3.33.0 to 3.45.0
Bumps [node-abi](https://github.com/electron/node-abi) from 3.33.0 to 3.45.0.
- [Release notes](https://github.com/electron/node-abi/releases)
- [Changelog](https://github.com/electron/node-abi/blob/main/.releaserc.json)
- [Commits](https://github.com/electron/node-abi/compare/v3.33.0...v3.45.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>
2023-06-12 05:12:34 +00:00
dependabot[bot]
acc00c7eda Bump ngx-filesize from 3.0.1 to 3.0.2 in /app
Bumps [ngx-filesize](https://github.com/amitdahan/ngx-filesize/tree/HEAD/packages/ngx-filesize) from 3.0.1 to 3.0.2.
- [Commits](https://github.com/amitdahan/ngx-filesize/commits/HEAD/packages/ngx-filesize)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-07 04:57:43 +00:00
Eugene
3146668351 Merge pull request #8528 from Clem-Fern/refactoring-plugin 2023-06-06 12:35:45 +02:00
dependabot[bot]
6820ffedf9 Bump @electron/remote from 2.0.8 to 2.0.10 in /app
Bumps [@electron/remote](https://github.com/electron/remote) from 2.0.8 to 2.0.10.
- [Release notes](https://github.com/electron/remote/releases)
- [Changelog](https://github.com/electron/remote/blob/main/.releaserc.json)
- [Commits](https://github.com/electron/remote/compare/v2.0.8...v2.0.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-06 04:57:10 +00:00
Eugene Pankov
4c55e075bd Update README.md 2023-06-05 21:18:22 +02:00
Clem
ac596e323b Fix wrong usage of the progress bar 2023-06-05 11:44:43 +02:00
Eugene Pankov
c983743b57 fixed #7727 - allow hiding individual profiles from the selector 2023-06-04 21:22:05 +02:00
Eugene Pankov
e813133f12 fixed #8440 - multiple separate "ungrouped" groups 2023-06-04 20:55:44 +02:00
Eugene Pankov
86cff8d98a change the terminal.autoOpen default to true 2023-06-04 20:34:28 +02:00
Clem Fern
0c73ce847b fix unresolve promise in loadPlugins 2023-06-01 19:00:13 +02:00
Clem Fern
d45b98445f wip: trying to improve tabby startup time 2023-06-01 18:45:23 +02:00
dependabot[bot]
7cc7048b40 Bump winston from 3.7.2 to 3.9.0 in /tabby-electron
Bumps [winston](https://github.com/winstonjs/winston) from 3.7.2 to 3.9.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.7.2...v3.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 05:10:11 +00:00
dependabot[bot]
a64e9646e2 Bump @sentry/cli from 1.74.3 to 2.18.1
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 1.74.3 to 2.18.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.74.3...2.18.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-23 05:00:25 +00:00
Eugene
c0352bceac Merge pull request #8472 from Eugeny/all-contributors/add-echo304 2023-05-22 17:48:44 +02:00
Eugene
1d2c7ab905 Merge pull request #8471 from echo304/fix-additional-line-break-when-pane-maximize
Fire manual keyup event when key is not Enter
2023-05-22 17:24:08 +02:00
sangboak.lee
6eef2c97ee Fire manual keyup event when key is not Enter 2023-05-22 23:48:23 +09:00
dependabot[bot]
9e4cb15c84 Bump ngx-infinite-scroll from 15.0.0 to 16.0.0 in /tabby-settings
Bumps [ngx-infinite-scroll](https://github.com/orizens/ngx-infinite-scroll) from 15.0.0 to 16.0.0.
- [Release notes](https://github.com/orizens/ngx-infinite-scroll/releases)
- [Commits](https://github.com/orizens/ngx-infinite-scroll/commits)

---
updated-dependencies:
- dependency-name: ngx-infinite-scroll
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-16 04:59:48 +00:00
dependabot[bot]
ad889de139 Bump yargs from 17.3.1 to 17.7.2 in /app
Bumps [yargs](https://github.com/yargs/yargs) from 17.3.1 to 17.7.2.
- [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.3.1...v17.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 21:10:40 +00:00
dependabot[bot]
fcada433c9 Bump semver from 7.3.5 to 7.5.1 in /tabby-plugin-manager
Bumps [semver](https://github.com/npm/node-semver) from 7.3.5 to 7.5.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.5...v7.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 05:00:10 +00:00
dependabot[bot]
4d3b2d73ad Bump utils-decorators from 1.10.4 to 2.0.6
Bumps [utils-decorators](https://github.com/vlio20/utils-decorators) from 1.10.4 to 2.0.6.
- [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/2.0.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 04:59:12 +00:00
dependabot[bot]
fed3c78e79 Bump readable-stream from 4.2.0 to 4.4.0 in /tabby-core
Bumps [readable-stream](https://github.com/nodejs/readable-stream) from 4.2.0 to 4.4.0.
- [Release notes](https://github.com/nodejs/readable-stream/releases)
- [Commits](https://github.com/nodejs/readable-stream/compare/v4.2.0...v4.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-09 05:00:33 +00:00
dependabot[bot]
98965585cc Bump which from 3.0.0 to 3.0.1 in /tabby-electron
Bumps [which](https://github.com/npm/node-which) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/npm/node-which/releases)
- [Changelog](https://github.com/npm/node-which/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-which/compare/v3.0.0...v3.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 04:58:52 +00:00
dependabot[bot]
3552333aed Bump serialport from 10.5.0 to 11.0.0 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 10.5.0 to 11.0.0.
- [Release notes](https://github.com/serialport/node-serialport/releases)
- [Changelog](https://github.com/serialport/node-serialport/blob/master/CHANGELOG.md)
- [Commits](https://github.com/serialport/node-serialport/compare/v10.5.0...v11.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 04:57:11 +00:00
dependabot[bot]
93be096a9d Bump axios from 0.27.2 to 1.4.0
Bumps [axios](https://github.com/axios/axios) from 0.27.2 to 1.4.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.27.2...v1.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-28 05:02:18 +00:00
dependabot[bot]
f252316c29 Bump qs from 6.4.0 to 6.4.1
Bumps [qs](https://github.com/ljharb/qs) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.4.0...v6.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-26 19:43:36 +00:00
dependabot[bot]
a0fd091383 Bump qs from 6.5.2 to 6.5.3 in /app
Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-26 19:43:32 +00:00
dependabot[bot]
21316a9655 Bump json5 from 1.0.1 to 1.0.2 in /tabby-web-demo
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:26:46 +00:00
dependabot[bot]
ca960e0849 Bump actions/setup-node from 3.5.1 to 3.6.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3.5.1 to 3.6.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3.5.1...v3.6.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>
2023-01-06 04:03:45 +00:00
dependabot[bot]
757995d593 Bump decode-uri-component from 0.2.0 to 0.2.2 in /app
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-03 12:39:23 +00:00
dependabot[bot]
751eb18fd2 Bump loader-utils from 1.2.3 to 1.4.2 in /tabby-web-demo
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.2.3 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.2.3...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-13 10:10:04 +00:00
114 changed files with 4641 additions and 1576 deletions

View File

@@ -1184,6 +1184,42 @@
"contributions": [
"code"
]
},
{
"login": "qyecst",
"name": "qyecst",
"avatar_url": "https://avatars.githubusercontent.com/u/13901864?v=4",
"profile": "https://github.com/qyecst",
"contributions": [
"code"
]
},
{
"login": "DehanLUO",
"name": "Han",
"avatar_url": "https://avatars.githubusercontent.com/u/53093688?v=4",
"profile": "https://github.com/DehanLUO",
"contributions": [
"code"
]
},
{
"login": "wljince007",
"name": "wljince007",
"avatar_url": "https://avatars.githubusercontent.com/u/88243938?v=4",
"profile": "https://github.com/wljince007",
"contributions": [
"code"
]
},
{
"login": "FeroTheFox",
"name": "fero",
"avatar_url": "https://avatars.githubusercontent.com/u/52982404?v=4",
"profile": "https://github.com/FeroTheFox",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,
@@ -1192,5 +1228,6 @@
"repoType": "github",
"repoHost": "https://github.com",
"commitConvention": "none",
"skipCi": true
"skipCi": true,
"commitType": "docs"
}

View File

@@ -11,7 +11,7 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.5.1
uses: actions/setup-node@v3.7.0
with:
node-version: 16
@@ -47,7 +47,7 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.5.1
uses: actions/setup-node@v3.7.0
with:
node-version: 16
@@ -86,6 +86,7 @@ jobs:
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
CSC_LINK: ${{ secrets.CSC_LINK }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPSTORE_USERNAME: ${{ secrets.APPSTORE_USERNAME }}
APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}
USE_HARD_LINKS: false
@@ -131,7 +132,21 @@ jobs:
needs: Lint
strategy:
matrix:
build-arch: [ x64, arm64, armv7l ]
include:
- build-arch: x64
arch: amd64
- build-arch: arm64
arch: arm64
triplet: aarch64-linux-gnu-
- build-arch: arm
arch: armhf
triplet: arm-linux-gnueabihf-
env:
CC: ${{matrix.triplet}}gcc
CXX: ${{matrix.triplet}}g++
ARCH: ${{matrix.build-arch}}
npm_config_arch: ${{matrix.build-arch}}
npm_config_target_arch: ${{matrix.build-arch}}
steps:
- name: Checkout
@@ -139,35 +154,66 @@ jobs:
with:
fetch-depth: 0
- name: Set up multiarch/qemu-user-static
run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
if: matrix.build-arch != 'x64'
- name: Install Node (x64)
uses: actions/setup-node@v3.5.1
- name: Install Node
uses: actions/setup-node@v3.7.0
with:
node-version: 16
if: matrix.build-arch == 'x64'
node-version: 18
- name: Install deps (x64)
- name: Install deps (amd64)
run: |
sudo apt-get update
sudo apt-get install libarchive-tools zsh
- name: Install npm_modules (amd64)
run: |
npm i -g yarn
yarn --network-timeout 1000000
if: matrix.build-arch == 'x64'
- name: Webpack (x64)
run: yarn run build
if: matrix.build-arch == 'x64'
- name: Setup Crossbuild (${{matrix.arch}})
run: |
sudo apt-get update -y && sudo apt-get install schroot sbuild debootstrap -y
sudo debootstrap --include=git,curl,gnupg,ca-certificates,crossbuild-essential-${{matrix.arch}},python-dev,python3-dev,libarchive-tools,cmake --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb bionic /build-chroot/
echo 'deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse' | sudo tee /build-chroot/etc/apt/sources.list >/dev/null
echo 'deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse' | sudo tee -a /build-chroot/etc/apt/sources.list >/dev/null
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee /build-chroot/etc/apt/trusted.gpg.d/nodesource.gpg >/dev/null
echo 'deb http://deb.nodesource.com/node_16.x bionic main' | sudo tee /build-chroot/etc/apt/sources.list.d/nodesource.list >/dev/null
echo "[build-chroot]
description=Ubuntu 18.04 Build chroot
type=directory
directory=/build-chroot
root-groups=root,sudo
profile=buildd
personality=linux
union-type=overlay" | sudo tee /etc/schroot/chroot.d/build-chroot.pref >/dev/null
echo "/home /home none rw,bind 0 0" | sudo tee -a /etc/schroot/buildd/fstab >/dev/null
- name: Prepackage plugins (x64)
if: matrix.build-arch != 'x64'
- name: Install node_modules & CrossBuild native modules for ${{matrix.arch}}
run: |
sudo schroot -c build-chroot -u root -- bash -c "apt-get update -y
dpkg --add-architecture ${{matrix.arch}}
apt-get install -y nodejs libfontconfig-dev:${{matrix.arch}} libsecret-1-dev:${{matrix.arch}} libnss3:${{matrix.arch}} libatk1.0-0:${{matrix.arch}} libatk-bridge2.0-0:${{matrix.arch}} libgdk-pixbuf2.0-0:${{matrix.arch}} libgtk-3-0:${{matrix.arch}} libgbm1:${{matrix.arch}}
export CC=${{matrix.triplet}}gcc CXX=${{matrix.triplet}}g++ LD=${{matrix.triplet}}ld
if [[ ${{matrix.arch}} == 'arm64' ]]; then
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/aarch64-linux-gnu/pkgconfig/
elif [[ ${{matrix.arch}} == 'armhf' ]]; then
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/arm-linux-gnueabihf/pkgconfig/
fi
export ARCH=${{matrix.build-arch}} npm_config_arch=${{matrix.build-arch}} npm_config_target_arch=${{matrix.build-arch}}
npm i -g yarn
yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}"
if: matrix.build-arch != 'x64'
- name: Webpack (${{matrix.arch}})
run: yarn run build --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}
- name: Prepackage plugins (${{matrix.arch}})
run: scripts/prepackage-plugins.mjs
if: ${{matrix.build-arch == 'x64'}}
- name: Build packages (x64)
- name: Build packages (${{matrix.arch}})
run: scripts/build-linux.mjs
if: ${{matrix.build-arch == 'x64'}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
@@ -178,54 +224,54 @@ jobs:
run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
if: matrix.build-arch == 'x64'
- name: Install deps and Build (arm64)
uses: docker://multiarch/ubuntu-core:arm64-bionic
with:
args: >
bash -c
"apt update && apt install curl lsb-release gnupg -y &&
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
git config --global --add safe.directory /github/workspace &&
gem install public_suffix -v 4.0.7 &&
gem install fpm --no-document &&
npm i -g yarn &&
cd /github/workspace &&
yarn --network-timeout 1000000 &&
yarn run build &&
scripts/prepackage-plugins.mjs &&
USE_SYSTEM_FPM=true scripts/build-linux.mjs"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
USE_HARD_LINKS: false
if: matrix.build-arch == 'arm64' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
# - name: Install deps and Build (arm64)
# uses: docker://multiarch/ubuntu-core:arm64-bionic
# with:
# args: >
# bash -c
# "apt update && apt install curl lsb-release gnupg -y &&
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
# apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
# git config --global --add safe.directory /github/workspace &&
# gem install public_suffix -v 4.0.7 &&
# gem install fpm --no-document &&
# npm i -g yarn &&
# cd /github/workspace &&
# yarn --network-timeout 1000000 &&
# yarn run build &&
# scripts/prepackage-plugins.mjs &&
# USE_SYSTEM_FPM=true scripts/build-linux.mjs"
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
# USE_HARD_LINKS: false
# if: matrix.build-arch == 'arm64' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
- name: Install deps and Build (armv7l)
uses: docker://multiarch/ubuntu-core:armhf-bionic
with:
args: >
bash -c
"apt update && apt install curl lsb-release gnupg -y &&
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
git config --global --add safe.directory /github/workspace &&
gem install public_suffix -v 4.0.7 &&
gem install fpm --no-document &&
npm i -g yarn &&
cd /github/workspace &&
sed -i '/ \"electron\":/c\ \"electron\": \"17.0.0\",' package.json &&
yarn --network-timeout 1000000 &&
yarn run build &&
scripts/prepackage-plugins.mjs &&
USE_SYSTEM_FPM=true scripts/build-linux.mjs"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
USE_HARD_LINKS: false
if: matrix.build-arch == 'armv7l' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
# - name: Install deps and Build (armv7l)
# uses: docker://multiarch/ubuntu-core:armhf-bionic
# with:
# args: >
# bash -c
# "apt update && apt install curl lsb-release gnupg -y &&
# curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&
# apt install make build-essential git ruby libarchive-tools nodejs rpm libsecret-1-dev libfontconfig1-dev -y &&
# git config --global --add safe.directory /github/workspace &&
# gem install public_suffix -v 4.0.7 &&
# gem install fpm --no-document &&
# npm i -g yarn &&
# cd /github/workspace &&
# sed -i '/ \"electron\":/c\ \"electron\": \"17.0.0\",' package.json &&
# yarn --network-timeout 1000000 &&
# yarn run build &&
# scripts/prepackage-plugins.mjs &&
# USE_SYSTEM_FPM=true scripts/build-linux.mjs"
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# KEYGEN_TOKEN: ${{ secrets.KEYGEN_TOKEN }}
# USE_HARD_LINKS: false
# if: matrix.build-arch == 'arm' && github.repository == 'Eugeny/tabby' && startsWith(github.ref, 'refs/tags')
- name: Upload symbols
- name: Upload symbols (amd64 only)
run: |
sudo npm install -g @sentry/cli --unsafe-perm
./scripts/sentry-upload.mjs
@@ -245,31 +291,37 @@ jobs:
dir: 'dist'
- uses: actions/upload-artifact@master
name: Upload DEB
name: Upload AppImage (${{matrix.arch}})
with:
name: Linux DEB (${{matrix.build-arch}})
name: Linux AppImage (${{matrix.arch}})
path: dist/*.AppImage
- uses: actions/upload-artifact@master
name: Upload DEB (${{matrix.arch}})
with:
name: Linux DEB (${{matrix.arch}})
path: dist/*.deb
- uses: actions/upload-artifact@master
name: Upload RPM
name: Upload RPM (${{matrix.arch}})
with:
name: Linux RPM (${{matrix.build-arch}})
name: Linux RPM (${{matrix.arch}})
path: dist/*.rpm
- uses: actions/upload-artifact@master
name: Upload Pacman Package
name: Upload Pacman Package (${{matrix.arch}})
with:
name: Linux Pacman (${{matrix.build-arch}})
name: Linux Pacman (${{matrix.arch}})
path: dist/*.pacman
- uses: actions/upload-artifact@master
name: Upload Linux tarball
name: Upload Linux tarball (${{matrix.arch}})
with:
name: Linux tarball (${{matrix.build-arch}})
name: Linux tarball (${{matrix.arch}})
path: dist/*.tar.gz
- uses: actions/upload-artifact@master
name: Upload web tarball
name: Upload web tarball (amd64 only)
with:
name: Web tarball
path: tabby-web.tar.gz
@@ -293,7 +345,7 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.5.1
uses: actions/setup-node@v3.7.0
with:
node-version: 16

View File

@@ -12,7 +12,7 @@ jobs:
fetch-depth: 0
- name: Installing Node
uses: actions/setup-node@v3.5.1
uses: actions/setup-node@v3.7.0
with:
node-version: 16

View File

@@ -17,8 +17,6 @@ First, from within the `tabby` directory install the dependencies via yarn:
yarn
```
**Note: For compiling for Linux armv7l, you need to downgrade electron to 17.0.0 in package.json present in root directory of tabby source**
```
# 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

View File

@@ -321,6 +321,10 @@ Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -323,6 +323,10 @@ Gracias a estas maravillosas personas ([emoji key](https://allcontributors.org/d
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -320,6 +320,10 @@ Terima kasih kepada mereka yang telah membantu ([emoji key](https://allcontribut
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -316,6 +316,10 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -331,6 +331,10 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -310,6 +310,10 @@ Pull requests and plugins are welcome!
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -16,6 +16,8 @@
> 👋 Managing remote environments? Check out [Warpgate, my smart SSH/HTTP/MySQL bastion server](https://github.com/warp-tech/warpgate), it works great with Tabby, you'll love it.
> 👋 [Tabby-web](https://github.com/Eugeny/tabby-web) is looking for sponsors. As I can't afford to host it myself any longer, I'm looking for a sponsor to cover the hosting costs. If you're interested, please [get in touch](https://twitter.com/eugeeeeny)!
----
@@ -32,7 +34,7 @@ This README is also available in: <a href="./README.es-ES.md">:es: Spanish</a>
----
[**Tabby**](https://tabby.sh) (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux
[**Tabby**](https://tabby.sh) (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows 10, macOS and Linux
* Integrated SSH and Telnet client and connection manager
* Integrated serial terminal
@@ -330,6 +332,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -324,6 +324,10 @@ Obrigado vai para essas pessoas maravilhosas ([emoji key](https://allcontributor
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -316,6 +316,10 @@ Pull-запросы и плагины приветствуются!
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -315,6 +315,10 @@
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DehanLUO"><img src="https://avatars.githubusercontent.com/u/53093688?v=4?s=100" width="100px;" alt="Han"/><br /><sub><b>Han</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=DehanLUO" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
</tr>
</tbody>
</table>

View File

@@ -1,4 +1,4 @@
import * as nodePTY from '@tabby-gang/node-pty'
import * as nodePTY from 'node-pty'
import { v4 as uuidv4 } from 'uuid'
import { ipcMain } from 'electron'
import { Application } from './app'

View File

@@ -92,8 +92,11 @@ export class Window {
if (this.configStore.appearance?.frame === 'native') {
bwOptions.frame = true
} else {
if (process.platform === 'darwin') {
bwOptions.titleBarStyle = 'hidden'
bwOptions.titleBarStyle = 'hidden'
if (process.platform === 'win32') {
bwOptions.titleBarOverlay = {
color: '#00000000',
}
}
}
@@ -384,6 +387,21 @@ export class Window {
this.setVibrancy(enabled, type)
})
ipcMain.on('window-set-window-controls-color', (event, theme) => {
if (!this.window || event.sender !== this.window.webContents) {
return
}
const symbolColor: string = theme.foreground
this.window.setTitleBarOverlay(
{
symbolColor: symbolColor,
height: 32,
},
)
})
ipcMain.on('window-set-title', (event, title) => {
if (!this.window || event.sender !== this.window.webContents) {
return
@@ -442,7 +460,7 @@ export class Window {
this.window.on('resize', onBoundsChange)
ipcMain.on('window-set-traffic-light-position', (_event, x, y) => {
this.window.setTrafficLightPosition({ x, y })
this.window.setWindowButtonPosition({ x, y })
})
ipcMain.on('window-set-opacity', (_event, opacity) => {

View File

@@ -15,8 +15,8 @@
"watch": "webpack --progress --color --watch"
},
"dependencies": {
"@electron/remote": "2.0.8",
"@tabby-gang/node-pty": "^0.11.0-beta.203",
"@electron/remote": "2.0.10",
"node-pty": "^1.0",
"any-promise": "^1.3.0",
"electron-config": "2.0.0",
"electron-debug": "^3.2.0",
@@ -32,13 +32,13 @@
"rxjs": "^7.5.7",
"source-map-support": "^0.5.20",
"v8-compile-cache": "^2.3.0",
"yargs": "^17.3.1"
"yargs": "^17.7.2"
},
"optionalDependencies": {
"@tabby-gang/windows-blurbehind": "^3.0.0",
"macos-native-processlist": "^2.1.0",
"patch-package": "^6.5.0",
"serialport": "10.5.0",
"serialport": "11.0.1",
"serialport-binding-webserialapi": "^1.0.3",
"windows-native-registry": "^3.2.1",
"windows-process-tree": "^0.4.0"
@@ -46,10 +46,10 @@
"devDependencies": {
"@ngx-translate/core": "^14.0.0",
"@types/mz": "2.7.4",
"@types/node": "18.11.19",
"atomically": "^1.7.0",
"@types/node": "20.3.1",
"atomically": "^2.0.2",
"filesize": "^9",
"ngx-filesize": "^3.0.1"
"ngx-filesize": "^3.0.2"
},
"peerDependencies": {
"tabby-community-color-schemes": "*",

View File

@@ -92,12 +92,43 @@ export function initModuleLookup (userPluginsPath: string): void {
})
}
export async function findPlugins (): Promise<PluginInfo[]> {
const paths = nodeModule.globalPaths
let foundPlugins: PluginInfo[] = []
const PLUGIN_PREFIX = 'tabby-'
const LEGACY_PLUGIN_PREFIX = 'terminus-'
async function getCandidateLocationsInPluginDir (pluginDir: any): Promise<{ pluginDir: string, packageName: string }[]> {
const candidateLocations: { pluginDir: string, packageName: string }[] = []
const PREFIX = 'tabby-'
const LEGACY_PREFIX = 'terminus-'
if (await fs.exists(pluginDir)) {
const pluginNames = await fs.readdir(pluginDir)
if (await fs.exists(path.join(pluginDir, 'package.json'))) {
candidateLocations.push({
pluginDir: path.dirname(pluginDir),
packageName: path.basename(pluginDir),
})
}
const promises = []
for (const packageName of pluginNames) {
if ((packageName.startsWith(PLUGIN_PREFIX) || packageName.startsWith(LEGACY_PLUGIN_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
const pluginPath = path.join(pluginDir, packageName)
const infoPath = path.join(pluginPath, 'package.json')
promises.push(fs.exists(infoPath).then(result => {
if (result) {
candidateLocations.push({ pluginDir, packageName })
}
}))
}
}
await Promise.all(promises)
}
return candidateLocations
}
async function getPluginCandidateLocation (paths: any): Promise<{ pluginDir: string, packageName: string }[]> {
const candidateLocationsPromises: Promise<{ pluginDir: string, packageName: string }[]>[] = []
const processedPaths = []
@@ -108,69 +139,84 @@ export async function findPlugins (): Promise<PluginInfo[]> {
processedPaths.push(pluginDir)
pluginDir = normalizePath(pluginDir)
if (!await fs.exists(pluginDir)) {
continue
}
const pluginNames = await fs.readdir(pluginDir)
if (await fs.exists(path.join(pluginDir, 'package.json'))) {
candidateLocations.push({
pluginDir: path.dirname(pluginDir),
packageName: path.basename(pluginDir),
})
}
for (const packageName of pluginNames) {
if ((packageName.startsWith(PREFIX) || packageName.startsWith(LEGACY_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
candidateLocations.push({ pluginDir, packageName })
}
}
candidateLocationsPromises.push(getCandidateLocationsInPluginDir(pluginDir))
}
for (const { pluginDir, packageName } of candidateLocations) {
const pluginPath = path.join(pluginDir, packageName)
const infoPath = path.join(pluginPath, 'package.json')
if (!await fs.exists(infoPath)) {
continue
const candidateLocations: { pluginDir: string, packageName: string }[] = []
for (const pluginCandidateLocations of await Promise.all(candidateLocationsPromises)) {
candidateLocations.push(...pluginCandidateLocations)
}
return candidateLocations
}
async function parsePluginInfo (pluginDir: string, packageName: string): Promise<PluginInfo|null> {
const pluginPath = path.join(pluginDir, packageName)
const infoPath = path.join(pluginPath, 'package.json')
const name = packageName.startsWith(PLUGIN_PREFIX) ? packageName.substring(PLUGIN_PREFIX.length) : packageName.substring(LEGACY_PLUGIN_PREFIX.length)
try {
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
return null
}
const name = packageName.startsWith(PREFIX) ? packageName.substring(PREFIX.length) : packageName.substring(LEGACY_PREFIX.length)
let author = info.author
author = author.name || author
console.log(`Found ${name} in ${pluginDir}`)
return {
name: name,
packageName: packageName,
isBuiltin: pluginDir === builtinPluginsPath,
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'),
version: info.version,
description: info.description,
author,
path: pluginPath,
info,
}
} catch (error) {
console.error('Cannot load package info for', packageName)
return null
}
}
export async function findPlugins (): Promise<PluginInfo[]> {
const paths = nodeModule.globalPaths
let foundPlugins: PluginInfo[] = []
const candidateLocations: { pluginDir: string, packageName: string }[] = await getPluginCandidateLocation(paths)
const foundPluginsPromises: Promise<PluginInfo|null>[] = []
for (const { pluginDir, packageName } of candidateLocations) {
if (builtinModules.includes(packageName) && pluginDir !== builtinPluginsPath) {
continue
}
console.log(`Found ${name} in ${pluginDir}`)
foundPluginsPromises.push(parsePluginInfo(pluginDir, packageName))
}
const existing = foundPlugins.find(x => x.name === name)
if (existing) {
if (existing.isLegacy) {
console.info(`Plugin ${packageName} already exists, overriding`)
foundPlugins = foundPlugins.filter(x => x.name !== name)
} else {
console.info(`Plugin ${packageName} already exists, skipping`)
continue
for (const pluginInfo of await Promise.all(foundPluginsPromises)) {
if (pluginInfo) {
const existing = foundPlugins.find(x => x.name === pluginInfo.name)
if (existing) {
if (existing.isLegacy) {
console.info(`Plugin ${pluginInfo.packageName} already exists, overriding`)
foundPlugins = foundPlugins.filter(x => x.name !== pluginInfo.name)
} else {
console.info(`Plugin ${pluginInfo.packageName} already exists, skipping`)
continue
}
}
}
try {
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
continue
}
let author = info.author
author = author.name || author
foundPlugins.push({
name: name,
packageName: packageName,
isBuiltin: pluginDir === builtinPluginsPath,
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'),
version: info.version,
description: info.description,
author,
path: pluginPath,
info,
})
} catch (error) {
console.error('Cannot load package info for', packageName)
foundPlugins.push(pluginInfo)
}
}
@@ -181,26 +227,36 @@ export async function findPlugins (): Promise<PluginInfo[]> {
export async function loadPlugins (foundPlugins: PluginInfo[], progress: ProgressCallback): Promise<any[]> {
const plugins: any[] = []
progress(0, 1)
const pluginsPromises: Promise<any>[] = []
let index = 0
for (const foundPlugin of foundPlugins) {
console.info(`Loading ${foundPlugin.name}: ${nodeRequire.resolve(foundPlugin.path)}`)
progress(index, foundPlugins.length)
try {
const packageModule = nodeRequire(foundPlugin.path)
if (foundPlugin.packageName.startsWith('tabby-')) {
cachedBuiltinModules[foundPlugin.packageName.replace('tabby-', 'terminus-')] = packageModule
}
const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
pluginModule.pluginName = foundPlugin.name
pluginModule.bootstrap = packageModule.bootstrap
plugins.push(pluginModule)
await new Promise(x => setTimeout(x, 50))
} catch (error) {
console.error(`Could not load ${foundPlugin.name}:`, error)
}
const setProgress = function () {
index++
progress(index, foundPlugins.length)
}
progress(0, 1)
for (const foundPlugin of foundPlugins) {
pluginsPromises.push(new Promise(x => {
console.info(`Loading ${foundPlugin.name}: ${nodeRequire.resolve(foundPlugin.path)}`)
try {
const packageModule = nodeRequire(foundPlugin.path)
if (foundPlugin.packageName.startsWith('tabby-')) {
cachedBuiltinModules[foundPlugin.packageName.replace('tabby-', 'terminus-')] = packageModule
}
const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
pluginModule.pluginName = foundPlugin.name
pluginModule.bootstrap = packageModule.bootstrap
plugins.push(pluginModule)
} catch (error) {
console.error(`Could not load ${foundPlugin.name}:`, error)
}
setProgress()
setTimeout(x, 50)
}))
}
await Promise.all(pluginsPromises)
progress(1, 1)
return plugins
}

View File

@@ -47,7 +47,7 @@ const config = {
mz: 'commonjs mz',
npm: 'commonjs npm',
'node:os': 'commonjs os',
'@tabby-gang/node-pty': 'commonjs @tabby-gang/node-pty',
'node-pty': 'commonjs node-pty',
path: 'commonjs path',
util: 'commonjs util',
'source-map-support': 'commonjs source-map-support',

View File

@@ -2,10 +2,10 @@
# yarn lockfile v1
"@electron/remote@2.0.8":
version "2.0.8"
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.8.tgz#85ff321f0490222993207106e2f720273bb1a5c3"
integrity sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==
"@electron/remote@2.0.10":
version "2.0.10"
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.10.tgz#133e2f607b1861ac249bd78b5abd1e961feed713"
integrity sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA==
"@iarna/cli@^1.2.0":
version "1.2.0"
@@ -38,16 +38,16 @@
"@serialport/bindings-interface" "^1.2.1"
debug "^4.3.3"
"@serialport/bindings-cpp@10.8.0":
version "10.8.0"
resolved "https://registry.yarnpkg.com/@serialport/bindings-cpp/-/bindings-cpp-10.8.0.tgz#79507b57022ac264e963e7fbf3647a3821569a20"
integrity sha512-OMQNJz5kJblbmZN5UgJXLwi2XNtVLxSKmq5VyWuXQVsUIJD4l9UGHnLPqM5LD9u3HPZgDI5w7iYN7gxkQNZJUw==
"@serialport/bindings-cpp@11.0.3":
version "11.0.3"
resolved "https://registry.yarnpkg.com/@serialport/bindings-cpp/-/bindings-cpp-11.0.3.tgz#ab4d4826ef657e326b6c99d6b8a113d834378a93"
integrity sha512-xgNDJ7pHHZCJMoDsEH+D8q5CV+V3RGN4/jLEG9SQ7q6kh+o03axV0l/upPHZ0HW4tTXpGgqPIGbXOTrD4RGQQA==
dependencies:
"@serialport/bindings-interface" "1.2.2"
"@serialport/parser-readline" "^10.2.1"
debug "^4.3.2"
node-addon-api "^5.0.0"
node-gyp-build "^4.3.0"
"@serialport/parser-readline" "11.0.0"
debug "4.3.4"
node-addon-api "6.1.0"
node-gyp-build "4.6.0"
"@serialport/bindings-interface@1.2.2":
version "1.2.2"
@@ -59,65 +59,77 @@
resolved "https://registry.yarnpkg.com/@serialport/bindings-interface/-/bindings-interface-1.2.1.tgz#1ee80b0951ef4e4fd8a5a186621feff046aa2faf"
integrity sha512-63Dyqz2gtryRDDckFusOYqLYhR3Hq/M4sEdbF9i/VsvDb6T+tNVgoAKUZ+FMrXXKnCSu+hYbk+MTc0XQANszxw==
"@serialport/parser-byte-length@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-10.5.0.tgz#f3d4c1c7923222df2f3d3c7c8aaaa207fe373b49"
integrity sha512-eHhr4lHKboq1OagyaXAqkemQ1XyoqbLQC8XJbvccm95o476TmEdW5d7AElwZV28kWprPW68ZXdGF2VXCkJgS2w==
"@serialport/parser-byte-length@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-11.0.1.tgz#26e4f3b2d66aaac0859b18a57c648d0eec78392a"
integrity sha512-UsffR5b3NHwhjJzsWv5fZMkoq3wGNyUcRTA9jlu02w+2kMlBRJPzlPVB5szVX0VWUEqkCg+3VaU2XWuYr+uAUA==
"@serialport/parser-cctalk@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-10.5.0.tgz#0ee88db0768a361b7cfb9a394b74e480c38e1992"
integrity sha512-Iwsdr03xmCKAiibLSr7b3w6ZUTBNiS+PwbDQXdKU/clutXjuoex83XvsOtYVcNZmwJlVNhAUbkG+FJzWwIa4DA==
"@serialport/parser-cctalk@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-11.0.1.tgz#70c5ccc8fc5ebbe5c317005791155d3b2812efa6"
integrity sha512-klzVQfRcC1m0SVDV2Dy9hHfwweO2/mUMUyuXK04FRkKHy5/AdETmk9KTVVVVfpDCSysvHoyQPwiDFq8ddwX3cQ==
"@serialport/parser-delimiter@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-10.5.0.tgz#b0d93100cdfd0619d020a427d652495073f3b828"
integrity sha512-/uR/yT3jmrcwnl2FJU/2ySvwgo5+XpksDUR4NF/nwTS5i3CcuKS+FKi/tLzy1k8F+rCx5JzpiK+koqPqOUWArA==
"@serialport/parser-delimiter@11.0.0":
version "11.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz#e830c6bb49723d4446131277dc3243b502d09388"
integrity sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g==
"@serialport/parser-inter-byte-timeout@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-10.5.0.tgz#8665ee5e6138f794ac055e83ef2d1c3653a577c0"
integrity sha512-WPvVlSx98HmmUF9jjK6y9mMp3Wnv6JQA0cUxLeZBgS74TibOuYG3fuUxUWGJALgAXotOYMxfXSezJ/vSnQrkhQ==
"@serialport/parser-delimiter@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-11.0.1.tgz#c0bcc24d8060c6b352cbe6003ebe95671ad32221"
integrity sha512-NAsYa3OFt2xEnj/+0BRkQP2qkRNbXBPEq6uFJEdNdzcTSF+BTRXkoIRrWBq3N6koovPqW6lnbxc/iJYe5AX/2Q==
"@serialport/parser-packet-length@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-packet-length/-/parser-packet-length-10.5.0.tgz#4c4d733bdff8cc4749f2bd750e42e66f8f478def"
integrity sha512-jkpC/8w4/gUBRa2Teyn7URv1D7T//0lGj27/4u9AojpDVXsR6dtdcTG7b7dNirXDlOrSLvvN7aS5/GNaRlEByw==
"@serialport/parser-inter-byte-timeout@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-11.0.1.tgz#ed6d939eeb3bec94579fb3628dc6dcd0c9a3dd21"
integrity sha512-PEFV9dSpW+ptH1rLhdB9KgE+rbJ/FvQiZz0mx+4jkv/Po4g3PNsEEMXfMW0aQVSFVsmitvmE0jHlhGjLv8GQEg==
"@serialport/parser-readline@10.5.0", "@serialport/parser-readline@^10.2.1":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-10.5.0.tgz#df23365ae7f45679b1735deae26f72ba42802862"
integrity sha512-0aXJknodcl94W9zSjvU+sLdXiyEG2rqjQmvBWZCr8wJZjWEtv3RgrnYiWq4i2OTOyC8C/oPK8ZjpBjQptRsoJQ==
"@serialport/parser-packet-length@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-packet-length/-/parser-packet-length-11.0.1.tgz#9d7982a6eeaf9a5bdfe642ceb287f171ab2965b7"
integrity sha512-KwPu8dsAI+eN4fnUS1vVmrOpUtBK4p9L9cHhwn5ZmfcvwvZMHp/J+IEu7xH0g5aM1/8QEoaql26BQP+sZ71NQQ==
"@serialport/parser-readline@11.0.0":
version "11.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-11.0.0.tgz#c2c8c88e163d2abf7c0ffddbc1845336444e3454"
integrity sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA==
dependencies:
"@serialport/parser-delimiter" "10.5.0"
"@serialport/parser-delimiter" "11.0.0"
"@serialport/parser-ready@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-10.5.0.tgz#1d9029f57b1abd664cb468e21bfccf7b44c6e8ea"
integrity sha512-QIf65LTvUoxqWWHBpgYOL+soldLIIyD1bwuWelukem2yDZVWwEjR288cLQ558BgYxH4U+jLAQahhqoyN1I7BaA==
"@serialport/parser-readline@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-11.0.1.tgz#e85805ae803c2dc507eefa390abec6a67ceef313"
integrity sha512-wkJ3EI733+yhbi7eBWzs/qn8+cfIBcYQjfrILPNqslAy6VlgdKw+pHoblDFmg78GN0TqGUDSWlTJ65oLEPVp5Q==
dependencies:
"@serialport/parser-delimiter" "11.0.1"
"@serialport/parser-regex@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-10.5.0.tgz#f98eab6e3d9bc99086269e9acf39a82db36d245f"
integrity sha512-9jnr9+PCxRoLjtGs7uxwsFqvho+rxuJlW6ZWSB7oqfzshEZWXtTJgJRgac/RuLft4hRlrmRz5XU40i3uoL4HKw==
"@serialport/parser-ready@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-11.0.1.tgz#bba01283a121880641e43c27193e6708fef2907c"
integrity sha512-v/bvlgKhrNt+SVLSqlfXCO1HEinfRRMGnzqbpdVCgu2SiWIEenCLjs51JisKVYQoQFcXdP/EHZnzm7NPXHDlAg==
"@serialport/parser-slip-encoder@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-10.5.0.tgz#cb79ac0fda1fc87f049690ff7b498c787da67991"
integrity sha512-wP8m+uXQdkWSa//3n+VvfjLthlabwd9NiG6kegf0fYweLWio8j4pJRL7t9eTh2Lbc7zdxuO0r8ducFzO0m8CQw==
"@serialport/parser-regex@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-11.0.1.tgz#7833ca6029c8c58eb39dd6fe984756cf09d769b7"
integrity sha512-Lf3k7qibYqZ0+/wX3UA8fRng3WtQ+UyLpjQhG1COs6OBSq5/I5tYXczfhlrbA0gHo1qzgzr2V2t7m6FoBSc81Q==
"@serialport/parser-spacepacket@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-spacepacket/-/parser-spacepacket-10.5.0.tgz#2fc077c0ec16a9532c511ad5f2ab12d588796bc7"
integrity sha512-BEZ/HAEMwOd8xfuJSeI/823IR/jtnThovh7ils90rXD4DPL1ZmrP4abAIEktwe42RobZjIPfA4PaVfyO0Fjfhg==
"@serialport/parser-slip-encoder@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-11.0.1.tgz#4ba0c335627e3d1203279a5f8a4c1af0c829b7fe"
integrity sha512-l4mXsAGzpmPO7+uqKJqtPDW643irfnGEWbiy34FoYvuOs8n0SmiMtgQZFAtvlTNQCRWE2tykF/WG6K/McJthDw==
"@serialport/stream@10.5.0":
version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-10.5.0.tgz#cda8fb3e8d03094b0962a3d14b73adfcd591be58"
integrity sha512-gbcUdvq9Kyv2HsnywS7QjnEB28g+6OGB5Z8TLP7X+UPpoMIWoUsoQIq5Kt0ZTgMoWn3JGM2lqwTsSHF+1qhniA==
"@serialport/parser-spacepacket@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/parser-spacepacket/-/parser-spacepacket-11.0.1.tgz#9e1c372f45433afb9a5dbec7b5a298c710b0455b"
integrity sha512-Lq7fXoOsLOMo4XEt9HB31zV5LhrteXlsOy2o6r39TfRwU6x8Nou9jQMA9vW0a6yPra5zwsHIaNrA6tDOGj2Ozg==
"@serialport/stream@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-11.0.1.tgz#ed40c66d517cfebf7185cd9c37ba0a08e76f88b2"
integrity sha512-6pjyKRg8MQuvhGfg36+PF7K5eGNQcEswCSiAg1UPilqqFS8X1QnaiSCn5UFp/hCN+pAtlFjkOi0ztvtmSI7n4g==
dependencies:
"@serialport/bindings-interface" "1.2.2"
debug "^4.3.2"
debug "4.3.4"
"@serialport/stream@^9.0.2":
version "9.2.4"
@@ -126,13 +138,6 @@
dependencies:
debug "^4.3.2"
"@tabby-gang/node-pty@^0.11.0-beta.203":
version "0.11.0-beta.204"
resolved "https://registry.yarnpkg.com/@tabby-gang/node-pty/-/node-pty-0.11.0-beta.204.tgz#80d4393c7a233d3298f47a4755467a246b0099f9"
integrity sha512-sNT5Z2MEkEIhToAdVAdZ/lfeQ9UgFE3h2ENlOux+WHBrl1k0BiUEIOd/jh/K3mNAGEfcZ44gNQQ50g5KXTQEmA==
dependencies:
nan "^2.16.0"
"@tabby-gang/windows-blurbehind@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@tabby-gang/windows-blurbehind/-/windows-blurbehind-3.0.0.tgz#48d409c2eb14a12c867b70de5ee4d6769ef45e8f"
@@ -147,15 +152,10 @@
dependencies:
"@types/node" "*"
"@types/node@*":
version "18.7.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f"
integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==
"@types/node@18.11.19":
version "18.11.19"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d"
integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==
"@types/node@*", "@types/node@20.3.1":
version "20.3.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==
"@types/node@^10.12.18":
version "10.17.60"
@@ -327,10 +327,13 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
atomically@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe"
integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==
atomically@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/atomically/-/atomically-2.0.2.tgz#e5a6e8021441405b7a1c36d4587e25f7a13545f2"
integrity sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==
dependencies:
stubborn-fs "^1.2.5"
when-exit "^2.0.0"
aws-sign2@~0.7.0:
version "0.7.0"
@@ -583,13 +586,13 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
cliui@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.0"
strip-ansi "^6.0.1"
wrap-ansi "^7.0.0"
clone@^1.0.2:
@@ -773,6 +776,13 @@ debug@3.1.0:
dependencies:
ms "2.0.0"
debug@4.3.4, debug@^4.0.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@^3.1.0:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
@@ -780,13 +790,6 @@ debug@^3.1.0:
dependencies:
ms "^2.1.1"
debug@^4.0.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz"
@@ -798,9 +801,9 @@ decamelize@^1.1.1, decamelize@^1.2.0:
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
decode-uri-component@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
version "0.2.2"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
decompress-response@^6.0.0:
version "6.0.0"
@@ -2257,7 +2260,7 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
nan@^2.16.0, nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature":
nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature":
version "2.16.0"
resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059"
@@ -2273,10 +2276,10 @@ native-process-working-directory@^1.0.2:
dependencies:
node-addon-api "^3.1.0"
ngx-filesize@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.1.tgz#620933ae181a1128905404e43b26abb99accba90"
integrity sha512-792I4fiG9EEPYjGib2+YTYAzfWIlccfy8uXNSXFFepuAntoS+eijLwnl0m7ajcQuNgbTtwEf9VmYIPN8mS3jqQ==
ngx-filesize@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.2.tgz#aab5ce9ce6eaa421f0393447d9c01653f3839a2c"
integrity sha512-0h1gzcQYeNcGzDVcQcdhKK8RCrXdIXn4foT/DcXRwoht0KL3FQemJFKZowZmXESL7cnLlETaeRSnsHuqfchoWg==
dependencies:
tslib "^2.3.0"
@@ -2304,16 +2307,16 @@ node-addon-api@3.1.0, node-addon-api@^3.0.2, node-addon-api@^3.1.0:
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz"
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
node-addon-api@6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
node-addon-api@^4.0.0, node-addon-api@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
node-addon-api@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501"
integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==
node-fetch-npm@^2.0.2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
@@ -2323,10 +2326,10 @@ node-fetch-npm@^2.0.2:
json-parse-better-errors "^1.0.0"
safe-buffer "^5.1.1"
node-gyp-build@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
node-gyp-build@4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
node-gyp@^5.0.2, node-gyp@^5.1.0:
version "5.1.1"
@@ -2345,6 +2348,13 @@ node-gyp@^5.0.2, node-gyp@^5.1.0:
tar "^4.4.12"
which "^1.3.1"
node-pty@^1.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-1.0.0.tgz#7daafc0aca1c4ca3de15c61330373af4af5861fd"
integrity sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==
dependencies:
nan "^2.17.0"
nopt@^4.0.1, nopt@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
@@ -3004,9 +3014,9 @@ qrcode-terminal@^0.12.0:
integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
version "6.5.3"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
query-string@^6.8.2:
version "6.13.8"
@@ -3292,25 +3302,25 @@ serialport-binding-webserialapi@^1.0.3:
"@serialport/binding-abstract" "^9.0.2"
"@serialport/stream" "^9.0.2"
serialport@10.5.0:
version "10.5.0"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-10.5.0.tgz#b85f614def6e8914e5865c798b0555330903a0f8"
integrity sha512-7OYLDsu5i6bbv3lU81pGy076xe0JwpK6b49G6RjNvGibstUqQkI+I3/X491yBGtf4gaqUdOgoU1/5KZ/XxL4dw==
serialport@11.0.1:
version "11.0.1"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-11.0.1.tgz#9c7aad877d38124a938a50f89eaef22c44825eae"
integrity sha512-j/ntDuewAkqL6g5wKjwV2RTyLBL9cpob8aRd3yLAViYApTsJoYqRleyuzst0OboNTBjBsoxQ4YKYhuYHi1XViQ==
dependencies:
"@serialport/binding-mock" "10.2.2"
"@serialport/bindings-cpp" "10.8.0"
"@serialport/parser-byte-length" "10.5.0"
"@serialport/parser-cctalk" "10.5.0"
"@serialport/parser-delimiter" "10.5.0"
"@serialport/parser-inter-byte-timeout" "10.5.0"
"@serialport/parser-packet-length" "10.5.0"
"@serialport/parser-readline" "10.5.0"
"@serialport/parser-ready" "10.5.0"
"@serialport/parser-regex" "10.5.0"
"@serialport/parser-slip-encoder" "10.5.0"
"@serialport/parser-spacepacket" "10.5.0"
"@serialport/stream" "10.5.0"
debug "^4.3.3"
"@serialport/bindings-cpp" "11.0.3"
"@serialport/parser-byte-length" "11.0.1"
"@serialport/parser-cctalk" "11.0.1"
"@serialport/parser-delimiter" "11.0.1"
"@serialport/parser-inter-byte-timeout" "11.0.1"
"@serialport/parser-packet-length" "11.0.1"
"@serialport/parser-readline" "11.0.1"
"@serialport/parser-ready" "11.0.1"
"@serialport/parser-regex" "11.0.1"
"@serialport/parser-slip-encoder" "11.0.1"
"@serialport/parser-spacepacket" "11.0.1"
"@serialport/stream" "11.0.1"
debug "4.3.4"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
@@ -3609,6 +3619,11 @@ strip-json-comments@~2.0.1:
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
stubborn-fs@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/stubborn-fs/-/stubborn-fs-1.2.5.tgz#e5e244223166921ddf66ed5e062b6b3bf285bfd2"
integrity sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -3728,12 +3743,7 @@ tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
tslib@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
tslib@^2.3.0:
tslib@^2.1.0, tslib@^2.3.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
@@ -3906,6 +3916,11 @@ wcwidth@^1.0.0:
dependencies:
defaults "^1.0.3"
when-exit@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/when-exit/-/when-exit-2.1.0.tgz#0f7b5d7d5f00ea2c4b131b546c444cca2c4ffba7"
integrity sha512-H85ulNwUBU1e6PGxkWUDgxnbohSXD++ah6Xw1VHAN7CtypcbZaC4aYjQ+C2PMVaDkURDuOinNAT+Lnz3utWXxQ==
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
@@ -4053,10 +4068,10 @@ yargs-parser@^15.0.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
yargs-parser@^21.0.0:
version "21.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
yargs-parser@^7.0.0:
version "7.0.0"
@@ -4082,18 +4097,18 @@ yargs@^14.2.3:
y18n "^4.0.0"
yargs-parser "^15.0.1"
yargs@^17.3.1:
version "17.3.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9"
integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==
yargs@^17.7.2:
version "17.7.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
dependencies:
cliui "^7.0.2"
cliui "^8.0.1"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.3"
y18n "^5.0.5"
yargs-parser "^21.0.0"
yargs-parser "^21.1.1"
yargs@^8.0.2:
version "8.0.2"

View File

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

View File

@@ -1,35 +0,0 @@
// See: https://medium.com/@TwitterArchiveEraser/notarize-electron-apps-7a5f988406db
const fs = require('fs')
const path = require('path')
const notarizer = require('electron-notarize')
module.exports = async function (params) {
// notarize the app on Mac OS only.
if (process.platform !== 'darwin' || !process.env.GITHUB_REF || !process.env.GITHUB_REF.startsWith('refs/tags/')) {
return
}
console.log('afterSign hook triggered', params)
let appId = 'org.tabby'
let appPath = path.join(params.appOutDir, params._pathOverride || `${params.packager.appInfo.productFilename}.app`)
if (!fs.existsSync(appPath)) {
throw new Error(`Cannot find application at: ${appPath}`)
}
console.log(`Notarizing ${appId} found at ${appPath}`)
try {
await notarizer.notarize({
appBundleId: appId,
appPath: appPath,
appleId: process.env.APPSTORE_USERNAME,
appleIdPassword: process.env.APPSTORE_PASSWORD,
})
} catch (error) {
console.error(error)
}
console.log(`Done notarizing ${appId}`)
}

View File

@@ -3,8 +3,6 @@ appId: org.tabby
productName: Tabby
compression: normal
npmRebuild: false
afterSign: "./build/mac/afterSignHook.cjs"
afterAllArtifactBuild: "./build/mac/afterBuildHook.cjs"
files:
- '**/*'
- dist

2448
locale/cs-CZ.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: German\n"
"Language: de_DE\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Farbschema"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Farben"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Befehle"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Kompakt (alte Version)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "Kontextmenü"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Legt den Abstand zwischen den Elementen fest"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -844,7 +844,7 @@ msgstr "Fokussiere den Bereich rechts"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "An Farbschema halten"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1439,7 +1439,7 @@ msgstr "Bereiche"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Paper (Vorgängerversion)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Quellcode"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Platzhalter"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "SSH-Passwort für {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Standard (alte Version)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2126,7 +2126,7 @@ msgstr "Tab Position "
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:141
msgid "Tabs width"
msgstr "Tabs Breite"
msgstr "Tab Breite"
#: tabby-telnet/src/profiles.ts:32
msgid "Telnet session"
@@ -2364,7 +2364,7 @@ msgstr "Ob ein benutzerdefiniertes Fenster- oder das Fenster Layout des Betriebs
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Verhindert, dass die SSH-Begrüßung angezeigt wird"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: English, United Kingdom\n"
"Language: en_GB\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Colour scheme"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Colours"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -844,7 +844,7 @@ msgstr ""
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Follow the colour scheme"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1431,7 +1431,7 @@ msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
msgid "Pane resize step"
msgstr "Pane resise step"
msgstr "Pane resize step"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:186
msgid "Panes"

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Esquema de color"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Colores"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,11 +339,11 @@ msgstr "Comandos"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Compacto (heredado)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
msgstr ""
msgstr "Configuración eliminada"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:108
msgid "Config downloaded"
@@ -405,7 +405,7 @@ msgstr "Menú contextual"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Controla la cantidad de espacio entre los elementos"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -426,7 +426,7 @@ msgstr "Copiar la ruta actual"
#: tabby-electron/src/sftpContextMenu.ts:29
msgid "Copy full path"
msgstr ""
msgstr "Copiar ruta completa"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97
msgid "Copy on select"
@@ -552,7 +552,7 @@ msgstr "Eliminar palabra anterior"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
msgid "Delete the config on the remote side?"
msgstr ""
msgstr "¿Eliminar la configuración del lado remoto?"
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
msgid "Delete the group's profiles?"
@@ -844,7 +844,7 @@ msgstr "Central el panel de la derecha"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Seguir el esquema de colores"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -993,7 +993,7 @@ msgstr "Teclas de acceso rápido"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
msgstr "Cómo Tabby se presenta a través de las variables de entorno"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
msgid "HTTP proxy"
@@ -1439,7 +1439,7 @@ msgstr "Paneles"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Papel (heredado)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Código fuente"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Espaciado"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "Contraseña SSH para {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Estándar (heredado)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2147,7 +2147,7 @@ msgstr "Campana de la terminal"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
msgid "Terminal identification"
msgstr ""
msgstr "Identificación del Terminal"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
msgid "Thank you for downloading Tabby!"
@@ -2364,7 +2364,7 @@ msgstr "Si se debe usar una ventana personalizada o una ventana nativa del siste
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Evitar que aparezca el mensaje de bienvenida SSH"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: French\n"
"Language: fr_FR\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Schéma de couleurs"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Couleurs"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Commandes"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Compact (hérité)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "Menu contextuel"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Contrôle la quantité d'espace entre les éléments"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -607,7 +607,7 @@ msgstr "Déconnecter"
#: tabby-ssh/src/components/sshTab.component.ts:247
#: tabby-telnet/src/components/telnetTab.component.ts:113
msgid "Disconnect from {host}?"
msgstr "Déconnectez de {host} ?"
msgstr "Se déconnecter de {host}?"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:30
msgid "Display images via Sixel escape sequences"
@@ -844,7 +844,7 @@ msgstr "Focus sur le volet à droite"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Suivre le schéma de couleurs"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1439,7 +1439,7 @@ msgstr "Panneaux"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Papier (héritage)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1694,7 +1694,7 @@ msgstr "Réutiliser la session pour plusieurs onglets"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78
#: tabby-core/src/tabContextMenu.ts:78
msgid "Right"
msgstr "Droit"
msgstr "Droite"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:56
msgid "Right click"
@@ -1977,7 +1977,7 @@ msgstr "Code source"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Espacement"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "Mot de passe SSH pour {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Standard (hérité)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2236,7 +2236,7 @@ msgstr "Désépingler"
#: tabby-core/src/tabContextMenu.ts:81
msgid "Up"
msgstr "Monter"
msgstr "Haut"
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:14
#: tabby-electron/src/services/updater.service.ts:133
@@ -2364,7 +2364,7 @@ msgstr "Indique si une fenêtre personnalisée ou une fenêtre native de l'OS do
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Empêchera l'affichage du message de salutation SSH"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Croatian\n"
"Language: hr_HR\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -256,7 +256,7 @@ msgstr "Šifre"
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSelector.component.html:5
msgid "Clear"
msgstr ""
msgstr "Isprazni"
#: tabby-core/src/services/profiles.service.ts:133
msgid "Clear recent profiles"
@@ -268,7 +268,7 @@ msgstr "Isprazni terminal"
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:49
msgid "Clear terminal after connection"
msgstr ""
msgstr "Isprazni terminal nakon povezivanja"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:94
msgid "Clipboard"
@@ -319,7 +319,7 @@ msgstr "Shema boja"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Boje"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,11 +339,11 @@ msgstr "Naredbe"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Kompaktno (zastarjelo)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
msgstr ""
msgstr "Konfiguracija je izbrisana"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:108
msgid "Config downloaded"
@@ -405,7 +405,7 @@ msgstr "Kontekstni izbornik"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Kontrolira količinu prostora između elemenata"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -426,7 +426,7 @@ msgstr "Kopiraj trenutačnu stazu"
#: tabby-electron/src/sftpContextMenu.ts:29
msgid "Copy full path"
msgstr ""
msgstr "Kopiraj potpunu stazu"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97
msgid "Copy on select"
@@ -552,7 +552,7 @@ msgstr "Izbriši prethodnu riječ"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
msgid "Delete the config on the remote side?"
msgstr ""
msgstr "Izbrisati konfiguraciju na udaljenom uređaju?"
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
msgid "Delete the group's profiles?"
@@ -844,7 +844,7 @@ msgstr "Postavi desnu ploču kao aktivnu"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Slijedi shemu boja"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -993,7 +993,7 @@ msgstr "Tipkovni prečaci"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
msgstr "Kako se Tabby predstavlja kroz različita okruženja"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
msgid "HTTP proxy"
@@ -1439,7 +1439,7 @@ msgstr "Ploče"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Papir (zastarjelo)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Izvorni kod"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Razmak"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "SSH lozinka za {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Standardno (zastarjelo)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2147,7 +2147,7 @@ msgstr "Zvono terminala"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
msgid "Terminal identification"
msgstr ""
msgstr "Identifikacija terminala"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
msgid "Thank you for downloading Tabby!"
@@ -2364,7 +2364,7 @@ msgstr "Da li koristiti prilagođeni prozor ili izvorni prozor OS-a"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Spriječit će pojavljivanje SSH pozdrava"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Italian\n"
"Language: it_IT\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Tema del terminale"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Colori"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Comandi"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Compatto (legacy)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -378,7 +378,7 @@ msgstr "Connessione a \"%s\"..."
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:17
msgid "Connect to a different host first and use it as a proxy"
msgstr "Connettersi prima a un altro host e utilizzarlo come proxy"
msgstr "Connettiti prima ad un altro host e usalo come proxy"
#: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:19
#: tabby-serial/src/components/serialTab.component.ts:65
@@ -405,7 +405,7 @@ msgstr "Menu contestuale"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Controlla la quantità di spazio tra gli elementi"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -844,7 +844,7 @@ msgstr "Evidenzia il riquadro a destra"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Segui lo schema dei colori"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1439,7 +1439,7 @@ msgstr "Riquadri"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Carta (legacy)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Codice sorgente"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Vuoto"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "Password SSH per {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Standard (legacy)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2364,7 +2364,7 @@ msgstr "Indica se usare una cornice personalizzata o nativa del sistema operativ
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Impedirà l'apparizione dei Greeting SSH"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -148,7 +148,7 @@ msgstr "自動"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:153
msgid "Auto-open a terminal on app start"
msgstr "アプリケーション起動時に新しい端末を自動で開く"
msgstr "起動時に新しい端末を自動で開く"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:13
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:53
@@ -214,7 +214,7 @@ msgstr "ブロードキャストモードです。中断するにはクリック
#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50
#: tabby-settings/src/components/profilesSettingsTab.component.ts:182
msgid "Built-in"
msgstr "組込み"
msgstr "標準"
#: locale/tmp-html/tabby-core/src/components/renameTabModal.component.html:7
#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:53
@@ -319,7 +319,7 @@ msgstr "配色"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "配色"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "コマンド"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "コンパクト (非推奨)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "コンテキストメニュー"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "UI要素間の間隔を変更します"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -479,7 +479,7 @@ msgstr "カスタム"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:90
msgid "Custom CSS"
msgstr "カスタム CSS"
msgstr "カスタムCSS"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:26
msgid "Data bits"
@@ -844,7 +844,7 @@ msgstr "右側のペインにフォーカス"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "配色設定に合わせる"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -947,7 +947,7 @@ msgstr "Tabbyの翻訳に参加する"
#: tabby-terminal/src/components/streamProcessingSettings.component.ts:32
#: tabby-terminal/src/components/streamProcessingSettings.component.ts:44
msgid "Hexadecimal"
msgstr "16進"
msgstr "16進"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:176
msgid "Hide tab close button"
@@ -1427,7 +1427,7 @@ msgstr "リモート側の設定を上書きして同期を開始しますか?
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:96
msgid "Overwrite the local config and start syncing?"
msgstr "ローカル設定を上書きして同期を開始しますか?"
msgstr "これまでのローカル上の設定を上書きして同期を開始しますか?"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
msgid "Pane resize step"
@@ -1439,7 +1439,7 @@ msgstr "ペイン"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "ペーパー (非推奨)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1451,7 +1451,7 @@ msgstr "設定ファイルがVaultによって暗号化されている場合、
#: tabby-settings/src/components/vaultSettingsTab.component.ts:87
msgid "Passphrase for a private key with hash {hash}..."
msgstr "ハッシュ値 {hash}... の秘密鍵のパスフレーズ"
msgstr "秘密鍵のパスフレーズ ハッシュ値 {hash}..."
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:100
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:82
@@ -1470,7 +1470,7 @@ msgstr "クリップボードから貼り付け"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:63
msgid "Paste if no selection, else copy"
msgstr "テキストを選択していない場合は貼り付け、選択中はコピー"
msgstr "通常は貼り付け、テキスト選択時のみコピー"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:490
msgid "Paste multiple lines?"
@@ -1684,7 +1684,7 @@ msgstr "変更を反映するには再起動が必要です"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:159
msgid "Restore terminal tabs on app start"
msgstr "アプリケーション起動時に以前開いていたタブを復元する"
msgstr "起動時に以前開いていたタブを復元する"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:147
msgid "Reuse session for multiple tabs"
@@ -1810,7 +1810,7 @@ msgstr "プロファイルの選択、またはアドレスを入力"
#: tabby-terminal/src/components/streamProcessingSettings.component.ts:33
msgid "Send bytes by typing in hex values"
msgstr "16進数の値を入力しバイトを送信"
msgstr "16進数入力しバイトを送信"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:75
msgid "Sends data one byte at a time"
@@ -1882,7 +1882,7 @@ msgstr "複数行を貼り付ける際に確認ボックスを表示します"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:61
msgid "Show built-in profiles in selector"
msgstr "セレクターに組み込みプロファイルを表示する"
msgstr "セレクターに標準プロファイルを表示する"
#: tabby-core/src/hotkeys.ts:13
msgid "Show command selector"
@@ -1977,7 +1977,7 @@ msgstr "ソースコード"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "UIの間隔"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2015,7 +2015,7 @@ msgstr "SSH接続"
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:53
msgid "SSH connection management is now done through the \"Profiles & connections\" tab"
msgstr "SSH接続の管理は「プロファイルと接続」タブからできるようになりました。"
msgstr "SSH接続の管理は「プロファイルと接続」からできるようになりました。"
#: tabby-settings/src/components/vaultSettingsTab.component.ts:84
msgid "SSH password for {user}@{host}:{port}"
@@ -2023,7 +2023,7 @@ msgstr "{user}@{host}:{port} のSSHパスワード"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "標準 (非推奨)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2352,7 +2352,7 @@ msgstr "最新情報"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:82
msgid "When enabled, links are only clickable while holding this key"
msgstr "有効な場合、指定されたキーを押しながらクリックしたときだけ、リンクを開けるようにします。"
msgstr "有効にすると、特定のキーを押しながらクリックしただけ、リンクを開けるようにします。"
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:18
msgid "When WinSCP is detected, you can launch an SCP session from the context menu."
@@ -2360,11 +2360,11 @@ msgstr "WinSCPが検出されると、コンテキストメニューからSCPセ
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:53
msgid "Whether a custom window or an OS native window should be used"
msgstr "カスタムウィンドウを使用するか、OS標準ウィンドウを使用するかを選択することができます。"
msgstr "カスタムウィンドウを使用するか、OS標準ウィンドウを使用するかを選択できます。"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "SSH接続時のメッセージが表示されなくなります"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -166,7 +166,7 @@ msgstr "자동으로 변경사항 업로드 후 매 분마다 갱신 확인"
#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:10
msgid "Available"
msgstr "유효한"
msgstr "사용 가능"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:35
msgid "Background type"
@@ -319,7 +319,7 @@ msgstr "색상 구성"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "색상"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -405,7 +405,7 @@ msgstr "컨텍스트 메뉴"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "UI 요소 간 간격을 변경합니다"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -552,7 +552,7 @@ msgstr "이전 단어 삭제"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
msgid "Delete the config on the remote side?"
msgstr ""
msgstr "리모트 설정을 삭제하시겠습니까?"
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
msgid "Delete the group's profiles?"
@@ -707,7 +707,7 @@ msgstr "업데이트 가능할 때 자동으로 설치하도록 활성"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
msgid "Enable fluent background option"
msgstr ""
msgstr "fluent 배경 활성화"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
msgid "Enable font ligatures"
@@ -756,7 +756,7 @@ msgstr "예시:"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
msgid "Experimental Windows 10 background style known to cause issues"
msgstr ""
msgstr "실험 버전의 Windows 10에서 배경 스타일이 충돌할 수 있습니다"
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:27
msgid "Export"
@@ -844,7 +844,7 @@ msgstr "오른쪽 항목 포커스"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "색상표 설정을 따릅니다"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1435,7 +1435,7 @@ msgstr "창 크기 조절 단계"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:186
msgid "Panes"
msgstr ""
msgstr "패널"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
@@ -1587,7 +1587,7 @@ msgstr "Raw 소켓 연결"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:166
msgid "Ready Timeout (Milliseconds)"
msgstr ""
msgstr "타임아웃 (밀리초)"
#: tabby-core/src/services/profiles.service.ts:120
#: tabby-core/src/services/profiles.service.ts:134
@@ -1647,7 +1647,7 @@ msgstr "마지막 탭 다시 열기"
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:42
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:26
msgid "Replace"
msgstr ""
msgstr "덮어쓰기"
#: locale/tmp-html/tabby-core/src/components/startPage.component.html:11
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:21
@@ -1724,7 +1724,7 @@ msgstr "프로필로 저장"
#: tabby-core/src/tabContextMenu.ts:148
msgid "Save layout as profile"
msgstr ""
msgstr "프로파일로 레이아웃 저장"
#: tabby-local/src/tabContextMenu.ts:48
msgid "Saved"
@@ -1798,7 +1798,7 @@ msgstr "전체 선택"
#: tabby-core/src/services/fileProviders.service.ts:46
msgid "Select file storage"
msgstr ""
msgstr "저장소에서 파일 선택"
#: tabby-core/src/index.ts:225
msgid "Select profile"
@@ -1977,7 +1977,7 @@ msgstr "소스 코드"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "UI 간격"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2039,7 +2039,7 @@ msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:41
msgid "Subscribe to updates"
msgstr ""
msgstr "새로운 소식 구독하기"
#: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:13
msgid "Substitutions allowed."
@@ -2051,7 +2051,7 @@ msgstr "프로필 전환"
#: tabby-core/src/hotkeys.ts:237
msgid "Switch profile in the active pane"
msgstr ""
msgstr "활성화된 패널의 프로파일을 전환"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:7
msgid "Switches terminal frontend implementation (experimental)"
@@ -2114,11 +2114,11 @@ msgstr "Tabby가 플러그인과 함께 시작할 수 없으므로, 이 세션
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:41
msgid "Tabby news and updates on Twitter"
msgstr ""
msgstr "Twitter에서 Tabby의 최신 정보를 받을 수 있습니다"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
msgid "Tabs"
msgstr ""
msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:126
msgid "Tabs location"
@@ -2183,11 +2183,11 @@ msgstr "전체화면 전환"
#: tabby-core/src/hotkeys.ts:37
msgid "Toggle last tab"
msgstr ""
msgstr "마지막 탭 전환"
#: tabby-electron/src/hotkeys.ts:14
msgid "Toggle terminal window"
msgstr ""
msgstr "터미널 창 전환"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:27
msgid "Toggles the Tabby window visibility"
@@ -2254,7 +2254,7 @@ msgstr "업로드"
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:46
msgid "Upload as a new config"
msgstr ""
msgstr "새로운 설정으로 업로드"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:39
msgid "Use {altKeyName} as the Meta key"
@@ -2279,7 +2279,7 @@ msgstr "CONNECT 메서드 사용"
#: tabby-ssh/src/session/ssh.ts:471
msgid "Using preset password"
msgstr ""
msgstr "사전 설정된 비밀번호 사용"
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:9
msgid "Vault"
@@ -2364,7 +2364,7 @@ msgstr "사용자 지정 창 또는 OS 기본 창 사용 여부"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "SSH 연결 시 메세지 표시하지 않음"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30
@@ -2373,11 +2373,11 @@ msgstr "창"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112
msgid "Window dimension along the edge"
msgstr ""
msgstr "화면 가장자리부터 수평 너비"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105
msgid "Window dimension away from the edge"
msgstr ""
msgstr "화면 가장자리부터 수직 너비"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
msgid "Window frame"
@@ -2385,7 +2385,7 @@ msgstr "창 프레임"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:165
msgid "Windows"
msgstr ""
msgstr ""
#: locale/tmp-html/tabby-local/src/components/shellSettingsTab.component.html:11
msgid "Windows 10 build 18309 or above is recommended for ConPTY"

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -209,7 +209,7 @@ msgstr "Wklejanie cudzysłowu (wymaga wsparcia powłoki)"
#: tabby-terminal/src/services/multifocus.service.ts:19
msgid "Broadcast mode. Click anywhere to cancel."
msgstr ""
msgstr "Broadcast mode. Kliknij gdziekolwiek, aby anulować."
#: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50
#: tabby-settings/src/components/profilesSettingsTab.component.ts:182
@@ -239,7 +239,7 @@ msgstr "Zmień szybkość transmisji szeregowuej (baud)"
#: tabby-core/src/tabContextMenu.ts:133
msgid "Change tab color"
msgstr ""
msgstr "Zmień kolor zakładki"
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:12
msgid "Change the master passphrase"
@@ -256,7 +256,7 @@ msgstr "Szyfry"
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSelector.component.html:5
msgid "Clear"
msgstr ""
msgstr "Wyczyść"
#: tabby-core/src/services/profiles.service.ts:133
msgid "Clear recent profiles"
@@ -268,7 +268,7 @@ msgstr "Wyczyść terminal"
#: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:49
msgid "Clear terminal after connection"
msgstr ""
msgstr "Wyczyść terminal po połączeniu"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:94
msgid "Clipboard"
@@ -306,7 +306,7 @@ msgstr "Zamknij karty na prawo"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182
msgid "Close the window after closing the last tab"
msgstr ""
msgstr "Zamknij okno po zamknięciu ostatniej zakładki"
#: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:33
#: tabby-core/src/tabContextMenu.ts:132
@@ -319,7 +319,7 @@ msgstr "Szablon kolorów"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Kolory"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -335,15 +335,15 @@ msgstr "Zamiast połączenia sieciowego użyto komendy stdin/stdout"
#: tabby-core/src/services/commands.service.ts:104
msgid "Commands"
msgstr ""
msgstr "Polecenia"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Compact (legacy)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
msgstr ""
msgstr "Konfiguracja usunięta"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:108
msgid "Config downloaded"
@@ -405,7 +405,7 @@ msgstr "Menu kontekstowe"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Kontroluje ilość odstępu między elementami"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -426,7 +426,7 @@ msgstr "Skopiuj bieżącą ścieżkę"
#: tabby-electron/src/sftpContextMenu.ts:29
msgid "Copy full path"
msgstr ""
msgstr "Kopiuj pełną ścieżkę"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97
msgid "Copy on select"
@@ -552,7 +552,7 @@ msgstr "Usuń poprzednie słowo"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
msgid "Delete the config on the remote side?"
msgstr ""
msgstr "Usunąć konfigurację po stronie zdalnej?"
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
msgid "Delete the group's profiles?"
@@ -707,7 +707,7 @@ msgstr "Włącz automatyczną instalację aktualizacji, gdy będą dostępne."
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
msgid "Enable fluent background option"
msgstr ""
msgstr "Włącz opcję płynnego tła"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
msgid "Enable font ligatures"
@@ -756,7 +756,7 @@ msgstr "Przykład:"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
msgid "Experimental Windows 10 background style known to cause issues"
msgstr ""
msgstr "Eksperymentalny styl tła Windows 10 powodujący problemy"
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:27
msgid "Export"
@@ -796,11 +796,11 @@ msgstr "Wyróżnij wszystkie panele jednocześnie (broadcast)"
#: tabby-terminal/src/tabContextMenu.ts:71
msgid "Focus all tabs"
msgstr ""
msgstr "Podświetl wszystkie zakładki"
#: tabby-terminal/src/hotkeys.ts:82
msgid "Focus all tabs at once (broadcast)"
msgstr ""
msgstr "Podświetl wszystkie zakładki na raz (Broadcast)"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:196
msgid "Focus follows mouse"
@@ -844,7 +844,7 @@ msgstr "Wyróżnij panel na prawej"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Powiel schemat kolorów"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -993,7 +993,7 @@ msgstr "Klawisze skrótów"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
msgstr "W jaki sposób Tabby prezentuje się w zmiennych środowiskach"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
msgid "HTTP proxy"
@@ -1203,7 +1203,7 @@ msgstr "Maksymalizuj aktywny panel"
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:93
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:70
msgid "Minimum contrast ratio"
msgstr ""
msgstr "Minimalny stosunek kontrastu"
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:39
msgid "Modified on {date}"
@@ -1439,7 +1439,7 @@ msgstr "Panele"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Papier (legacy)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1470,7 +1470,7 @@ msgstr "Wklej ze schowka"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:63
msgid "Paste if no selection, else copy"
msgstr ""
msgstr "Wklej jeśli nie wybrano, w przeciwnym razie skopiuj"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:490
msgid "Paste multiple lines?"
@@ -1624,7 +1624,7 @@ msgstr "Zdalny"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:124
msgid "Remove whitespace and newlines around the copied text"
msgstr ""
msgstr "Usuń spacje i nowe linie wokół skopiowanego tekstu"
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:25
#: tabby-core/src/tabContextMenu.ts:120
@@ -1634,7 +1634,7 @@ msgstr "Zmień nazwę"
#: tabby-core/src/hotkeys.ts:25
#: tabby-core/src/tabContextMenu.ts:121
msgid "Rename tab"
msgstr ""
msgstr "Zmień nazwę zakładki"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:3
msgid "Rendering"
@@ -1886,7 +1886,7 @@ msgstr "Pokaż wbudowane profile w selektorze"
#: tabby-core/src/hotkeys.ts:13
msgid "Show command selector"
msgstr ""
msgstr "Pokaż selektor poleceń"
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:132
msgid "Show config file"
@@ -1926,7 +1926,7 @@ msgstr "Pokaż połączenia szeregowe"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:152
msgid "Show tabs in fullscreen mode"
msgstr ""
msgstr "Pokaż karty w trybie pełnoekranowym"
#: tabby-terminal/src/tabContextMenu.ts:58
msgid "Show toolbar"
@@ -1977,7 +1977,7 @@ msgstr "Kod źródłowy"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Przestrzeń"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -1989,7 +1989,7 @@ msgstr "Podziel na dół"
#: tabby-core/src/tabContextMenu.ts:85
msgid "Split to the down"
msgstr ""
msgstr "Podziel na dół"
#: tabby-core/src/hotkeys.ts:165
#: tabby-core/src/tabContextMenu.ts:86
@@ -2007,7 +2007,7 @@ msgstr "Podziel na górę"
#: tabby-core/src/tabContextMenu.ts:87
msgid "Split to the up"
msgstr ""
msgstr "Podziel na górę"
#: tabby-ssh/src/profiles.ts:81
msgid "SSH connection"
@@ -2023,7 +2023,7 @@ msgstr "Hasło SSH dla {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Standardowe (legacy)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2147,7 +2147,7 @@ msgstr "Dzwonek Terminalu"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
msgid "Terminal identification"
msgstr ""
msgstr "Identyfikacja terminala"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
msgid "Thank you for downloading Tabby!"
@@ -2200,7 +2200,7 @@ msgstr "Góra"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:123
msgid "Trim whitespace and newlines"
msgstr ""
msgstr "Przytnij białą przestrzeń i nowe linie"
#: tabby-core/src/services/config.service.ts:371
msgid "Try again"
@@ -2364,7 +2364,7 @@ msgstr "Użyj do wyboru niestandardowego lub natywnego wyglądu dla okna termina
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Zapobiegnie pokazywaniu powitania SSH"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Esquema de cores"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Cores"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Comandos"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Compactado (legado)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "Menu de contexto"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Controla a quantidade de espaço entre elementos"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -611,7 +611,7 @@ msgstr "Desconectar de {host}?"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:30
msgid "Display images via Sixel escape sequences"
msgstr ""
msgstr "Exibir imagens através de sequências de escape Sixel"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:85
msgid "Display on"
@@ -707,7 +707,7 @@ msgstr "Permite a instalação automática de atualizações quando elas estiver
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
msgid "Enable fluent background option"
msgstr ""
msgstr "Habilitar opção de fundo fluente"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
msgid "Enable font ligatures"
@@ -756,7 +756,7 @@ msgstr "Exemplo:"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
msgid "Experimental Windows 10 background style known to cause issues"
msgstr ""
msgstr "Estilo experimental do Windows 10 conhecido por causar problemas"
#: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:27
msgid "Export"
@@ -844,7 +844,7 @@ msgstr "Focar no painel à direita"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Seguir o esquema de cores"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -993,7 +993,7 @@ msgstr "Teclas de atalho"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
msgstr "Como Tabby se apresenta através de variáveis de ambiente"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
msgid "HTTP proxy"
@@ -1439,7 +1439,7 @@ msgstr "Painéis"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Papel (legado)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Código-fonte"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Espaçamento"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "Senha SSH para {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Padrão (legado)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2364,7 +2364,7 @@ msgstr "Se uma janela personalizada ou uma janela nativa do sistema deve ser usa
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Impede que a saudação por SSH apareça"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Цветовая схема"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Стиль"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Команды"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Компактная (legacy)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "Контекстное меню"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Управляет расстоянием между элементами"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -707,7 +707,7 @@ msgstr "Включить автоматическую установку обн
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
msgid "Enable fluent background option"
msgstr ""
msgstr "Включить опцию свободного фона"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:16
msgid "Enable font ligatures"
@@ -844,7 +844,7 @@ msgstr "Фокус на панели справа"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Следовать цветовой схеме"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -993,7 +993,7 @@ msgstr "Горячие клавиши"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
msgstr "Как Tabby обозначает себя в глобальных переменных"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
msgid "HTTP proxy"
@@ -1439,7 +1439,7 @@ msgstr "Панели"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Бумага (legacy)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Исходный код"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Расстояние между элементами"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "Пароль SSH для {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Стандартная (legacy)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2147,7 +2147,7 @@ msgstr "Звуковой сигнал терминала"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
msgid "Terminal identification"
msgstr ""
msgstr "Идентификация терминала"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
msgid "Thank you for downloading Tabby!"
@@ -2364,7 +2364,7 @@ msgstr "Должно ли использоваться кастомное офо
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Запретит отправку SSH-приветствия"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Färgschema"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Färger"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Kommandon"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Kompakt (legacy)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "Snabbmeny"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Styr mängden utrymme mellan element"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -844,7 +844,7 @@ msgstr "Fokusera panelen till höger"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Följ färgschemat"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1439,7 +1439,7 @@ msgstr "Paneler"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Papper (legacy)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Källkod"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Rymlighet"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "SSH-lösenord för {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Standard (legacy)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2364,7 +2364,7 @@ msgstr "Om ett anpassat fönster eller ett OS-inbyggt fönster ska användas"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Kommer att förhindra att SSH-hälsning visas"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "Кольорова схема"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "Кольори"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "Команди"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "Компактний (застаріло)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "Контекстне меню"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "Контролює відстань між елементами"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -552,7 +552,7 @@ msgstr "Видалити попереднє слово"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:114
msgid "Delete the config on the remote side?"
msgstr ""
msgstr "Видалити конфіг на віддаленій стороні?"
#: tabby-settings/src/components/profilesSettingsTab.component.ts:221
msgid "Delete the group's profiles?"
@@ -844,7 +844,7 @@ msgstr "Фокус на панелі праворуч"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "Дотримуватись колірної схеми"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -993,7 +993,7 @@ msgstr "Гарячі клавіші"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:69
msgid "How Tabby presents itself through environment vars"
msgstr ""
msgstr "Як Tabby представляє себе за допомогою змінних оточення"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:24
msgid "HTTP proxy"
@@ -1439,7 +1439,7 @@ msgstr "Панелі"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "Папір (застаріло)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "Вихідний код"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "Простір"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "Пароль SSH для {user}@{host}:{port}"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "Стандартний (застаріло)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2147,7 +2147,7 @@ msgstr "Звуковий сигнал терміналу"
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:68
msgid "Terminal identification"
msgstr ""
msgstr "Ідентифікація терміналу"
#: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7
msgid "Thank you for downloading Tabby!"
@@ -2364,7 +2364,7 @@ msgstr "Чи має використовуватися кастомне офор
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "Не показувати привітання SSH"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -64,7 +64,7 @@ msgstr "添加…"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:84
msgid "Additional space between lines"
msgstr "行与行之间的空隙"
msgstr "行间距"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:22
#: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:61
@@ -196,7 +196,7 @@ msgstr "模糊"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:28
msgid "Bold font weight"
msgstr "粗体字"
msgstr "粗体字体粗细"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:132
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:80
@@ -319,7 +319,7 @@ msgstr "配色方案"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "色彩"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "命令"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "紧凑模式(旧版)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "右键菜单"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "控制元素之间的间隔"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -844,7 +844,7 @@ msgstr "聚焦右方的窗格"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "依照配色方案"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1319,7 +1319,7 @@ msgstr "一般"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:22
msgid "Normal font weight"
msgstr "正常字"
msgstr "正常字体粗细"
#: tabby-terminal/src/components/searchPanel.component.ts:54
#: tabby-terminal/src/components/searchPanel.component.ts:64
@@ -1439,7 +1439,7 @@ msgstr "窗格"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "纸张(旧版)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "源码"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "间隔"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "{user}@{host}:{port} 的 SSH 密码"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "标准模式(旧版)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2364,7 +2364,7 @@ msgstr "使用自定义窗口或操作系统原生窗口"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "不显示 SSH 问候语"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: tabby\n"
"Language-Team: Chinese Traditional\n"
"Language: zh_TW\n"
"PO-Revision-Date: 2023-04-10 18:13\n"
"PO-Revision-Date: 2023-06-28 08:41\n"
#: tabby-local/src/components/terminalTab.component.ts:111
msgid "\"{command}\" is still running. Close?"
@@ -319,7 +319,7 @@ msgstr "顏色機制"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216
msgid "Colors"
msgstr ""
msgstr "顏色"
#: tabby-core/src/hotkeys.ts:73
msgid "Combine all tabs into the current tab"
@@ -339,7 +339,7 @@ msgstr "指令"
#: tabby-core/src/theme.ts:21
msgid "Compact (legacy)"
msgstr ""
msgstr "緊湊 (舊版)"
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:126
msgid "Config deleted"
@@ -405,7 +405,7 @@ msgstr "快顯功能表"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Controls the amount of space between elements"
msgstr ""
msgstr "調整各元件之間的間距"
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
@@ -844,7 +844,7 @@ msgstr "聚焦右邊的窗格"
#: tabby-core/src/theme.ts:43
msgid "Follow the color scheme"
msgstr ""
msgstr "遵循色彩搭配方案"
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:7
msgid "Font"
@@ -1439,7 +1439,7 @@ msgstr "窗格"
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
msgstr "紙張 (舊版)"
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity"
@@ -1977,7 +1977,7 @@ msgstr "原始碼"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
msgstr "空間感"
#: tabby-core/src/tabContextMenu.ts:75
msgid "Split"
@@ -2023,7 +2023,7 @@ msgstr "{user}@{host}:{port} 的 SSH 密碼"
#: tabby-core/src/theme.ts:9
msgid "Standard (legacy)"
msgstr ""
msgstr "標準 (舊版)"
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:150
msgid "Startup"
@@ -2364,7 +2364,7 @@ msgstr "使用自訂視窗或是使用作業系統視窗"
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
msgstr "將防止顯示 SSH 問候語。"
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30

View File

@@ -11,11 +11,12 @@
"@angular/platform-browser": "^15.2.6",
"@angular/platform-browser-dynamic": "^15.2.6",
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
"@electron/notarize": "^1.2.3",
"@fortawesome/fontawesome-free": "^6.4.0",
"@ng-bootstrap/ng-bootstrap": "^14.1.0",
"@ngtools/webpack": "^15.2.5",
"@popperjs/core": "^2.11.6",
"@sentry/cli": "^1.74.3",
"@sentry/cli": "^2.18.1",
"@sentry/electron": "^2.5.4",
"@tabby-gang/to-string-loader": "^1.1.7-beta.2",
"@types/deep-equal": "1.0.1",
@@ -23,26 +24,25 @@
"@types/electron-debug": "^2.1.0",
"@types/fs-extra": "^9.0.13",
"@types/js-yaml": "^4.0.5",
"@types/node": "16.0.1",
"@types/node": "20.3.1",
"@types/webpack-env": "^1.18.0",
"@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.54.1",
"apply-loader": "2.0.0",
"axios": "^0.27.2",
"axios": "^1.4.0",
"babel-loader": "^9.1.2",
"browserify-sign": "^4.2.1",
"clone-deep": "^4.0.1",
"compare-versions": "^5",
"core-js": "^3.21.1",
"core-js": "^3.31.0",
"core-js-pure": "^3.21.1",
"cross-env": "7.0.3",
"css-loader": "^6.7.3",
"deep-equal": "2.0.5",
"electron": "22.3.1",
"electron": "^25.3.0",
"electron-builder": "^24.0.0-alpha.1",
"electron-download": "^4.1.1",
"electron-installer-snap": "^5.1.0",
"electron-notarize": "^1.2.2",
"electron-rebuild": "^3.2.9",
"eslint": "^8.38.0",
"eslint-import-resolver-typescript": "^3.5.2",
@@ -55,7 +55,7 @@
"lru-cache": "^6.0.0",
"macos-release": "^3.1.0",
"ngx-toastr": "^16.0.2",
"node-abi": "^3.33.0",
"node-abi": "^3.45.0",
"npmlog": "6.0.2",
"npx": "^10.2.2",
"patch-package": "^6.4.7",
@@ -68,7 +68,7 @@
"pug-static-loader": "2.0.0",
"raw-loader": "4.0.2",
"rxjs": "^7.5.7",
"sass": "^1.58.0",
"sass": "^1.63.4",
"sass-loader": "^13.2.0",
"shell-quote": "^1.7.4",
"shelljs": "0.8.5",
@@ -85,9 +85,9 @@
"tslib": "^2.5.0",
"typedoc": "^0.22.18",
"typescript": "^4.9.5",
"utils-decorators": "^1.10.4",
"utils-decorators": "^2.0.6",
"val-loader": "5.0.1",
"webpack": "^5.75.0",
"webpack": "^5.86.0",
"webpack-bundle-analyzer": "^4.7.0",
"webpack-cli": "^5.0.1",
"yaml-loader": "0.8.0",

View File

@@ -1,15 +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
index 49f6dca..0ea11f2 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 {
@@ -112,9 +112,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'
+ return 'tabby-terminal';
}
get sanitizedName() {
return filename_1.sanitizeFileName(this.name);
return (0, filename_1.sanitizeFileName)(this.name);

View File

@@ -9,7 +9,7 @@ process.env.ARCH = (process.env.ARCH || process.arch) === 'arm' ? 'armv7l' : pro
builder({
dir: true,
linux: ['deb', 'tar.gz', 'rpm', 'pacman'],
linux: ['deb', 'tar.gz', 'rpm', 'pacman', 'appimage'],
armv7l: process.env.ARCH === 'armv7l',
arm64: process.env.ARCH === 'arm64',
config: {

View File

@@ -13,6 +13,9 @@ if (process.env.GITHUB_HEAD_REF) {
process.env.CSC_IDENTITY_AUTO_DISCOVERY = 'false'
}
process.env.APPLE_ID ??= process.env.APPSTORE_USERNAME
process.env.APPLE_APP_SPECIFIC_PASSWORD ??= process.env.APPSTORE_PASSWORD
builder({
dir: true,
mac: ['pkg', 'zip'],
@@ -24,6 +27,10 @@ builder({
},
mac: {
identity: !process.env.CI || process.env.CSC_LINK ? undefined : null,
notarize: process.env.APPLE_TEAM_ID ? {
appBundleId: 'org.tabby',
teamId: process.env.APPLE_TEAM_ID,
} : false,
},
npmRebuild: process.env.ARCH !== 'arm64',
publish: process.env.KEYGEN_TOKEN ? [

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/@tabby-gang/node-pty/build/Release/pty.node',
'app/node_modules/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

@@ -3,6 +3,8 @@ import * as fs from 'fs'
import * as semver from 'semver'
import * as childProcess from 'child_process'
process.env.ARCH = ((process.env.ARCH || process.arch) === 'arm') ? 'armv7l' : process.env.ARCH || process.arch
import * as url from 'url'
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
@@ -58,21 +60,21 @@ export const keygenConfig = {
win32: {
x64: 'f481b9d6-d5da-4970-b926-f515373e986f',
arm64: '950999b9-371c-419b-b291-938c5e4d364c',
}[process.env.ARCH ?? process.arch],
}[process.env.ARCH],
darwin: {
arm64: '98fbadee-c707-4cd6-9d99-56683595a846',
x86_64: 'f5a48841-d5b8-4b7b-aaa7-cf5bffd36461',
x64: 'f5a48841-d5b8-4b7b-aaa7-cf5bffd36461',
}[process.env.ARCH ?? process.arch],
}[process.env.ARCH],
linux: {
x64: '7bf45071-3031-4a26-9f2e-72604308313e',
arm64: '39e3c736-d4d4-4fbf-a201-324b7bab0d17',
armv7l: '50ae0a82-7f47-4fa4-b0a8-b0d575ce9409',
armhf: '7df5aa12-04ab-4075-a0fe-93b0bbea9643',
}[process.env.ARCH ?? process.arch],
}[process.env.ARCH],
}[process.platform],
}
if (!keygenConfig.product) {
throw new Error(`Unrecognized platform ${process.platform}/${process.env.ARCH ?? process.arch}`)
throw new Error(`Unrecognized platform ${process.platform}/${process.env.ARCH}`)
}

View File

@@ -26,7 +26,7 @@
"messageformat": "^2.3.0",
"mixpanel": "^0.17.0",
"ngx-translate-messageformat-compiler": "^4.11.0",
"readable-stream": "4.2.0",
"readable-stream": "4.4.0",
"uuid": "^9.0.0"
},
"peerDependencies": {

View File

@@ -86,14 +86,18 @@ export interface FileUploadOptions {
multiple: boolean
}
export type PlatformTheme = 'light'|'dark'
export abstract class PlatformService {
supportsWindowControls = false
get fileTransferStarted$ (): Observable<FileTransfer> { return this.fileTransferStarted }
get displayMetricsChanged$ (): Observable<void> { return this.displayMetricsChanged }
get themeChanged$ (): Observable<PlatformTheme> { return this.themeChanged }
protected fileTransferStarted = new Subject<FileTransfer>()
protected displayMetricsChanged = new Subject<void>()
protected themeChanged = new Subject<PlatformTheme>()
abstract readClipboard (): string
abstract setClipboard (content: ClipboardContent): void
@@ -169,6 +173,10 @@ export abstract class PlatformService {
throw new Error('Not implemented')
}
getTheme (): PlatformTheme {
return 'dark'
}
abstract getOSRelease (): string
abstract getAppVersion (): string
abstract openExternal (url: string): void

View File

@@ -1,16 +1,20 @@
title-bar(
*ngIf='ready && !hostWindow.isFullscreen && config.store.appearance.frame == "full" && config.store.appearance.dock == "off"',
(dblclick)='hostWindow.toggleMaximize()',
[hideControls]='hostApp.platform !== Platform.Linux && !hostWindow.isFullscreen',
[class.inset]='hostApp.platform == Platform.macOS && !hostWindow.isFullscreen'
)
.content(
*ngIf='ready',
[class.tabs-on-top]='config.store.appearance.tabsLocation == "top" || config.store.appearance.tabsLocation == "left"',
[class.tabs-on-side]='hasVerticalTabs()',
[class.tabs-on-left]='hasVerticalTabs() && config.store.appearance.tabsLocation == "left"',
[class.tabs-titlebar-enabled]='config.store.appearance.frame == "full"',
[class.tabs-on-right]='hasVerticalTabs() && config.store.appearance.tabsLocation == "right"',
)
.tab-bar(
*ngIf='!hostWindow.isFullscreen || config.store.appearance.tabsInFullscreen',
[class.tab-bar-no-controls-overlay]='hostApp.platform == Platform.macOS',
(dblclick)='hostWindow.toggleMaximize()'
)
.inset.background(*ngIf='hostApp.platform == Platform.macOS \
@@ -81,9 +85,12 @@ title-bar(
window-controls.background(
*ngIf='config.store.appearance.frame == "thin" \
&& (hostApp.platform == Platform.Windows || hostApp.platform == Platform.Linux)',
&& (hostApp.platform == Platform.Linux)',
)
div.window-controls-spacer(
*ngIf='config.store.appearance.frame == "thin" && (hostApp.platform == Platform.Windows) && (config.store.appearance.tabsLocation == "top")',
)
.content
start-page.content-tab.content-tab-active(*ngIf='ready && app.tabs.length == 0')

View File

@@ -35,17 +35,16 @@ $tab-border-radius: 4px;
flex-direction: column;
}
&.tabs-on-side {
&.tabs-on-right {
flex-direction: row-reverse;
&.tabs-on-top {
flex-direction: row;
}
}
&.tabs-on-left {
flex-direction: row;
}
}
.content.tabs-on-side > .tab-bar {
.content.tabs-on-left > .tab-bar, .content.tabs-on-right > .tab-bar {
height: 100%;
width: var(--side-tab-width);
overflow-y: auto;
@@ -76,6 +75,18 @@ $tab-border-radius: 4px;
}
}
.content.tabs-on-left > .tab-bar.tab-bar-no-controls-overlay, .content.tabs-titlebar-enabled {
.tabs {
padding-top: 0 !important;
}
}
.content.tabs-on-right > .tab-bar {
.tabs {
// Account for WCO on Windows.
padding-top: 36px;
}
}
.tab-bar {
flex: none;
@@ -125,10 +136,17 @@ $tab-border-radius: 4px;
}
&.persistent {
min-width: 72px; // 2 x 36 px height, ie 2 squares
// min-width: 72px; // 2 x 36 px height, ie 2 squares
// Given WCO on Windows, the min-width of the window buttons is about 138px.
min-width: 138px;
}
}
&>.window-controls-spacer {
min-width: 138px;
height: 100%;
}
& > .inset {
width: calc(70px + 15px * var(--spaciness));
height: var(--tabs-height);

View File

@@ -76,10 +76,11 @@ export class SelectorModalComponent<T> {
{ sort: true },
).search(f)
const freeOption = this.options.find(x => x.freeInputPattern)
if (freeOption && !this.filteredOptions.includes(freeOption)) {
this.filteredOptions.push(freeOption)
}
this.options.filter(x => x.freeInputPattern).forEach(freeOption => {
if (!this.filteredOptions.includes(freeOption)) {
this.filteredOptions.push(freeOption)
}
})
}
this.selectedIndex = Math.max(0, this.selectedIndex)
this.selectedIndex = Math.min(this.filteredOptions.length - 1, this.selectedIndex)

View File

@@ -1,2 +1,2 @@
.title((dblclick)='hostWindow.toggleMaximize()') Tabby
window-controls
window-controls(*ngIf="!hideControls")

View File

@@ -1,4 +1,4 @@
import { Component } from '@angular/core'
import { Component, Input } from '@angular/core'
import { HostWindowService } from '../api'
/** @hidden */
@@ -8,5 +8,7 @@ import { HostWindowService } from '../api'
styleUrls: ['./titleBar.component.scss'],
})
export class TitleBarComponent {
@Input() hideControls: boolean
constructor (public hostWindow: HostWindowService) { }
}

View File

@@ -23,6 +23,7 @@ hotkeys:
duplicate-tab: []
restart-tab: []
reconnect-tab: []
disconnect-tab: []
explode-tab:
- 'Ctrl-Shift-.'
combine-tabs:

View File

@@ -40,6 +40,7 @@ hotkeys:
duplicate-tab: []
restart-tab: []
reconnect-tab: []
disconnect-tab: []
explode-tab:
- '⌘-Shift-.'
combine-tabs:

View File

@@ -24,6 +24,7 @@ hotkeys:
duplicate-tab: []
restart-tab: []
reconnect-tab: []
disconnect-tab: []
explode-tab:
- 'Ctrl-Shift-.'
combine-tabs:

View File

@@ -11,7 +11,7 @@ appearance:
tabsLocation: top
tabsInFullscreen: false
cycleTabs: true
theme: Standard
theme: Follow the color scheme
frame: thin
css: '/* * { color: blue !important; } */'
opacity: 1.0
@@ -48,8 +48,10 @@ enableExperimentalFeatures: false
pluginBlacklist: []
commandBlacklist: []
providerBlacklist: []
profileBlacklist: []
hacks:
disableGPU: false
disableVibrancyWhileDragging: false
enableFluentBackground: false
language: null
defaultQuickConnectProvider: "ssh"

View File

@@ -219,6 +219,7 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex
name: this.translate.instant('Quick connect'),
freeInputPattern: this.translate.instant('Connect to "%s"...'),
icon: 'fas fa-arrow-right',
description: `(${provider.name.toUpperCase()})`,
callback: query => {
const p = provider.quickConnect(query)
if (p) {

View File

@@ -15,6 +15,9 @@ const deepmerge = require('deepmerge')
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export const configMerge = (a, b) => deepmerge(a, b, { arrayMerge: (_d, s) => s }) // eslint-disable-line @typescript-eslint/no-var-requires
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export const configMergeByDefault = (a, b) => deepmerge(a, b) // eslint-disable-line @typescript-eslint/no-var-requires
const LATEST_VERSION = 1
function isStructuralMember (v) {
@@ -162,7 +165,7 @@ export class ConfigService {
defaults = configMerge(provider.defaults, defaults)
}
return defaults
}).reduce(configMerge)
}).reduce(configMergeByDefault)
}
getDefaults (): Record<string, any> {
@@ -213,7 +216,9 @@ export class ConfigService {
* Reads config YAML as string
*/
readRaw (): string {
return yaml.dump(this._store)
// Scrub undefined values
const cleanStore = JSON.parse(JSON.stringify(this._store))
return yaml.dump(cleanStore)
}
/**
@@ -351,6 +356,14 @@ export class ConfigService {
delete window.localStorage.lastSerialConnection
config.version = 3
}
if (config.version < 4) {
for (const p of config.profiles ?? []) {
if (!p.id) {
p.id = `${p.type}:custom:${uuidv4()}`
}
}
config.version = 4
}
}
private async maybeDecryptConfig (store) {

View File

@@ -178,7 +178,7 @@ export class HotkeysService {
this._key.next(getKeyName(eventData))
})
if (process.platform === 'darwin' && eventData.metaKey && eventName === 'keydown' && !['Ctrl', 'Shift', altKeyName, metaKeyName].includes(keyName)) {
if (process.platform === 'darwin' && eventData.metaKey && eventName === 'keydown' && !['Ctrl', 'Shift', altKeyName, metaKeyName, 'Enter'].includes(keyName)) {
// macOS will swallow non-modified keyups if Cmd is held down
this.pushKeyEvent('keyup', nativeEvent)
}

View File

@@ -7,6 +7,7 @@ import localeENUS from '@angular/common/locales/en'
import localeENGB from '@angular/common/locales/en-GB'
import localeAF from '@angular/common/locales/af'
import localeBG from '@angular/common/locales/bg'
import localeCS from '@angular/common/locales/cs'
import localeDA from '@angular/common/locales/da'
import localeDE from '@angular/common/locales/de'
import localeES from '@angular/common/locales/es'
@@ -31,6 +32,7 @@ registerLocaleData(localeENUS)
registerLocaleData(localeENGB)
registerLocaleData(localeAF)
registerLocaleData(localeBG)
registerLocaleData(localeCS)
registerLocaleData(localeDA)
registerLocaleData(localeDE)
registerLocaleData(localeES)
@@ -82,6 +84,10 @@ export class LocaleService {
code: 'id-ID',
name: 'Bahasa Indonesia',
},
{
code: 'cs-CZ',
name: 'Čeština',
},
{
code: 'da-DK',
name: 'Dansk',

View File

@@ -96,6 +96,8 @@ export class ProfilesService {
const freeInputEquivalent = provider?.intoQuickConnectString(fullProfile) ?? undefined
return {
...profile,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
group: profile.group || '',
freeInputEquivalent,
description: provider?.getDescription(fullProfile),
}
@@ -151,6 +153,8 @@ export class ProfilesService {
profiles = profiles.filter(x => !x.isTemplate)
profiles = profiles.filter(x => x.id && !this.config.store.profileBlacklist.includes(x.id))
options = [...options, ...profiles.map((p): SelectorOption<void> => ({
...this.selectorOptionForProfile(p),
weight: p.isBuiltin ? 2 : 1,
@@ -173,17 +177,20 @@ export class ProfilesService {
})
} catch { }
if (this.getProviders().some(x => x.supportsQuickConnect)) {
this.getProviders().filter(x => x.supportsQuickConnect).forEach(provider => {
options.push({
name: this.translate.instant('Quick connect'),
freeInputPattern: this.translate.instant('Connect to "%s"...'),
description: `(${provider.name.toUpperCase()})`,
icon: 'fas fa-arrow-right',
weight: provider.id !== this.config.store.defaultQuickConnectProvider ? 1 : 0,
callback: query => {
const profile = this.quickConnect(query)
const profile = provider.quickConnect(query)
resolve(profile)
},
})
}
})
await this.selector.show(this.translate.instant('Select profile or enter an address'), options)
} catch (err) {
reject(err)

View File

@@ -3,6 +3,7 @@ import { Subject, Observable } from 'rxjs'
import * as Color from 'color'
import { ConfigService } from '../services/config.service'
import { Theme } from '../api/theme'
import { PlatformService } from '../api/platform'
import { NewTheme } from '../theme'
@Injectable({ providedIn: 'root' })
@@ -17,6 +18,7 @@ export class ThemesService {
private constructor (
private config: ConfigService,
private standardTheme: NewTheme,
private platform: PlatformService,
@Inject(Theme) private themes: Theme[],
) {
this.rootElementStyleBackup = document.documentElement.style.cssText
@@ -24,6 +26,10 @@ export class ThemesService {
config.ready$.toPromise().then(() => {
this.applyCurrentTheme()
this.applyThemeVariables()
platform.themeChanged$.subscribe(() => {
this.applyCurrentTheme()
this.applyThemeVariables()
})
config.changed$.subscribe(() => {
this.applyCurrentTheme()
this.applyThemeVariables()
@@ -36,7 +42,7 @@ export class ThemesService {
document.documentElement.style.cssText = this.rootElementStyleBackup
}
const theme = this.config.store.terminal.colorScheme
const theme = this._getActiveColorScheme()
const isDark = Color(theme.background).luminosity() < Color(theme.foreground).luminosity()
function more (some, factor) {
@@ -106,8 +112,10 @@ export class ThemesService {
const themeColors = {
primary: theme.colors[accentIndex],
secondary: less(theme.background, 0.5).string(),
tertiary: theme.colors[8],
secondary: isDark
? less(theme.background, 0.5).string()
: less(theme.background, 0.125).string(),
tertiary: more(theme.background, 0.75).string(),
warning: theme.colors[3],
danger: theme.colors[1],
success: theme.colors[2],
@@ -184,6 +192,15 @@ export class ThemesService {
return this.findTheme(this.config.store.appearance.theme) ?? this.standardTheme
}
/// @hidden
_getActiveColorScheme (): any {
if (this.platform.getTheme() === 'light') {
return this.config.store.terminal.lightColorScheme
} else {
return this.config.store.terminal.colorScheme
}
}
applyTheme (theme: Theme): void {
if (!this.styleElement) {
this.styleElement = document.createElement('style')

View File

@@ -110,7 +110,7 @@ body {
}
.nav {
--bs-nav-link-color: var(--theme-fg);
--bs-nav-link-color: var(--theme-fg-more);
--bs-nav-link-hover-color: var(--theme-fg-less);
--bs-nav-link-disabled-color: var(--bs-gray);
}
@@ -119,8 +119,8 @@ body {
--bs-nav-tabs-border-width: 2px;
--bs-nav-tabs-border-radius: 0;
--bs-nav-tabs-link-hover-border-color: var(--bs-body-bg);
--bs-nav-tabs-border-color: var(--theme-fg-less-2);
--bs-nav-tabs-link-active-color: var(--theme-fg-less-2);
--bs-nav-tabs-border-color: var(--theme-fg);
--bs-nav-tabs-link-active-color: var(--theme-fg);
--bs-nav-tabs-link-active-bg: transparent;
--bs-nav-tabs-link-active-border-color: transparent;

View File

@@ -7,8 +7,13 @@ export const WIN_BUILD_CONPTY_STABLE = 18309
export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763
export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063
export function getWindows10Build (): number|undefined {
return process.platform === 'win32' && parseFloat(os.release()) >= 10 ? parseInt(os.release().split('.')[2]) : undefined
}
export function isWindowsBuild (build: number): boolean {
return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
const b = getWindows10Build()
return b !== undefined && b >= build
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types

View File

@@ -174,10 +174,10 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
readable-stream@4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.2.0.tgz#a7ef523d3b39e4962b0db1a1af22777b10eeca46"
integrity sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==
readable-stream@4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468"
integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==
dependencies:
abort-controller "^3.0.0"
buffer "^6.0.3"

View File

@@ -99,6 +99,7 @@ export default class ElectronModule {
})
this.registerGlobalHotkey()
this.updateVibrancy()
this.updateWindowControlsColor()
})
config.changed$.subscribe(() => {
@@ -131,6 +132,8 @@ export default class ElectronModule {
config.changed$.subscribe(() => this.updateVibrancy())
config.changed$.subscribe(() => this.updateWindowControlsColor())
config.ready$.toPromise().then(() => {
dockMenu.update()
})
@@ -169,6 +172,15 @@ export default class ElectronModule {
this.hostWindow.setOpacity(this.config.store.appearance.opacity)
}
private updateWindowControlsColor () {
// if windows and not using native frame, WCO does not exist, return.
if (this.hostApp.platform === Platform.Windows && this.config.store.appearance.frame === 'native') {
return
}
this.electron.ipcRenderer.send('window-set-window-controls-color', this.config.store.terminal.colorScheme)
}
}
export { ElectronHostWindow, ElectronHostAppService, ElectronService }

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core'
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker } from 'electron'
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, PowerSaveBlocker, NativeTheme } from 'electron'
import * as remote from '@electron/remote'
export interface MessageBoxResponse {
@@ -20,6 +20,7 @@ export class ElectronService {
process: any
autoUpdater: AutoUpdater
powerSaveBlocker: PowerSaveBlocker
nativeTheme: NativeTheme
TouchBar: typeof TouchBar
BrowserWindow: typeof BrowserWindow
Menu: typeof Menu
@@ -43,5 +44,7 @@ export class ElectronService {
this.BrowserWindow = remote.BrowserWindow
this.Menu = remote.Menu
this.MenuItem = remote.MenuItem
this.MenuItem = remote.MenuItem
this.nativeTheme = remote.nativeTheme
}
}

View File

@@ -10,6 +10,7 @@ import { ElectronService } from '../services/electron.service'
import { ElectronHostWindow } from './hostWindow.service'
import { ShellIntegrationService } from './shellIntegration.service'
import { ElectronHostAppService } from './hostApp.service'
import { PlatformTheme } from '../../../tabby-core/src/api/platform'
const fontManager = require('fontmanager-redux') // eslint-disable-line
/* eslint-disable block-scoped-var */
@@ -40,6 +41,10 @@ export class ElectronPlatformService extends PlatformService {
electron.ipcRenderer.on('host:display-metrics-changed', () => {
this.zone.run(() => this.displayMetricsChanged.next())
})
electron.nativeTheme.on('updated', () => {
this.zone.run(() => this.themeChanged.next(this.getTheme()))
})
}
readClipboard (): string {
@@ -243,6 +248,14 @@ export class ElectronPlatformService extends PlatformService {
},
)).filePaths[0]
}
getTheme (): PlatformTheme {
if (this.electron.nativeTheme.shouldUseDarkColors) {
return 'dark'
} else {
return 'light'
}
}
}
class ElectronFileUpload extends FileUpload {

View File

@@ -509,9 +509,9 @@ which-boxed-primitive@^1.0.2:
is-symbol "^1.0.3"
which@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/which/-/which-3.0.0.tgz#a9efd016db59728758a390d23f1687b6e8f59f8e"
integrity sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==
version "3.0.1"
resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1"
integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==
dependencies:
isexe "^2.0.0"
@@ -525,10 +525,11 @@ winston-transport@^4.5.0:
triple-beam "^1.3.0"
winston@^3.3.3:
version "3.7.2"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1"
integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==
version "3.9.0"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.9.0.tgz#2bbdeb8167a75fac6d9a0c6d002890cd908016c2"
integrity sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ==
dependencies:
"@colors/colors" "1.5.0"
"@dabh/diagnostics" "^2.0.2"
async "^3.2.3"
is-stream "^2.0.0"

View File

@@ -130,7 +130,7 @@ export class AutoOpenTabCLIHandler extends CLIHandler {
}
async handle (event: CLIEvent): Promise<boolean> {
if (!event.secondInstance && this.config.store.terminal.autoOpen) {
if (!event.secondInstance && this.config.store.terminal.autoOpen && !this.config.store.enableWelcomeTab) {
this.app.ready$.subscribe(() => {
this.terminal.openTab()
})

View File

@@ -4,7 +4,7 @@ import { ConfigProvider, Platform } from 'tabby-core'
export class TerminalConfigProvider extends ConfigProvider {
defaults = {
terminal: {
autoOpen: false,
autoOpen: true,
useConPTY: true,
environment: {},
setComSpec: false,

View File

@@ -21,7 +21,7 @@ import { RecoveryProvider } from './recoveryProvider'
import { ShellSettingsTabProvider } from './settings'
import { TerminalConfigProvider } from './config'
import { LocalTerminalHotkeyProvider } from './hotkeys'
import { NewTabContextMenu, SaveAsProfileContextMenu } from './tabContextMenu'
import { NewTabContextMenu } from './tabContextMenu'
import { AutoOpenTabCLIHandler, OpenPathCLIHandler, TerminalCLIHandler } from './cli'
import { LocalProfilesService } from './profiles'
@@ -47,7 +47,6 @@ import { LocalProfilesService } from './profiles'
{ provide: ProfileProvider, useClass: LocalProfilesService, multi: true },
{ provide: TabContextMenuItemProvider, useClass: NewTabContextMenu, multi: true },
{ provide: TabContextMenuItemProvider, useClass: SaveAsProfileContextMenu, multi: true },
{ provide: CLIHandler, useClass: TerminalCLIHandler, multi: true },
{ provide: CLIHandler, useClass: OpenPathCLIHandler, multi: true },

View File

@@ -1,59 +1,9 @@
import { Inject, Injectable, Optional } from '@angular/core'
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, NotificationsService, MenuItemOptions, ProfilesService, PromptModalComponent, TranslateService } from 'tabby-core'
import { ConfigService, BaseTabComponent, TabContextMenuItemProvider, MenuItemOptions, ProfilesService, TranslateService } from 'tabby-core'
import { TerminalTabComponent } from './components/terminalTab.component'
import { TerminalService } from './services/terminal.service'
import { LocalProfile, UACService } from './api'
/** @hidden */
@Injectable()
export class SaveAsProfileContextMenu extends TabContextMenuItemProvider {
constructor (
private config: ConfigService,
private ngbModal: NgbModal,
private notifications: NotificationsService,
private translate: TranslateService,
) {
super()
}
async getItems (tab: BaseTabComponent): Promise<MenuItemOptions[]> {
if (!(tab instanceof TerminalTabComponent)) {
return []
}
const terminalTab = tab
const items: MenuItemOptions[] = [
{
label: this.translate.instant('Save as profile'),
click: async () => {
const modal = this.ngbModal.open(PromptModalComponent)
modal.componentInstance.prompt = this.translate.instant('New profile name')
const name = (await modal.result)?.value
if (!name) {
return
}
const profile = {
options: {
...terminalTab.profile.options,
cwd: await terminalTab.session?.getWorkingDirectory() ?? terminalTab.profile.options.cwd,
},
name,
type: 'local',
}
this.config.store.profiles = [
...this.config.store.profiles,
profile,
]
this.config.save()
this.notifications.info(this.translate.instant('Saved'))
},
},
]
return items
}
}
/** @hidden */
@Injectable()
export class NewTabContextMenu extends TabContextMenuItemProvider {

View File

@@ -3,9 +3,9 @@
"@types/semver@^7.1.0":
version "7.3.9"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc"
integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==
version "7.5.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a"
integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
lru-cache@^6.0.0:
version "6.0.0"
@@ -15,9 +15,9 @@ lru-cache@^6.0.0:
yallist "^4.0.0"
semver@^7.1.1:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
version "7.5.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec"
integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
dependencies:
lru-cache "^6.0.0"

View File

@@ -3,7 +3,7 @@ import { SerialPortStream } from '@serialport/stream'
import { LogService, NotificationsService } from 'tabby-core'
import { Subject, Observable } from 'rxjs'
import { Injector, NgZone } from '@angular/core'
import { BaseSession, BaseTerminalProfile, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor, UTF8SplitterMiddleware } from 'tabby-terminal'
import { BaseSession, BaseTerminalProfile, InputProcessingOptions, InputProcessor, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor, UTF8SplitterMiddleware } from 'tabby-terminal'
import { SerialService } from './services/serial.service'
export interface SerialProfile extends BaseTerminalProfile {
@@ -21,6 +21,7 @@ export interface SerialProfileOptions extends StreamProcessingOptions, LoginScri
xoff?: boolean
xany?: boolean
slowSend?: boolean
input: InputProcessingOptions,
}
export const BAUD_RATES = [
@@ -65,6 +66,7 @@ export class SerialSession extends BaseSession {
}
this.middleware.push(new UTF8SplitterMiddleware())
this.middleware.push(new InputProcessor(profile.options.input))
this.setLoginScriptsOptions(profile.options)
}

View File

@@ -92,4 +92,9 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
ng-template(ngbNavContent)
login-scripts-settings([options]='profile.options')
li(ngbNavItem)
a(ngbNavLink, translate) Input
ng-template(ngbNavContent)
input-processing-settings([options]='profile.options.input')
div([ngbNavOutlet]='nav')

View File

@@ -30,6 +30,7 @@ export class SerialProfilesService extends ProfileProvider<SerialProfile> {
outputNewlines: null,
scripts: [],
slowSend: false,
input: { backspace: 'backspace' },
},
}

View File

@@ -20,7 +20,7 @@
"devDependencies": {
"@types/marked": "^4.0.8",
"marked": "^4.2.12",
"ngx-infinite-scroll": "^15"
"ngx-infinite-scroll": "^16"
},
"peerDependencies": {
"@angular/animations": "^15",

View File

@@ -70,17 +70,47 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
button.btn.btn-link.hover-reveal.ms-1((click)='$event.stopPropagation(); launchProfile(profile)')
i.fas.fa-play
button.btn.btn-link.hover-reveal.ms-1((click)='$event.stopPropagation(); newProfile(profile)')
i.fas.fa-copy
.ms-1.hover-reveal(ngbDropdown, placement='bottom-right top-right auto')
button.btn.btn-link.ms-1(
ngbDropdownToggle,
(click)='$event.stopPropagation()'
)
i.fas.fa-fw.fa-ellipsis-vertical
div(ngbDropdownMenu)
button.dropdown-item(
ngbDropdownItem,
(click)='$event.stopPropagation(); newProfile(profile)'
)
i.fas.fa-fw.fa-copy
span(translate) Duplicate
button.btn.btn-link.hover-reveal.ms-1(
*ngIf='!profile.isBuiltin',
(click)='$event.stopPropagation(); deleteProfile(profile)'
)
i.fas.fa-trash-alt
button.dropdown-item(
ngbDropdownItem,
*ngIf='profile.id && !isProfileBlacklisted(profile)',
(click)='$event.stopPropagation(); blacklistProfile(profile)'
)
i.fas.fa-fw.fa-eye-slash
span(translate) Hide
button.dropdown-item(
ngbDropdownItem,
*ngIf='profile.id && isProfileBlacklisted(profile)',
(click)='$event.stopPropagation(); unblacklistProfile(profile)'
)
i.fas.fa-fw.fa-eye
span(translate) Show
button.dropdown-item(
*ngIf='!profile.isBuiltin',
(click)='$event.stopPropagation(); deleteProfile(profile)'
)
i.fas.fa-fw.fa-trash-alt
span(translate) Delete
.ms-1(class='badge text-bg-{{getTypeColorClass(profile)}}') {{getTypeLabel(profile)}}
.ms-1.text-danger.fas.fa-eye-slash(*ngIf='isProfileBlacklisted(profile)')
li(ngbNavItem)
a(ngbNavLink, translate) Advanced
ng-template(ngbNavContent)
@@ -119,6 +149,20 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
option(ngValue='wt', translation) Windows Terminal
option(ngValue='cygwin', translation) Cygwin
.form-line
.header
.title(translate) Default "Connect to" type
.description(translate) Default connection type used by quick connect feature (ex. SSH, Telnet)
select.form-control(
[(ngModel)]='config.store.defaultQuickConnectProvider',
(ngModelChange)='config.save()',
)
option(
*ngFor='let provider of getQuickConnectProviders()',
[ngValue]='provider.id'
) {{provider.name}}
.form-line.content-box
.header
.title(translate) Default profile settings

View File

@@ -59,7 +59,8 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
async newProfile (base?: PartialProfile<Profile>): Promise<void> {
if (!base) {
const profiles = [...this.templateProfiles, ...this.builtinProfiles, ...this.profiles]
let profiles = [...this.templateProfiles, ...this.builtinProfiles, ...this.profiles]
profiles = profiles.filter(x => !this.isProfileBlacklisted(x))
profiles.sort((a, b) => (a.weight ?? 0) - (b.weight ?? 0))
base = await this.selector.show(
this.translate.instant('Select a base profile to use as a template'),
@@ -163,10 +164,13 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
const profileGroupCollapsed = JSON.parse(window.localStorage.profileGroupCollapsed ?? '{}')
for (const profile of this.profiles) {
let group = this.profileGroups.find(x => x.name === profile.group)
// Group null, undefined and empty together
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
let group = this.profileGroups.find(x => x.name === (profile.group || ''))
if (!group) {
group = {
name: profile.group,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
name: profile.group || '',
profiles: [],
editable: true,
collapsed: profileGroupCollapsed[profile.group ?? ''] ?? false,
@@ -294,4 +298,22 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
this.config.store.profileDefaults[provider.id] = model
await this.config.save()
}
blacklistProfile (profile: PartialProfile<Profile>): void {
this.config.store.profileBlacklist = [...this.config.store.profileBlacklist, profile.id]
this.config.save()
}
unblacklistProfile (profile: PartialProfile<Profile>): void {
this.config.store.profileBlacklist = this.config.store.profileBlacklist.filter(x => x !== profile.id)
this.config.save()
}
isProfileBlacklisted (profile: PartialProfile<Profile>): boolean {
return profile.id && this.config.store.profileBlacklist.includes(profile.id)
}
getQuickConnectProviders (): ProfileProvider<Profile>[] {
return this.profileProviders.filter(x => x.supportsQuickConnect)
}
}

View File

@@ -9,7 +9,7 @@ import { SettingsTabProvider } from '../api'
:host {
display: block;
padding-bottom: 20px;
max-width: 500px;
max-width: 600px;
}
`],
})

View File

@@ -12,10 +12,10 @@ marked@^4.2.12:
resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5"
integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==
ngx-infinite-scroll@^15:
version "15.0.0"
resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-15.0.0.tgz#61bbf89f121a796880a4ad67fe785b406532b220"
integrity sha512-FSP5UphRdl47vW8f/dRnPAU+napzruAKizBX2HS7MH292Ca+va6IU0J5+UQQmO5rXod2RZV7UhJ6+7g4xLfs1A==
ngx-infinite-scroll@^16:
version "16.0.0"
resolved "https://registry.yarnpkg.com/ngx-infinite-scroll/-/ngx-infinite-scroll-16.0.0.tgz#287b48898bc291a0e7c5b3344cf337d7ac82e2dd"
integrity sha512-bzyNYd+wVlUUxcopRVr2DAa81eEc8vITtKVvb+c7R1uy8hWPTlxOEXf3L1qA4FMwTEzCQ9b37TXzlJji3qBy+A==
dependencies:
tslib "^2.3.0"

View File

@@ -22,7 +22,7 @@
"author": "Eugene Pankov",
"license": "MIT",
"devDependencies": {
"@types/node": "16.0.1",
"@types/node": "20.3.1",
"@types/ssh2": "^0.5.46",
"ansi-colors": "^4.1.1",
"sshpk": "Eugeny/node-sshpk#c2b71d1243714d2daf0988f84c3323d180817136",

View File

@@ -1,4 +1,4 @@
import { BaseTerminalProfile, LoginScriptsOptions } from 'tabby-terminal'
import { BaseTerminalProfile, InputProcessingOptions, LoginScriptsOptions } from 'tabby-terminal'
export enum SSHAlgorithmType {
HMAC = 'hmac',
@@ -34,6 +34,7 @@ export interface SSHProfileOptions extends LoginScriptsOptions {
httpProxyHost?: string
httpProxyPort?: number
reuseSession?: boolean
input: InputProcessingOptions,
}
export enum PortForwardType {

View File

@@ -294,4 +294,9 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
ng-template(ngbNavContent)
login-scripts-settings([options]='profile.options', #loginScriptsSettings)
li(ngbNavItem)
a(ngbNavLink, translate) Input
ng-template(ngbNavContent)
input-processing-settings([options]='profile.options.input')
div([ngbNavOutlet]='nav')

View File

@@ -43,6 +43,7 @@ export class SSHProfilesService extends ProfileProvider<SSHProfile> {
httpProxyHost: null,
httpProxyPort: null,
reuseSession: true,
input: { backspace: 'backspace' },
},
}

View File

@@ -3,7 +3,7 @@ import stripAnsi from 'strip-ansi'
import { ClientChannel } from 'ssh2'
import { Injector } from '@angular/core'
import { LogService } from 'tabby-core'
import { BaseSession, UTF8SplitterMiddleware } from 'tabby-terminal'
import { BaseSession, UTF8SplitterMiddleware, InputProcessor } from 'tabby-terminal'
import { SSHSession } from './ssh'
import { SSHProfile } from '../api'
@@ -24,6 +24,7 @@ export class SSHShellSession extends BaseSession {
this.setLoginScriptsOptions(this.profile.options)
this.ssh.serviceMessage$.subscribe(m => this.serviceMessage.next(m))
this.middleware.push(new UTF8SplitterMiddleware())
this.middleware.push(new InputProcessor(profile.options.input))
}
async start (): Promise<void> {

View File

@@ -9,10 +9,10 @@
dependencies:
ipv6 "*"
"@types/node@*", "@types/node@16.0.1":
version "16.0.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.1.tgz#70cedfda26af7a2ca073fdcc9beb2fff4aa693f8"
integrity sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==
"@types/node@*", "@types/node@20.3.1":
version "20.3.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe"
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==
"@types/ssh2-streams@*":
version "0.1.8"
@@ -34,7 +34,7 @@ ansi-colors@^4.1.1:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
ansi-regex@^6.0.0:
ansi-regex@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
@@ -273,11 +273,11 @@ stack-trace@0.0.x:
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
strip-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.0.tgz#1dc49b980c3a4100366617adac59327eefdefcb0"
integrity sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg==
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
dependencies:
ansi-regex "^6.0.0"
ansi-regex "^6.0.1"
tmp-promise@^3.0.3:
version "3.0.3"

View File

@@ -24,4 +24,9 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
ng-template(ngbNavContent)
login-scripts-settings([options]='profile.options')
li(ngbNavItem)
a(ngbNavLink, translate) Input
ng-template(ngbNavContent)
input-processing-settings([options]='profile.options.input')
div([ngbNavOutlet]='nav')

View File

@@ -8,7 +8,7 @@ import { TelnetProfile } from './session'
export class TelnetProfilesService extends ProfileProvider<TelnetProfile> {
id = 'telnet'
name = 'Telnet'
supportsQuickConnect = false
supportsQuickConnect = true
settingsComponent = TelnetProfileSettingsComponent
configDefaults = {
options: {
@@ -19,6 +19,7 @@ export class TelnetProfilesService extends ProfileProvider<TelnetProfile> {
inputNewlines: null,
outputNewlines: 'crlf',
scripts: [],
input: { backspace: 'backspace' },
},
}

View File

@@ -3,7 +3,7 @@ import colors from 'ansi-colors'
import stripAnsi from 'strip-ansi'
import { Injector } from '@angular/core'
import { LogService } from 'tabby-core'
import { BaseSession, BaseTerminalProfile, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor } from 'tabby-terminal'
import { BaseSession, BaseTerminalProfile, InputProcessingOptions, InputProcessor, LoginScriptsOptions, SessionMiddleware, StreamProcessingOptions, TerminalStreamProcessor } from 'tabby-terminal'
import { Subject, Observable } from 'rxjs'
@@ -14,6 +14,7 @@ export interface TelnetProfile extends BaseTerminalProfile {
export interface TelnetProfileOptions extends StreamProcessingOptions, LoginScriptsOptions {
host: string
port?: number
input: InputProcessingOptions,
}
enum TelnetCommands {
@@ -66,6 +67,7 @@ export class TelnetSession extends BaseSession {
private lastWidth = 0
private lastHeight = 0
private requestedOptions = new Set<number>()
private telnetRemoteEcho = false
constructor (
injector: Injector,
@@ -74,6 +76,7 @@ export class TelnetSession extends BaseSession {
super(injector.get(LogService).create(`telnet-${profile.options.host}-${profile.options.port}`))
this.streamProcessor = new TerminalStreamProcessor(profile.options)
this.middleware.push(this.streamProcessor)
this.middleware.push(new InputProcessor(profile.options.input))
this.setLoginScriptsOptions(profile.options)
}
@@ -159,7 +162,7 @@ export class TelnetSession extends BaseSession {
data = data.slice(3)
this.logger.debug('<', commandName || command, optionName || option)
if (command === TelnetCommands.WILL || command === TelnetCommands.WONT) {
if (command === TelnetCommands.WILL || command === TelnetCommands.WONT || command === TelnetCommands.DONT) {
if (this.requestedOptions.has(option)) {
this.requestedOptions.delete(option)
continue
@@ -172,6 +175,11 @@ export class TelnetSession extends BaseSession {
TelnetOptions.ECHO,
].includes(option)) {
this.emitTelnet(TelnetCommands.DO, option)
if (option === TelnetOptions.ECHO && this.streamProcessor.forceEcho) {
this.telnetRemoteEcho = true
this.streamProcessor.forceEcho = false
this.requestOption(TelnetCommands.WONT, option)
}
} else {
this.logger.debug('(!) Unhandled option')
this.emitTelnet(TelnetCommands.DONT, option)
@@ -182,8 +190,13 @@ export class TelnetSession extends BaseSession {
this.emitTelnet(TelnetCommands.WILL, option)
this.emitSize()
} else if (option === TelnetOptions.ECHO) {
this.streamProcessor.forceEcho = true
this.emitTelnet(TelnetCommands.WILL, option)
if (this.telnetRemoteEcho) {
this.streamProcessor.forceEcho = false
this.emitTelnet(TelnetCommands.WONT, option)
} else {
this.streamProcessor.forceEcho = true
this.emitTelnet(TelnetCommands.WILL, option)
}
} else if (option === TelnetOptions.TERMINAL_TYPE) {
this.emitTelnet(TelnetCommands.WILL, option)
} else {
@@ -197,7 +210,16 @@ export class TelnetSession extends BaseSession {
this.emitTelnet(TelnetCommands.WONT, option)
} else {
this.logger.debug('(!) Unhandled option')
this.emitTelnet(TelnetCommands.WILL, option)
this.emitTelnet(TelnetCommands.WONT, option)
}
}
if (command === TelnetCommands.WONT) {
if (option === TelnetOptions.ECHO) {
this.telnetRemoteEcho = false
this.emitTelnet(TelnetCommands.DONT, option)
} else {
this.logger.debug('(!) Unhandled option')
this.emitTelnet(TelnetCommands.DONT, option)
}
}
if (command === TelnetCommands.SUBOPTION) {

View File

@@ -26,17 +26,17 @@
"dataurl": "0.1.0",
"hexer": "^1.5.0",
"ngx-colors": "^3.4.0",
"patch-package": "^6.5.0",
"patch-package": "^8.0.0",
"runes": "^0.4.2",
"xterm": "^5.1.0",
"xterm-addon-canvas": "^0.4.0-beta.9",
"xterm": "^5.2.0",
"xterm-addon-canvas": "^0.4.0",
"xterm-addon-fit": "^0.7.0",
"xterm-addon-image": "^0.3.1",
"xterm-addon-image": "^0.4.1",
"xterm-addon-ligatures": "^0.6.0",
"xterm-addon-search": "^0.11.0",
"xterm-addon-serialize": "^0.9.0",
"xterm-addon-search": "^0.12.0",
"xterm-addon-serialize": "^0.10.0",
"xterm-addon-unicode11": "^0.5.0",
"xterm-addon-webgl": "^0.14.0",
"xterm-addon-webgl": "^0.15.0",
"zmodem.js": "^0.1.9"
},
"peerDependencies": {

View File

@@ -1,13 +0,0 @@
diff --git a/node_modules/xterm/src/common/CircularList.ts b/node_modules/xterm/src/common/CircularList.ts
index 8ab80d5..622a1ef 100644
--- a/node_modules/xterm/src/common/CircularList.ts
+++ b/node_modules/xterm/src/common/CircularList.ts
@@ -4,7 +4,7 @@
*/
import { ICircularList } from 'common/Types';
-import { EventEmitter, IEvent } from 'common/EventEmitter';
+import { EventEmitter } from 'common/EventEmitter';
import { Disposable } from 'common/Lifecycle';
export interface IInsertEvent {

View File

@@ -331,6 +331,10 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
this.frontend?.focus()
})
this.subscribeUntilDestroyed(this.platform.themeChanged$, () => {
this.configure()
})
const cls: new (..._) => Frontend = {
xterm: XTermFrontend,
'xterm-webgl': XTermWebGLFrontend,
@@ -772,10 +776,7 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
})
this.attachSessionHandler(this.session.closed$, () => {
const behavior = this.profile.behaviorOnSessionEnd
if (destroyOnSessionClose || behavior === 'close' || behavior === 'auto' && this.isSessionExplicitlyTerminated()) {
this.destroy()
}
this.onSessionClosed(destroyOnSessionClose)
})
this.attachSessionHandler(this.session.destroyed$, () => {
@@ -788,6 +789,23 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
})
}
/**
* Method called when session is closed.
*/
protected onSessionClosed (destroyOnSessionClose = false): void {
if (destroyOnSessionClose || this.shouldTabBeDestroyedOnSessionClose()) {
this.destroy()
}
}
/**
* Return true if tab should be destroyed on session closed.
*/
protected shouldTabBeDestroyedOnSessionClose (): boolean {
const behavior = this.profile.behaviorOnSessionEnd
return behavior === 'close' || behavior === 'auto' && this.isSessionExplicitlyTerminated()
}
/**
* Method called when session is destroyed. Set the session to null
*/

View File

@@ -16,13 +16,25 @@ import { GetRecoveryTokenOptions, RecoveryToken } from 'tabby-core'
export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProfile> extends BaseTerminalTabComponent<P> {
protected reconnectOffered = false
protected isDisconnectedByHand = false
constructor (protected injector: Injector) {
super(injector)
this.subscribeUntilDestroyed(this.hotkeys.hotkey$, hotkey => {
if (this.hasFocus && hotkey === 'reconnect-tab') {
this.reconnect()
if (!this.hasFocus) {
return
}
switch (hotkey) {
case 'reconnect-tab':
this.reconnect()
this.notifications.notice(this.translate.instant('Reconnect'))
break
case 'disconnect-tab':
this.disconnect()
this.notifications.notice(this.translate.instant('Disconnect'))
break
}
})
}
@@ -44,6 +56,7 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
*/
async initializeSession (): Promise<void> {
this.reconnectOffered = false
this.isDisconnectedByHand = false
}
/**
@@ -53,9 +66,9 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
super.onSessionDestroyed()
if (this.frontend) {
if (this.profile.behaviorOnSessionEnd === 'reconnect') {
if (this.profile.behaviorOnSessionEnd === 'reconnect' && !this.isDisconnectedByHand) {
this.reconnect()
} else if (this.profile.behaviorOnSessionEnd === 'keep' || this.profile.behaviorOnSessionEnd === 'auto' && !this.isSessionExplicitlyTerminated()) {
} else if (this.profile.behaviorOnSessionEnd === 'keep' || !this.shouldTabBeDestroyedOnSessionClose()) {
this.offerReconnection()
}
}
@@ -77,6 +90,16 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
}
}
/**
* Return true if tab should be destroyed on session closed.
*/
protected shouldTabBeDestroyedOnSessionClose (): boolean {
if (this.isDisconnectedByHand) {
return false
}
return super.shouldTabBeDestroyedOnSessionClose()
}
async getRecoveryToken (options?: GetRecoveryTokenOptions): Promise<RecoveryToken> {
return {
type: `app:${this.profile.type}-tab`,
@@ -85,6 +108,11 @@ export abstract class ConnectableTerminalTabComponent<P extends BaseTerminalProf
}
}
async disconnect (): Promise<void> {
this.isDisconnectedByHand = true
await this.session?.destroy()
}
async reconnect (): Promise<void> {
this.session?.destroy()
await this.initializeSession()

View File

@@ -27,9 +27,41 @@ export class DefaultColorSchemes extends TerminalColorSchemeProvider {
'#b7fff9',
'#ffffff',
],
selection: undefined,
cursorAccent: undefined,
}
static defaultLightColorScheme: TerminalColorScheme = {
name: 'Tabby Default Light',
foreground: '#4d4d4c',
background: '#ffffff',
cursor: '#4d4d4c',
colors: [
'#000000',
'#c82829',
'#718c00',
'#eab700',
'#4271ae',
'#8959a8',
'#3e999f',
'#ffffff',
'#000000',
'#c82829',
'#718c00',
'#eab700',
'#4271ae',
'#8959a8',
'#3e999f',
'#ffffff',
],
selection: undefined,
cursorAccent: undefined,
}
async getSchemes (): Promise<TerminalColorScheme[]> {
return [DefaultColorSchemes.defaultColorScheme]
return [
DefaultColorSchemes.defaultColorScheme,
DefaultColorSchemes.defaultLightColorScheme,
]
}
}

View File

@@ -0,0 +1,116 @@
.head
.d-flex.align-items-center(*ngIf='!editing')
strong.me-2(translate) Current color scheme
span {{getCurrentSchemeName()}}
.me-auto
.btn-toolbar
button.btn.btn-secondary((click)='editScheme()')
i.fas.fa-pen
span(translate) Edit
.me-1
button.btn.btn-danger(
(click)='deleteScheme(config.store.terminal[this.configKey])',
*ngIf='currentCustomScheme'
)
i.fas.fa-trash
span(translate) Delete
div(*ngIf='editing')
.mb-3
label(translate) Name
input.form-control(type='text', [(ngModel)]='config.store.terminal[this.configKey].name')
.mb-3
color-picker(
[(model)]='config.store.terminal[this.configKey].foreground',
(modelChange)='config.save()',
title='FG',
hint='Foreground'
)
color-picker(
[(model)]='config.store.terminal[this.configKey].background',
(modelChange)='config.save()',
title='BG',
hint='Background'
)
color-picker(
[(model)]='config.store.terminal[this.configKey].cursor',
(modelChange)='config.save()',
title='CU',
hint='Cursor color'
)
color-picker(
[(model)]='config.store.terminal[this.configKey].cursorAccent',
(modelChange)='config.save()',
title='CA',
hint='Block cursor foreground'
)
color-picker(
[(model)]='config.store.terminal[this.configKey].selection',
(modelChange)='config.save()',
title='SB',
hint='Selection background'
)
color-picker(
[(model)]='config.store.terminal[this.configKey].selectionForeground',
(modelChange)='config.save()',
title='SF',
hint='Selection foreground'
)
color-picker(
*ngFor='let _ of config.store.terminal[this.configKey].colors; let idx = index; trackBy: colorsTrackBy',
[(model)]='config.store.terminal[this.configKey].colors[idx]',
(modelChange)='config.save()',
[title]='idx.toString()',
hint='ANSI color {{idx}}'
)
color-scheme-preview([scheme]='config.store.terminal[this.configKey]')
.btn-toolbar.d-flex.mt-2(*ngIf='editing')
.me-auto
button.btn.btn-primary((click)='saveScheme()')
i.fas.fa-check
span(translate) Save
.me-1
button.btn.btn-secondary((click)='cancelEditing()')
i.fas.fa-times
span(translate) Cancel
hr.mt-3.mb-4
.input-group.mb-3
.input-group-text
i.fas.fa-fw.fa-search
input.form-control(type='search', [placeholder]='"Search color schemes"|translate', [(ngModel)]='filter')
.body
.list-group.list-group-light.mb-3
ng-container(*ngFor='let scheme of allColorSchemes')
.list-group-item.list-group-item-action(
[hidden]='filter && !scheme.name.toLowerCase().includes(filter.toLowerCase())',
(click)='selectScheme(scheme)',
[class.active]='(currentCustomScheme || currentStockScheme) === scheme'
)
.d-flex.w-100.align-items-center
i.fas.fa-fw([class.fa-check]='(currentCustomScheme || currentStockScheme) === scheme')
.ms-2
.me-auto
span {{scheme.name}}
.badge.text-bg-info.ms-2(*ngIf='customColorSchemes.includes(scheme)', translate) Custom
div
.d-flex
.swatch(
*ngFor='let index of colorIndexes.slice(0, 8)',
[style.background-color]='scheme.colors[index]'
)
.d-flex
.swatch(
*ngFor='let index of colorIndexes.slice(8, 16)',
[style.background-color]='scheme.colors[index]'
)
color-scheme-preview([scheme]='scheme')

View File

@@ -0,0 +1,117 @@
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import deepEqual from 'deep-equal'
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
import { Component, Inject, Input, ChangeDetectionStrategy, ChangeDetectorRef, HostBinding } from '@angular/core'
import { ConfigService, PlatformService, TranslateService } from 'tabby-core'
import { TerminalColorSchemeProvider } from '../api/colorSchemeProvider'
import { TerminalColorScheme } from '../api/interfaces'
_('Search color schemes')
/** @hidden */
@Component({
selector: 'color-scheme-settings-for-mode',
templateUrl: './colorSchemeSettingsForMode.component.pug',
styleUrls: ['./colorSchemeSettingsForMode.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ColorSchemeSettingsForModeComponent {
@Input() configKey: 'colorScheme'|'lightColorScheme'
@Input() stockColorSchemes: TerminalColorScheme[] = []
@Input() customColorSchemes: TerminalColorScheme[] = []
@Input() allColorSchemes: TerminalColorScheme[] = []
@Input() filter = ''
@Input() editing = false
colorIndexes = [...new Array(16).keys()]
currentStockScheme: TerminalColorScheme|null = null
currentCustomScheme: TerminalColorScheme|null = null
@HostBinding('class.content-box') true
constructor (
@Inject(TerminalColorSchemeProvider) private colorSchemeProviders: TerminalColorSchemeProvider[],
private changeDetector: ChangeDetectorRef,
private platform: PlatformService,
private translate: TranslateService,
public config: ConfigService,
) { }
async ngOnInit () {
this.stockColorSchemes = (await Promise.all(this.config.enabledServices(this.colorSchemeProviders).map(x => x.getSchemes()))).reduce((a, b) => a.concat(b))
this.stockColorSchemes.sort((a, b) => a.name.localeCompare(b.name))
this.customColorSchemes = this.config.store.terminal.customColorSchemes
this.changeDetector.markForCheck()
this.update()
}
ngOnChanges () {
this.update()
}
selectScheme (scheme: TerminalColorScheme) {
this.config.store.terminal[this.configKey] = { ...scheme }
this.config.save()
this.cancelEditing()
this.update()
}
update () {
this.currentCustomScheme = this.findMatchingScheme(this.config.store.terminal[this.configKey], this.customColorSchemes)
this.currentStockScheme = this.findMatchingScheme(this.config.store.terminal[this.configKey], this.stockColorSchemes)
this.allColorSchemes = this.customColorSchemes.concat(this.stockColorSchemes)
this.changeDetector.markForCheck()
}
editScheme () {
this.editing = true
}
saveScheme () {
this.customColorSchemes = this.customColorSchemes.filter(x => x.name !== this.config.store.terminal[this.configKey].name)
this.customColorSchemes.push(this.config.store.terminal[this.configKey])
this.config.store.terminal.customColorSchemes = this.customColorSchemes
this.config.save()
this.cancelEditing()
this.update()
}
cancelEditing () {
this.editing = false
}
async deleteScheme (scheme: TerminalColorScheme) {
if ((await this.platform.showMessageBox(
{
type: 'warning',
message: this.translate.instant('Delete "{name}"?', scheme),
buttons: [
this.translate.instant('Delete'),
this.translate.instant('Keep'),
],
defaultId: 1,
cancelId: 1,
},
)).response === 0) {
this.customColorSchemes = this.customColorSchemes.filter(x => x.name !== scheme.name)
this.config.store.terminal.customColorSchemes = this.customColorSchemes
this.config.save()
this.update()
}
}
getCurrentSchemeName () {
return (this.currentCustomScheme ?? this.currentStockScheme)?.name ?? 'Custom'
}
findMatchingScheme (scheme: TerminalColorScheme, schemes: TerminalColorScheme[]) {
return schemes.find(x => deepEqual(x, scheme)) ?? null
}
colorsTrackBy (index) {
return index
}
}

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