Compare commits

..

47 Commits

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-22 09:10:20 +00:00
Eugene Pankov
5f88a02647 Merge branch 'electron-upgrade' 2021-12-22 10:06:51 +01:00
Eugene Pankov
538df37f5e support for unencrypted PuTTY v3 keys - #5145 2021-12-22 00:28:14 +01:00
Eugene Pankov
aba5e9dcfa show font name autocompletion hint 2021-12-22 00:04:11 +01:00
Eugene Pankov
c7589acc87 prevent window controls flickering 2021-12-22 00:04:01 +01:00
Eugene Pankov
39786e023e expose the terminal.scrollbackLines setting 2021-12-21 23:37:22 +01:00
Eugene Pankov
7900134f67 expose the terminal.linePadding setting 2021-12-21 23:37:09 +01:00
Eugene Pankov
d080adc19d fixed terminal toolbar padding when on top on macOS - fixes #5220 2021-12-19 18:44:12 +01:00
Eugene Pankov
4f189f6839 fixed #5219 2021-12-19 18:40:19 +01:00
Eugene Pankov
87ed979588 lint 2021-12-19 18:11:46 +01:00
Eugene Pankov
e90db7f07f UI switch for --disable-gpu - #5131, #3499 2021-12-19 18:11:43 +01:00
Eugene Pankov
5249a9076a config defaults tweaks 2021-12-19 17:56:50 +01:00
Eugene Pankov
cfc9333c02 use real file modes for zmodem uploads - fixes #4141 2021-12-19 17:56:42 +01:00
Eugene Pankov
81aa747d83 lint 2021-12-15 23:30:33 +01:00
Eugene Pankov
0e9723cb3b updated window docking logic 2021-12-15 23:21:56 +01:00
Eugene Pankov
899484a5d9 fixed config sync - fixes #5146, fixes #3164 2021-12-15 21:48:54 +01:00
Eugeny
4c2feb1b35 Update issue-report.md 2021-12-14 10:08:52 +01:00
Eugeny
d6d75b8c53 Update issue templates 2021-12-14 10:07:39 +01:00
Eugene Pankov
6eff3902ca don't disable vibrancy while dragging if it's not fluent 2021-12-12 14:24:55 +01:00
Eugene Pankov
8f71f29007 electron 16 2021-12-12 14:15:04 +01:00
Eugene Pankov
b6fd909d67 electron 14 2021-12-12 14:05:55 +01:00
Eugene Pankov
9500fa8770 dep fix 2021-12-12 13:18:20 +01:00
Eugene Pankov
f92d9c85cb allowRendererProcessReuse 2021-12-12 13:14:24 +01:00
Eugene Pankov
04533a683b upgraded node-serialport 2021-12-12 12:23:24 +01:00
Eugene Pankov
08a38bbf61 serial: slow feed mode - fixes #4901 2021-12-12 12:23:15 +01:00
Eugene Pankov
5f94e84542 theme tweaks, fixed #5068 2021-12-12 12:18:02 +01:00
Eugene Pankov
bdcd2720c4 properly disable yargs warning 2021-12-12 12:10:48 +01:00
Eugene Pankov
4784a076fa disable vibrancy on Windows by default 2021-12-12 12:03:18 +01:00
Eugene Pankov
07c522385f fixed yargs deprecation warnings 2021-12-12 12:03:10 +01:00
Eugene Pankov
d039d76cff fixed restored local tabs being unresponsive - fixes #5122, fixes #5124, fixes #5101 2021-12-12 12:03:01 +01:00
Eugene Pankov
f91754ce7c build fix 2021-12-09 14:10:49 +01:00
Eugene Pankov
5911794b20 Update build.yml 2021-12-09 13:29:08 +01:00
Eugene Pankov
f640bf9443 Revert "Update build.yml"
This reverts commit 9f50d8506c.
2021-12-09 13:28:55 +01:00
Eugene Pankov
9f50d8506c Update build.yml 2021-12-09 13:02:26 +01:00
Eugene Pankov
361f6c2fe5 Update build.yml 2021-12-09 11:25:46 +01:00
Eugene Pankov
8cac38e1ef Update build.yml 2021-12-09 11:18:31 +01:00
Eugene Pankov
75757d027e Update README.md 2021-12-09 01:07:52 +01:00
46 changed files with 578 additions and 243 deletions

View File

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

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

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

View File

@@ -257,6 +257,11 @@ jobs:
with:
node-version: 16
- name: Update node-gyp
run: |
npm install --global node-gyp@8.4.1
npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"}
- name: Build
shell: powershell
run: |

View File

@@ -2,7 +2,7 @@
<p align="center">
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> &nbsp; <a href="https://nightly.link/Eugeny/tabby/workflows/build/master"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> &nbsp; <a href="https://matrix.to/#/#tabby-general:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/tabby-general:matrix.org?logo=matrix&style=for-the-badge&color=magenta"></a>
<a href="https://github.com/Eugeny/tabby/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/eugeny/tabby/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> &nbsp; <a href="https://nightly.link/Eugeny/tabby/workflows/build/master"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> &nbsp; <a href="https://matrix.to/#/#tabby-general:matrix.org"><img alt="Matrix" src="https://img.shields.io/matrix/tabby-general:matrix.org?logo=matrix&style=for-the-badge&color=magenta"></a> &nbsp; <a href="https://twitter.com/eugeeeeny"><img alt="Twitter" src="https://shields.io/badge/Subscribe-News-blue?logo=twitter&style=for-the-badge&color=blue"></a>
</p>
<p align="center">

View File

@@ -23,6 +23,7 @@ export class Application {
private windows: Window[] = []
private globalHotkey$ = new Subject<void>()
private quitRequested = false
private configStore: any
userPluginsPath: string
constructor () {
@@ -32,6 +33,7 @@ export class Application {
ipcMain.on('app:config-change', (_event, config) => {
this.broadcast('host:config-change', config)
this.configStore = config
})
ipcMain.on('app:register-global-hotkey', (_event, specs) => {
@@ -61,13 +63,17 @@ export class Application {
}
})
const configData = loadConfig()
this.configStore = loadConfig()
if (process.platform === 'linux') {
app.commandLine.appendSwitch('no-sandbox')
if (((configData.appearance || {}).opacity || 1) !== 1) {
if (((this.configStore.appearance || {}).opacity || 1) !== 1) {
app.commandLine.appendSwitch('enable-transparent-visuals')
app.disableHardwareAcceleration()
}
if (this.configStore.hacks?.disableGPU) {
app.commandLine.appendSwitch('disable-gpu')
app.disableHardwareAcceleration()
}
}
this.userPluginsPath = path.join(
@@ -82,9 +88,8 @@ export class Application {
app.commandLine.appendSwitch('disable-http-cache')
app.commandLine.appendSwitch('max-active-webgl-contexts', '9000')
app.commandLine.appendSwitch('lang', 'EN')
app.allowRendererProcessReuse = false
for (const flag of configData.flags || [['force_discrete_gpu', '0']]) {
for (const flag of this.configStore.flags || [['force_discrete_gpu', '0']]) {
app.commandLine.appendSwitch(flag[0], flag[1])
}
@@ -104,6 +109,9 @@ export class Application {
async newWindow (options?: WindowOptions): Promise<Window> {
const window = new Window(this, options)
this.windows.push(window)
if (this.windows.length === 1){
window.makeMain()
}
window.visible$.subscribe(visible => {
if (visible) {
this.disableTray()
@@ -113,16 +121,28 @@ export class Application {
})
window.closed$.subscribe(() => {
this.windows = this.windows.filter(x => x !== window)
if (!this.windows.some(x => x.isMainWindow)) {
this.windows[0]?.makeMain()
this.windows[0]?.present()
}
})
if (process.platform === 'darwin') {
this.setupMenu()
}
await window.ready
window.present()
return window
}
onGlobalHotkey (): void {
if (this.windows.some(x => x.isFocused() && x.isVisible())) {
let isPresent = this.windows.some(x => x.isFocused() && x.isVisible())
const isDockedOnTop = this.windows.some(x => x.isDockedOnTop())
if (isDockedOnTop) {
// if docked and on top, hide even if not focused right now
isPresent = this.windows.some(x => x.isVisible())
}
if (isPresent) {
for (const window of this.windows) {
window.hide()
}
@@ -191,7 +211,7 @@ export class Application {
focus (): void {
for (const window of this.windows) {
window.show()
window.present()
}
}

View File

@@ -25,7 +25,7 @@ export function parseArgs (argv: string[], cwd: string): any {
type: 'string',
})
})
.version('version', '', app.getVersion())
.version(app.getVersion())
.option('debug', {
alias: 'd',
describe: 'Show DevTools on start',
@@ -35,11 +35,6 @@ export function parseArgs (argv: string[], cwd: string): any {
describe: 'Start minimized',
type: 'boolean',
})
.option('version', {
alias: 'v',
describe: 'Show version and exit',
type: 'boolean',
})
.help('help')
.parse()
}

View File

@@ -148,7 +148,7 @@ export class PTYManager {
})
ipcMain.on('pty:exists', (event, id) => {
event.returnValue = !this.ptys[id]?.exited
event.returnValue = this.ptys[id] && !this.ptys[id].exited
})
ipcMain.on('pty:get-pid', (event, id) => {

View File

@@ -3,6 +3,7 @@ import * as glasstron from 'glasstron'
import { Subject, Observable, debounceTime } from 'rxjs'
import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage } from 'electron'
import ElectronConfig = require('electron-config')
import { enable as enableRemote } from '@electron/remote/main'
import * as os from 'os'
import * as path from 'path'
import macOSRelease from 'macos-release'
@@ -14,7 +15,7 @@ import { loadConfig } from './config'
let DwmEnableBlurBehindWindow: any = null
if (process.platform === 'win32') {
DwmEnableBlurBehindWindow = require('windows-blurbehind').DwmEnableBlurBehindWindow
DwmEnableBlurBehindWindow = require('@tabby-gang/windows-blurbehind').DwmEnableBlurBehindWindow
}
export interface WindowOptions {
@@ -32,6 +33,7 @@ const activityIcon = nativeImage.createFromPath(`${app.getAppPath()}/assets/acti
export class Window {
ready: Promise<void>
isMainWindow = false
private visible = new Subject<boolean>()
private closed = new Subject<void>()
private window?: GlasstronWindow
@@ -42,6 +44,8 @@ export class Window {
private disableVibrancyWhileDragging = false
private configStore: any
private touchBarControl: any
private isFluentVibrancy = false
private dockHidden = false
get visible$ (): Observable<boolean> { return this.visible }
get closed$ (): Observable<void> { return this.closed }
@@ -65,7 +69,6 @@ export class Window {
nodeIntegration: true,
preload: path.join(__dirname, 'sentry.js'),
backgroundThrottling: false,
enableRemoteModule: true,
contextIsolation: false,
},
maximizable: true,
@@ -126,6 +129,8 @@ export class Window {
}
})
enableRemote(this.window.webContents)
this.window.loadURL(`file://${app.getAppPath()}/dist/index.html`, { extraHeaders: 'pragma: no-cache\n' })
this.window.webContents.setVisualZoomLevelLimits(1, 1)
@@ -156,6 +161,11 @@ export class Window {
})
}
makeMain (): void {
this.isMainWindow = true
this.window.webContents.send('host:became-main-window')
}
setVibrancy (enabled: boolean, type?: string, userRequested?: boolean): void {
if (userRequested ?? true) {
this.lastVibrancy = { enabled, type }
@@ -165,6 +175,7 @@ export class Window {
this.window.blurType = enabled ? type === 'fluent' ? 'acrylic' : 'blurbehind' : null
try {
this.window.setBlur(enabled)
this.isFluentVibrancy = enabled && type === 'fluent'
} catch (error) {
console.error('Failed to set window blur', error)
}
@@ -179,11 +190,6 @@ export class Window {
}
}
show (): void {
this.window.show()
this.window.moveTop()
}
focus (): void {
this.window.focus()
}
@@ -195,6 +201,7 @@ export class Window {
this.window.webContents.send(event, ...args)
if (event === 'host:config-change') {
this.configStore = args[0]
this.enableDockedWindowStyles(this.isDockedOnTop())
}
}
@@ -210,45 +217,69 @@ export class Window {
return this.window.isVisible()
}
hide (): void {
isDockedOnTop (): boolean {
return this.isMainWindow && this.configStore.appearance?.dock && this.configStore.appearance?.dock !== 'off' && (this.configStore.appearance?.dockAlwaysOnTop ?? true)
}
async hide (): Promise<void> {
if (process.platform === 'darwin') {
// Lose focus
Menu.sendActionToFirstResponder('hide:')
}
this.window.blur()
if (process.platform !== 'darwin') {
this.window.hide()
}
}
present (): void {
if (!this.window.isVisible()) {
// unfocused, invisible
this.window.show()
this.window.focus()
} else {
if (!this.configStore.appearance?.dock || this.configStore.appearance?.dock === 'off') {
// not docked, visible
setTimeout(() => {
this.window.show()
this.window.focus()
})
} else {
if (this.configStore.appearance?.dockAlwaysOnTop) {
// docked, visible, on top
this.window.hide()
} else {
// docked, visible, not on top
this.window.focus()
}
if (this.isDockedOnTop()) {
await this.enableDockedWindowStyles(false)
}
}
this.window.blur()
this.window.hide()
}
async show (): Promise<void> {
await this.enableDockedWindowStyles(this.isDockedOnTop())
this.window.show()
this.window.focus()
}
async present (): Promise<void> {
await this.show()
this.window.moveTop()
}
passCliArguments (argv: string[], cwd: string, secondInstance: boolean): void {
this.send('cli', parseArgs(argv, cwd), cwd, secondInstance)
}
private async enableDockedWindowStyles (enabled: boolean) {
if (process.platform === 'darwin') {
if (enabled) {
if (!this.dockHidden) {
app.dock.hide()
this.dockHidden = true
}
this.window.setAlwaysOnTop(true, 'screen-saver', 1)
if (!this.window.isVisibleOnAllWorkspaces()) {
this.window.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true })
}
if (this.window.fullScreenable) {
this.window.setFullScreenable(false)
}
} else {
if (this.dockHidden) {
await app.dock.show()
this.dockHidden = false
}
if (this.window.isAlwaysOnTop()) {
this.window.setAlwaysOnTop(false)
}
if (this.window.isVisibleOnAllWorkspaces()) {
this.window.setVisibleOnAllWorkspaces(false)
}
if (!this.window.fullScreenable) {
this.window.setFullScreenable(true)
}
}
}
}
private setupWindowManagement () {
this.window.on('show', () => {
this.visible.next(true)
@@ -310,7 +341,7 @@ export class Window {
config: this.configStore,
executable: app.getPath('exe'),
windowID: this.window.id,
isFirstWindow: this.window.id === 1,
isMainWindow: this.isMainWindow,
userPluginsPath: this.application.userPluginsPath,
})
})
@@ -357,8 +388,7 @@ export class Window {
if (this.window.isMinimized()) {
this.window.restore()
}
this.window.show()
this.window.moveTop()
this.present()
})
ipcMain.on('window-close', event => {
@@ -385,7 +415,7 @@ export class Window {
let moveEndedTimeout: any = null
const onBoundsChange = () => {
if (!this.lastVibrancy?.enabled || !this.disableVibrancyWhileDragging) {
if (!this.lastVibrancy?.enabled || !this.disableVibrancyWhileDragging || !this.isFluentVibrancy) {
return
}
this.setVibrancy(false, undefined, false)

View File

@@ -10,12 +10,13 @@
"main": "dist/main.js",
"version": "1.0.0-alpha.1",
"scripts": {
"postinstall": "patch-package",
"build": "webpack --progress --color --display-modules",
"watch": "webpack --progress --color --watch"
},
"dependencies": {
"@angular/cdk": "^12.2.9",
"@electron/remote": "1.2.0",
"@electron/remote": "2.0.1",
"@tabby-gang/node-pty": "^0.11.0-beta.200",
"any-promise": "^1.3.0",
"electron-config": "2.0.0",
@@ -35,16 +36,17 @@
"yargs": "^17.2.1"
},
"optionalDependencies": {
"@tabby-gang/windows-blurbehind": "^3.0.0",
"macos-native-processlist": "^2.0.0",
"serialport": "^9.2.8",
"windows-blurbehind": "^1.0.1",
"serialport": "^10.0.0",
"windows-native-registry": "^3.1.0",
"windows-process-tree": "^0.3.2"
},
"devDependencies": {
"@types/mz": "2.7.4",
"@types/node": "16.0.1",
"ngx-filesize": "^2.0.16"
"ngx-filesize": "^2.0.16",
"patch-package": "^6.4.7"
},
"peerDependencies": {
"tabby-community-color-schemes": "*",

View File

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

View File

@@ -2,6 +2,7 @@ body {
min-height: 100vh;
overflow: hidden;
background: #1D272D;
-webkit-font-smoothing: antialiased;
}
.modal-dialog, .modal-backdrop, .no-drag {

View File

@@ -51,7 +51,7 @@ module.exports = {
'source-map-support': 'commonjs source-map-support',
'windows-swca': 'commonjs windows-swca',
'windows-native-registry': 'commonjs windows-native-registry',
'windows-blurbehind': 'commonjs windows-blurbehind',
'@tabby-gang/windows-blurbehind': 'commonjs @tabby-gang/windows-blurbehind',
'yargs/yargs': 'commonjs yargs/yargs',
},
plugins: [

View File

@@ -11,10 +11,10 @@
optionalDependencies:
parse5 "^5.0.0"
"@electron/remote@1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-1.2.0.tgz#772eb4c3ac17aaba5a9cf05a09092f6277f5671f"
integrity sha512-C774t2DFVJsa+dxU9Gc2nYzylRZoJ79I0Sxrh8T9cN69fBkntfGbyBEQiD9UfZopqL0CYLzk1anY2Ywhql6h1w==
"@electron/remote@2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.1.tgz#810cbc595a21f0f94641eb2d7e8264063a3f84de"
integrity sha512-bGX4/yB2bPZwXm1DsxgoABgH0Cz7oFtXJgkerB8VrStYdTyvhGAULzNLRn9rVmeAuC3VUDXaXpZIlZAZHpsLIA==
"@iarna/cli@^1.2.0":
version "1.2.0"
@@ -25,74 +25,74 @@
update-notifier "^2.2.0"
yargs "^8.0.2"
"@serialport/binding-abstract@9.2.3":
version "9.2.3"
resolved "https://registry.yarnpkg.com/@serialport/binding-abstract/-/binding-abstract-9.2.3.tgz#e7dd273357b6a698af7ad58db6f57f62443a0acb"
integrity sha512-cQs9tbIlG3P0IrOWyVirqlhWuJ7Ms2Zh9m2108z6Y5UW/iVj6wEOiW8EmK9QX9jmJXYllE7wgGgvVozP5oCj3w==
"@serialport/binding-abstract@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/binding-abstract/-/binding-abstract-10.0.0.tgz#c5aea29de3721de80640e290f52217d00d927e4e"
integrity sha512-1IwOMDOWqKO0csrTOv95Ah0Av012DZB8C0OF11SmE3eyh8ab1+y4/Yah/8byMAMG7TXw+2LqkNs1oZtOJGlY1Q==
dependencies:
debug "^4.3.2"
"@serialport/binding-mock@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/binding-mock/-/binding-mock-9.2.4.tgz#8adf34742abcee80919e19f1266423ce1c9407e2"
integrity sha512-dpEhACCs44oQhh6ajJfJdvQdK38Vq0N4W6iD/gdplglDCK7qXRQCMUjJIeKdS/HSEiWkC3bwumUhUufdsOyT4g==
"@serialport/binding-mock@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/binding-mock/-/binding-mock-10.0.0.tgz#dc850c3e06f2be4b0c5e0461d2e12a2506cca573"
integrity sha512-X+lJqU/GbXxxqA4b3T+YK9vQLtoNSjRF+hz1gyYHpNxDFX0dSLU1OVnQUZ2Zi8aa6IBdk/4DcuGN0tDNAlmtKg==
dependencies:
"@serialport/binding-abstract" "9.2.3"
"@serialport/binding-abstract" "10.0.0"
debug "^4.3.2"
"@serialport/bindings@9.2.8":
version "9.2.8"
resolved "https://registry.yarnpkg.com/@serialport/bindings/-/bindings-9.2.8.tgz#59c2be09d91df922d56de31cb9e21c6736004e39"
integrity sha512-hSLxTe0tADZ3LMMGwvEJWOC/TaFQTyPeFalUCsJ1lSQ0k6bPF04JwrtB/C81GetmDBTNRY0GlD0SNtKCc7Dr5g==
"@serialport/bindings@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/bindings/-/bindings-10.0.0.tgz#718b105adae977886967ab0edc68a067be9183f8"
integrity sha512-t415A6clhsUX0dBRzN0NRN7Yb6y9U1jA4oGzxL2fWCy7XxQq8beI0GnMebEUaZDWKZ7IAVwGnAPUunk7QdlWlA==
dependencies:
"@serialport/binding-abstract" "9.2.3"
"@serialport/parser-readline" "9.2.4"
"@serialport/binding-abstract" "10.0.0"
"@serialport/parser-readline" "10.0.0"
bindings "^1.5.0"
debug "^4.3.2"
nan "^2.15.0"
node-addon-api "4.2.0"
prebuild-install "^7.0.0"
"@serialport/parser-byte-length@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-9.2.4.tgz#cccdf3a95018d838cee9e7aa86ab3b5ad9e6c00f"
integrity sha512-sQD/iw4ZMU3xW9PLi0/GlvU6Y623jGeWecbMkO7izUo/6P7gtfv1c9ikd5h0kwL8AoAOpQA1lxdHIKox+umBUg==
"@serialport/parser-byte-length@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-10.0.0.tgz#05ca2721a50dcdc93f68f3f1e72e10fd82362e84"
integrity sha512-QmZw7oTt6LBHBFbMIPLIZM4WuXpMeK5EpCpXKFtw4a7+yF0yLPwz6uSV2Cf3SvunCfI3eWvucMKpgYNOvglsgA==
"@serialport/parser-cctalk@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-9.2.4.tgz#441533e6afc789e8cc5a017697632217bb33a861"
integrity sha512-T4TU5vQMwmo9AB3gQLFDWbfJXlW5jd9guEsB/nqKjFHTv0FXPdZ7DQ2TpSp8RnHWxU3GX6kYTaDO20BKzc8GPQ==
"@serialport/parser-cctalk@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-10.0.0.tgz#de42e6952c086da3e384756502f9aaca0e97f881"
integrity sha512-jCxzY2IPghNMaJ+GsUgSOoPCI2v1FZg7RvpSJ/b/igK+M/z/p7oRyWf1LqMyjZT7rP4Ha8ZfsQQy5qGzQ3kuzw==
"@serialport/parser-delimiter@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-9.2.4.tgz#7906162ab5601b52abe7bb011678248f0b50f6c0"
integrity sha512-4nvTAoYAgkxFiXrkI+3CA49Yd43CODjeszh89EK+I9c8wOZ+etZduRCzINYPiy26g7zO+GRAb9FoPCsY+sYcbQ==
"@serialport/parser-delimiter@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-10.0.0.tgz#43eb2e3b4c4cf8633eb1200b3af5488ba9a7ecb6"
integrity sha512-s7j+RIxxmyb7xJ3WVcf+IfjFqyoh7k7Edqwqvk2sQLU6UOBNAktNQDHIM/vksQ9QkjJjvl8rIo0YznfBkWbZOQ==
"@serialport/parser-inter-byte-timeout@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-9.2.4.tgz#0ffb7f1449636f6363e894127d1f819b38e91c3c"
integrity sha512-SOAdvr0oBQIOCXX198hiTlxs4JTKg9j5piapw5tNq52fwDOWdbYrFneT/wN04UTMKaDrJuEvXq6T4rv4j7nJ5A==
"@serialport/parser-inter-byte-timeout@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-10.0.0.tgz#07fe7c42e77c9a6379daa6939de55fef99c06ce4"
integrity sha512-ygax3PHuPxi58D3/crCDENSFagvG5EsWjXj6AQRUisExPAAiD02RbZaRqTZluFvDbzMJ/29YJdcdIqnllzGVsw==
"@serialport/parser-readline@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-9.2.4.tgz#15a4ec7e86ddc33ac84faac7bffd4560e4544ccb"
integrity sha512-Z1/qrZTQUVhNSJP1hd9YfDvq0o7d87rNwAjjRKbVpa7Qi51tG5BnKt43IV3NFMyBlVcRe0rnIb3tJu57E0SOwg==
"@serialport/parser-readline@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-10.0.0.tgz#a87b0d92864e917e07010477057b66efe92d3af9"
integrity sha512-NI3oRY1+fLg94CZm887rgj4V6KyxaJmbmoRgua9bqRv7v/o0SqN9lSQwdYLHQVHpf03zTX9ziuoCV8w5CI3DQQ==
dependencies:
"@serialport/parser-delimiter" "9.2.4"
"@serialport/parser-delimiter" "10.0.0"
"@serialport/parser-ready@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-9.2.4.tgz#e1fc93b9e3057972104db3f9311263397f420f25"
integrity sha512-Pyi94Itjl6qAURwIZr/gmZpMAyTmKXThm6vL5DoAWGQjcRHWB0gwv2TY2v7N+mQLJYUKU3cMnvnATXxHm7xjxw==
"@serialport/parser-ready@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-10.0.0.tgz#eae67e9c0806f5b2d9750c1ef910a3cedb549119"
integrity sha512-pmMjRVy0wwVSzRt27AtMV/FJdSL6CdKvLUNx+ziDL9Lt30n85ZzrSdYJOwOB63HVIMg8+JRgiyxKNLs+JgMK2g==
"@serialport/parser-regex@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-9.2.4.tgz#e232a84e00f3e8c366fc65ce20f8f4ac14960448"
integrity sha512-sI/cVvPOYz+Dbv4ZdnW16qAwvXiFf/1pGASQdbveRTlgJDdz7sRNlCBifzfTN2xljwvCTZYqiudKvDdC1TepRQ==
"@serialport/parser-regex@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-10.0.0.tgz#a5dd648baf0952253a995bf0174ba2c19649e279"
integrity sha512-kLvK6bbDtpnVMagCK95m08W+XaXXzJpDvjzrMNSAtpaL+yeBu4XlEhHpt9+9S/MOetbz4vgWdZx2buYyw9iiGQ==
"@serialport/stream@9.2.4":
version "9.2.4"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-9.2.4.tgz#9fce093d0b46ed4599953b4fae81718e050d2b33"
integrity sha512-bLye8Ub4vUFQGmkh8qEqehr7SE7EJs2yDs0h9jzuL5oKi+F34CFmWkEErO8GAOQ8YNn7p6b3GxUgs+0BrHHDZQ==
"@serialport/stream@10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-10.0.0.tgz#482580b9bdad468ac2a60c41c7fb933f7dc7436f"
integrity sha512-KFBGWH6BEn4gXUYHEfbywplDX+sVhlL/Yzn/r7hn+qYnwVjhvQo8Vi35CPKESOUKnMKU48sGSUvNaOwU5znw2g==
dependencies:
debug "^4.3.2"
@@ -103,6 +103,13 @@
dependencies:
nan "^2.14.0"
"@tabby-gang/windows-blurbehind@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@tabby-gang/windows-blurbehind/-/windows-blurbehind-3.0.0.tgz#48d409c2eb14a12c867b70de5ee4d6769ef45e8f"
integrity sha512-ah6eJcoQZWOZfu9sd2pWlOJmfl1v+2EZQMeIp7MWvg+/16WS16UFNdnOtlV6AUiABHfZo2QKfCNUEuorCM+Q2A==
dependencies:
"@types/node" "^10.12.18"
"@types/mz@2.7.4":
version "2.7.4"
resolved "https://registry.yarnpkg.com/@types/mz/-/mz-2.7.4.tgz#f9d1535cb5171199b28ae6abd6ec29e856551401"
@@ -115,11 +122,21 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.1.tgz#70cedfda26af7a2ca073fdcc9beb2fff4aa693f8"
integrity sha512-hBOx4SUlEPKwRi6PrXuTGw1z6lz0fjsibcWCM378YxsSu/6+C30L6CR49zIBKHiwNWCYIcOLjg4OHKZaFeLAug==
"@types/node@^10.12.18":
version "10.17.60"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
"@types/semver@^7.3.6":
version "7.3.9"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc"
integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==
"@yarnpkg/lockfile@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
JSONStream@^1.3.4, JSONStream@^1.3.5:
version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -351,6 +368,13 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -441,7 +465,7 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
chalk@^2.0.1:
chalk@^2.0.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -668,6 +692,17 @@ cross-spawn@^5.0.1:
shebang-command "^1.2.0"
which "^1.2.9"
cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
crypto-random-string@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
@@ -1041,6 +1076,13 @@ file-uri-to-path@1.0.0:
resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.3.0.tgz#dff53cfb3f104c9e422f346d53be8dbcc971bf11"
integrity sha512-ytx0ruGpDHKWVoiui6+BY/QMNngtDQ/pJaFwfBpQif0J63+E8DLdFyqS3NkKQn7vIruUEpoGD9JUJSg7Kp+I0g==
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
find-npm-prefix@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf"
@@ -1060,6 +1102,13 @@ find-up@^3.0.0:
dependencies:
locate-path "^3.0.0"
find-yarn-workspace-root@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
dependencies:
micromatch "^4.0.2"
flush-write-stream@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
@@ -1119,6 +1168,15 @@ fs-extra@^10.0.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
fs-extra@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-minipass@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
@@ -1473,6 +1531,13 @@ is-ci@^1.0.10:
dependencies:
ci-info "^1.5.0"
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
dependencies:
ci-info "^2.0.0"
is-cidr@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.1.tgz#e92ef121bdec2782271a77ce487a8b8df3718ab7"
@@ -1492,6 +1557,11 @@ is-date-object@^1.0.1:
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
is-docker@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
is-electron-renderer@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-electron-renderer/-/is-electron-renderer-2.0.1.tgz#a469d056f975697c58c98c6023eb0aa79af895a2"
@@ -1532,6 +1602,11 @@ is-npm@^1.0.0:
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz"
@@ -1578,6 +1653,13 @@ is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
is-wsl@^2.1.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
dependencies:
is-docker "^2.0.0"
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -1635,6 +1717,13 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
optionalDependencies:
graceful-fs "^4.1.6"
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
@@ -1677,6 +1766,13 @@ keytar@^7.7.0:
node-addon-api "^3.0.0"
prebuild-install "^6.0.0"
klaw-sync@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
dependencies:
graceful-fs "^4.1.11"
latest-version@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
@@ -1995,6 +2091,14 @@ mem@^1.1.0:
dependencies:
mimic-fn "^1.0.0"
micromatch@^4.0.2:
version "4.0.4"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
dependencies:
braces "^3.0.1"
picomatch "^2.2.3"
mime-db@1.44.0:
version "1.44.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz"
@@ -2123,11 +2227,6 @@ nan@^2.13.2, nan@^2.14.0:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
nan@^2.15.0:
version "2.15.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz"
@@ -2148,6 +2247,11 @@ ngx-filesize@^2.0.16:
filesize ">= 4.0.0"
tslib "^2.0.0"
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-abi@^2.20.0, node-abi@^2.7.0:
version "2.30.1"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf"
@@ -2156,9 +2260,9 @@ node-abi@^2.20.0, node-abi@^2.7.0:
semver "^5.4.1"
node-abi@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.3.0.tgz#62cc0d9c7976bd415889aba622ab8f5562082028"
integrity sha512-/+2sCVPXmj07GY/l0ggRr7+trqzX7F9d4QVfSArqIVYmRzc/LkXKr5FlRO6U8uZ/gVVclDDaBxBNITj1z1Z/Zw==
version "3.5.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.5.0.tgz#26e8b7b251c3260a5ac5ba5aef3b4345a0229248"
integrity sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw==
dependencies:
semver "^7.3.5"
@@ -2167,6 +2271,11 @@ node-addon-api@3.0.0:
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz"
integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==
node-addon-api@4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.2.0.tgz#117cbb5a959dff0992e1c586ae0393573e4d2a87"
integrity sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q==
node-addon-api@^3.0.0, node-addon-api@^3.0.2, node-addon-api@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz"
@@ -2526,6 +2635,14 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0:
dependencies:
wrappy "1"
open@^7.4.2:
version "7.4.2"
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
dependencies:
is-docker "^2.0.0"
is-wsl "^2.1.1"
opener@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
@@ -2545,7 +2662,7 @@ os-locale@^2.0.0:
lcid "^1.0.0"
mem "^1.1.0"
os-tmpdir@^1.0.0:
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
@@ -2668,6 +2785,25 @@ parse5@^5.0.0:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
patch-package@^6.4.7:
version "6.4.7"
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148"
integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==
dependencies:
"@yarnpkg/lockfile" "^1.1.0"
chalk "^2.4.2"
cross-spawn "^6.0.5"
find-yarn-workspace-root "^2.0.0"
fs-extra "^7.0.1"
is-ci "^2.0.0"
klaw-sync "^6.0.0"
minimist "^1.2.0"
open "^7.4.2"
rimraf "^2.6.3"
semver "^5.6.0"
slash "^2.0.0"
tmp "^0.0.33"
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
@@ -2683,7 +2819,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2:
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
path-key@^2.0.0:
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
@@ -2705,6 +2841,11 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
picomatch@^2.2.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -3116,7 +3257,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -3135,21 +3276,21 @@ serialize-error@^5.0.0:
dependencies:
type-fest "^0.8.0"
serialport@^9.2.8:
version "9.2.8"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-9.2.8.tgz#abf9f59ac50ac3d130f6a10de141765a9d86da73"
integrity sha512-FsWpMQgSJxi93JgWl5xM1f9/Z8IjRJuaUEoHqLf8FPBLw7gMhInuHOBhI2onQufWIYPGTz3H3oGcu1nCaK1EfA==
serialport@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-10.0.0.tgz#75ec9fd25683dc1acb9d8e24433608f641b0b9e0"
integrity sha512-fqOs6u4buZLbTpAPYZP4j2qwcOJ5Jxtg0x+llJFuMc4AVwrxx+iQc68/46aHCr+qJ2Wo2N86AZ/DDY5acSOODA==
dependencies:
"@serialport/binding-mock" "9.2.4"
"@serialport/bindings" "9.2.8"
"@serialport/parser-byte-length" "9.2.4"
"@serialport/parser-cctalk" "9.2.4"
"@serialport/parser-delimiter" "9.2.4"
"@serialport/parser-inter-byte-timeout" "9.2.4"
"@serialport/parser-readline" "9.2.4"
"@serialport/parser-ready" "9.2.4"
"@serialport/parser-regex" "9.2.4"
"@serialport/stream" "9.2.4"
"@serialport/binding-mock" "10.0.0"
"@serialport/bindings" "10.0.0"
"@serialport/parser-byte-length" "10.0.0"
"@serialport/parser-cctalk" "10.0.0"
"@serialport/parser-delimiter" "10.0.0"
"@serialport/parser-inter-byte-timeout" "10.0.0"
"@serialport/parser-readline" "10.0.0"
"@serialport/parser-ready" "10.0.0"
"@serialport/parser-regex" "10.0.0"
"@serialport/stream" "10.0.0"
debug "^4.3.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
@@ -3204,6 +3345,11 @@ simple-get@^4.0.0:
once "^1.3.1"
simple-concat "^1.0.0"
slash@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
@@ -3536,6 +3682,20 @@ tiny-relative-date@^1.3.0:
resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz"
integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
dependencies:
os-tmpdir "~1.0.2"
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
tough-cookie@~2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz"
@@ -3607,6 +3767,11 @@ unique-string@^1.0.0:
dependencies:
crypto-random-string "^1.0.0"
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
@@ -3741,11 +3906,6 @@ widest-line@^2.0.0:
dependencies:
string-width "^2.1.1"
windows-blurbehind@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/windows-blurbehind/-/windows-blurbehind-1.0.1.tgz#ff098713873304e38330b2c54cc41bb369b587b9"
integrity sha512-1HzHfCiM1ayrbACJu5qE9zELV24uX/tINT6kxaZwLY3rtQAoeav6x9z7LFHWoLaGDN/sYbnK+9Vk0cz7fsk5HQ==
windows-native-registry@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/windows-native-registry/-/windows-native-registry-3.1.0.tgz#909ef3254519fdec57d2f149ac59a2c9dc84419a"

View File

@@ -30,7 +30,7 @@
"cross-env": "7.0.3",
"css-loader": "^6.5.1",
"deep-equal": "2.0.5",
"electron": "13.5.1",
"electron": "16.0.5",
"electron-builder": "^22.14.5",
"electron-download": "^4.1.1",
"electron-installer-snap": "^5.1.0",
@@ -81,7 +81,7 @@
},
"resolutions": {
"lzma-native": "^8.0.0",
"*/node-abi": "^2.30.0",
"*/node-abi": "^3.5.0",
"**/graceful-fs": "^4.2.4"
},
"scripts": {

View File

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

View File

@@ -6,7 +6,6 @@
overflow: hidden;
user-select: none;
-webkit-user-drag: none;
-webkit-font-smoothing: antialiased;
will-change: transform;
cursor: default;
animation: 0.5s ease-out fadeIn;

View File

@@ -7,12 +7,17 @@
overflow: auto;
border-top-left-radius: 0;
border-top-right-radius: 0;
padding: 0 15px;
padding: 10px 15px;
}
.group-header {
padding: 0 1rem;
margin: 20px 0 10px;
margin: 15px 0 10px;
font-weight: bold;
&:first-child {
margin-top: 5px;
}
}
.icon {

View File

@@ -76,4 +76,3 @@ hotkeys:
- 'Ctrl-Alt-T'
profile-selector:
- 'Ctrl-Shift-T'
pluginBlacklist: ['ssh']

View File

@@ -75,4 +75,3 @@ hotkeys:
- '⌘-E'
switch-profile:
- '⌘-Shift-E'
pluginBlacklist: ['ssh']

View File

@@ -77,4 +77,3 @@ hotkeys:
- 'Ctrl-Alt-T'
profile-selector:
- 'Ctrl-Shift-T'
pluginBlacklist: []

View File

@@ -12,7 +12,7 @@ appearance:
frame: thin
css: '/* * { color: blue !important; } */'
opacity: 1.0
vibrancy: true
vibrancy: false
vibrancyType: 'blur'
terminal:
showBuiltinProfiles: true
@@ -35,3 +35,6 @@ version: 1
vault: null
encrypted: false
enableExperimentalFeatures: false
pluginBlacklist: []
hacks:
disableGPU: false

View File

@@ -89,7 +89,7 @@ export class AppService {
}, 30000)
config.ready$.toPromise().then(async () => {
if (this.bootstrapData.isFirstWindow) {
if (this.bootstrapData.isMainWindow) {
if (config.store.recoverTabs) {
const tabs = await this.tabRecovery.recoverTabs()
for (const tab of tabs) {
@@ -115,7 +115,7 @@ export class AppService {
this.tabsChanged.next()
this.tabOpened.next(tab)
if (this.bootstrapData.isFirstWindow) {
if (this.bootstrapData.isMainWindow) {
tab.recoveryStateChangedHint$.subscribe(() => {
this.tabRecovery.saveTabs(this.tabs)
})

View File

@@ -199,3 +199,5 @@ $alert-border-level: 5;
$alert-color-level: -5;
$text-muted: rgba(255, 255, 255, 0.5);
$card-bg: $list-group-bg;

View File

@@ -1,6 +1,6 @@
import { Injectable, NgZone } from '@angular/core'
import { Injectable, NgZone, Inject } from '@angular/core'
import type { Display } from 'electron'
import { ConfigService, DockingService, Screen, PlatformService } from 'tabby-core'
import { ConfigService, DockingService, Screen, PlatformService, BootstrapData, BOOTSTRAP_DATA } from 'tabby-core'
import { ElectronService } from '../services/electron.service'
import { ElectronHostWindow, Bounds } from './hostWindow.service'
@@ -12,6 +12,7 @@ export class ElectronDockingService extends DockingService {
private zone: NgZone,
private hostWindow: ElectronHostWindow,
platform: PlatformService,
@Inject(BOOTSTRAP_DATA) private bootstrapData: BootstrapData,
) {
super()
this.screensChanged$.subscribe(() => this.repositionWindow())
@@ -25,7 +26,7 @@ export class ElectronDockingService extends DockingService {
dock (): void {
const dockSide = this.config.store.appearance.dock
if (dockSide === 'off') {
if (dockSide === 'off' || !this.bootstrapData.isMainWindow) {
this.hostWindow.setAlwaysOnTop(false)
return
}

View File

@@ -43,6 +43,10 @@ export class ElectronHostWindow extends HostWindowService {
electron.ipcRenderer.on('host:window-focused', () => zone.run(() => {
this.windowFocused.next()
}))
electron.ipcRenderer.on('host:became-main-window', () => zone.run(() => {
this.bootstrapData.isMainWindow = true
}))
}
getWindow (): BrowserWindow {

View File

@@ -30,7 +30,7 @@ export class ElectronUpdaterService extends UpdaterService {
}
this.autoUpdater = electron.remote.require('electron-updater').autoUpdater
this.autoUpdater.autoDownload = false
this.autoUpdater.autoDownload = true
this.autoUpdater.autoInstallOnAppQuit = false
this.autoUpdater.on('update-available', () => {

View File

@@ -73,21 +73,22 @@ export class WindowsStockShellsProvider extends ShellProvider {
}
private async getPowerShellPath () {
const ps = 'powershell.exe'
if (!await promisify(hasbin)(ps)) {
for (const searchPath of [
`${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0`,
`${process.env.SystemRoot}\\System32`,
process.env.SystemRoot ?? 'C:\\Windows',
]) {
const newPath = path.join(searchPath, ps)
try {
await fs.stat(newPath)
return newPath
} catch { }
for (const name of ['pwsh.exe', 'powershell.exe']) {
if (await promisify(hasbin)(name)) {
return name
}
}
return ps
for (const psPath of [
`${process.env.USERPROFILE}\\AppData\\Local\\Microsoft\\WindowsApps\\pwsh.exe`,
`${process.env.SystemRoot}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,
`${process.env.SystemRoot}\\System32\\powershell.exe`,
(process.env.SystemRoot ?? 'C:\\Windows') + '\\powerhshell.exe',
]) {
try {
await fs.stat(psPath)
return psPath
} catch { }
}
return 'powershell.exe'
}
}

View File

@@ -24,9 +24,9 @@ ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
placeholder='Search plugins'
)
ngb-accordion.mb-4(*ngIf='availablePlugins$', type='dark', [closeOthers]='true')
ngb-accordion.mb-4(*ngIf='availablePlugins$', [closeOthers]='true')
ng-container(*ngFor='let plugin of (availablePlugins$|async)')
ngb-panel(*ngIf='!isAlreadyInstalled(plugin)', cardClass='bg-dark')
ngb-panel(*ngIf='!isAlreadyInstalled(plugin)')
ng-template(ngbPanelTitle)
.text-left
strong.d-block {{plugin.name}}
@@ -57,9 +57,9 @@ ul.nav-tabs.mb-2(ngbNav, #nav='ngbNav')
li(ngbNavItem)
a(ngbNavLink) Installed
ng-template(ngbNavContent)
ngb-accordion.mb-4(type='dark', [closeOthers]='true')
ngb-accordion.mb-4([closeOthers]='true')
ng-container(*ngFor='let plugin of pluginManager.installedPlugins')
ngb-panel(cardClass='bg-dark')
ngb-panel
ng-template(ngbPanelTitle)
.text-left.mr-auto
div

View File

@@ -8,7 +8,7 @@ import { PluginManagerService } from '../services/pluginManager.service'
enum BusyState { Installing = 'Installing', Uninstalling = 'Uninstalling' }
const FORCE_ENABLE = ['tabby-core', 'tabby-settings', 'tabby-electron', 'tabby-web']
const FORCE_ENABLE = ['tabby-core', 'tabby-settings', 'tabby-electron', 'tabby-web', 'tabby-plugin-manager']
/** @hidden */
@Component({

View File

@@ -20,6 +20,7 @@ export interface SerialProfileOptions extends StreamProcessingOptions, LoginScri
xon?: boolean
xoff?: boolean
xany?: boolean
slowSend?: boolean
}
export const BAUD_RATES = [
@@ -123,7 +124,13 @@ export class SerialSession extends BaseSession {
}
write (data: Buffer): void {
this.streamProcessor.feedFromTerminal(data)
if (!this.profile.options.slowSend) {
this.streamProcessor.feedFromTerminal(data)
} else {
for (const byte of data) {
this.streamProcessor.feedFromTerminal(Buffer.from([byte]))
}
}
}
async destroy (): Promise<void> {

View File

@@ -51,11 +51,15 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
.form-line
.header
.title Parity
input.form-control(
select.form-control(
type='text',
[(ngModel)]='profile.options.parity',
placeholder='none'
[(ngModel)]='profile.options.parity'
)
option(value='none') None
option(value='even') Even
option(value='odd') Odd
option(value='mark', ng:if='hostApp.platform === Platform.Windows') Mark
option(value='space', ng:if='hostApp.platform === Platform.Windows') Space
.form-line
.header
@@ -77,6 +81,12 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
.title Xany
toggle([(ngModel)]='profile.options.xany')
.form-line
.header
.title Slow feed
.description Sends data one byte at a time
toggle([(ngModel)]='profile.options.slowFeed')
li(ngbNavItem)
a(ngbNavLink) Login scripts
ng-template(ngbNavContent)

View File

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

View File

@@ -98,6 +98,8 @@ h3.mb-3 Window
)
| Full
h3.mt-4 Docking
.form-line(*ngIf='docking')
.header
.title Dock the terminal
@@ -211,6 +213,8 @@ h3.mb-3 Window
(ngModelChange)='saveConfiguration(); ',
)
h3.mt-4 Tabs
.form-line
.header
.title Tabs location
@@ -288,3 +292,15 @@ h3.mb-3 Window
[(ngModel)]='config.store.terminal.hideCloseButton',
(ngModelChange)='config.save();',
)
h3.mt-4 Hacks
.form-line
.header
.title Disable GPU acceleration
.description Tick this if you're experiencing aliasing, ghosting or other visual issues
toggle(
[(ngModel)]='config.store.hacks.disableGPU',
(ngModelChange)='config.save(); config.requestRestart()'
)

View File

@@ -41,7 +41,7 @@ export class ConfigSyncService {
}
isAvailable (): boolean {
return this.config.store.enableExperimentalFeatures && this.hostApp.platform !== Platform.Web
return this.hostApp.platform !== Platform.Web
}
isEnabled (): boolean {

View File

@@ -24,7 +24,7 @@
"@types/node": "16.0.1",
"@types/ssh2": "^0.5.46",
"ansi-colors": "^4.1.1",
"sshpk": "Eugeny/node-sshpk#89ed17dfae425a8b629873c8337e77d26838c04f",
"sshpk": "Eugeny/node-sshpk#d92ddb8def1778e876703f90cd6ff2c90900f390",
"strip-ansi": "^7.0.0"
},
"dependencies": {

View File

@@ -1,9 +1,6 @@
:host {
display: flex;
flex-direction: column;;
> * {
}
flex-direction: column;
> .header {
padding: 5px 15px 0 20px;

View File

@@ -227,9 +227,9 @@ sprintf@0.1.x:
resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf"
integrity sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=
sshpk@Eugeny/node-sshpk#89ed17dfae425a8b629873c8337e77d26838c04f:
sshpk@Eugeny/node-sshpk#d92ddb8def1778e876703f90cd6ff2c90900f390:
version "1.16.1"
resolved "https://codeload.github.com/Eugeny/node-sshpk/tar.gz/89ed17dfae425a8b629873c8337e77d26838c04f"
resolved "https://codeload.github.com/Eugeny/node-sshpk/tar.gz/d92ddb8def1778e876703f90cd6ff2c90900f390"
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"

View File

@@ -25,13 +25,13 @@
"hexer": "^1.5.0",
"ps-node": "^0.1.6",
"runes": "^0.4.2",
"xterm": "npm:@tabby-gang/xterm@^4.15.1-beta.1",
"xterm": "npm:@tabby-gang/xterm@^4.16.0",
"xterm-addon-fit": "^0.5.0",
"xterm-addon-ligatures": "^0.5.0",
"xterm-addon-search": "^0.8.1",
"xterm-addon-search": "^0.8.2",
"xterm-addon-serialize": "^0.6.1",
"xterm-addon-unicode11": "^0.3.0",
"xterm-addon-webgl": "^0.11.3",
"xterm-addon-webgl": "^0.11.4",
"zmodem.js": "^0.1.9"
},
"resolutions": {

View File

@@ -8,6 +8,7 @@ h3.mb-3 Appearance
.input-group.w-75
input.form-control.w-75(
type='text',
[showHint]='true',
[ngbTypeahead]='fontAutocomplete',
[(ngModel)]='config.store.terminal.font',
(ngModelChange)='config.save()',
@@ -107,6 +108,16 @@ h3.mb-3 Appearance
(ngModelChange)='config.save()'
)
.form-line
.header
.title Line padding
.description Additional space between lines
input.form-control(
type='number',
[(ngModel)]='config.store.terminal.linePadding',
(ngModelChange)='config.save()',
)
.form-line
.header

View File

@@ -72,3 +72,7 @@
height: $toolbarHeight;
}
}
:host-context(.platform-darwin) .terminal-toolbar {
padding-left: 90px;
}

View File

@@ -13,6 +13,16 @@ div
option(value='xterm') xterm
option(value='xterm-webgl') xterm (WebGL)
.form-line
.header
.title Scrollback
.description Number of lines kept in the buffer
input.form-control(
type='number',
[(ngModel)]='config.store.terminal.scrollbackLines',
(ngModelChange)='config.save()',
)
div.mt-4
h3 Keyboard

View File

@@ -153,6 +153,7 @@ export class TerminalConfigProvider extends ConfigProvider {
[Platform.Linux]: {
terminal: {
font: 'Liberation Mono',
pasteOnMiddleClick: false, // handled by OS
},
hotkeys: {
'ctrl-c': ['Ctrl-C'],

View File

@@ -163,7 +163,7 @@ export class ZModemDecorator extends TerminalDecorator {
const offer = {
name: transfer.getName(),
size: transfer.getSize(),
mode: 0o755,
mode: transfer.getMode(),
files_remaining: filesRemaining,
bytes_remaining: sizeRemaining,
}

View File

@@ -36,7 +36,6 @@
*/
.xterm {
font-feature-settings: "liga" 0;
position: relative;
user-select: none;
-ms-user-select: none;
@@ -55,21 +54,21 @@
* The z-index of the helpers must be higher than the canvases in order for
* IMEs to appear on top.
*/
z-index: 10;
z-index: 5;
}
.xterm .xterm-helper-textarea {
/*
* HACK: to fix IE's blinking cursor
* Move textarea out of the screen to the far left, so that the cursor is not visible.
*/
padding: 0;
border: 0;
margin: 0;
/* Move textarea out of the screen to the far left, so that the cursor is not visible */
position: absolute;
opacity: 0;
left: -9999em;
top: 0;
width: 0;
height: 0;
z-index: -10;
z-index: -5;
/** Prevent wrapping so the IME appears against the textarea at the correct position */
white-space: nowrap;
overflow: hidden;
@@ -134,7 +133,8 @@
cursor: default;
}
.xterm.xterm-cursor-pointer {
.xterm.xterm-cursor-pointer,
.xterm .xterm-cursor-pointer {
cursor: pointer;
}
@@ -150,7 +150,7 @@
top: 0;
bottom: 0;
right: 0;
z-index: 100;
z-index: 10;
color: transparent;
}
@@ -170,6 +170,10 @@
text-decoration: underline;
}
.xterm-strikethrough {
text-decoration: line-through;
}
/*----*/
@font-face {

View File

@@ -164,10 +164,10 @@ xterm-addon-ligatures@^0.5.0:
font-finder "^1.1.0"
font-ligatures "^1.4.0"
xterm-addon-search@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.8.1.tgz#dfc557e9bcf5fd8ed96292c0d271aa865bc545d5"
integrity sha512-OtOaC9gxD2Q4ZnjZrCSRZmKLwwUjXX3gP7mIzq8Rs50317DGRDqgTLuHTYv/Nx/LvI5ceVFRYCxK36Ixs1nXNw==
xterm-addon-search@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.8.2.tgz#be7aa74d5ff12c901707c6ff674229f214318032"
integrity sha512-I1863mjn8P6uVrqm/X+btalVsqjAKLhnhpbP7SavAOpEkI1jJhbHU2UTp7NjeRtcKTks6UWk/ycgds5snDSejg==
xterm-addon-serialize@^0.6.1:
version "0.6.1"
@@ -179,15 +179,15 @@ xterm-addon-unicode11@^0.3.0:
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.3.0.tgz#e4435c3c91a5294a7eb8b79c380acbb28a659463"
integrity sha512-x5fHDZT2j9tlTlHnzPHt++9uKZ2kJ/lYQOj3L6xJA22xoJsS8UQRw/5YIFg2FUHqEAbV77Z1fZij/9NycMSH/A==
xterm-addon-webgl@^0.11.3:
version "0.11.3"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.11.3.tgz#4d13933d8810d146613bbb66d59ea90de561f999"
integrity sha512-Lr6VjLYOrgxLNaUNLDdCBehkr1Vaja/laDMTtvghfRusUMRXTlRKlCb7E3yqx4VgCg5KcV96cArmh88KcwSpUg==
xterm-addon-webgl@^0.11.4:
version "0.11.4"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.11.4.tgz#e22f3ec0cafca3d4adcabb89bb7c16efaaf3c8db"
integrity sha512-/a/VFeftc+etGXQYWaaks977j1P7/wickBXn15zDxZzXYYMT9RN17ztqyIDVLXg9krtg28+icKK6lvgIYghJ0w==
"xterm@npm:@tabby-gang/xterm@^4.15.1-beta.1":
version "4.15.1-beta.1"
resolved "https://registry.yarnpkg.com/@tabby-gang/xterm/-/xterm-4.15.1-beta.1.tgz#217a52f4e614cbbe567413e921b221e12a4f31c2"
integrity sha512-rn7AfdAQwl4sLvgUVJqJNyZP/0rnrBHjENV/iwgbd6bPfKcpynhjog7fv4Jxmp73itPnLuIs71D2kk9t1Hu0Wg==
"xterm@npm:@tabby-gang/xterm@^4.16.0":
version "4.16.0"
resolved "https://registry.yarnpkg.com/@tabby-gang/xterm/-/xterm-4.16.0.tgz#5706adc800aa515d3ae214cba9ceec670500735d"
integrity sha512-TeEhVmMtbkLyUIELHhWO39oxvD/KG7ZTLlx/OyDRXAeU6FoZFRATBKa8S70teJkyZ0yDgy8QZlRyx0HdRIIoyA==
yallist@^4.0.0:
version "4.0.0"

View File

@@ -125,20 +125,20 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==
"@electron/get@^1.0.1":
version "1.12.2"
resolved "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz"
integrity sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==
"@electron/get@^1.13.0":
version "1.13.1"
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.13.1.tgz#42a0aa62fd1189638bd966e23effaebb16108368"
integrity sha512-U5vkXDZ9DwXtkPqlB45tfYnnYBN8PePp1z/XDCupnSpdrxT8/ThCv9WCwPLf9oqiSGZTkH6dx2jDUPuoXpjkcA==
dependencies:
debug "^4.1.1"
env-paths "^2.2.0"
fs-extra "^8.1.0"
got "^9.6.0"
progress "^2.0.3"
sanitize-filename "^1.6.2"
semver "^6.2.0"
sumchecker "^3.0.1"
optionalDependencies:
global-agent "^2.0.2"
global-agent "^3.0.0"
global-tunnel-ng "^2.7.1"
"@electron/universal@1.0.5":
@@ -2082,7 +2082,7 @@ core-js@^2.4.0:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
core-js@^3.18.2, core-js@^3.6.5:
core-js@^3.18.2:
version "3.18.2"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.2.tgz#63a551e8a29f305cd4123754846e65896619ba5b"
integrity sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ==
@@ -2664,12 +2664,12 @@ electron-to-chromium@^1.3.723:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052"
integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig==
electron@13.5.1:
version "13.5.1"
resolved "https://registry.yarnpkg.com/electron/-/electron-13.5.1.tgz#76c02c39be228532f886a170b472cbd3d93f0d0f"
integrity sha512-ZyxhIhmdaeE3xiIGObf0zqEyCyuIDqZQBv9NKX8w5FNzGm87j4qR0H1+GQg6vz+cA1Nnv1x175Zvimzc0/UwEQ==
electron@16.0.5:
version "16.0.5"
resolved "https://registry.yarnpkg.com/electron/-/electron-16.0.5.tgz#16394c196e42215a82da1f4f39a3f757caf33cb1"
integrity sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==
dependencies:
"@electron/get" "^1.0.1"
"@electron/get" "^1.13.0"
"@types/node" "^14.6.2"
extract-zip "^1.0.3"
@@ -3517,13 +3517,12 @@ glob@~7.1.1, glob@~7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
global-agent@^2.0.2:
version "2.1.12"
resolved "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz"
integrity sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==
global-agent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==
dependencies:
boolean "^3.0.1"
core-js "^3.6.5"
es6-error "^4.1.1"
matcher "^3.0.0"
roarr "^2.15.3"
@@ -5335,17 +5334,10 @@ no-case@^3.0.4:
lower-case "^2.0.2"
tslib "^2.0.3"
node-abi@^2.30.0, node-abi@^3.0.0:
version "2.30.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.0.tgz#8be53bf3e7945a34eea10e0fc9a5982776cf550b"
integrity sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==
dependencies:
semver "^5.4.1"
node-abi@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.2.0.tgz#c8ec6874f808b4da5fbd56e9506390ce65b152a2"
integrity sha512-/qb92JAb2uiwEQ4aXpVphXfGJU77qdCieXACDaIofcMz+YMPBmnCo8v0OlzJBuXh5QHmMiiI/GKyiCzbjOMn2g==
node-abi@^3.0.0, node-abi@^3.2.0, node-abi@^3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.5.0.tgz#26e8b7b251c3260a5ac5ba5aef3b4345a0229248"
integrity sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw==
dependencies:
semver "^7.3.5"
@@ -7178,7 +7170,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sanitize-filename@^1.6.2, sanitize-filename@^1.6.3:
sanitize-filename@^1.6.3:
version "1.6.3"
resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz"
integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==