diff --git a/.all-contributorsrc b/.all-contributorsrc
index c0d413110a..22a1f896dd 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -920,6 +920,33 @@
"contributions": [
"doc"
]
+ },
+ {
+ "login": "daniel347x",
+ "name": "Dan Nissenbaum",
+ "avatar_url": "https://avatars.githubusercontent.com/u/309746?v=4",
+ "profile": "https://github.com/daniel347x",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "DunklerPhoenix",
+ "name": "RogueThorn",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1261305?v=4",
+ "profile": "https://github.com/DunklerPhoenix",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "spenserblack",
+ "name": "Spenser Black",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8546709?v=4",
+ "profile": "http://spenserblack.github.io",
+ "contributions": [
+ "code"
+ ]
}
],
"contributorsPerLine": 7,
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000000..1cc52a73d9
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,39 @@
+root = true
+
+[*]
+end_of_line = LF
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.sln]
+indent_style = tab
+# TODO Determine if there is a preferred tab width for this file type
+
+# Programming/Scripts
+[*.{js,ts}]
+indent_style = space
+indent_size = 4
+
+[*.cpp]
+indent_style = tab
+# TODO Determine if there is a preferred tab width for this file type
+
+# Markup
+[*.pug]
+indent_style = space
+indent_size = 4
+
+# Stylesheets
+[*.scss]
+indent_style = space
+indent_size = 4
+
+# Data Files
+[*.json]
+indent_style = space
+indent_size = 2
+
+[*.{yaml,yml}]
+indent_style = space
+indent_size = 2
diff --git a/README.de-DE.md b/README.de-DE.md
index f58c2241f4..d94683bc3c 100644
--- a/README.de-DE.md
+++ b/README.de-DE.md
@@ -154,136 +154,141 @@ Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org
diff --git a/README.id-ID.md b/README.id-ID.md
index 121944f9f7..c07aaff43c 100644
--- a/README.id-ID.md
+++ b/README.id-ID.md
@@ -153,136 +153,141 @@ Terima kasih kepada mereka yang telah membantu ([emoji key](https://allcontribut
diff --git a/README.it-IT.md b/README.it-IT.md
index 1232aa00cd..6faaa4e942 100644
--- a/README.it-IT.md
+++ b/README.it-IT.md
@@ -149,136 +149,141 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do
diff --git a/README.ja-JP.md b/README.ja-JP.md
index 9f36a47bf9..b43047a5e5 100644
--- a/README.ja-JP.md
+++ b/README.ja-JP.md
@@ -153,136 +153,141 @@ WindowsδΈγ§γ―γ`Tabby.exe`γγγε ΄ζγ¨εγε ΄ζγ«`data`γγ©γ«
diff --git a/README.ko-KR.md b/README.ko-KR.md
index f51cdfe41c..a5126ec69c 100644
--- a/README.ko-KR.md
+++ b/README.ko-KR.md
@@ -143,136 +143,141 @@ Pull requests and plugins are welcome!
diff --git a/README.md b/README.md
index ff9ea8c10b..cf370fe388 100644
--- a/README.md
+++ b/README.md
@@ -153,136 +153,141 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
diff --git a/README.ru-RU.md b/README.ru-RU.md
index ba2e471bac..4d57ba63e0 100644
--- a/README.ru-RU.md
+++ b/README.ru-RU.md
@@ -149,136 +149,141 @@ Pull-Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ!
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 3f9268ac55..ee5bfb625f 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -148,136 +148,141 @@
diff --git a/tabby-community-color-schemes/.editorconfig b/tabby-community-color-schemes/.editorconfig
new file mode 100644
index 0000000000..d4db951e50
--- /dev/null
+++ b/tabby-community-color-schemes/.editorconfig
@@ -0,0 +1,3 @@
+[schemes/*]
+indent_style = space
+indent_size = 15
diff --git a/tabby-community-color-schemes/schemes/Melange Dark b/tabby-community-color-schemes/schemes/Melange Dark
new file mode 100644
index 0000000000..f65dbc642b
--- /dev/null
+++ b/tabby-community-color-schemes/schemes/Melange Dark
@@ -0,0 +1,44 @@
+!
+! Melange Dark
+! https://github.com/savq/melange
+!
+*.foreground: #ece1d7
+*.background: #2a2520
+*.cursorColor: #ece1d7
+!
+! Black
+*.color0: #352f2a
+*.color8: #4d453e
+!
+! Red
+*.color1 #b65c60
+*.color9 #f17c64
+!
+! Green
+*.color2 #78997a
+*.color10 #99d59d
+!
+! Yellow
+*.color3 #ebc06d
+*.color11 #ebc06d
+!
+! Blue
+*.color4 #9aacce
+*.color12 #9aacce
+!
+! Magenta
+*.color5 #b380b0
+*.color13 #ce9bcb
+!
+! Cyan
+*.color6 #86a3a3
+*.color14 #88b3b2
+!
+! White
+*.color7 #a38d78
+*.color15 #c1a78e
+!
+! Bold, Italic, Underline
+*.colorBD: #fff4ea
+!*.colorIT:
+!*.colorUL:
diff --git a/tabby-core/src/api/platform.ts b/tabby-core/src/api/platform.ts
index 79362cb0da..73b081ba12 100644
--- a/tabby-core/src/api/platform.ts
+++ b/tabby-core/src/api/platform.ts
@@ -145,7 +145,7 @@ export abstract class PlatformService {
throw new Error('Not implemented')
}
- exec (app: string, argv: string[]): void {
+ async exec (app: string, argv: string[]): Promise {
throw new Error('Not implemented')
}
diff --git a/tabby-core/src/tabContextMenu.ts b/tabby-core/src/tabContextMenu.ts
index 63b785a74b..d89f126332 100644
--- a/tabby-core/src/tabContextMenu.ts
+++ b/tabby-core/src/tabContextMenu.ts
@@ -28,7 +28,7 @@ export class TabManagementContextMenu extends TabContextMenuItemProvider {
super()
}
- async getItems (tab: BaseTabComponent, tabHeader?: TabHeaderComponent): Promise {
+ async getItems (tab: BaseTabComponent): Promise {
let items: MenuItemOptions[] = [
{
label: this.translate.instant('Close'),
diff --git a/tabby-electron/src/services/platform.service.ts b/tabby-electron/src/services/platform.service.ts
index 806a15dd89..7f655fb112 100644
--- a/tabby-electron/src/services/platform.service.ts
+++ b/tabby-electron/src/services/platform.service.ts
@@ -80,8 +80,8 @@ export class ElectronPlatformService extends PlatformService {
return null
}
- exec (app: string, argv: string[]): void {
- execFile(app, argv)
+ async exec (app: string, argv: string[]): Promise {
+ await execFile(app, argv)
}
isShellIntegrationSupported (): boolean {
diff --git a/tabby-linkifier/package.json b/tabby-linkifier/package.json
index 6b6dec0cf0..31ebb4b44b 100644
--- a/tabby-linkifier/package.json
+++ b/tabby-linkifier/package.json
@@ -17,6 +17,7 @@
"author": "Eugene Pankov",
"license": "MIT",
"devDependencies": {
- "untildify": "^4.0.0"
+ "untildify": "^4.0.0",
+ "xterm-addon-web-links": "^0.7.0"
}
}
diff --git a/tabby-linkifier/src/decorator.ts b/tabby-linkifier/src/decorator.ts
index ffc6e520e1..2927868360 100644
--- a/tabby-linkifier/src/decorator.ts
+++ b/tabby-linkifier/src/decorator.ts
@@ -1,7 +1,7 @@
import { Inject, Injectable } from '@angular/core'
-import { ConfigService, PlatformService, TranslateService } from 'tabby-core'
-import { TerminalDecorator, BaseTerminalTabComponent } from 'tabby-terminal'
-
+import { ConfigService, PlatformService } from 'tabby-core'
+import { TerminalDecorator, BaseTerminalTabComponent, XTermFrontend } from 'tabby-terminal'
+import { WebLinksAddon } from 'xterm-addon-web-links'
import { LinkHandler } from './api'
@Injectable()
@@ -9,55 +9,46 @@ export class LinkHighlighterDecorator extends TerminalDecorator {
constructor (
private config: ConfigService,
private platform: PlatformService,
- private translate: TranslateService,
@Inject(LinkHandler) private handlers: LinkHandler[],
) {
super()
}
attach (tab: BaseTerminalTabComponent): void {
- if (!(tab.frontend as any).xterm) {
- // not hterm
+ if (!(tab.frontend instanceof XTermFrontend)) {
+ // not xterm
return
}
+ tab.frontend.xterm.options.linkHandler = {
+ activate: (event, uri) => {
+ if (!this.willHandleEvent(event)) {
+ return
+ }
+ this.platform.openExternal(uri)
+ },
+ }
+
for (const handler of this.handlers) {
const getLink = async uri => handler.convert(uri, tab)
const openLink = async uri => handler.handle(await getLink(uri), tab)
- ;(tab.frontend as any).xterm.registerLinkMatcher(
- handler.regex,
- (event: MouseEvent, uri: string) => {
+ const addon = new WebLinksAddon(
+ async (event, uri) => {
if (!this.willHandleEvent(event)) {
return
}
+ if (!await handler.verify(await handler.convert(uri, tab), tab)) {
+ return
+ }
openLink(uri)
},
{
- priority: handler.priority,
- validationCallback: async (uri: string, callback: (isValid: boolean) => void) => {
- callback(await handler.verify(await handler.convert(uri, tab), tab))
- },
- willLinkActivate: (event: MouseEvent, uri: string) => {
- if (event.button === 2) {
- this.platform.popupContextMenu([
- {
- click: () => openLink(uri),
- label: this.translate.instant('Open'),
- },
- {
- click: async () => {
- this.platform.setClipboard({ text: await getLink(uri) })
- },
- label: this.translate.instant('Copy'),
- },
- ])
- return false
- }
- return this.willHandleEvent(event)
- },
- }
+ urlRegex: handler.regex,
+ },
)
+
+ tab.frontend.xterm.loadAddon(addon)
}
}
diff --git a/tabby-linkifier/yarn.lock b/tabby-linkifier/yarn.lock
index 92ca8cf929..48e57f8ff6 100644
--- a/tabby-linkifier/yarn.lock
+++ b/tabby-linkifier/yarn.lock
@@ -6,3 +6,8 @@ untildify@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+
+xterm-addon-web-links@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-web-links/-/xterm-addon-web-links-0.7.0.tgz#dceac36170605f9db10a01d716bd83ee38f65c17"
+ integrity sha512-6PqoqzzPwaeSq22skzbvyboDvSnYk5teUYEoKBwMYvhbkwOQkemZccjWHT5FnNA8o1aInTc4PRYAl4jjPucCKA==
diff --git a/tabby-ssh/package.json b/tabby-ssh/package.json
index 9683b5ef14..a3e2932ddb 100644
--- a/tabby-ssh/package.json
+++ b/tabby-ssh/package.json
@@ -28,8 +28,10 @@
"strip-ansi": "^7.0.0"
},
"dependencies": {
+ "@luminati-io/socksv5": "^0.0.7",
+ "node-forge": "^1.3.1",
"run-script-os": "^1.1.3",
- "@luminati-io/socksv5": "^0.0.7"
+ "tmp-promise": "^3.0.3"
},
"peerDependencies": {
"@angular/animations": "^9.1.9",
diff --git a/tabby-ssh/src/services/ssh.service.ts b/tabby-ssh/src/services/ssh.service.ts
index 4b99769a03..5189a1e151 100644
--- a/tabby-ssh/src/services/ssh.service.ts
+++ b/tabby-ssh/src/services/ssh.service.ts
@@ -1,5 +1,9 @@
import * as shellQuote from 'shell-quote'
import * as net from 'net'
+import * as fs from 'fs/promises'
+import * as tmp from 'tmp-promise'
+import * as sshpk from 'sshpk'
+import * as forge from 'node-forge'
import socksv5 from '@luminati-io/socksv5'
import { Duplex } from 'stream'
import { Injectable } from '@angular/core'
@@ -45,11 +49,18 @@ export class SSHService {
return
}
const args = [await this.getWinSCPURI(session.profile, undefined, session.authUsername ?? undefined)]
+
+ let tmpFile: tmp.FileResult|null = null
if (session.activePrivateKey) {
- args.push('/privatekey')
- args.push(session.activePrivateKey)
+ tmpFile = await tmp.file()
+ const privateKey = await sshpk.parsePrivateKey(session.activePrivateKey, 'auto')/* .toString('putty') */
+ const forgePrivateKey = forge.pki.decryptRsaPrivateKey(privateKey.toString('pem'))
+ const ppk = forge.ssh.privateKeyToPutty(forgePrivateKey)
+ await fs.writeFile(tmpFile.path, ppk)
+ args.push(`/privatekey=${tmpFile.path}`)
}
- this.platform.exec(path, args)
+ await this.platform.exec(path, args)
+ tmpFile?.cleanup()
}
}
diff --git a/tabby-ssh/yarn.lock b/tabby-ssh/yarn.lock
index bc0fdb4e8e..0f98010f09 100644
--- a/tabby-ssh/yarn.lock
+++ b/tabby-ssh/yarn.lock
@@ -156,6 +156,18 @@ getpass@^0.1.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -195,6 +207,18 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
+minimatch@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+node-forge@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
+ integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
+
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -212,6 +236,13 @@ pkginfo@0.3.x:
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21"
integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=
+rimraf@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
run-script-os@^1.1.3:
version "1.1.6"
resolved "https://registry.yarnpkg.com/run-script-os/-/run-script-os-1.1.6.tgz#8b0177fb1b54c99a670f95c7fdc54f18b9c72347"
@@ -253,6 +284,20 @@ strip-ansi@^7.0.0:
dependencies:
ansi-regex "^6.0.0"
+tmp-promise@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
+ integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==
+ dependencies:
+ tmp "^0.2.0"
+
+tmp@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
+ integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
+ dependencies:
+ rimraf "^3.0.0"
+
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
diff --git a/tabby-terminal/package.json b/tabby-terminal/package.json
index 2a6606de76..1d5aa91b67 100644
--- a/tabby-terminal/package.json
+++ b/tabby-terminal/package.json
@@ -26,7 +26,8 @@
"ngx-colors": "^3.0.4",
"ps-node": "^0.1.6",
"runes": "^0.4.2",
- "xterm": "npm:@tabby-gang/xterm@^4.19.0-beta.4",
+ "xterm": "^5.0.0",
+ "xterm-addon-canvas": "^0.2.0",
"xterm-addon-fit": "^0.6.0-beta.8",
"xterm-addon-image": "^0.1.0",
"xterm-addon-ligatures": "^0.6.0-beta.14",
diff --git a/tabby-terminal/src/frontends/xtermFrontend.ts b/tabby-terminal/src/frontends/xtermFrontend.ts
index 532920d6e4..72773ed641 100644
--- a/tabby-terminal/src/frontends/xtermFrontend.ts
+++ b/tabby-terminal/src/frontends/xtermFrontend.ts
@@ -10,6 +10,7 @@ import { WebglAddon } from 'xterm-addon-webgl'
import { Unicode11Addon } from 'xterm-addon-unicode11'
import { SerializeAddon } from 'xterm-addon-serialize'
import { ImageAddon } from 'xterm-addon-image'
+import { CanvasAddon } from 'xterm-addon-canvas'
import './xterm.css'
import deepEqual from 'deep-equal'
import { Attributes } from 'xterm/src/common/buffer/Constants'
@@ -60,9 +61,9 @@ class FlowControl {
/** @hidden */
export class XTermFrontend extends Frontend {
enableResizing = true
+ xterm: Terminal
protected xtermCore: any
protected enableWebGL = false
- private xterm: Terminal
private element?: HTMLElement
private configuredFontSize = 0
private configuredLinePadding = 0
@@ -76,6 +77,7 @@ export class XTermFrontend extends Frontend {
private serializeAddon = new SerializeAddon()
private ligaturesAddon?: LigaturesAddon
private webGLAddon?: WebglAddon
+ private canvasAddon?: CanvasAddon
private opened = false
private resizeObserver?: any
private flowControl: FlowControl
@@ -94,6 +96,7 @@ export class XTermFrontend extends Frontend {
this.xterm = new Terminal({
allowTransparency: true,
+ allowProposedApi: true,
overviewRulerWidth: 8,
windowsMode: process.platform === 'win32',
})
@@ -236,6 +239,14 @@ export class XTermFrontend extends Frontend {
).subscribe(() => {
this.webGLAddon?.clearTextureAtlas()
})
+ } else {
+ this.canvasAddon = new CanvasAddon()
+ this.xterm.loadAddon(this.canvasAddon)
+ this.platformService.displayMetricsChanged$.pipe(
+ takeUntil(this.destroyed$),
+ ).subscribe(() => {
+ this.canvasAddon?.clearTextureAtlas()
+ })
}
this.ready.next()
@@ -275,6 +286,7 @@ export class XTermFrontend extends Frontend {
destroy (): void {
super.destroy()
this.webGLAddon?.dispose()
+ this.canvasAddon?.dispose()
this.xterm.dispose()
}
@@ -356,7 +368,6 @@ export class XTermFrontend extends Frontend {
})
this.xterm.options.fontFamily = getCSSFontFamily(config)
- this.xterm.options.bellStyle = config.terminal.bell
this.xterm.options.cursorStyle = {
beam: 'bar',
}[config.terminal.cursor] || config.terminal.cursor
@@ -375,7 +386,7 @@ export class XTermFrontend extends Frontend {
const theme: ITheme = {
foreground: config.terminal.colorScheme.foreground,
- selection: config.terminal.colorScheme.selection || '#88888888',
+ selectionBackground: config.terminal.colorScheme.selection || '#88888888',
selectionForeground: config.terminal.colorScheme.selectionForeground || undefined,
background: config.terminal.background === 'colorScheme' ? config.terminal.colorScheme.background : '#00000000',
cursor: config.terminal.colorScheme.cursor,
@@ -472,14 +483,14 @@ export class XTermFrontend extends Frontend {
if (!selection) {
return ''
}
- if (selection.startRow === selection.endRow) {
- html += this.getLineAsHTML(selection.startRow, selection.startColumn, selection.endColumn)
+ if (selection.start.y === selection.end.y) {
+ html += this.getLineAsHTML(selection.start.y, selection.start.x, selection.end.x)
} else {
- html += this.getLineAsHTML(selection.startRow, selection.startColumn, this.xterm.cols)
- for (let y = selection.startRow + 1; y < selection.endRow; y++) {
+ html += this.getLineAsHTML(selection.start.y, selection.start.x, this.xterm.cols)
+ for (let y = selection.start.y + 1; y < selection.end.y; y++) {
html += this.getLineAsHTML(y, 0, this.xterm.cols)
}
- html += this.getLineAsHTML(selection.endRow, 0, selection.endColumn)
+ html += this.getLineAsHTML(selection.end.y, 0, selection.end.x)
}
html += ''
return html
diff --git a/tabby-terminal/yarn.lock b/tabby-terminal/yarn.lock
index f273f25c39..9ecab79c03 100644
--- a/tabby-terminal/yarn.lock
+++ b/tabby-terminal/yarn.lock
@@ -104,7 +104,7 @@ ngx-colors@^3.0.4:
opentype.js@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-0.8.0.tgz#acabcfa1642fbe894a3e4d759e43ba694e02bd35"
- integrity sha1-rKvPoWQvvolKPk11nkO6aU4CvTU=
+ integrity sha512-FQHR4oGP+a0m/f6yHoRpBOIbn/5ZWxKd4D/djHVJu8+KpBTYrJda0b7mLcgDEMWXE9xBCJm+qb0yv6FcvPjukg==
dependencies:
tiny-inflate "^1.0.2"
@@ -157,48 +157,53 @@ xtend@^4.0.0:
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+xterm-addon-canvas@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.2.0.tgz#ba0080d4071f172f94e8c0b5e6151dd7e386f1a1"
+ integrity sha512-b4tMT05US9Rlqv6R0XZTHsfq8MRKzwxITwpvckuod/l4lokcCokHPbgpYAytOgrzqkzWjYI+Ol8en6cMGf8ncg==
+
xterm-addon-fit@^0.6.0-beta.8:
- version "0.6.0-beta.9"
- resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.6.0-beta.9.tgz#55d550b7e8f3b90ee0781fdddf876b8502a31540"
- integrity sha512-QrlwItVFiapkiJ2YL2rj2drtOvFmr8luDyV286MCrVSK4iGxSnsOdT+NcjeNig1lqYmy5FAo8iuP4FPY//NDog==
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.6.0.tgz#142e1ce181da48763668332593fc440349c88c34"
+ integrity sha512-9/7A+1KEjkFam0yxTaHfuk9LEvvTSBi0PZmEkzJqgafXPEXL9pCMAVV7rB09sX6ATRDXAdBpQhZkhKj7CGvYeg==
xterm-addon-image@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.1.0.tgz#ead96aa224f5fcbfb45da2907f02368fe92985e6"
- integrity sha512-xMvcEQ2rVUIXbbj5BRhznrZU24CRaMiSo8l2HH/E1FeE+G+KKduoF6mwja856/n4ekZ7K0ALZmmyDsbZODhDqQ==
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.1.3.tgz#20593d93b51ab3408debb31f66f8700a2e60ed2d"
+ integrity sha512-9J+DnI/MlanAv+gaaTcTXcqXK8fU/FYiWbaL0C5+YY2lbflpGSk7XV4K95txbix4AdV85RfIDByUm7VJZRWs8g==
xterm-addon-ligatures@^0.6.0-beta.14:
- version "0.6.0-beta.14"
- resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.6.0-beta.14.tgz#392b8df0e32dcfc87f43b79901ec1c2abc997ae7"
- integrity sha512-WeObuNFfGULKhfvbFyCccjxBk+BX6YMvG54lu40kgW5ubwpt0BcnKTQAxHvt9mSeT0lG0A5GxcbimBeRWc484Q==
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.6.0.tgz#c51801b0150c62ac1165654757b55c796457d195"
+ integrity sha512-DxiYCXXYEpnwr8li4/QhG64exjrLX1nHBfNNfrQgx5e8Z9tK2SjWKpxI6PZEy++8+YdL1F7VjWI4aKOaDt2VVw==
dependencies:
font-finder "^1.1.0"
font-ligatures "^1.4.1"
xterm-addon-search@^0.9.0-beta.18:
- version "0.9.0-beta.37"
- resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.37.tgz#84a020f03b2cacc5afac78ca6ff2f1eb86fb6710"
- integrity sha512-bfeFgKJkDYyIgqpWiV1oWYqDiTo+SHTeIPEbpOfxDr97pc3PtDF1Tyd79PrvJNfoxaV3VMUo//UEOy4D+KY9OQ==
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0.tgz#95278ebb818cfcf882209ae75be96e0bea5d52a5"
+ integrity sha512-aoolI8YuHvdGw+Qjg8g2M4kst0v86GtB7WeBm4F0jNXA005/6QbWWy9eCsvnIDLJOFI5JSSrZnD6CaOkvBQYPA==
xterm-addon-serialize@^0.7.0-beta.12:
- version "0.7.0-beta.12"
- resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.7.0-beta.12.tgz#4f845d8b1a9f9b7ae3f910455ce8c58b041babc7"
- integrity sha512-b4Ug0B/RSJMux+KAcp+PXVqubVyXjN1yCQw1FOkgVYTpmd9AH/X+EcxKml5Lz8DsKmsXqfD9AlV3WpEeT+OtMw==
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.7.0.tgz#cc7ef78972c8425b81dd6ae0a76824ce033d1e5f"
+ integrity sha512-ZfZ4Zj4uTEBFnUA0exipDGZ14jfiWLCov7gIt2OwIjQEz2ey8ic5kL/cxYz5antNz8/hTSA2qZcyA6VyyQASOQ==
xterm-addon-unicode11@^0.4.0-beta.3:
- version "0.4.0-beta.3"
- resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.3.tgz#f350184155fafd5ad0d6fbf31d13e6ca7dea1efa"
- integrity sha512-FryZAVwbUjKTmwXnm1trch/2XO60F5JsDvOkZhzobV1hm10sFLVuZpFyHXiUx7TFeeFsvNP+S77LAtWoeT5z+Q==
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0.tgz#59a4abbb591befb69ca0c5f7c3f9fa9c1c05353e"
+ integrity sha512-HkUwR4gc8MKVFy2Ux8zUnjqARYpfl7dJ9na3TwRbAUbF4JlCv707m4Z07WVaDMIRUZsfZ+5LgSi+Ss7PfZqNcw==
xterm-addon-webgl@^0.12.0-beta.27:
- version "0.12.0-beta.36"
- resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.36.tgz#460f80829a78c979a448d5b764699af3f0366ff1"
- integrity sha512-sgX7OHSGZQZE5b4xtPqd/5NEcll0Z+00tnTVxKZlXf5XEENcG0tnBF4I4f+k9K3cmjE1UIUVG2yYPrqWlYCdpA==
-
-"xterm@npm:@tabby-gang/xterm@^4.19.0-beta.4":
- version "4.19.0-beta.5"
- resolved "https://registry.yarnpkg.com/@tabby-gang/xterm/-/xterm-4.19.0-beta.5.tgz#aa7a4509148a31ac4e4e55475c950f8572616899"
- integrity sha512-8Vn92qMHDT2Q8TLPTFqalbwdS8ev3AmtLfPs2PRoMlJA/XzrcGUD5BNuAau5bn9lF5iEueX1gYqsJxzk5aYDbQ==
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0.tgz#2fba8d31890a122adafa1c2fb945482e2ae12973"
+ integrity sha512-3P5ihdjPnxH6Wrvqjki9UD+duoVrp1fvnO/pSpXP2F1L2GwY6TDNExgj8Yg141vMCNgQbcVqmsTLYEYZxjY92A==
+
+xterm@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0.tgz#0af50509b33d0dc62fde7a4ec17750b8e453cc5c"
+ integrity sha512-tmVsKzZovAYNDIaUinfz+VDclraQpPUnAME+JawosgWRMphInDded/PuY0xmU5dOhyeYZsI0nz5yd8dPYsdLTA==
yallist@^4.0.0:
version "4.0.0"
diff --git a/web/polyfills.ts b/web/polyfills.ts
index 404d34c7bb..1aa5e2b2d0 100644
--- a/web/polyfills.ts
+++ b/web/polyfills.ts
@@ -48,7 +48,7 @@ Tabby.registerMock('fs', {
appendFile: () => null,
constants: {},
})
-Tabby.registerMock('any-promise', Promise)
+Tabby.registerMock('fs/promises', {})
Tabby.registerMock('tls', {})
Tabby.registerMock('module', {
globalPaths: [],
@@ -92,6 +92,7 @@ Tabby.registerMock('keytar', {
})
Tabby.registerMock('@serialport/bindings', {})
Tabby.registerMock('@serialport/bindings-cpp', {})
+Tabby.registerMock('tmp', {})
Tabby.registerModule('net', {
Socket: SocketProxy,