Compare commits

...

69 Commits

Author SHA1 Message Date
Eugene Pankov
cb06a8e493 handle legacy plugins in plugin loader 2021-07-02 00:09:32 +02:00
Eugene Pankov
4569126322 provide legacy requires for terminus-* modules 2021-07-01 23:57:21 +02:00
Eugene Pankov
db8c534d0a bumped plugin versions 2021-07-01 22:56:23 +02:00
Eugene Pankov
4ee4a7e5fa new ko-fi button 2021-07-01 22:25:08 +02:00
Eugene Pankov
bf6c75de2b title pic update 2021-07-01 22:15:58 +02:00
Eugene Pankov
ced8557517 new repo name 2021-07-01 22:10:12 +02:00
Eugene Pankov
093f79df4e Merge branch 'master' of github.com:Eugeny/terminus 2021-07-01 21:57:40 +02:00
Eugene Pankov
5a3a39e795 Update pluginManager.service.ts 2021-07-01 21:57:28 +02:00
Eugene Pankov
0cf4945175 back to stock node-pty 2021-06-30 18:32:18 +02:00
Eugene Pankov
43cd3318da project rename 2021-06-29 23:57:04 +02:00
Eugene
1c43eb94f6 Merge pull request #4078 from Eugeny/dependabot/npm_and_yarn/webpack-5.41.0
Bump webpack from 5.40.0 to 5.41.0
2021-06-29 09:04:09 +02:00
Eugene
972df1ac11 Merge pull request #4071 from Eugeny/dependabot/npm_and_yarn/types/node-15.12.5
Bump @types/node from 15.6.1 to 15.12.5
2021-06-29 09:03:49 +02:00
Eugene
79b15658b9 Merge pull request #4083 from Eugeny/all-contributors/add-bdr99 2021-06-29 09:03:43 +02:00
Eugene
ef65859c9a Merge pull request #4069 from Eugeny/dependabot/npm_and_yarn/app/types/node-15.12.5
Bump @types/node from 15.12.1 to 15.12.5 in /app
2021-06-29 09:03:35 +02:00
allcontributors[bot]
e932b07fc1 docs: update .all-contributorsrc [skip ci] 2021-06-29 07:03:04 +00:00
allcontributors[bot]
44f69d66e2 docs: update README.md [skip ci] 2021-06-29 07:03:03 +00:00
Eugene
de9d1f2aae Merge pull request #4077 from bdr99/patch-1 2021-06-29 09:02:50 +02:00
dependabot[bot]
ce584fa9b9 Bump webpack from 5.40.0 to 5.41.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.40.0 to 5.41.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.40.0...v5.41.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-29 04:04:26 +00:00
Brandon Rothweiler
2f03c7cea7 Update "maximized" icon to be more consistent with standard Windows UI
Thanks for fixing my issue https://github.com/Eugeny/terminus/issues/2712! I noticed that the icon has a horizontal bar which makes it look quite different from most Windows applications. This PR removes the bar to make the icon match most other Windows applications.
2021-06-28 22:40:15 -04:00
Eugene Pankov
c61be3d52b workflow fixes 2021-06-29 00:42:56 +02:00
Eugene
1d6e0ac2e7 Merge pull request #4070 from Eugeny/dependabot/npm_and_yarn/typedoc-0.21.2
Bump typedoc from 0.20.36 to 0.21.2
2021-06-28 22:45:45 +02:00
Eugene
758faf3189 Merge pull request #3997 from Eugeny/dependabot/npm_and_yarn/sentry/electron-2.5.0
Bump @sentry/electron from 2.4.1 to 2.5.0
2021-06-28 22:45:30 +02:00
Eugene Pankov
0452f42c41 added hotkeys to loop through panes - fixes #3417 2021-06-28 22:41:08 +02:00
Eugene Pankov
6197215500 support IPv6 in SSH quick connect field - fixes #3957 2021-06-28 22:30:55 +02:00
Eugene Pankov
6d0293975d properly broadcast ctrl-c - fixes #3961 2021-06-28 22:21:52 +02:00
Eugene Pankov
30a8a8d287 added SubscriptionContainer.isEmpty 2021-06-28 22:21:35 +02:00
Eugene Pankov
1198ede0fd prevent "history restored" popping up in ssh splits 2021-06-28 22:21:22 +02:00
Eugene Pankov
90affc3efb Update transfersMenu.component.ts 2021-06-28 22:10:46 +02:00
Eugene Pankov
3b25645154 sftp: added size and speed display 2021-06-28 22:08:40 +02:00
Eugene Pankov
30265699d4 fixed window-restore icon - fixes #2712 2021-06-28 21:50:16 +02:00
Eugene Pankov
63355d1a74 added an option to reuse private keys stored in the vault 2021-06-28 21:32:12 +02:00
Eugene Pankov
52c37f8988 added a vscode launch configuration 2021-06-27 19:29:43 +02:00
Eugene Pankov
0ed6575213 more Linux deps 2021-06-27 19:16:32 +02:00
Eugene Pankov
406baafd8d pass the web connector via an angular provider 2021-06-27 19:08:37 +02:00
Eugene Pankov
45e6844931 added info on Linux build deps 2021-06-27 19:08:18 +02:00
Eugene Pankov
4db4d49187 fixed doubled event handling - fixes #4054 2021-06-27 12:56:12 +02:00
Eugene Pankov
8a1a3ce002 fixed shell integration installed - fixes #4039 2021-06-27 11:27:45 +02:00
dependabot[bot]
987a02b2fe Bump @types/node from 15.6.1 to 15.12.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 15.6.1 to 15.12.5.
- [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-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-27 09:17:27 +00:00
dependabot[bot]
0267b454d2 Bump @sentry/electron from 2.4.1 to 2.5.0
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/2.4.1...2.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-27 09:16:50 +00:00
dependabot[bot]
310e956ce8 Bump typedoc from 0.20.36 to 0.21.2
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.20.36 to 0.21.2.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.20.36...v0.21.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-27 09:15:58 +00:00
Eugene Pankov
77a2113411 fixed official plugins not being marked as such 2021-06-27 11:04:56 +02:00
Eugene Pankov
fce8565835 allow forcing ssh agent type 2021-06-27 10:46:59 +02:00
Eugene Pankov
5a894ebfd3 bumped sass-loader 2021-06-27 10:45:28 +02:00
Eugene
353b9b5ec8 Merge pull request #4067 from Eugeny/all-contributors/add-ydcool 2021-06-27 10:30:31 +02:00
dependabot[bot]
1fc73dca0b Bump @types/node from 15.12.1 to 15.12.5 in /app
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 15.12.1 to 15.12.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-27 08:21:26 +00:00
Eugene
009c2e9478 Merge pull request #4017 from Eugeny/dependabot/npm_and_yarn/app/serialport-9.2.0
Bump serialport from 9.1.0 to 9.2.0 in /app
2021-06-27 10:20:16 +02:00
Eugene
8ee2bff9a8 Merge pull request #4027 from Eugeny/dependabot/npm_and_yarn/typescript-eslint/parser-4.28.0
Bump @typescript-eslint/parser from 4.26.0 to 4.28.0
2021-06-27 10:20:02 +02:00
Eugene
395bcbc2cb Merge pull request #4028 from Eugeny/dependabot/npm_and_yarn/webpack-5.40.0
Bump webpack from 5.38.1 to 5.40.0
2021-06-27 10:19:49 +02:00
Eugene
9ef870e793 Merge pull request #4050 from Eugeny/dependabot/npm_and_yarn/node-sass-6.0.1
Bump node-sass from 6.0.0 to 6.0.1
2021-06-27 10:18:49 +02:00
Eugene
51eb616750 Merge pull request #3985 from Eugeny/dependabot/npm_and_yarn/tslib-2.3.0 2021-06-27 10:18:25 +02:00
Eugene
33c32d8c28 Merge pull request #4048 from Eugeny/dependabot/npm_and_yarn/app/fontmanager-redux-1.1.0 2021-06-27 10:17:26 +02:00
Eugene
e29e39b5e4 Merge pull request #4051 from Eugeny/dependabot/npm_and_yarn/style-loader-3.0.0
Bump style-loader from 2.0.0 to 3.0.0
2021-06-27 10:17:14 +02:00
Eugene Pankov
effe66f5b7 only sign builds on master branch 2021-06-27 10:16:53 +02:00
Eugene
a907978825 Merge pull request #4061 from ydcool/trim-ssh-host
fix #4060: trim spaces for ssh host
2021-06-27 10:13:30 +02:00
allcontributors[bot]
f42d4e0eb4 docs: update .all-contributorsrc [skip ci] 2021-06-27 08:13:28 +00:00
allcontributors[bot]
f0628e68d5 docs: update README.md [skip ci] 2021-06-27 08:13:27 +00:00
Dominic Yin
b3b6ca6f43 fix #4060: trim spaces for ssh host 2021-06-26 13:26:45 +08:00
Eugene Pankov
722f91da0c moved the last polyfills into we 2021-06-25 21:55:34 +02:00
Eugene Pankov
655079741a exclude ssh native deps from build 2021-06-25 19:42:07 +02:00
Eugene Pankov
307f598be0 compile ssh2 into the bundle again 2021-06-25 19:08:45 +02:00
Eugene Pankov
3aeac5610b potentially fix agent auth bug 2021-06-25 17:27:17 +02:00
Eugene Pankov
d1b10fefae only use bracketed paste when advertised by the shell - fixes #4042 2021-06-25 16:35:14 +02:00
dependabot[bot]
f36c7e5e3f Bump style-loader from 2.0.0 to 3.0.0
Bumps [style-loader](https://github.com/webpack-contrib/style-loader) from 2.0.0 to 3.0.0.
- [Release notes](https://github.com/webpack-contrib/style-loader/releases)
- [Changelog](https://github.com/webpack-contrib/style-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/style-loader/compare/v2.0.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-25 04:05:51 +00:00
dependabot[bot]
0839b51837 Bump node-sass from 6.0.0 to 6.0.1
Bumps [node-sass](https://github.com/sass/node-sass) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v6.0.0...v6.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-25 04:05:18 +00:00
dependabot[bot]
a9c36e695b Bump fontmanager-redux from 1.0.0 to 1.1.0 in /app
Bumps [fontmanager-redux](https://github.com/Eugeny/fontmanager-redux) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/Eugeny/fontmanager-redux/releases)
- [Commits](https://github.com/Eugeny/fontmanager-redux/compare/v1.0.0...v1.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-25 04:03:58 +00:00
dependabot[bot]
cdf8bb34fa Bump tslib from 2.2.0 to 2.3.0
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.2.0...2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-23 10:51:17 +00:00
dependabot[bot]
acc4eddf8f Bump webpack from 5.38.1 to 5.40.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.38.1 to 5.40.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.38.1...v5.40.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-22 04:04:23 +00:00
dependabot[bot]
93f58bb7aa Bump @typescript-eslint/parser from 4.26.0 to 4.28.0
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 4.26.0 to 4.28.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v4.28.0/packages/parser)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-22 04:03:58 +00:00
dependabot[bot]
8cc934ad5f Bump serialport from 9.1.0 to 9.2.0 in /app
Bumps [serialport](https://github.com/serialport/node-serialport) from 9.1.0 to 9.2.0.
- [Release notes](https://github.com/serialport/node-serialport/releases)
- [Changelog](https://github.com/serialport/node-serialport/blob/master/CHANGELOG.md)
- [Commits](https://github.com/serialport/node-serialport/compare/@serialport/bindings@9.1.0...@serialport/bindings@9.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-21 04:03:08 +00:00
621 changed files with 1650 additions and 1099 deletions

View File

@@ -388,10 +388,28 @@
"contributions": [
"design"
]
},
{
"login": "ydcool",
"name": "Dominic Yin",
"avatar_url": "https://avatars.githubusercontent.com/u/5668295?v=4",
"profile": "https://github.com/ydcool",
"contributions": [
"code"
]
},
{
"login": "bdr99",
"name": "Brandon Rothweiler",
"avatar_url": "https://avatars.githubusercontent.com/u/2292715?v=4",
"profile": "https://github.com/bdr99",
"contributions": [
"design"
]
}
],
"contributorsPerLine": 7,
"projectName": "terminus",
"projectName": "tabby",
"projectOwner": "Eugeny",
"repoType": "github",
"repoHost": "https://github.com",

2
.github/FUNDING.yml vendored
View File

@@ -1,3 +1,3 @@
github: eugeny
open_collective: terminus
open_collective: tabby
ko_fi: eugeny

View File

@@ -13,55 +13,55 @@ updates:
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-core"
directory: "/tabby-core"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-settings"
directory: "/tabby-settings"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-terminal"
directory: "/tabby-terminal"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-local"
directory: "/tabby-local"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-community-color-schemes"
directory: "/tabby-community-color-schemes"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-electron"
directory: "/tabby-electron"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-web"
directory: "/tabby-web"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-plugin-manager"
directory: "/tabby-plugin-manager"
schedule:
interval: daily
time: "04:00"
open-pull-requests-limit: 20
- package-ecosystem: npm
directory: "/terminus-ssh"
directory: "/tabby-ssh"
schedule:
interval: daily
time: "04:00"

View File

@@ -44,7 +44,7 @@ jobs:
# DEBUG: electron-builder,electron-builder:*
- name: Build web resources
run: zsh -c 'tar czf terminus-web.tar.gz (terminus-*|web)/dist'
run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist'
- name: Upload symbols
run: |
@@ -68,7 +68,7 @@ jobs:
mkdir artifact-tar.gz
mv dist/*.tar.gz artifact-tar.gz/ || true
mkdir artifact-web
mv terminus-web.tar.gz artifact-web/ || true
mv tabby-web.tar.gz artifact-web/ || true
- uses: actions/upload-artifact@master
name: Upload DEB

View File

@@ -52,7 +52,7 @@ jobs:
- name: Build and sign packages
run: scripts/build-macos.js
if: github.repository == 'Eugeny/terminus' && github.event_name == 'push'
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
ARCH: ${{matrix.arch}}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -65,7 +65,7 @@ jobs:
- name: Build packages without signing
run: scripts/build-macos.js
if: github.repository != 'Eugeny/terminus' || github.event_name != 'push'
if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
env:
ARCH: ${{matrix.arch}}
# DEBUG: electron-builder,electron-builder:*

View File

@@ -26,7 +26,7 @@ jobs:
- name: Build and sign packages
run: node scripts/build-windows.js
if: github.repository == 'Eugeny/terminus' && github.event_name == 'push'
if: github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags'))
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WIN_CSC_LINK: ${{ secrets.WIN_CSC_LINK }}
@@ -35,7 +35,7 @@ jobs:
- name: Build packages without signing
run: node scripts/build-windows.js
if: github.repository != 'Eugeny/terminus' || github.event_name != 'push'
if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))"
- name: Upload symbols
run: |

2
.gitignore vendored
View File

@@ -32,5 +32,5 @@ docs/api
sentry.properties
sentry-symbols.js
terminus-ssh/util/pagent.exe
tabby-ssh/util/pagent.exe
*.psd

View File

@@ -1,36 +0,0 @@
language: node_js
node_js: 15
stages:
- Build
- name: Docs
if: branch = master
jobs:
include:
- stage: 'Docs'
os: linux
if: branch = master
script:
- '[ -z "${encrypted_4e2fb4889ef8_iv}" ] && exit 0 || true'
- set -e
- openssl aes-256-cbc -K $encrypted_4e2fb4889ef8_key -iv $encrypted_4e2fb4889ef8_iv -in .travis.ssh.key.enc -out .travis.ssh.key -d
- eval "$(ssh-agent -s)"
- chmod 600 .travis.ssh.key
- ssh-add .travis.ssh.key
- yarn
- yarn run docs
- rsync -e "ssh -o StrictHostKeyChecking=no" -arv docs/api/ root@ajenti.org:/srv/terminus-docs/
dist: xenial
sudo: false
addons:
apt:
packages:
- rpm
- yarn
- libsecret-1-dev
sources:
- sourceline: 'deb https://dl.yarnpkg.com/debian/ stable main'
key_url: 'https://dl.yarnpkg.com/debian/pubkey.gpg'

39
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,39 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Electron: Main",
"protocol": "inspector",
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
"env": {
"TABBY_DEV": "1"
},
"runtimeArgs": [
"--remote-debugging-port=9223",
"app"
],
"windows": {
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd"
}
},
{
"name": "Electron: Renderer",
"type": "pwa-chrome",
"request": "attach",
"port": 9223,
"webRoot": "${workspaceFolder}",
"timeout": 30000
}
],
"compounds": [
{
"name": "Electron: All",
"configurations": [
"Electron: Main",
"Electron: Renderer"
]
}
]
}

View File

@@ -1,18 +1,27 @@
# Some background
Terminus is an Electron app, with the frontend written in Typescript with the help of Angular framework. It's built using Webpack.
Tabby is an Electron app, with the frontend written in Typescript with the help of Angular framework. It's built using Webpack.
# Getting started
First of all, clone this repository. You'll also need a recent version of Node installed.
First of all, clone this repository. You'll also need Node.js 14 or newer and Yarn.
First, install the dependencies:
```
# macOS/Linux:
# macOS:
yarn
./scripts/build-native.js
```
```
# Linux (Debian here as an example)
sudo apt install libfontconfig-dev libsecret-1-dev bsdtar libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1
yarn
./scripts/build-native.js
```
```
# Windows:
npm -g install windows-build-tools
yarn
@@ -25,34 +34,50 @@ Now, check if your build is working:
yarn run build
```
Start Terminus with
Start Tabby with
```
yarn start
```
# Building an installer
To build an installer, first complete a "normal" build as described above and then run:
```
node scripts/prepackage-plugins.js
node scripts/build-windows.js
# or
node scripts/build-linux.js
# or
node scripts/build-macos.js
```
The artifacts will be produced in the `dist` folder.
# Project layout
```
terminus
tabby
├─ app # Electron app, just the bare essentials
| ├─ src # Electron renderer code
| └─ main.js # Electron main entry point
├─ build
├─ clink # Clink distributive, for Windows
├─ scripts # Maintenance scripts
├─ terminus-community-color-schemes # Plugin that provides color schemes
├─ terminus-core # Plugin that provides base UI and tab management
├─ terminus-electron # Plugin that provides Electron-specific functions
─ terminus-local # Plugin that provides local shells and profiles
├─ terminus-plugin-manager # Plugin that installs other plugins
├─ terminus-settings # Plugin that provides the settings tab
─ terminus-terminal # Plugin that provides terminal tabs
─ terminus-web # Plugin that provides web-specific functions
├─ tabby-community-color-schemes # Plugin that provides color schemes
├─ tabby-core # Plugin that provides base UI and tab management
├─ tabby-electron # Plugin that provides Electron-specific functions
─ tabby-local # Plugin that provides local shells and profiles
├─ tabby-plugin-manager # Plugin that installs other plugins
├─ tabby-settings # Plugin that provides the settings tab
─ tabby-terminal # Plugin that provides terminal tabs
─ tabby-web # Plugin that provides web-specific functions
```
# Plugin layout
```
terminus-pluginname
tabby-pluginname
├─ src # Typescript code
| ├─ components # Angular components
| | ├─ foo.component.ts # Code
@@ -69,11 +94,11 @@ terminus-pluginname
# Plugins
The app will load all plugins from the source checkout in the dev mode, from the user's plugins directory at all times (click `Open Plugins Directory` under `Settings` > `Plugins`) and from the directory specified by the `TERMINUS_PLUGINS` environment var.
The app will load all plugins from the source checkout in the dev mode, from the user's plugins directory at all times (click `Open Plugins Directory` under `Settings` > `Plugins`) and from the directory specified by the `TABBY_PLUGINS` environment var.
Only modules whose `package.json` file contains a `terminus-plugin` keyword will be loaded.
Only modules whose `package.json` file contains a `tabby-plugin` keyword will be loaded.
If you're currently in your plugin's directory, start Terminus as `TERMINUS_PLUGINS=$(pwd) terminus --debug`
If you're currently in your plugin's directory, start Tabby as `TABBY_PLUGINS=$(pwd) tabby --debug`
A plugin should only provide a default export, which should be a `NgModule` class (or a `NgModuleWithDependencies` where applicable). This module will be injected as a dependency to the app's root module.
@@ -93,7 +118,7 @@ Plugins provide functionality by exporting singular or multi providers:
```javascript
import { NgModule, Injectable } from '@angular/core'
import { ToolbarButtonProvider, ToolbarButton } from 'terminus-core'
import { ToolbarButtonProvider, ToolbarButton } from 'tabby-core'
@Injectable()
export class MyButtonProvider extends ToolbarButtonProvider {
@@ -118,6 +143,6 @@ export default class MyModule { }
```
See `terminus-core/src/api.ts`, `terminus-settings/src/api.ts`, `terminus-local/src/api.ts` and `terminus-terminal/src/api.ts` for the available extension points.
See `tabby-core/src/api.ts`, `tabby-settings/src/api.ts`, `tabby-local/src/api.ts` and `tabby-terminal/src/api.ts` for the available extension points.
Publish your plugin on NPM with a `terminus-plugin` keyword to make it appear in the Plugin Manager.
Publish your plugin on NPM with a `tabby-plugin` keyword to make it appear in the Plugin Manager.

106
README.md
View File

@@ -2,12 +2,18 @@
<p align="center">
<a href="https://github.com/Eugeny/terminus/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/terminus/total.svg?label=RELEASE&logo=github&style=for-the-badge"></a> <a href="https://nightly.link/Eugeny/terminus/workflows/windows/master"><img src="https://shields.io/badge/-Nightly-blue?logo=windows&style=for-the-badge"/></a> <a href="https://nightly.link/Eugeny/terminus/workflows/macos/master"><img src="https://shields.io/badge/-Nightly-black?logo=apple&style=for-the-badge"/></a> <a href="https://nightly.link/Eugeny/terminus/workflows/linux/master"><img src="https://shields.io/badge/-Nightly-orange?logo=linux&style=for-the-badge"/></a> <a href="https://gitter.im/terminus-terminal/community"><img alt="Gitter" src="https://img.shields.io/gitter/room/terminus/community.svg?color=magenta&logo=gitter&style=for-the-badge"></a>
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=RELEASE&logo=github&style=for-the-badge"></a> <a href="https://nightly.link/Eugeny/tabby/workflows/windows/master"><img src="https://shields.io/badge/-Nightly-blue?logo=windows&style=for-the-badge"/></a> <a href="https://nightly.link/Eugeny/tabby/workflows/macos/master"><img src="https://shields.io/badge/-Nightly-black?logo=apple&style=for-the-badge"/></a> <a href="https://nightly.link/Eugeny/tabby/workflows/linux/master"><img src="https://shields.io/badge/-Nightly-orange?logo=linux&style=for-the-badge"/></a> <a href="https://gitter.im/terminus-terminal/community"><img alt="Gitter" src="https://img.shields.io/gitter/room/terminus/community.svg?color=magenta&logo=gitter&style=for-the-badge"></a>
</p>
<p align="center">
<a href="https://ko-fi.com/J3J8KWTF">
<img src="https://ko-fi.com/img/githubbutton_sm.svg">
</a>
</p>
----
**Terminus** is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux
**Tabby** (formerly **Terminus**) is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux
* Integrated SSH client and connection manager
* Integrated serial terminal
@@ -22,14 +28,12 @@
* Proper shell experience on Windows including tab completion (via Clink)
* Integrated encrypted container for SSH secrets and configuration
[![Buy me a coffee](https://github.com/Eugeny/terminus/raw/master/docs/kofi.png)](https://ko-fi.com/eugeny)
---
# Contents
- [Contents](#contents)
- [What Terminus is and isn't](#what-terminus-is-and-isnt)
- [What Tabby is and isn't](#what-tabby-is-and-isnt)
- [Terminal features](#terminal-features)
- [SSH Client](#ssh-client)
- [Serial Terminal](#serial-terminal)
@@ -39,11 +43,11 @@
- [Contributing](#contributing)
<a name="about"></a>
# What Terminus is and isn't
# What Tabby is and isn't
* **Terminus is** an alternative to Windows' standard terminal (conhost), PowerShell ISE, PuTTY or iTerm
* **Tabby is** an alternative to Windows' standard terminal (conhost), PowerShell ISE, PuTTY or iTerm
* **Terminus is not** a new shell or a MinGW or Cygwin replacement. Neither is it lightweight - if RAM usage is of importance, consider [Conemu](https://conemu.github.io) or [Alacritty](https://github.com/jwilm/alacritty)
* **Tabby is not** a new shell or a MinGW or Cygwin replacement. Neither is it lightweight - if RAM usage is of importance, consider [Conemu](https://conemu.github.io) or [Alacritty](https://github.com/jwilm/alacritty)
<a name="terminal"></a>
# Terminal features
@@ -84,12 +88,12 @@
<a name="portable"></a>
# Portable
Terminus will run as a portable app on Windows, if you create a `data` folder in the same location where `Terminus.exe` lives.
Tabby will run as a portable app on Windows, if you create a `data` folder in the same location where `Tabby.exe` lives.
<a name="plugins"></a>
# Plugins
Plugins and themes can be installed directly from the Settings view inside Terminus.
Plugins and themes can be installed directly from the Settings view inside Tabby.
* [clickable-links](https://github.com/Eugeny/terminus-clickable-links) - makes paths and URLs in the terminal clickable
* [title-control](https://github.com/kbjr/terminus-title-control) - allows modifying the title of the terminal tabs by providing a prefix, suffix, and/or strings to be removed
@@ -102,7 +106,7 @@ Plugins and themes can be installed directly from the Settings view inside Termi
# Themes
* [hype](https://github.com/Eugeny/terminus-theme-hype) - a Hyper inspired theme
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - the Relaxed theme for Terminus
* [relaxed](https://github.com/Relaxed-Theme/relaxed-terminal-themes#terminus) - the Relaxed theme for Tabby
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
* [altair](https://github.com/yxuko/terminus-altair)
@@ -112,7 +116,7 @@ Plugins and themes can be installed directly from the Settings view inside Termi
Pull requests and plugins are welcome!
See [HACKING.md](https://github.com/Eugeny/terminus/blob/master/HACKING.md) and [API docs](http://ajenti.org/terminus-docs/) for information of how the project is laid out, and a very brief plugin development tutorial.
See [HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md) and [API docs](http://ajenti.org/terminus-docs/) for information of how the project is laid out, and a very brief plugin development tutorial.
---
<a name="contributors"></a>
@@ -124,59 +128,63 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="http://www.russellmyers.com"><img src="https://avatars2.githubusercontent.com/u/184085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Russell Myers</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=mezner" title="Code">💻</a></td>
<td align="center"><a href="http://www.morwire.com"><img src="https://avatars1.githubusercontent.com/u/3991658?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Austin Warren</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=ehwarren" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Drachenkaetzchen"><img src="https://avatars1.githubusercontent.com/u/162974?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Felicia Hummel</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=Drachenkaetzchen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mikemaccana"><img src="https://avatars2.githubusercontent.com/u/172594?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike MacCana</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=mikemaccana" title="Tests">⚠️</a> <a href="#design-mikemaccana" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/yxuko"><img src="https://avatars1.githubusercontent.com/u/1786317?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yacine Kanzari</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=yxuko" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/BBJip"><img src="https://avatars2.githubusercontent.com/u/32908927?v=4?s=100" width="100px;" alt=""/><br /><sub><b>BBJip</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=BBJip" title="Code">💻</a></td>
<td align="center"><a href="http://www.russellmyers.com"><img src="https://avatars2.githubusercontent.com/u/184085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Russell Myers</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mezner" title="Code">💻</a></td>
<td align="center"><a href="http://www.morwire.com"><img src="https://avatars1.githubusercontent.com/u/3991658?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Austin Warren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ehwarren" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Drachenkaetzchen"><img src="https://avatars1.githubusercontent.com/u/162974?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Felicia Hummel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Drachenkaetzchen" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mikemaccana"><img src="https://avatars2.githubusercontent.com/u/172594?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mike MacCana</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mikemaccana" title="Tests">⚠️</a> <a href="#design-mikemaccana" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/yxuko"><img src="https://avatars1.githubusercontent.com/u/1786317?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yacine Kanzari</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yxuko" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/BBJip"><img src="https://avatars2.githubusercontent.com/u/32908927?v=4?s=100" width="100px;" alt=""/><br /><sub><b>BBJip</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=BBJip" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Futagirl"><img src="https://avatars2.githubusercontent.com/u/33533958?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Futagirl</b></sub></a><br /><a href="#design-Futagirl" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://www.levrik.io"><img src="https://avatars3.githubusercontent.com/u/9491603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Levin Rickert</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=levrik" title="Code">💻</a></td>
<td align="center"><a href="https://kwonoj.github.io"><img src="https://avatars2.githubusercontent.com/u/1210596?v=4?s=100" width="100px;" alt=""/><br /><sub><b>OJ Kwon</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=kwonoj" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Domain"><img src="https://avatars2.githubusercontent.com/u/903197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>domain</b></sub></a><br /><a href="#plugin-Domain" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/terminus/commits?author=Domain" title="Code">💻</a></td>
<td align="center"><a href="https://www.levrik.io"><img src="https://avatars3.githubusercontent.com/u/9491603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Levin Rickert</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=levrik" title="Code">💻</a></td>
<td align="center"><a href="https://kwonoj.github.io"><img src="https://avatars2.githubusercontent.com/u/1210596?v=4?s=100" width="100px;" alt=""/><br /><sub><b>OJ Kwon</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=kwonoj" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Domain"><img src="https://avatars2.githubusercontent.com/u/903197?v=4?s=100" width="100px;" alt=""/><br /><sub><b>domain</b></sub></a><br /><a href="#plugin-Domain" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Domain" title="Code">💻</a></td>
<td align="center"><a href="http://www.jbrumond.me"><img src="https://avatars1.githubusercontent.com/u/195127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>James Brumond</b></sub></a><br /><a href="#plugin-kbjr" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://www.growingwiththeweb.com"><img src="https://avatars0.githubusercontent.com/u/2193314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Imms</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=Tyriar" title="Code">💻</a> <a href="#plugin-Tyriar" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/terminus/commits?author=Tyriar" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/baflo"><img src="https://avatars2.githubusercontent.com/u/834350?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Florian Bachmann</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=baflo" title="Code">💻</a></td>
<td align="center"><a href="http://michael-kuehnel.de"><img src="https://avatars2.githubusercontent.com/u/441011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kühnel</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=mischah" title="Code">💻</a> <a href="#design-mischah" title="Design">🎨</a></td>
<td align="center"><a href="http://www.growingwiththeweb.com"><img src="https://avatars0.githubusercontent.com/u/2193314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Imms</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Code">💻</a> <a href="#plugin-Tyriar" title="Plugin/utility libraries">🔌</a> <a href="https://github.com/Eugeny/tabby/commits?author=Tyriar" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/baflo"><img src="https://avatars2.githubusercontent.com/u/834350?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Florian Bachmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=baflo" title="Code">💻</a></td>
<td align="center"><a href="http://michael-kuehnel.de"><img src="https://avatars2.githubusercontent.com/u/441011?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kühnel</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=mischah" title="Code">💻</a> <a href="#design-mischah" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/NieLeben"><img src="https://avatars3.githubusercontent.com/u/47182955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tilmann Meyer</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=NieLeben" title="Code">💻</a></td>
<td align="center"><a href="http://www.jubeat.net"><img src="https://avatars3.githubusercontent.com/u/11289158?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PM Extra</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/issues?q=author%3APMExtra" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://jjuhas.keybase.pub//"><img src="https://avatars1.githubusercontent.com/u/6438760?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=IgnusG" title="Code">💻</a></td>
<td align="center"><a href="https://hans-koch.me"><img src="https://avatars0.githubusercontent.com/u/1093709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hans Koch</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=hammster" title="Code">💻</a></td>
<td align="center"><a href="http://thepuzzlemaker.info"><img src="https://avatars3.githubusercontent.com/u/12666617?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dak Smyth</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=ThePuzzlemaker" title="Code">💻</a></td>
<td align="center"><a href="http://yfwz100.github.io"><img src="https://avatars2.githubusercontent.com/u/983211?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wang Zhi</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=yfwz100" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jack1142"><img src="https://avatars0.githubusercontent.com/u/6032823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jack1142</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=jack1142" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/NieLeben"><img src="https://avatars3.githubusercontent.com/u/47182955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tilmann Meyer</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=NieLeben" title="Code">💻</a></td>
<td align="center"><a href="http://www.jubeat.net"><img src="https://avatars3.githubusercontent.com/u/11289158?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PM Extra</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/issues?q=author%3APMExtra" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://jjuhas.keybase.pub//"><img src="https://avatars1.githubusercontent.com/u/6438760?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=IgnusG" title="Code">💻</a></td>
<td align="center"><a href="https://hans-koch.me"><img src="https://avatars0.githubusercontent.com/u/1093709?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hans Koch</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hammster" title="Code">💻</a></td>
<td align="center"><a href="http://thepuzzlemaker.info"><img src="https://avatars3.githubusercontent.com/u/12666617?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dak Smyth</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ThePuzzlemaker" title="Code">💻</a></td>
<td align="center"><a href="http://yfwz100.github.io"><img src="https://avatars2.githubusercontent.com/u/983211?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Wang Zhi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=yfwz100" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jack1142"><img src="https://avatars0.githubusercontent.com/u/6032823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jack1142</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=jack1142" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/hdougie"><img src="https://avatars1.githubusercontent.com/u/450799?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Howie Douglas</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=hdougie" title="Code">💻</a></td>
<td align="center"><a href="https://chriskaczor.com"><img src="https://avatars2.githubusercontent.com/u/180906?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Kaczor</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=ckaczor" title="Code">💻</a></td>
<td align="center"><a href="https://www.boxmein.net"><img src="https://avatars1.githubusercontent.com/u/358714?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johannes Kadak</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=boxmein" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/LeSeulArtichaut"><img src="https://avatars1.githubusercontent.com/u/38361244?v=4?s=100" width="100px;" alt=""/><br /><sub><b>LeSeulArtichaut</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=LeSeulArtichaut" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/CyrilTaylor"><img src="https://avatars0.githubusercontent.com/u/12631466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cyril Taylor</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=CyrilTaylor" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=nstefanou" title="Code">💻</a> <a href="#plugin-nstefanou" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="https://github.com/orin220444"><img src="https://avatars3.githubusercontent.com/u/30747229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=orin220444" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/hdougie"><img src="https://avatars1.githubusercontent.com/u/450799?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Howie Douglas</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=hdougie" title="Code">💻</a></td>
<td align="center"><a href="https://chriskaczor.com"><img src="https://avatars2.githubusercontent.com/u/180906?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chris Kaczor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ckaczor" title="Code">💻</a></td>
<td align="center"><a href="https://www.boxmein.net"><img src="https://avatars1.githubusercontent.com/u/358714?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johannes Kadak</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=boxmein" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/LeSeulArtichaut"><img src="https://avatars1.githubusercontent.com/u/38361244?v=4?s=100" width="100px;" alt=""/><br /><sub><b>LeSeulArtichaut</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=LeSeulArtichaut" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/CyrilTaylor"><img src="https://avatars0.githubusercontent.com/u/12631466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cyril Taylor</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=CyrilTaylor" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/nstefanou"><img src="https://avatars3.githubusercontent.com/u/51129173?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nstefanou</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nstefanou" title="Code">💻</a> <a href="#plugin-nstefanou" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="https://github.com/orin220444"><img src="https://avatars3.githubusercontent.com/u/30747229?v=4?s=100" width="100px;" alt=""/><br /><sub><b>orin220444</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=orin220444" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Goobles"><img src="https://avatars3.githubusercontent.com/u/8776771?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gobius Dolhain</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=Goobles" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/3l0w"><img src="https://avatars2.githubusercontent.com/u/37798980?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gwilherm Folliot</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=3l0w" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Dimitory"><img src="https://avatars0.githubusercontent.com/u/475955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dmitry Pronin</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=dimitory" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JonathanBeverley"><img src="https://avatars1.githubusercontent.com/u/20328966?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan Beverley</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=JonathanBeverley" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/zend"><img src="https://avatars1.githubusercontent.com/u/25160?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zenghai Liang</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=zend" title="Code">💻</a></td>
<td align="center"><a href="https://about.me/matishadow"><img src="https://avatars0.githubusercontent.com/u/9083085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mateusz Tracz</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=matishadow" title="Code">💻</a></td>
<td align="center"><a href="https://zergpool.com"><img src="https://avatars3.githubusercontent.com/u/36234677?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pinpin</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=pinpins" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Goobles"><img src="https://avatars3.githubusercontent.com/u/8776771?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gobius Dolhain</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Goobles" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/3l0w"><img src="https://avatars2.githubusercontent.com/u/37798980?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gwilherm Folliot</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=3l0w" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Dimitory"><img src="https://avatars0.githubusercontent.com/u/475955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dmitry Pronin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=dimitory" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JonathanBeverley"><img src="https://avatars1.githubusercontent.com/u/20328966?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jonathan Beverley</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=JonathanBeverley" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/zend"><img src="https://avatars1.githubusercontent.com/u/25160?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zenghai Liang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=zend" title="Code">💻</a></td>
<td align="center"><a href="https://about.me/matishadow"><img src="https://avatars0.githubusercontent.com/u/9083085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mateusz Tracz</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=matishadow" title="Code">💻</a></td>
<td align="center"><a href="https://zergpool.com"><img src="https://avatars3.githubusercontent.com/u/36234677?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pinpin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=pinpins" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/TakuroOnoda"><img src="https://avatars0.githubusercontent.com/u/1407926?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Takuro Onoda</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=TakuroOnoda" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/frauhottelmann"><img src="https://avatars2.githubusercontent.com/u/902705?v=4?s=100" width="100px;" alt=""/><br /><sub><b>frauhottelmann</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=frauhottelmann" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/TakuroOnoda"><img src="https://avatars0.githubusercontent.com/u/1407926?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Takuro Onoda</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=TakuroOnoda" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/frauhottelmann"><img src="https://avatars2.githubusercontent.com/u/902705?v=4?s=100" width="100px;" alt=""/><br /><sub><b>frauhottelmann</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=frauhottelmann" title="Code">💻</a></td>
<td align="center"><a href="http://patalong.pl"><img src="https://avatars.githubusercontent.com/u/29167842?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piotr Patalong</b></sub></a><br /><a href="#design-VectorKappa" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/clarkwang"><img src="https://avatars.githubusercontent.com/u/157076?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Clark Wang</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=clarkwang" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/iamchating"><img src="https://avatars.githubusercontent.com/u/7088153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>iamchating</b></sub></a><br /><a href="https://github.com/Eugeny/terminus/commits?author=iamchating" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/clarkwang"><img src="https://avatars.githubusercontent.com/u/157076?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Clark Wang</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=clarkwang" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/iamchating"><img src="https://avatars.githubusercontent.com/u/7088153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>iamchating</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=iamchating" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/starxg"><img src="https://avatars.githubusercontent.com/u/34997494?v=4?s=100" width="100px;" alt=""/><br /><sub><b>starxg</b></sub></a><br /><a href="#plugin-starxg" title="Plugin/utility libraries">🔌</a></td>
<td align="center"><a href="http://hashnote.net/"><img src="https://avatars.githubusercontent.com/u/546312?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alisue</b></sub></a><br /><a href="#design-lambdalisue" title="Design">🎨</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ydcool"><img src="https://avatars.githubusercontent.com/u/5668295?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dominic Yin</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=ydcool" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bdr99"><img src="https://avatars.githubusercontent.com/u/2292715?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Rothweiler</b></sub></a><br /><a href="#design-bdr99" title="Design">🎨</a></td>
</tr>
</table>
<!-- markdownlint-restore -->

View File

@@ -1,4 +1,4 @@
owner: eugeny
repo: terminus
repo: tabby
provider: github
updaterCacheDirName: terminus-updater
updaterCacheDirName: tabby-updater

View File

@@ -1,5 +1,5 @@
doctype html
html.terminus
html.tabby
head
meta(charset='UTF-8')
base(href='index.html')
@@ -15,8 +15,8 @@ html.terminus
app-root
.preload-logo
div
.terminus-logo
h1.terminus-title Terminus
.tabby-logo
h1.tabby-title Tabby
sup α
.progress
.bar(style='width: 0%')

View File

@@ -154,7 +154,7 @@ export class Application {
this.tray.setContextMenu(contextMenu)
}
this.tray.setToolTip(`Terminus ${app.getVersion()}`)
this.tray.setToolTip(`Tabby ${app.getVersion()}`)
}
disableTray (): void {
@@ -195,7 +195,7 @@ export class Application {
{
label: 'Application',
submenu: [
{ role: 'about', label: 'About Terminus' },
{ role: 'about', label: 'About Tabby' },
{ type: 'separator' },
{
label: 'Preferences',
@@ -261,7 +261,7 @@ export class Application {
{
label: 'Website',
click () {
shell.openExternal('https://eugeny.github.io/terminus')
shell.openExternal('https://eugeny.github.io/tabby')
},
},
],

View File

@@ -6,7 +6,7 @@ export function parseArgs (argv: string[], cwd: string): any {
}
return require('yargs/yargs')(argv.slice(1))
.usage('terminus [command] [arguments]')
.usage('tabby [command] [arguments]')
.command('open [directory]', 'open a shell in a directory', {
directory: { type: 'string', 'default': cwd },
})

View File

@@ -3,7 +3,20 @@ import * as path from 'path'
import * as yaml from 'js-yaml'
import { app } from 'electron'
export function migrateConfig (): void {
const configPath = path.join(app.getPath('userData'), 'config.yaml')
const legacyConfigPath = path.join(app.getPath('userData'), '../terminus', 'config.yaml')
if (fs.existsSync(legacyConfigPath) && (
!fs.existsSync(configPath) ||
fs.statSync(configPath).mtime < fs.statSync(legacyConfigPath).mtime
)) {
fs.writeFileSync(configPath, fs.readFileSync(legacyConfigPath))
}
}
export function loadConfig (): any {
migrateConfig()
const configPath = path.join(app.getPath('userData'), 'config.yaml')
if (fs.existsSync(configPath)) {
return yaml.load(fs.readFileSync(configPath, 'utf8'))

View File

@@ -7,8 +7,8 @@ import { parseArgs } from './cli'
import { Application } from './app'
import electronDebug = require('electron-debug')
if (!process.env.TERMINUS_PLUGINS) {
process.env.TERMINUS_PLUGINS = ''
if (!process.env.TABBY_PLUGINS) {
process.env.TABBY_PLUGINS = ''
}
const application = new Application()

View File

@@ -4,9 +4,6 @@ import * as electron from 'electron'
const appPath = path.dirname(electron.app.getPath('exe'))
if (fs.existsSync(path.join(appPath, 'terminus-data'))) {
fs.renameSync(path.join(appPath, 'terminus-data'), path.join(appPath, 'data'))
}
const portableData = path.join(appPath, 'data')
if (fs.existsSync(portableData)) {
console.log('reset user data to ' + portableData)

View File

@@ -1,4 +1,4 @@
import * as nodePTY from '@terminus-term/node-pty'
import * as nodePTY from 'node-pty'
import { StringDecoder } from './stringDecoder'
import { v4 as uuidv4 } from 'uuid'
import { ipcMain } from 'electron'

View File

@@ -8,7 +8,7 @@ try {
release = require('@electron/remote').app.getVersion()
}
if (!process.env.TERMINUS_DEV) {
if (!process.env.TABBY_DEV) {
init({
dsn: SENTRY_DSN,
release,

View File

@@ -56,7 +56,7 @@ export class Window {
const bwOptions: BrowserWindowConstructorOptions = {
width: 800,
height: 600,
title: 'Terminus',
title: 'Tabby',
minWidth: 400,
minHeight: 300,
webPreferences: {
@@ -118,7 +118,7 @@ export class Window {
})
this.window.on('blur', () => {
if (this.configStore.appearance.dock !== 'off' && this.configStore.appearance?.dockHideOnBlur) {
if (this.configStore.appearance?.dock !== 'off' && this.configStore.appearance?.dockHideOnBlur) {
this.hide()
}
})
@@ -304,17 +304,6 @@ export class Window {
})
})
ipcMain.on('window-toggle-maximize', event => {
if (!this.window || event.sender !== this.window.webContents) {
return
}
if (this.window.isMaximized()) {
this.window.unmaximize()
} else {
this.window.maximize()
}
})
ipcMain.on('window-minimize', event => {
if (!this.window || event.sender !== this.window.webContents) {
return

View File

@@ -1,8 +1,8 @@
{
"name": "terminus",
"name": "tabby",
"description": "A terminal for a modern age",
"private": true,
"repository": "https://github.com/eugeny/terminus",
"repository": "https://github.com/Eugeny/tabby",
"author": {
"name": "Eugene Pankov",
"email": "e@ajenti.org"
@@ -23,48 +23,47 @@
"@angular/platform-browser-dynamic": "^12.0.0",
"@electron/remote": "1.2.0",
"@ng-bootstrap/ng-bootstrap": "^9.1.1",
"@terminus-term/node-pty": "0.10.0-terminus.3",
"any-promise": "^1.3.0",
"electron-config": "2.0.0",
"electron-debug": "^3.2.0",
"electron-promise-ipc": "^2.2.4",
"fontmanager-redux": "1.0.0",
"fontmanager-redux": "1.1.0",
"glasstron": "0.0.7",
"js-yaml": "4.1.0",
"keytar": "^7.7.0",
"mz": "^2.7.0",
"native-process-working-directory": "^1.0.2",
"ngx-toastr": "^14.0.0",
"node-pty": "^0.10.1",
"npm": "6",
"rxjs": "^7.1.0",
"ssh2": "^1.1.0",
"yargs": "^17.0.1",
"zone.js": "^0.11.4"
},
"optionalDependencies": {
"macos-native-processlist": "^2.0.0",
"serialport": "^9.1.0",
"serialport": "^9.2.0",
"windows-blurbehind": "^1.0.1",
"windows-native-registry": "^3.0.0",
"windows-process-tree": "^0.3.0"
},
"devDependencies": {
"@types/mz": "2.7.3",
"@types/node": "15.12.1",
"@types/node": "15.12.5",
"ngx-filesize": "^2.0.16",
"node-abi": "^2.30.0",
"source-map-support": "^0.5.19"
},
"peerDependencies": {
"terminus-community-color-schemes": "*",
"terminus-core": "*",
"terminus-electron": "*",
"terminus-local": "*",
"terminus-plugin-manager": "*",
"terminus-serial": "*",
"terminus-settings": "*",
"terminus-ssh": "*",
"terminus-terminal": "*"
"tabby-community-color-schemes": "*",
"tabby-core": "*",
"tabby-electron": "*",
"tabby-local": "*",
"tabby-plugin-manager": "*",
"tabby-serial": "*",
"tabby-settings": "*",
"tabby-ssh": "*",
"tabby-terminal": "*"
},
"resolutions": {
"*/node-abi": "^2.20.0"

View File

@@ -12,7 +12,7 @@ import { ipcRenderer } from 'electron'
import { getRootModule } from './app.module'
import { findPlugins, initModuleLookup, loadPlugins } from './plugins'
import { BootstrapData, BOOTSTRAP_DATA, PluginInfo } from '../../terminus-core/src/api/mainProcess'
import { BootstrapData, BOOTSTRAP_DATA, PluginInfo } from '../../tabby-core/src/api/mainProcess'
// Always land on the start view
location.hash = ''
@@ -23,7 +23,7 @@ if (process.platform === 'win32' && !('HOME' in process.env)) {
process.env.HOME = `${process.env.HOMEDRIVE}${process.env.HOMEPATH}`
}
if (process.env.TERMINUS_DEV && !process.env.TERMINUS_FORCE_ANGULAR_PROD) {
if (process.env.TABBY_DEV && !process.env.TABBY_FORCE_ANGULAR_PROD) {
console.warn('Running in debug mode')
} else {
enableProdMode()
@@ -42,7 +42,7 @@ async function bootstrap (bootstrapData: BootstrapData, plugins: PluginInfo[], s
const moduleRef = await platformBrowserDynamic([
{ provide: BOOTSTRAP_DATA, useValue: bootstrapData },
]).bootstrapModule(module)
if (process.env.TERMINUS_DEV) {
if (process.env.TABBY_DEV) {
const applicationRef = moduleRef.injector.get(ApplicationRef)
const componentRef = applicationRef.components[0]
enableDebugTools(componentRef)

View File

@@ -1,7 +1,7 @@
import * as fs from 'mz/fs'
import * as path from 'path'
import * as remote from '@electron/remote'
import { PluginInfo } from '../../terminus-core/src/api/mainProcess'
import { PluginInfo } from '../../tabby-core/src/api/mainProcess'
const nodeModule = require('module') // eslint-disable-line @typescript-eslint/no-var-requires
@@ -16,7 +16,7 @@ function normalizePath (p: string): string {
return p
}
const builtinPluginsPath = process.env.TERMINUS_DEV ? path.dirname(remote.app.getAppPath()) : path.join((process as any).resourcesPath, 'builtin-plugins')
const builtinPluginsPath = process.env.TABBY_DEV ? path.dirname(remote.app.getAppPath()) : path.join((process as any).resourcesPath, 'builtin-plugins')
const builtinModules = [
'@angular/animations',
@@ -30,30 +30,32 @@ const builtinModules = [
'ngx-toastr',
'rxjs',
'rxjs/operators',
'terminus-core',
'terminus-local',
'terminus-settings',
'terminus-terminal',
'tabby-core',
'tabby-local',
'tabby-settings',
'tabby-terminal',
'zone.js/dist/zone.js',
]
export type ProgressCallback = (current: number, total: number) => void // eslint-disable-line @typescript-eslint/no-type-alias
const cachedBuiltinModules = {}
export function initModuleLookup (userPluginsPath: string): void {
global['module'].paths.map((x: string) => nodeModule.globalPaths.push(normalizePath(x)))
if (process.env.TERMINUS_DEV) {
nodeModule.globalPaths.unshift(path.join(userPluginsPath, 'node_modules'))
if (process.env.TABBY_DEV) {
nodeModule.globalPaths.unshift(path.dirname(remote.app.getAppPath()))
}
nodeModule.globalPaths.unshift(builtinPluginsPath)
nodeModule.globalPaths.unshift(path.join(userPluginsPath, 'node_modules'))
// nodeModule.globalPaths.unshift(path.join((process as any).resourcesPath, 'app.asar', 'node_modules'))
if (process.env.TERMINUS_PLUGINS) {
process.env.TERMINUS_PLUGINS.split(':').map(x => nodeModule.globalPaths.push(normalizePath(x)))
if (process.env.TABBY_PLUGINS) {
process.env.TABBY_PLUGINS.split(':').map(x => nodeModule.globalPaths.push(normalizePath(x)))
}
const cachedBuiltinModules = {}
builtinModules.forEach(m => {
cachedBuiltinModules[m] = nodeRequire(m)
})
@@ -79,7 +81,8 @@ export async function findPlugins (): Promise<PluginInfo[]> {
const paths = nodeModule.globalPaths
let foundPlugins: PluginInfo[] = []
const candidateLocations: { pluginDir: string, packageName: string }[] = []
const PREFIX = 'terminus-'
const PREFIX = 'tabby-'
const LEGACY_PREFIX = 'terminus-'
const processedPaths = []
@@ -101,7 +104,7 @@ export async function findPlugins (): Promise<PluginInfo[]> {
})
}
for (const packageName of pluginNames) {
if (packageName.startsWith(PREFIX)) {
if (packageName.startsWith(PREFIX) || packageName.startsWith(LEGACY_PREFIX)) {
candidateLocations.push({ pluginDir, packageName })
}
}
@@ -114,7 +117,7 @@ export async function findPlugins (): Promise<PluginInfo[]> {
continue
}
const name = packageName.substring(PREFIX.length)
const name = packageName.startsWith(PREFIX) ? packageName.substring(PREFIX.length) : packageName.substring(LEGACY_PREFIX.length)
if (builtinModules.includes(packageName) && pluginDir !== builtinPluginsPath) {
continue
@@ -122,14 +125,20 @@ export async function findPlugins (): Promise<PluginInfo[]> {
console.log(`Found ${name} in ${pluginDir}`)
if (foundPlugins.some(x => x.name === name)) {
console.info(`Plugin ${packageName} already exists, overriding`)
foundPlugins = foundPlugins.filter(x => x.name !== name)
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
}
}
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'))) {
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
@@ -138,6 +147,7 @@ export async function findPlugins (): Promise<PluginInfo[]> {
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,
@@ -150,6 +160,7 @@ export async function findPlugins (): Promise<PluginInfo[]> {
}
foundPlugins.sort((a, b) => a.name > b.name ? 1 : -1)
foundPlugins.sort((a, b) => a.isBuiltin < b.isBuiltin ? 1 : -1)
return foundPlugins
}
@@ -162,6 +173,9 @@ export async function loadPlugins (foundPlugins: PluginInfo[], progress: Progres
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

View File

@@ -38,7 +38,7 @@
.terminus-logo {
.tabby-logo {
width: 120px;
height: 120px;
background: url('../assets/logo.svg');
@@ -48,7 +48,7 @@
}
.terminus-title {
.tabby-title {
color: #a1c5e4;
font-family: 'Source Sans Pro';
text-align: center;

View File

@@ -27,7 +27,7 @@
"dist",
"node_modules",
"*/node_modules",
"terminus*",
"tabby*",
"platforms"
]
}

View File

@@ -2,7 +2,7 @@ const path = require('path')
const webpack = require('webpack')
module.exports = {
name: 'terminus',
name: 'tabby',
target: 'node',
entry: {
'index.ignore': 'file-loader?name=index.html!pug-html-loader!' + path.resolve(__dirname, './index.pug'),
@@ -10,7 +10,7 @@ module.exports = {
preload: path.resolve(__dirname, 'src/entry.preload.ts'),
bundle: path.resolve(__dirname, 'src/entry.ts'),
},
mode: process.env.TERMINUS_DEV ? 'development' : 'production',
mode: process.env.TABBY_DEV ? 'development' : 'production',
optimization:{
minimize: false,
},

View File

@@ -3,64 +3,64 @@ const webpack = require('webpack')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
module.exports = {
name: 'terminus-main',
target: 'electron-main',
entry: {
main: path.resolve(__dirname, 'lib/index.ts'),
},
mode: process.env.TERMINUS_DEV ? 'development' : 'production',
context: __dirname,
devtool: 'source-map',
output: {
path: path.join(__dirname, 'dist'),
pathinfo: true,
filename: '[name].js',
},
resolve: {
modules: ['lib/', 'node_modules', '../node_modules'].map(x => path.join(__dirname, x)),
extensions: ['.ts', '.js'],
},
module: {
rules: [
{
test: /\.ts$/,
use: {
loader: 'awesome-typescript-loader',
options: {
configFileName: path.resolve(__dirname, 'tsconfig.main.json'),
},
},
},
name: 'tabby-main',
target: 'electron-main',
entry: {
main: path.resolve(__dirname, 'lib/index.ts'),
},
mode: process.env.TABBY_DEV ? 'development' : 'production',
context: __dirname,
devtool: 'source-map',
output: {
path: path.join(__dirname, 'dist'),
pathinfo: true,
filename: '[name].js',
},
resolve: {
modules: ['lib/', 'node_modules', '../node_modules'].map(x => path.join(__dirname, x)),
extensions: ['.ts', '.js'],
},
module: {
rules: [
{
test: /\.ts$/,
use: {
loader: 'awesome-typescript-loader',
options: {
configFileName: path.resolve(__dirname, 'tsconfig.main.json'),
},
},
},
],
},
externals: {
'any-promise': 'commonjs any-promise',
electron: 'commonjs electron',
'electron-config': 'commonjs electron-config',
'electron-debug': 'commonjs electron-debug',
'electron-promise-ipc': 'commonjs electron-promise-ipc',
'electron-vibrancy': 'commonjs electron-vibrancy',
fs: 'commonjs fs',
glasstron: 'commonjs glasstron',
mz: 'commonjs mz',
npm: 'commonjs npm',
'node-pty': 'commonjs node-pty',
path: 'commonjs path',
rxjs: 'commonjs rxjs',
'rxjs/operators': 'commonjs rxjs/operators',
util: 'commonjs util',
'source-map-support': 'commonjs source-map-support',
'windows-swca': 'commonjs windows-swca',
'windows-native-registry': 'commonjs windows-native-registry',
'windows-blurbehind': 'commonjs windows-blurbehind',
'yargs/yargs': 'commonjs yargs/yargs',
},
plugins: [
new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.DefinePlugin({
'process.type': '"main"',
}),
],
},
externals: {
'any-promise': 'commonjs any-promise',
electron: 'commonjs electron',
'electron-config': 'commonjs electron-config',
'electron-debug': 'commonjs electron-debug',
'electron-promise-ipc': 'commonjs electron-promise-ipc',
'electron-vibrancy': 'commonjs electron-vibrancy',
fs: 'commonjs fs',
glasstron: 'commonjs glasstron',
mz: 'commonjs mz',
npm: 'commonjs npm',
'@terminus-term/node-pty': 'commonjs @terminus-term/node-pty',
path: 'commonjs path',
rxjs: 'commonjs rxjs',
'rxjs/operators': 'commonjs rxjs/operators',
util: 'commonjs util',
'source-map-support': 'commonjs source-map-support',
'windows-swca': 'commonjs windows-swca',
'windows-native-registry': 'commonjs windows-native-registry',
'windows-blurbehind': 'commonjs windows-blurbehind',
'yargs/yargs': 'commonjs yargs/yargs',
},
plugins: [
new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.DefinePlugin({
'process.type': '"main"',
}),
],
}
if (process.env.BUNDLE_ANALYZER) {

View File

@@ -79,7 +79,7 @@
dependencies:
debug "^4.3.1"
"@serialport/binding-mock@^9.0.7":
"@serialport/binding-mock@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/binding-mock/-/binding-mock-9.0.7.tgz#2fda427adc113320461f33f7426dfca73e8ad1de"
integrity sha512-aR8H+htZwwZZkVb1MdbnNvGWw8eXVRqQ2qPhkbKyx0N/LY5aVIgCgT98Kt1YylLsG7SzNG+Jbhd4wzwEuPVT5Q==
@@ -87,10 +87,10 @@
"@serialport/binding-abstract" "^9.0.7"
debug "^4.3.1"
"@serialport/bindings@^9.1.0":
version "9.1.0"
resolved "https://registry.yarnpkg.com/@serialport/bindings/-/bindings-9.1.0.tgz#bb4c2778118a4404fd38749b64c0fe533d72003a"
integrity sha512-X0GM5iZgrBkR1HwoSDsJ/AJ+M61end5Ttg5mqcaUkwGCKpgJSDW3STX6pvFNr9xNzvqS56yuhAcU/eNJ2xuDaA==
"@serialport/bindings@^9.2.0":
version "9.2.0"
resolved "https://registry.yarnpkg.com/@serialport/bindings/-/bindings-9.2.0.tgz#de6df688d0ff99bdbb86ea6db412562cb2d9ebe7"
integrity sha512-s9EKHDZjLHipHhypxy6pz2XsoI1fPiOGU+X13AIGdQfoe7I6piEyhJ2znNgXMugMe43OxNk0/CmuVMzzcw1lmQ==
dependencies:
"@serialport/binding-abstract" "^9.0.7"
"@serialport/parser-readline" "^9.0.7"
@@ -99,57 +99,50 @@
nan "^2.14.2"
prebuild-install "^6.0.1"
"@serialport/parser-byte-length@^9.0.7":
"@serialport/parser-byte-length@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-9.0.7.tgz#9e362bba70eeffcd2eb0804afeca4bb1dee59d5f"
integrity sha512-evf7oOOSBMBn2AZZbgBFMRIyEzlsyQkhqaPm7IBCPTxMDXRf4tKkFYJHYZB0/6d1W4eI0meH079UqmSsh/uoDA==
"@serialport/parser-cctalk@^9.0.7":
"@serialport/parser-cctalk@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-9.0.7.tgz#fa0e1539f067aced22a5ef7d64fdac14f1a6a4d3"
integrity sha512-ert5jhMkeiTfr44TkbdySC09J8UwAsf/RxBucVN5Mz5enG509RggnkfFi4mfj3UCG2vZ7qsmM6gtZ62DshY02Q==
"@serialport/parser-delimiter@^9.0.7":
"@serialport/parser-delimiter@9.0.7", "@serialport/parser-delimiter@^9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-9.0.7.tgz#7bef2447d4282dd00dc659719b310edeb30ff294"
integrity sha512-Vb2NPeXPZ/28M4m5x4OAHFd8jRAeddNCgvL+Q+H/hqFPY1w47JcMLchC7pigRW8Cnt1fklmzfwdNQ8Fb+kMkxQ==
"@serialport/parser-inter-byte-timeout@^9.0.7":
"@serialport/parser-inter-byte-timeout@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-9.0.7.tgz#55b315b49d8ad37f981ba69bb9443f25c96aec17"
integrity sha512-lUZ3cwgUluBvJ1jf+0LQsqoiPYAokDO6+fRCw9HCfnrF/OS60Gm4rxuyo2uQIueqZkJ7NIFP+ibKsULrA47AEA==
"@serialport/parser-readline@^9.0.7":
"@serialport/parser-readline@9.0.7", "@serialport/parser-readline@^9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-9.0.7.tgz#8b096028170fb2644bcf0f997d534a344cfd00e6"
integrity sha512-ydoLbgVQQPxWrwbe3Fhh4XnZexbkEQAC6M/qgRTzjnKvTjrD61CJNxLc3vyDaAPI9bJIhTiI7eTX3JB5jJv8Hg==
dependencies:
"@serialport/parser-delimiter" "^9.0.7"
"@serialport/parser-ready@^9.0.7":
"@serialport/parser-ready@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-9.0.7.tgz#d9eb9801c6003fdb1450c557f3e256a188a9f3be"
integrity sha512-3qYhI4cNUPAYqVYvdwV57Y+PVRl4dJf1fPBtMoWtwDgwopsAXTR93WCs49WuUq9JCyNW+8Hrfqv8x8eNAD5Dqg==
"@serialport/parser-regex@^9.0.7":
"@serialport/parser-regex@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-9.0.7.tgz#d8a02e3a169faa2f6604e8293832cc676b865f48"
integrity sha512-5XF+FXbhqQ/5bVKM4NaGs1m+E9KjfmeCx/obwsKaUZognQF67jwoTfjJJWNP/21jKfxdl8XoCYjZjASl3XKRAw==
"@serialport/stream@^9.0.7":
"@serialport/stream@9.0.7":
version "9.0.7"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-9.0.7.tgz#0bf023eb0233a714fcc5a86de09e381e466d9882"
integrity sha512-c/h7HPAeFiryD9iTGlaSvPqHFHSZ0NMQHxC4rcmKS2Vu3qJuEtkBdTLABwsMp7iWEiSnI4KC3s7bHapaXP06FQ==
dependencies:
debug "^4.3.1"
"@terminus-term/node-pty@0.10.0-terminus.3":
version "0.10.0-terminus.3"
resolved "https://registry.yarnpkg.com/@terminus-term/node-pty/-/node-pty-0.10.0-terminus.3.tgz#9dbd64d52afda5079e66265a89d313fe42affab7"
integrity sha512-HvIOts22dnoBXhRfLiK9DyPasuixYVgEUvgqZmOr0B0Ki9tF8e074oYPUtzLRll6Y553QiUzTWhriCS99MChNQ==
dependencies:
nan "^2.14.0"
"@types/mz@2.7.3":
version "2.7.3"
resolved "https://registry.yarnpkg.com/@types/mz/-/mz-2.7.3.tgz#e42a21e73f5f9340fe4a176981fafb1eb8cc6c12"
@@ -157,10 +150,10 @@
dependencies:
"@types/node" "*"
"@types/node@*", "@types/node@15.12.1":
version "15.12.1"
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.1.tgz#9b60797dee1895383a725f828a869c86c6caa5c2"
integrity sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw==
"@types/node@*", "@types/node@15.12.5":
version "15.12.5"
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.5.tgz#9a78318a45d75c9523d2396131bd3cca54b2d185"
integrity sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg==
JSONStream@^1.3.4, JSONStream@^1.3.5:
version "1.3.5"
@@ -295,7 +288,7 @@ asap@^2.0.0:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
asn1@^0.2.4, asn1@~0.2.3:
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz"
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
@@ -332,7 +325,7 @@ base64-js@^1.3.1:
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2:
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
@@ -686,13 +679,6 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
cpu-features@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.2.tgz#9f636156f1155fd04bdbaa028bb3c2fbef3cea7a"
integrity sha512-/2yieBqvMcRj8McNzkycjW2v3OIUOibBfd2dLEJ0nWts8NobAxwiyw9phVNS6oDL8x8tz9F7uNVFEVpJncQpeA==
dependencies:
nan "^2.14.1"
create-error-class@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
@@ -1088,10 +1074,10 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
fontmanager-redux@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/fontmanager-redux/-/fontmanager-redux-1.0.0.tgz"
integrity sha512-kXZel+PAWxS+bgFIlycUYWkmVpvN3SUodDeNaFNW7BloU5pqibBR395Ww+gLBnt51S9KnmHT2/+DzCMGbag0aw==
fontmanager-redux@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fontmanager-redux/-/fontmanager-redux-1.1.0.tgz#b1e97bc5c982df81749596fd48348f8318595bb3"
integrity sha512-cQtSfi7ZCW831XuGwoKIrO/cCBLhOvWK56adSr/Yl/fzB5omunW+XQmXlYHNKS7qWzOZe2Z6xQ8ZFt120Uj2lA==
dependencies:
node-addon-api "^3.0.2"
@@ -2088,7 +2074,7 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
nan@^2.13.2, nan@^2.14.0, nan@^2.14.1, nan@^2.14.2:
nan@^2.13.2, nan@^2.14.0, nan@^2.14.2:
version "2.14.2"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
@@ -2163,6 +2149,13 @@ node-gyp@^5.0.2, node-gyp@^5.1.0:
tar "^4.4.12"
which "^1.3.1"
node-pty@^0.10.1:
version "0.10.1"
resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.10.1.tgz#cd05d03a2710315ec40221232ec04186f6ac2c6d"
integrity sha512-JTdtUS0Im/yRsWJSx7yiW9rtpfmxqxolrtnyKwPLI+6XqTAPW/O2MjS8FYL4I5TsMbH2lVgDb2VMjp+9LoQGNg==
dependencies:
nan "^2.14.0"
noop-logger@^0.1.1:
version "0.1.1"
resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz"
@@ -3064,21 +3057,21 @@ serialize-error@^5.0.0:
dependencies:
type-fest "^0.8.0"
serialport@^9.1.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-9.1.0.tgz#f8b9dc87e6713e1e0198752f6e2cce95aaf5a6ab"
integrity sha512-W17ji2TOotufIUCXIWcB6P+RztO1S4BcWsAc99jQn5BaH3Kw6xUyOX2ng0ZQ+hPjS/WWI2CdWynf4bKRJKD/+A==
serialport@^9.2.0:
version "9.2.0"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-9.2.0.tgz#17a8364979f3c06a54a7bf4e8cbb8ebc91e54511"
integrity sha512-C6AQ4jD4mre3tn3QA+atn++mEZDh4r40CIeh1sKhskKE+Q4eiIr/nzVMOiPxHb8gskrSNxujH+Br49tl3i9s9g==
dependencies:
"@serialport/binding-mock" "^9.0.7"
"@serialport/bindings" "^9.1.0"
"@serialport/parser-byte-length" "^9.0.7"
"@serialport/parser-cctalk" "^9.0.7"
"@serialport/parser-delimiter" "^9.0.7"
"@serialport/parser-inter-byte-timeout" "^9.0.7"
"@serialport/parser-readline" "^9.0.7"
"@serialport/parser-ready" "^9.0.7"
"@serialport/parser-regex" "^9.0.7"
"@serialport/stream" "^9.0.7"
"@serialport/binding-mock" "9.0.7"
"@serialport/bindings" "^9.2.0"
"@serialport/parser-byte-length" "9.0.7"
"@serialport/parser-cctalk" "9.0.7"
"@serialport/parser-delimiter" "9.0.7"
"@serialport/parser-inter-byte-timeout" "9.0.7"
"@serialport/parser-readline" "9.0.7"
"@serialport/parser-ready" "9.0.7"
"@serialport/parser-regex" "9.0.7"
"@serialport/stream" "9.0.7"
debug "^4.3.1"
set-blocking@^2.0.0, set-blocking@~2.0.0:
@@ -3207,17 +3200,6 @@ split-on-first@^1.0.0:
resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
ssh2@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.1.0.tgz#43dd24930e15e317687f519d6b40270d9cd00d00"
integrity sha512-CidQLG2ZacoT0Z7O6dOyisj4JdrOrLVJ4KbHjVNz9yI1vO08FAYQPcnkXY9BP8zeYo+J/nBgY6Gg4R7w4WFWtg==
dependencies:
asn1 "^0.2.4"
bcrypt-pbkdf "^1.0.2"
optionalDependencies:
cpu-features "0.0.2"
nan "^2.14.2"
sshpk@^1.7.0:
version "1.16.1"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz"

View File

@@ -1,3 +1,3 @@
!macro customInit
nsExec::Exec '"$LOCALAPPDATA\terminus\Update.exe" --uninstall -s'
nsExec::Exec '"$LOCALAPPDATA\tabby\Update.exe" --uninstall -s'
!macroend

View File

@@ -11,7 +11,7 @@ module.exports = async function (params) {
}
console.log('afterSign hook triggered', params)
let appId = 'org.terminus'
let appId = 'org.tabby'
let appPath = path.join(params.appOutDir, params._pathOverride || `${params.packager.appInfo.productFilename}.app`)
if (!fs.existsSync(appPath)) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -1,6 +1,6 @@
---
appId: org.terminus
productName: Terminus
appId: org.tabby
productName: Tabby
compression: normal
npmRebuild: false
afterSign: "./build/mac/afterSignHook.js"
@@ -33,24 +33,24 @@ extraResources:
- builtin-plugins
- extras
asarUnpack:
- dist/*.map
- 'dist/*.map'
publish:
- provider: github
win:
icon: "./build/windows/icon.ico"
artifactName: terminus-${version}-portable.${ext}
artifactName: tabby-${version}-portable.${ext}
rfc3161TimeStampServer: http://sha256timestamp.ws.symantec.com/sha256/timestamp
nsis:
oneClick: false
artifactName: terminus-${version}-setup.${ext}
artifactName: tabby-${version}-setup.${ext}
installerIcon: "./build/windows/icon.ico"
allowToChangeInstallationDirectory: true
mac:
category: public.app-category.video
icon: "./build/mac/icon.icns"
artifactName: terminus-${version}-macos-${env.ARCH}.${ext}
artifactName: tabby-${version}-macos-${env.ARCH}.${ext}
hardenedRuntime: true
entitlements: "./build/mac/entitlements.plist"
entitlementsInherit: "./build/mac/entitlements.plist"
@@ -68,11 +68,11 @@ mac:
linux:
category: Utility
icon: "./build/icons"
artifactName: terminus-${version}-linux.${ext}
artifactName: tabby-${version}-linux.${ext}
executableArgs:
- "--no-sandbox"
desktop:
StartupWMClass: terminus
StartupWMClass: tabby
snap:
plugs:
- default
@@ -91,7 +91,7 @@ deb:
afterInstall: build/linux/after-install.tpl
fpm:
- '--replaces'
- 'terminus'
- 'terminus-terminal'
pacman:
depends:
- gnome-keyring
@@ -103,4 +103,4 @@ rpm:
- '--rpm-rpmbuild-define'
- '_build_id_links none'
- '--replaces'
- 'terminus'
- 'terminus-terminal'

View File

@@ -12,7 +12,7 @@
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Open Terminus here</string>
<string>Open Tabby here</string>
</dict>
<key>NSMessage</key>
<string>runWorkflowAsService</string>

View File

@@ -59,7 +59,7 @@
<key>ActionParameters</key>
<dict>
<key>COMMAND_STRING</key>
<string>/Applications/Terminus.app/Contents/MacOS/terminus open "$1"</string>
<string>/Applications/Tabby.app/Contents/MacOS/tabby open "$1"</string>
<key>CheckedForUserDefaultShell</key>
<true/>
<key>inputMethod</key>

View File

@@ -12,7 +12,7 @@
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>Paste path into Terminus</string>
<string>Paste path into Tabby</string>
</dict>
<key>NSMessage</key>
<string>runWorkflowAsService</string>

View File

@@ -59,7 +59,7 @@
<key>ActionParameters</key>
<dict>
<key>COMMAND_STRING</key>
<string>/Applications/Terminus.app/Contents/MacOS/terminus paste --escape "$1"</string>
<string>/Applications/Tabby.app/Contents/MacOS/tabby paste --escape "$1"</string>
<key>CheckedForUserDefaultShell</key>
<true/>
<key>inputMethod</key>

View File

@@ -2,16 +2,16 @@
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.15.3",
"@sentry/cli": "^1.64.2",
"@sentry/electron": "^2.4.1",
"@sentry/electron": "^2.5.0",
"@terminus-term/to-string-loader": "1.1.7-beta.1",
"@types/electron-config": "^3.2.2",
"@types/electron-debug": "^2.1.0",
"@types/fs-extra": "^9.0.11",
"@types/js-yaml": "^4.0.1",
"@types/node": "15.6.1",
"@types/node": "15.12.5",
"@types/webpack-env": "^1.16.0",
"@typescript-eslint/eslint-plugin": "^4.25.0",
"@typescript-eslint/parser": "^4.26.0",
"@typescript-eslint/parser": "^4.28.0",
"apply-loader": "2.0.0",
"awesome-typescript-loader": "^5.2.1",
"compare-versions": "^3.6.0",
@@ -33,7 +33,7 @@
"lru-cache": "^6.0.0",
"macos-release": "^2.5.0",
"node-abi": "^2.30.0",
"node-sass": "^6.0.0",
"node-sass": "^6.0.1",
"npmlog": "4.1.2",
"npx": "^10.2.2",
"patch-package": "^6.4.7",
@@ -43,18 +43,18 @@
"pug-loader": "^2.4.0",
"pug-static-loader": "2.0.0",
"raw-loader": "4.0.2",
"sass-loader": "^12.0.0",
"sass-loader": "^12.1.0",
"shelljs": "0.8.4",
"source-code-pro": "^2.38.0",
"source-sans-pro": "3.6.0",
"style-loader": "^2.0.0",
"style-loader": "^3.0.0",
"svg-inline-loader": "^0.8.2",
"tslib": "^2.2.0",
"typedoc": "^0.20.36",
"tslib": "^2.3.0",
"typedoc": "^0.21.2",
"typescript": "^4.2.4",
"url-loader": "^4.1.1",
"val-loader": "4.0.0",
"webpack": "^5.38.1",
"webpack": "^5.41.0",
"webpack-bundle-analyzer": "^4.4.2",
"webpack-cli": "^4.7.0",
"yaml-loader": "0.6.0"
@@ -64,14 +64,13 @@
"**/graceful-fs": "^4.2.4"
},
"scripts": {
"build": "npm run build:typings && webpack --color --config app/webpack.main.config.js && webpack --color --config app/webpack.config.js && webpack --color --config terminus-core/webpack.config.js && webpack --color --config terminus-settings/webpack.config.js && webpack --color --config terminus-terminal/webpack.config.js && webpack --color --config terminus-local/webpack.config.js && webpack --color --config terminus-plugin-manager/webpack.config.js && webpack --color --config terminus-community-color-schemes/webpack.config.js && webpack --color --config terminus-ssh/webpack.config.js && webpack --color --config terminus-serial/webpack.config.js && webpack --color --config terminus-electron/webpack.config.js && webpack --color --config terminus-web/webpack.config.js",
"build:web": "webpack --color --config web/webpack.config.js",
"build": "npm run build:typings && webpack --color --config app/webpack.main.config.js && webpack --color --config app/webpack.config.js && webpack --color --config tabby-core/webpack.config.js && webpack --color --config tabby-settings/webpack.config.js && webpack --color --config tabby-terminal/webpack.config.js && webpack --color --config tabby-local/webpack.config.js && webpack --color --config tabby-plugin-manager/webpack.config.js && webpack --color --config tabby-community-color-schemes/webpack.config.js && webpack --color --config tabby-ssh/webpack.config.js && webpack --color --config tabby-serial/webpack.config.js && webpack --color --config tabby-electron/webpack.config.js && webpack --color --config tabby-web/webpack.config.js && webpack --color --config web/webpack.config.js",
"build:typings": "node scripts/build-typings.js",
"watch": "cross-env TERMINUS_DEV=1 webpack --progress --color --watch",
"start": "cross-env TERMINUS_DEV=1 electron app --debug --inspect",
"watch": "cross-env TABBY_DEV=1 webpack --progress --color --watch",
"start": "cross-env TABBY_DEV=1 electron app --debug --inspect",
"start:prod": "electron app --debug",
"prod": "cross-env TERMINUS_DEV=1 electron app",
"docs": "typedoc --out docs/api --tsconfig terminus-core/src/tsconfig.typings.json terminus-core/src/index.ts && typedoc --out docs/api/terminal --tsconfig terminus-terminal/tsconfig.typings.json terminus-terminal/src/index.ts && typedoc --out docs/api/local --tsconfig terminus-local/tsconfig.typings.json terminus-local/src/index.ts && typedoc --out docs/api/settings --tsconfig terminus-settings/tsconfig.typings.json terminus-settings/src/index.ts",
"prod": "cross-env TABBY_DEV=1 electron app",
"docs": "typedoc --out docs/api --tsconfig tabby-core/src/tsconfig.typings.json tabby-core/src/index.ts && typedoc --out docs/api/terminal --tsconfig tabby-terminal/tsconfig.typings.json tabby-terminal/src/index.ts && typedoc --out docs/api/local --tsconfig tabby-local/tsconfig.typings.json tabby-local/src/index.ts && typedoc --out docs/api/settings --tsconfig tabby-settings/tsconfig.typings.json tabby-settings/src/index.ts",
"lint": "eslint --ext ts */src */lib",
"postinstall": "node ./scripts/install-deps.js",
"patch": "patch-package; cd web; patch-package"

View File

@@ -7,7 +7,7 @@ index 25a159e..d8a0262 100644
const name = this.name; // https://github.com/electron-userland/electron-builder/issues/2963
- return name.startsWith("@") ? this.sanitizedProductName : name;
+ return 'terminus-terminal'
+ return 'tabby-terminal'
}
get sanitizedName() {

View File

@@ -4,7 +4,7 @@ const path = require('path')
const vars = require('./vars')
let lifecycles = []
for (let dir of ['app', 'terminus-core', 'terminus-local', 'terminus-ssh', 'terminus-terminal']) {
for (let dir of ['app', 'tabby-core', 'tabby-local', 'tabby-ssh', 'tabby-terminal']) {
const build = rebuild({
buildPath: path.resolve(__dirname, '../' + dir),
electronVersion: vars.electronVersion,

View File

@@ -11,7 +11,7 @@ sh.mkdir('-p', target)
fs.writeFileSync(path.join(target, 'package.json'), '{}')
sh.cd(target)
vars.builtinPlugins.forEach(plugin => {
if (plugin === 'terminus-web') {
if (plugin === 'tabby-web') {
return
}
log.info('install', plugin)

View File

@@ -4,8 +4,9 @@ const vars = require('./vars')
const log = require('npmlog')
vars.builtinPlugins.forEach(plugin => {
log.info('bump', plugin)
sh.cd(plugin)
sh.exec('npm --no-git-tag-version version ' + vars.version)
sh.cd('..')
log.info('bump', plugin)
sh.cd(plugin)
sh.exec('npm --no-git-tag-version version ' + vars.version)
sh.exec('npm publish')
sh.cd('..')
})

View File

@@ -9,7 +9,7 @@ sh.exec(`${sentryCli} releases new ${vars.version}`)
if (process.platform === 'darwin') {
for (const path of [
'app/node_modules/@serialport/bindings/build/Release/bindings.node',
'app/node_modules/@terminus-term/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

@@ -14,16 +14,16 @@ if (exports.version.includes('-c')) {
}
exports.builtinPlugins = [
'terminus-core',
'terminus-settings',
'terminus-terminal',
'terminus-electron',
'terminus-local',
'terminus-web',
'terminus-community-color-schemes',
'terminus-plugin-manager',
'terminus-ssh',
'terminus-serial',
'tabby-core',
'tabby-settings',
'tabby-terminal',
'tabby-electron',
'tabby-local',
'tabby-web',
'tabby-community-color-schemes',
'tabby-plugin-manager',
'tabby-ssh',
'tabby-serial',
]
exports.bundledModules = [
'@angular',

View File

@@ -1,15 +1,15 @@
name: terminus
name: tabby
version: '1.0.0'
summary: A terminal for a modern age
description: |
Terminus is a terminal heavily inspired by Hyper. It is, however, designed for people who need to get things done.
Tabby is a local, SSH and serial terminal heavily inspired by Hyper.
grade: devel
confinement: devmode
apps:
terminus:
command: opt/terminus/terminus
tabby:
command: opt/tabby/tabby
parts:
app:
@@ -22,5 +22,5 @@ parts:
./scripts/build-native.js
yarn run build
./scripts/build-linux.js
mkdir -p $SNAPCRAFT_PART_INSTALL/opt/terminus || true
cp -ar dist/linux-unpacked/* $SNAPCRAFT_PART_INSTALL/opt/terminus/
mkdir -p $SNAPCRAFT_PART_INSTALL/opt/tabby || true
cp -ar dist/linux-unpacked/* $SNAPCRAFT_PART_INSTALL/opt/tabby/

View File

@@ -1,9 +1,9 @@
{
"name": "terminus-community-color-schemes",
"version": "1.0.140",
"description": "Community color schemes for Terminus",
"name": "tabby-community-color-schemes",
"version": "1.0.144",
"description": "Community color schemes for Tabby",
"keywords": [
"terminus-builtin-plugin"
"tabby-builtin-plugin"
],
"main": "dist/index.js",
"typings": "typings/index.d.ts",
@@ -18,7 +18,7 @@
"license": "MIT",
"peerDependencies": {
"@angular/core": "^9.1.9",
"terminus-core": "*",
"terminus-terminal": "*"
"tabby-core": "*",
"tabby-terminal": "*"
}
}

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