diff --git a/.all-contributorsrc b/.all-contributorsrc index 97c51061..e6040402 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -1301,6 +1301,15 @@ "contributions": [ "code" ] + }, + { + "login": "GeminiLn", + "name": "Yu Qin", + "avatar_url": "https://avatars.githubusercontent.com/u/12425057?v=4", + "profile": "https://github.com/GeminiLn", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 542bbf7a..efeb7e7b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,11 +13,11 @@ jobs: - name: Installing Node uses: actions/setup-node@v3.7.0 with: - node-version: 16 + node-version: 18 - name: Install deps run: | - npm i -g yarn@1.19.1 + npm i -g yarn cd app yarn cd .. @@ -55,16 +55,17 @@ jobs: - name: Installing Node uses: actions/setup-node@v3.7.0 with: - node-version: 16 + node-version: 18 - run: rustup target add ${{matrix.rust_triple}} - name: Install deps run: | sudo -H pip3 install setuptools - npm config set python python3 - sudo npm i -g yarn@1.22.1 + sudo npm i -g yarn yarn --network-timeout 1000000 + env: + ARCH: ${{matrix.arch}} - name: Fix cross build run: | @@ -77,6 +78,8 @@ jobs: - name: Prepackage plugins run: scripts/prepackage-plugins.mjs + env: + ARCH: ${{matrix.arch}} - run: sed -i '' 's/updateInfo = await/\/\/updateInfo = await/g' node_modules/app-builder-lib/out/targets/ArchiveTarget.js @@ -173,57 +176,49 @@ jobs: - run: rustup target add ${{matrix.rust_triple}} - - name: Install deps (amd64) + - name: Install dependencies run: | sudo apt-get update - sudo apt-get install libarchive-tools zsh python3-distutils + sudo apt-get install libarchive-tools zsh crossbuild-essential-${{matrix.arch}} + + - name: Setup tar to run as root + run: sudo chmod u+s "$(command -v tar)" + if: matrix.build-arch != 'x64' + + - name: Download cached sysroot + uses: actions/cache@v3 + id: dl-cached-sysroot + if: matrix.build-arch !='x64' + with: + key: sysroot-${{matrix.build-arch}} + path: /${{matrix.build-arch}}-sysroot + + - name: Setup crossbuild sysroot + run: | + sudo apt-get update -y && sudo apt-get install debootstrap qemu-user-static binfmt-support -y + sudo qemu-debootstrap --include=libfontconfig1-dev,libsecret-1-dev,libnss3,libatk1.0-0,libatk-bridge2.0-0,libgdk-pixbuf2.0-0,libgtk-3-0,libgbm1 --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb --arch ${{matrix.arch}} bionic /${{matrix.build-arch}}-sysroot/ http://ports.ubuntu.com/ubuntu-ports/ + sudo find /${{matrix.build-arch}}-sysroot -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; + if: matrix.build-arch != 'x64' && steps.dl-cached-sysroot.outputs.cache-hit != 'true' + + - name: Setup env to use ${{matrix.build-arch}} sysroot + run: | + echo "CFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV + echo "CXXFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV + echo "LDFLAGS=--sysroot=/${{matrix.build-arch}}-sysroot/" >> $GITHUB_ENV + + [[ ${npm_config_arch} == 'arm' ]] && echo "npm_config_arch=armv7l" >> $GITHUB_ENV + + if [[ ${{matrix.arch}} == 'armhf' ]]; then + echo "PKG_CONFIG_PATH=/${{matrix.build-arch}}-sysroot/usr/lib/pkgconfig/:/${{matrix.build-arch}}-sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig/" >> $GITHUB_ENV + elif [[ ${{matrix.arch}} == 'arm64' ]]; then + echo "PKG_CONFIG_PATH=/${{matrix.build-arch}}-sysroot/usr/lib/pkgconfig/:/${{matrix.build-arch}}-sysroot/usr/lib/aarch64-linux-gnu/pkgconfig/" >> $GITHUB_ENV + fi + if: matrix.build-arch != 'x64' - name: Install npm_modules (amd64) run: | - npm i -g yarn - yarn --network-timeout 1000000 - if: matrix.build-arch == 'x64' - - - name: Setup Crossbuild (${{matrix.arch}}) - run: | - sudo apt-get update -y && sudo apt-get install schroot sbuild debootstrap -y - sudo debootstrap --include=git,curl,gnupg,ca-certificates,crossbuild-essential-${{matrix.arch}},python-dev,python3-dev,libarchive-tools,cmake --variant=buildd --exclude=snapd --components=main,restricted,universe,multiverse --extractor=dpkg-deb bionic /build-chroot/ - echo 'deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse' | sudo tee /build-chroot/etc/apt/sources.list >/dev/null - echo 'deb [arch=arm64,armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse' | sudo tee -a /build-chroot/etc/apt/sources.list >/dev/null - curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee /build-chroot/etc/apt/trusted.gpg.d/nodesource.gpg >/dev/null - echo 'deb http://deb.nodesource.com/node_16.x bionic main' | sudo tee /build-chroot/etc/apt/sources.list.d/nodesource.list >/dev/null - echo "[build-chroot] - description=Ubuntu 18.04 Build chroot - type=directory - directory=/build-chroot - root-groups=root,sudo - profile=buildd - personality=linux - union-type=overlay" | sudo tee /etc/schroot/chroot.d/build-chroot.pref >/dev/null - echo "/home /home none rw,bind 0 0" | sudo tee -a /etc/schroot/buildd/fstab >/dev/null - - if: matrix.build-arch != 'x64' - - - name: Install node_modules & CrossBuild native modules for ${{matrix.arch}} - run: | - sudo schroot -c build-chroot -u root -- bash -ex -c "apt-get update -y - dpkg --add-architecture ${{matrix.arch}} - apt-get install -y nodejs libfontconfig-dev:${{matrix.arch}} libsecret-1-dev:${{matrix.arch}} libnss3:${{matrix.arch}} libatk1.0-0:${{matrix.arch}} libatk-bridge2.0-0:${{matrix.arch}} libgdk-pixbuf2.0-0:${{matrix.arch}} libgtk-3-0:${{matrix.arch}} libgbm1:${{matrix.arch}} - export CC=${{matrix.triplet}}gcc CXX=${{matrix.triplet}}g++ LD=${{matrix.triplet}}ld - if [[ ${{matrix.arch}} == 'arm64' ]]; then - export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/aarch64-linux-gnu/pkgconfig/ - elif [[ ${{matrix.arch}} == 'armhf' ]]; then - export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/arm-linux-gnueabihf/pkgconfig/ - fi - export RUSTUP_HOME=/rustup - export CARGO_HOME=/cargo - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - source "/cargo/env" - rustup target add ${{matrix.rust_triple}} - export ARCH=${{matrix.build-arch}} npm_config_arch=${{matrix.build-arch}} npm_config_target_arch=${{matrix.build-arch}} RUST_TARGET_TRIPLE=${{matrix.rust_triple}} - npm i -g yarn - yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}}" - if: matrix.build-arch != 'x64' + npm i -g yarn node-gyp + yarn --network-timeout 1000000 --arch=${{matrix.build-arch}} --target-arch=${{matrix.build-arch}} - name: Webpack (${{matrix.arch}}) run: yarn run build --arch=${{matrix.build-arch}} --target_arch=${{matrix.build-arch}} @@ -239,7 +234,7 @@ jobs: USE_HARD_LINKS: false # DEBUG: electron-builder,electron-builder:* - - name: Build web resources + - name: Build web resources (amd64 only) run: zsh -c 'tar czf tabby-web.tar.gz (tabby-*|web)/dist' if: matrix.build-arch == 'x64' @@ -324,7 +319,7 @@ jobs: - name: Installing Node uses: actions/setup-node@v3.7.0 with: - node-version: 16 + node-version: 18 - run: npm i -g npx - run: rustup target add ${{matrix.rust_triple}} @@ -337,10 +332,12 @@ jobs: - name: Build shell: powershell run: | - npm i -g yarn@1.19.1 + npm i -g yar node-gyp yarn --network-timeout 1000000 yarn run build node scripts/prepackage-plugins.mjs + env: + ARCH: ${{matrix.arch}} - name: Build and sign packages run: node scripts/build-windows.mjs @@ -355,7 +352,9 @@ jobs: - name: Build packages without signing run: node scripts/build-windows.mjs - if: "!(github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))" + if: "! (github.repository == 'Eugeny/tabby' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags')))" + env: + ARCH: ${{matrix.arch}} - name: Upload symbols run: | diff --git a/README.de-DE.md b/README.de-DE.md index e07fd082..13175c0b 100644 --- a/README.de-DE.md +++ b/README.de-DE.md @@ -339,6 +339,7 @@ Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.es-ES.md b/README.es-ES.md index 6b7ceb13..20202a6c 100644 --- a/README.es-ES.md +++ b/README.es-ES.md @@ -341,6 +341,7 @@ Gracias a estas maravillosas personas ([emoji key](https://allcontributors.org/d Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.id-ID.md b/README.id-ID.md index 33f1b274..973e7c74 100644 --- a/README.id-ID.md +++ b/README.id-ID.md @@ -338,6 +338,7 @@ Terima kasih kepada mereka yang telah membantu ([emoji key](https://allcontribut Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.it-IT.md b/README.it-IT.md index 38c22aa2..679a5e3c 100644 --- a/README.it-IT.md +++ b/README.it-IT.md @@ -334,6 +334,7 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.ja-JP.md b/README.ja-JP.md index 9bf11428..270ba75e 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -349,6 +349,7 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.ko-KR.md b/README.ko-KR.md index 74379bde..e3c8170a 100644 --- a/README.ko-KR.md +++ b/README.ko-KR.md @@ -333,6 +333,7 @@ Pull requests and plugins are welcome! Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.md b/README.md index 848c4e29..119cba65 100644 --- a/README.md +++ b/README.md @@ -355,6 +355,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.pt-BR.md b/README.pt-BR.md index 6811f251..f7b14f83 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -342,6 +342,7 @@ Obrigado vai para essas pessoas maravilhosas ([emoji key](https://allcontributor Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.ru-RU.md b/README.ru-RU.md index 02f7ee42..d5c1c803 100644 --- a/README.ru-RU.md +++ b/README.ru-RU.md @@ -334,6 +334,7 @@ Pull-запросы и плагины приветствуются! Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/README.zh-CN.md b/README.zh-CN.md index 55789378..f772043c 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -333,6 +333,7 @@ Mxmilu
Mxmilu

💻 Charles Buffington
Charles Buffington

💻 + Yu Qin
Yu Qin

💻 diff --git a/app/lib/index.ts b/app/lib/index.ts index cc55f413..5326393c 100644 --- a/app/lib/index.ts +++ b/app/lib/index.ts @@ -31,6 +31,8 @@ try { app.exit(1) } +process.mainModule = module + const application = new Application(configStore) ipcMain.on('app:new-window', () => { diff --git a/app/lib/window.ts b/app/lib/window.ts index 63ce9fef..d1887fae 100644 --- a/app/lib/window.ts +++ b/app/lib/window.ts @@ -1,5 +1,5 @@ import * as glasstron from 'glasstron' - +import { autoUpdater } from 'electron-updater' import { Subject, Observable, debounceTime } from 'rxjs' import { BrowserWindow, app, ipcMain, Rectangle, Menu, screen, BrowserWindowConstructorOptions, TouchBar, nativeImage, WebContents } from 'electron' import ElectronConfig = require('electron-config') @@ -159,6 +159,7 @@ export class Window { } this.setupWindowManagement() + this.setupUpdater() this.ready = new Promise(resolve => { const listener = event => { @@ -346,11 +347,8 @@ export class Window { this.send('host:window-focused') }) - ipcMain.on('ready', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.webContents.send('start', { + this.on('ready', () => { + this.window?.webContents.send('start', { config: this.configStore, executable: app.getPath('exe'), windowID: this.window.id, @@ -359,42 +357,26 @@ export class Window { }) }) - ipcMain.on('window-minimize', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.minimize() + this.on('window-minimize', () => { + this.window?.minimize() }) - ipcMain.on('window-set-bounds', (event, bounds) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.setBounds(bounds) + this.on('window-set-bounds', (_, bounds) => { + this.window?.setBounds(bounds) }) - ipcMain.on('window-set-always-on-top', (event, flag) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.setAlwaysOnTop(flag) + this.on('window-set-always-on-top', (_, flag) => { + this.window?.setAlwaysOnTop(flag) }) - ipcMain.on('window-set-vibrancy', (event, enabled, type) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } + this.on('window-set-vibrancy', (_, enabled, type) => { this.setVibrancy(enabled, type) }) - ipcMain.on('window-set-window-controls-color', (event, theme) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - + this.on('window-set-window-controls-color', (_, theme) => { if (process.platform === 'win32') { const symbolColor: string = theme.foreground - this.window.setTitleBarOverlay( + this.window?.setTitleBarOverlay( { symbolColor: symbolColor, height: 32, @@ -403,32 +385,23 @@ export class Window { } }) - ipcMain.on('window-set-title', (event, title) => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - this.window.setTitle(title) + this.on('window-set-title', (_, title) => { + this.window?.setTitle(title) }) - ipcMain.on('window-bring-to-front', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } - if (this.window.isMinimized()) { + this.on('window-bring-to-front', () => { + if (this.window?.isMinimized()) { this.window.restore() } this.present() }) - ipcMain.on('window-close', event => { - if (!this.window || event.sender !== this.window.webContents) { - return - } + this.on('window-close', () => { this.closing = true this.window.close() }) - ipcMain.on('window-set-touch-bar', (_event, segments, selectedIndex) => { + this.on('window-set-touch-bar', (_, segments, selectedIndex) => { this.touchBarControl.segments = segments.map(s => ({ label: s.label, icon: s.hasActivity ? activityIcon : undefined, @@ -468,8 +441,46 @@ export class Window { this.window.setOpacity(opacity) }) - ipcMain.on('window-set-progress-bar', (_event, value) => { - this.window.setProgressBar(value, { mode: value < 0 ? 'none' : 'normal' }) + this.on('window-set-progress-bar', (_, value) => { + this.window?.setProgressBar(value, { mode: value < 0 ? 'none' : 'normal' }) + }) + } + + on (event: string, listener: (...args: any[]) => void): void { + ipcMain.on(event, (e, ...args) => { + if (!this.window || e.sender !== this.window.webContents) { + return + } + listener(e, ...args) + }) + } + + private setupUpdater () { + autoUpdater.autoDownload = true + autoUpdater.autoInstallOnAppQuit = true + + autoUpdater.on('update-available', () => { + this.send('updater:update-available') + }) + + autoUpdater.on('update-not-available', () => { + this.send('updater:update-not-available') + }) + + autoUpdater.on('error', err => { + this.send('updater:error', err) + }) + + autoUpdater.on('update-downloaded', () => { + this.send('updater:update-downloaded') + }) + + this.on('updater:check-for-updates', () => { + autoUpdater.checkForUpdates() + }) + + this.on('updater:quit-and-install', () => { + autoUpdater.quitAndInstall() }) } diff --git a/app/package.json b/app/package.json index 4afd4279..4ee6651e 100644 --- a/app/package.json +++ b/app/package.json @@ -15,7 +15,7 @@ "watch": "webpack --progress --color --watch" }, "dependencies": { - "@electron/remote": "2.0.10", + "@electron/remote": "^2", "node-pty": "^1.1.0-beta.14", "any-promise": "^1.3.0", "electron-config": "2.0.0", @@ -64,8 +64,7 @@ "tabby-terminal": "*" }, "resolutions": { - "*/node-abi": "^2.20.0", - "node-gyp": "^10.0.0", - "nan": "github:jkleinsc/nan#remove_accessor_signature" + "*/node-abi": "^3", + "node-gyp": "^10.0.0" } } diff --git a/app/patches/@serialport+bindings-cpp+11.0.1.patch b/app/patches/@serialport+bindings-cpp+11.0.3.patch similarity index 100% rename from app/patches/@serialport+bindings-cpp+11.0.1.patch rename to app/patches/@serialport+bindings-cpp+11.0.3.patch diff --git a/app/webpack.config.main.mjs b/app/webpack.config.main.mjs index 920f0b11..ab8599de 100644 --- a/app/webpack.config.main.mjs +++ b/app/webpack.config.main.mjs @@ -42,6 +42,7 @@ const config = { 'electron-config': 'commonjs electron-config', 'electron-debug': 'commonjs electron-debug', 'electron-promise-ipc': 'commonjs electron-promise-ipc', + 'electron-updater': 'commonjs electron-updater', fs: 'commonjs fs', glasstron: 'commonjs glasstron', mz: 'commonjs mz', diff --git a/app/yarn.lock b/app/yarn.lock index 8ea336dd..5b9b7513 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@electron/remote@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.10.tgz#133e2f607b1861ac249bd78b5abd1e961feed713" - integrity sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA== +"@electron/remote@^2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.1.2.tgz#52a97c8faa5b769155b649ef262f2f8c851776e6" + integrity sha512-EPwNx+nhdrTBxyCqXt/pftoQg/ybtWDW3DUWHafejvnB1ZGGfMpv6e15D8KeempocjXe78T7WreyGGb3mlZxdA== "@iarna/cli@^1.2.0": version "1.2.0" @@ -2582,9 +2582,10 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature": - version "2.16.0" - resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059" +nan@^2.17.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== napi-build-utils@^1.0.1: version "1.0.2" @@ -2615,12 +2616,12 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-abi@^2.20.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" - integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== +node-abi@^3: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== dependencies: - semver "^5.4.1" + semver "^7.3.5" node-abi@^3.3.0: version "3.8.0" diff --git a/locale/af-ZA.po b/locale/af-ZA.po index ea3ceb64..fe1ad36b 100644 --- a/locale/af-ZA.po +++ b/locale/af-ZA.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Afrikaans\n" "Language: af_ZA\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/bg-BG.po b/locale/bg-BG.po index f14a3068..ad716e7c 100644 --- a/locale/bg-BG.po +++ b/locale/bg-BG.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/cs-CZ.po b/locale/cs-CZ.po index 3d48a056..b64f641c 100644 --- a/locale/cs-CZ.po +++ b/locale/cs-CZ.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Czech\n" "Language: cs_CZ\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -1935,7 +1935,7 @@ msgstr "Sériové připojení" #: tabby-serial/src/profiles.ts:73 msgid "Serial: {description}" -msgstr "Seriální: {description}" +msgstr "Sériový: {description}" #: locale/tmp-html/tabby-settings/src/components/setVaultPassphraseModal.component.html:2 #: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:5 diff --git a/locale/da-DK.po b/locale/da-DK.po index 22107fe2..4167f328 100644 --- a/locale/da-DK.po +++ b/locale/da-DK.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Danish\n" "Language: da_DK\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -100,12 +100,12 @@ msgstr "Tillader hurtigt at åbne en terminal i den valgte mappe" #: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:25 #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:11 msgid "Always dark" -msgstr "" +msgstr "Altid mørk" #: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:27 #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:13 msgid "Always light" -msgstr "" +msgstr "Altid lys" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:2 #: tabby-terminal/src/settings.ts:14 @@ -272,7 +272,7 @@ msgstr "Ciphers" #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSelector.component.html:5 msgid "Clear" -msgstr "" +msgstr "Ryd" #: tabby-core/src/services/profiles.service.ts:248 msgid "Clear recent profiles" @@ -324,7 +324,7 @@ msgstr "Luk faner til højre" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182 msgid "Close the window after closing the last tab" -msgstr "" +msgstr "Luk vinduet efter lukningen af den sidste fane" #: locale/tmp-html/tabby-settings/src/components/editProfileModal.component.html:33 #: tabby-core/src/tabContextMenu.ts:132 @@ -337,16 +337,16 @@ msgstr "Farvetema" #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:2 msgid "Color schemes" -msgstr "" +msgstr "Farveskemaer" #: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:81 #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:216 msgid "Colors" -msgstr "" +msgstr "Farver" #: tabby-core/src/hotkeys.ts:72 msgid "Combine all tabs into the current tab" -msgstr "" +msgstr "Kombinér alle faner til den aktuelle fane" #: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:4 msgid "Command line" @@ -358,15 +358,15 @@ msgstr "Kommandoens stdin/stdout bruges i stedet for en netværksforbindelse" #: tabby-core/src/services/commands.service.ts:105 msgid "Commands" -msgstr "" +msgstr "Kommandoer" #: tabby-core/src/theme.ts:16 msgid "Compact (legacy)" -msgstr "" +msgstr "Kompakt (ældre)" #: tabby-settings/src/components/configSyncSettingsTab.component.ts:126 msgid "Config deleted" -msgstr "" +msgstr "Konfig slettet" #: tabby-settings/src/components/configSyncSettingsTab.component.ts:108 msgid "Config downloaded" @@ -428,7 +428,7 @@ msgstr "Kontekstmenu" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14 msgid "Controls the amount of space between elements" -msgstr "" +msgstr "Styrer mængden af mellemrum mellem elementer" #: tabby-terminal/src/api/baseTerminalTab.component.ts:240 #: tabby-terminal/src/api/baseTerminalTab.component.ts:248 @@ -449,7 +449,7 @@ msgstr "Kopiér nuværende sti" #: tabby-electron/src/sftpContextMenu.ts:29 msgid "Copy full path" -msgstr "" +msgstr "Kopiér hele stien" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:97 msgid "Copy on select" @@ -461,7 +461,7 @@ msgstr "Kopiér til udklipsholder" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:103 msgid "Copy with formatting" -msgstr "" +msgstr "Kopiér med formatering" #: tabby-core/src/services/config.service.ts:425 msgid "Could not decrypt config" @@ -469,12 +469,12 @@ msgstr "Kunne ikke dekryptere konfiguration" #: locale/tmp-html/tabby-ssh/src/components/sftpCreateDirectoryModal.component.html:9 msgid "Create" -msgstr "" +msgstr "Opret" #: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:7 #: tabby-ssh/src/sftpContextMenu.ts:29 msgid "Create directory" -msgstr "" +msgstr "Opret mappe" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:90 msgid "Current" @@ -498,7 +498,7 @@ msgstr "Markørens form" #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsForMode.component.html:46 msgid "Custom" -msgstr "" +msgstr "Tilpasset" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:90 msgid "Custom CSS" @@ -506,7 +506,7 @@ msgstr "Brugerdefineret CSS" #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:17 msgid "Dark mode" -msgstr "" +msgstr "Mørk tilstand" #: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:26 msgid "Data bits" @@ -518,15 +518,15 @@ msgstr "Fejlfinding" #: tabby-core/src/hotkeys.ts:256 msgid "Decrease horizontal split size" -msgstr "" +msgstr "Reducér den vandrette splitstørrelse" #: tabby-core/src/hotkeys.ts:248 msgid "Decrease vertical split size" -msgstr "" +msgstr "Reducér den lodrette splitstørrelse" #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:92 msgid "Default \"Connect to\" type" -msgstr "" +msgstr "Standard \"Forbind til\"-type" #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:93 msgid "Default connection type used by quick connect feature (ex. SSH, Telnet)" @@ -582,7 +582,7 @@ msgstr "Slet {fullPath}?" #: tabby-terminal/src/hotkeys.ts:42 msgid "Delete entire line" -msgstr "" +msgstr "Slet hele linjen" #: tabby-terminal/src/hotkeys.ts:46 msgid "Delete next word" @@ -594,7 +594,7 @@ msgstr "Slet forrige ord" #: tabby-settings/src/components/configSyncSettingsTab.component.ts:114 msgid "Delete the config on the remote side?" -msgstr "" +msgstr "Slet konfigurationen på fjernsiden?" #: tabby-settings/src/components/profilesSettingsTab.component.ts:226 msgid "Delete the group's profiles?" diff --git a/locale/de-DE.po b/locale/de-DE.po index 2c008848..57865e50 100644 --- a/locale/de-DE.po +++ b/locale/de-DE.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: German\n" "Language: de_DE\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/en-GB.po b/locale/en-GB.po index 724d623e..1e0d3afc 100644 --- a/locale/en-GB.po +++ b/locale/en-GB.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: English, United Kingdom\n" "Language: en_GB\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -2036,10 +2036,6 @@ msgstr "" msgid "Show Serial connections" msgstr "" -#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:73 -msgid "Hide Tabby in tray or menu bar." -msgstr "" - #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:152 msgid "Show tabs in fullscreen mode" msgstr "" @@ -2048,10 +2044,6 @@ msgstr "" msgid "Show toolbar" msgstr "" -#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:73 -msgid "Hide tray" -msgstr "" - #: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:45 msgid "Show vault contents" msgstr "" diff --git a/locale/es-ES.po b/locale/es-ES.po index a74b1bb4..8babe83e 100644 --- a/locale/es-ES.po +++ b/locale/es-ES.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Spanish\n" "Language: es_ES\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/fr-FR.po b/locale/fr-FR.po index b2a11448..28fcd425 100644 --- a/locale/fr-FR.po +++ b/locale/fr-FR.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: French\n" "Language: fr_FR\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/hr-HR.po b/locale/hr-HR.po index f0eacff1..968e0d85 100644 --- a/locale/hr-HR.po +++ b/locale/hr-HR.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Croatian\n" "Language: hr_HR\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/id-ID.po b/locale/id-ID.po index aafeba7c..0135dbb8 100644 --- a/locale/id-ID.po +++ b/locale/id-ID.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Indonesian\n" "Language: id_ID\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -1762,11 +1762,11 @@ msgstr "Ukuran Semula" #: tabby-serial/src/hotkeys.ts:14 msgid "Restart current serial session" -msgstr "" +msgstr "Mulai ulang sesi serial saat ini" #: tabby-ssh/src/hotkeys.ts:10 msgid "Restart current SSH session" -msgstr "" +msgstr "Mulai ulang sesi SSH saat ini" #: tabby-telnet/src/hotkeys.ts:10 msgid "Restart current Telnet session" @@ -2401,7 +2401,7 @@ msgstr "" #: tabby-ssh/src/session/ssh.ts:465 msgid "Using preset password" -msgstr "" +msgstr "Gunakan kata sandi yang telah disetel sebelumnya" #: locale/tmp-html/tabby-settings/src/components/vaultSettingsTab.component.html:9 msgid "Vault" diff --git a/locale/it-IT.po b/locale/it-IT.po index bb49deb7..d69e27c6 100644 --- a/locale/it-IT.po +++ b/locale/it-IT.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Italian\n" "Language: it_IT\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -31,7 +31,7 @@ msgstr "Annulla tutto" #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:24 msgid "Accept and remember key" -msgstr "Accetta e ricorda la chiave" +msgstr "Accetta e ricorda chiave" #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:25 msgid "Accept just this once" @@ -43,7 +43,7 @@ msgstr "Accessibilità" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:27 msgid "Acrylic background" -msgstr "Sfondo traslucido" +msgstr "Sfondo acrilico" #: locale/tmp-html/tabby-local/src/components/commandLineEditor.component.html:24 #: locale/tmp-html/tabby-local/src/components/environmentEditor.component.html:11 @@ -225,8 +225,7 @@ msgstr "Incolla tra parentesi (richiede una shell che lo supporti)" #: tabby-terminal/src/services/multifocus.service.ts:19 msgid "Broadcast mode. Click anywhere to cancel." -msgstr "Modalità broadcast. \n" -"Fai clic ovunque per annullare." +msgstr "Modalità broadcast. Fai clic ovunque per disabilitare." #: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:50 #: tabby-core/src/services/profiles.service.ts:411 @@ -508,7 +507,7 @@ msgstr "CSS personalizzato" #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:17 msgid "Dark mode" -msgstr "Modalità scura" +msgstr "Tema scuro" #: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:26 msgid "Data bits" @@ -708,7 +707,7 @@ msgstr "La selezione con doppio clic si fermerà a questi caratteri" #: tabby-core/src/tabContextMenu.ts:79 msgid "Down" -msgstr "Giù" +msgstr "In basso" #: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:43 msgid "Download" @@ -896,7 +895,7 @@ msgstr "Evidenzia il riquadro a destra" #: tabby-core/src/theme.ts:34 msgid "Follow the color scheme" -msgstr "Segui lo schema dei colori" +msgstr "Segui il tema di sistema" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:5 msgid "Font" @@ -1209,7 +1208,7 @@ msgstr "Scopri come consentire a Tabby di rilevare la cartella di lavoro della s #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:76 #: tabby-core/src/tabContextMenu.ts:80 msgid "Left" -msgstr "Sinistra" +msgstr "A sinistra" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:40 msgid "Lets the shell handle Meta key instead of OS" @@ -1802,7 +1801,7 @@ msgstr "Riusa la sessione per più schede" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78 #: tabby-core/src/tabContextMenu.ts:78 msgid "Right" -msgstr "Destra" +msgstr "A destra" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:56 msgid "Right click" @@ -2361,7 +2360,7 @@ msgstr "Sgancia" #: tabby-core/src/tabContextMenu.ts:81 msgid "Up" -msgstr "Su" +msgstr "In alto" #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:14 #: tabby-electron/src/services/updater.service.ts:133 @@ -2429,7 +2428,7 @@ msgstr "La cassaforte non è configurata" #: tabby-core/src/services/fileProviders.service.ts:40 msgid "Vault master passphrase needs to be set to allow storing secrets" -msgstr "Per consentire la memorizzazione di dati cifrati deve essere impostata la frase segreta principale della cassaforte." +msgstr "Per consentire la memorizzazione di dati cifrati deve essere impostata la frase segreta principale della cassaforte" #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:11 msgid "Verify host keys when connecting" @@ -2465,7 +2464,7 @@ msgstr "Attenzione: la chiave dell'host remoto è improvvisamente cambiata!" #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:67 msgid "We're only tracking your Tabby and OS versions." -msgstr "Monitoreremo soltanto le versioni di Tabby e del sistema operativo." +msgstr "Monitoreremo soltanto le versioni di Tabby e del Sistema Operativo." #: tabby-core/src/components/welcomeTab.component.ts:25 msgid "Welcome" @@ -2510,7 +2509,7 @@ msgstr "Dimensione finestra fuori dal bordo" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52 msgid "Window frame" -msgstr "Cornice finestra" +msgstr "Cornice della finestra" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:165 msgid "Windows" @@ -2526,7 +2525,7 @@ msgstr "Percorso WinSCP" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:74 msgid "Word separators" -msgstr "Separatori parole" +msgstr "Separatori di parole" #: locale/tmp-html/tabby-local/src/components/localProfileSettings.component.html:10 msgid "Working directory" @@ -2563,11 +2562,11 @@ msgstr "In questo momento potresti essere sotto un attacco man-in-the-middle, o #: tabby-terminal/src/hotkeys.ts:54 msgid "Zoom in" -msgstr "Zoom +" +msgstr "Zoom avanti" #: tabby-terminal/src/hotkeys.ts:58 msgid "Zoom out" -msgstr "Zoom -" +msgstr "Zoom indietro" #: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:43 #: locale/tmp-html/tabby-ssh/src/components/sshPortForwardingConfig.component.html:5 diff --git a/locale/ja-JP.po b/locale/ja-JP.po index f07ed778..b721fbb9 100644 --- a/locale/ja-JP.po +++ b/locale/ja-JP.po @@ -10,11 +10,11 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Japanese\n" "Language: ja_JP\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" -msgstr "\"{command}\"が実行中です。閉じますか?" +msgstr "\"{command}\"が実行中です。閉じてもよろしいですか?" #: tabby-settings/src/components/profilesSettingsTab.component.ts:78 #: tabby-settings/src/components/profilesSettingsTab.component.ts:88 @@ -23,7 +23,7 @@ msgstr "{name} コピー" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:77 msgid "A second font family used to display characters missing in the main font" -msgstr "既定フォントに不足している文字を表示する際に使用されます" +msgstr "メインフォントに不足している文字を表示する際に使用されます" #: tabby-core/src/components/transfersMenu.component.ts:49 msgid "Abort all" @@ -64,7 +64,7 @@ msgstr "追加..." #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:84 msgid "Additional space between lines" -msgstr "行間にスペースを空けます" +msgstr "行と行の間隔を広げます" #: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:22 #: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:61 @@ -79,15 +79,15 @@ msgstr "SSHエージェント" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:134 msgid "Agent forwarding" -msgstr "SSHエージェントの転送" +msgstr "SSHエージェント転送" #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:35 msgid "Agent pipe path" -msgstr "SSHエージェントのパイプのパス" +msgstr "SSHエージェントのパイプ名" #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:24 msgid "Agent type" -msgstr "SSHエージェントの種類" +msgstr "SSHエージェントの指定" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:169 msgid "Allows opening .bat files in tabs, but breaks some shells" @@ -354,7 +354,7 @@ msgstr "コマンドライン" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:13 msgid "Command's stdin/stdout is used instead of a network connection" -msgstr "ネットワーク接続の代わりにコマンドの stdin/stdout が使用されます" +msgstr "ネットワーク接続の代わりにコマンドの stdin/stdout を使用します" #: tabby-core/src/services/commands.service.ts:105 msgid "Commands" @@ -486,7 +486,7 @@ msgstr "使用中の配色" #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:17 msgid "Current host key fingerprint" -msgstr "使用中のホストキーのフィンガープリント" +msgstr "現在のホスト鍵のフィンガープリント" #: tabby-core/src/tabContextMenu.ts:184 msgid "Current process: {name}" @@ -618,7 +618,7 @@ msgstr "デバイス" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:10 msgid "Direct" -msgstr "直接" +msgstr "直接接続" #: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:57 msgid "Disable" @@ -1039,11 +1039,11 @@ msgstr "ホスト" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:206 msgid "Host key" -msgstr "ホストキー" +msgstr "ホスト鍵" #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:3 msgid "Host key verification" -msgstr "ホストキーの検証" +msgstr "ホスト鍵の検証" #: locale/tmp-html/tabby-settings/src/components/hotkeySettingsTab.component.html:2 #: tabby-settings/src/settings.ts:15 @@ -1131,7 +1131,7 @@ msgstr "無効な構文" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:16 #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:43 msgid "Jump host" -msgstr "ジャンプサーバー" +msgstr "踏み台サーバー" #: tabby-terminal/src/hotkeys.ts:34 msgid "Jump to next word" @@ -1188,7 +1188,7 @@ msgstr "言語" #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:11 msgid "Last known host key fingerprint" -msgstr "最後に使用したホストキーのフィンガープリント" +msgstr "最後に使われたホスト鍵のフィンガープリント" #: tabby-ssh/src/tabContextMenu.ts:32 msgid "Launch WinSCP" @@ -1201,7 +1201,7 @@ msgstr "現在のSSHセッションでWinSCPを起動" #: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:16 #: locale/tmp-html/tabby-ssh/src/components/sshTab.component.html:7 msgid "Learn how to allow Tabby to detect remote shell's working directory." -msgstr "Tabbyにリモート側の作業ディレクトリを検出させる方法をご紹介します。" +msgstr "リモート上の作業ディレクトリを自動検出する方法をご紹介します。" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:134 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:76 @@ -1227,7 +1227,7 @@ msgstr "Enterキーを押すと入力が送信されます" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:83 msgid "Line padding" -msgstr "行間の大きさ" +msgstr "行間" #: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:21 msgid "Loading" @@ -1325,7 +1325,7 @@ msgstr "新規" #: tabby-local/src/tabContextMenu.ts:53 msgid "New admin tab" -msgstr "新しい管理者タブ" +msgstr "新しい管理者権限タブ" #: tabby-settings/src/components/configSyncSettingsTab.component.ts:58 msgid "New config on {platform}" @@ -1511,11 +1511,11 @@ msgstr "リモートを上書きして同期" #: tabby-settings/src/components/configSyncSettingsTab.component.ts:76 msgid "Overwrite the config on the remote side and start syncing?" -msgstr "リモート上の設定を上書きして同期を開始しますか?" +msgstr "リモート上の設定を上書きして、同期を開始しますか?" #: tabby-settings/src/components/configSyncSettingsTab.component.ts:96 msgid "Overwrite the local config and start syncing?" -msgstr "これまでのローカル上の設定を上書きして、同期を開始しますか?" +msgstr "現在のローカル上の設定を上書きして、同期を開始しますか?" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189 msgid "Pane resize step" @@ -1535,7 +1535,7 @@ msgstr "パリティ" #: locale/tmp-html/tabby-settings/src/components/configSyncSettingsTab.component.html:64 msgid "Partial config sync is not possible when the config is encrypted via Vault." -msgstr "設定ファイルがVaultによって暗号化されている場合、部分的な設定の同期はできません。" +msgstr "Vaultによって設定ファイルを暗号化した場合、設定の一部だけを同期から外すことはできません。" #: tabby-terminal/src/components/inputProcessingSettings.component.ts:17 msgid "Pass-through" @@ -1562,11 +1562,11 @@ msgstr "クリップボードから貼り付け" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:63 msgid "Paste if no selection, else copy" -msgstr "通常は貼り付け、テキスト選択時のみコピー、" +msgstr "通常は貼り付け、テキスト選択時のみコピー" #: tabby-terminal/src/api/baseTerminalTab.component.ts:528 msgid "Paste multiple lines?" -msgstr "複数行の貼り付けを実行してもよろしいですか?" +msgstr "複数行貼り付けを実行してもよろしいですか?" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:68 msgid "Paste on middle-click" @@ -1960,7 +1960,7 @@ msgstr "最近使用したプロファイルをセレクターに表示しない #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:36 msgid "Sets the SSH agent's named pipe path." -msgstr "SSHエージェントの名前付きパイプのパスを設定" +msgstr "SSHエージェントの名前付きパイプのパスを指定します。" #: tabby-settings/src/buttonProvider.ts:28 #: tabby-settings/src/components/settingsTab.component.ts:57 @@ -1990,7 +1990,7 @@ msgstr "{type} プロファイルセレクターを表示" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:117 msgid "Show a confirmation box when pasting multiple lines" -msgstr "複数行を貼り付ける際に確認ボックスを表示します" +msgstr "複数行の貼り付けをする際に確認画面を表示します" #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:75 msgid "Show built-in profiles in selector" @@ -2268,7 +2268,7 @@ msgstr "端末の識別情報" #: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:7 msgid "Thank you for downloading Tabby!" -msgstr "Tabbyをダウンロードしていただきありがとうございます!" +msgstr "Tabbyをダウンロードしてくださり、ありがとうございます!" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:5 msgid "Theme" @@ -2280,7 +2280,7 @@ msgstr "ファイル転送を使用中" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:102 msgid "There is a saved password for this connection" -msgstr "この接続に利用可能なパスワードが保存されています。" +msgstr "この接続に使用するパスワードを保存しています。" #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:102 msgid "These apply to all profiles of a given type" @@ -2397,7 +2397,7 @@ msgstr "ユーザー名" #: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:25 msgid "Using CONNECT method" -msgstr "CONNECTメソッドの使用" +msgstr "CONNECTメソッドを使用します" #: tabby-ssh/src/session/ssh.ts:465 msgid "Using preset password" @@ -2426,11 +2426,11 @@ msgstr "Vaultが設定されていません" #: tabby-core/src/services/fileProviders.service.ts:40 msgid "Vault master passphrase needs to be set to allow storing secrets" -msgstr "機密性の高い情報を保存するには、Vaultのマスターパスフレーズを設定する必要があります" +msgstr "機密性の高い情報を保存するには、Vaultにマスターパスフレーズを設定する必要があります" #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:11 msgid "Verify host keys when connecting" -msgstr "接続時にホストキーを確認" +msgstr "接続時にホスト鍵を検証" #: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:75 msgid "Version" @@ -2478,7 +2478,7 @@ msgstr "セッション終了時" #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:82 msgid "When enabled, links are only clickable while holding this key" -msgstr "有効にすると、特定のキーを押しながらクリックした時のみリンクが開けるようになります" +msgstr "有効にすると、特定のキーを押しながらクリックした時のみリンクを開きます" #: locale/tmp-html/tabby-ssh/src/components/sshSettingsTab.component.html:18 msgid "When WinSCP is detected, you can launch an SCP session from the context menu." @@ -2556,7 +2556,7 @@ msgstr "後から変更できますが、忘れた場合復元することはで #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:7 msgid "You could be under a man-in-the-middle attack right now, or the host key could have just been changed." -msgstr "現在中間者攻撃を受けているか、もしくは、ホストキーが変更された可能性があります。" +msgstr "現在中間者攻撃を受けているか、もしくはホスト鍵が変更された可能性があります。" #: tabby-terminal/src/hotkeys.ts:54 msgid "Zoom in" diff --git a/locale/ko-KR.po b/locale/ko-KR.po index 90164d4d..4b2467b5 100644 --- a/locale/ko-KR.po +++ b/locale/ko-KR.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Korean\n" "Language: ko_KR\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/pl-PL.po b/locale/pl-PL.po index 9a8587e3..0db05073 100644 --- a/locale/pl-PL.po +++ b/locale/pl-PL.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Polish\n" "Language: pl_PL\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/pt-BR.po b/locale/pt-BR.po index 2d089820..a81d2f48 100644 --- a/locale/pt-BR.po +++ b/locale/pt-BR.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/pt-PT.po b/locale/pt-PT.po index a8540ca8..629ef7bb 100644 --- a/locale/pt-PT.po +++ b/locale/pt-PT.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Portuguese\n" "Language: pt_PT\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -39,7 +39,7 @@ msgstr "Aceitar apenas desta vez" #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:84 msgid "Accessibility" -msgstr "" +msgstr "acessibilidade" #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:27 msgid "Acrylic background" @@ -100,12 +100,12 @@ msgstr "Permite abrir um terminal rapidamente na pasta selecionada" #: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:25 #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:11 msgid "Always dark" -msgstr "" +msgstr "sempre escuro" #: locale/tmp-html/tabby-core/src/components/welcomeTab.component.html:27 #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:13 msgid "Always light" -msgstr "" +msgstr "Sempre luminoso" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:2 #: tabby-terminal/src/settings.ts:14 @@ -498,7 +498,7 @@ msgstr "Formato do cursor" #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsForMode.component.html:46 msgid "Custom" -msgstr "" +msgstr "Personalizado" #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:90 msgid "Custom CSS" @@ -538,7 +538,7 @@ msgstr "Perfil padrão para novas abas" #: locale/tmp-html/tabby-settings/src/components/editProfileGroupModal.component.html:16 msgid "Default profile group settings" -msgstr "" +msgstr "Parâmetros do grupo de perfis por defeito" #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:101 msgid "Default profile settings" @@ -736,7 +736,7 @@ msgstr "Editar" #: tabby-electron/src/sftpContextMenu.ts:35 msgid "Edit locally" -msgstr "" +msgstr "Editar localmente" #: locale/tmp-html/tabby-plugin-manager/src/components/pluginsSettingsTab.component.html:58 msgid "Enable" diff --git a/locale/ru-RU.po b/locale/ru-RU.po index e490cd03..6c836b51 100644 --- a/locale/ru-RU.po +++ b/locale/ru-RU.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Russian\n" "Language: ru_RU\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/sr-SP.po b/locale/sr-SP.po index e5c36177..69b980e4 100644 --- a/locale/sr-SP.po +++ b/locale/sr-SP.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Serbian (Cyrillic)\n" "Language: sr_SP\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/sv-SE.po b/locale/sv-SE.po index e27a020b..5cc640d8 100644 --- a/locale/sv-SE.po +++ b/locale/sv-SE.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Swedish\n" "Language: sv_SE\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" @@ -35,7 +35,7 @@ msgstr "Acceptera och kom ihåg nyckel" #: locale/tmp-html/tabby-ssh/src/components/hostKeyPromptModal.component.html:25 msgid "Accept just this once" -msgstr "Acceptera bara denna gång" +msgstr "Acceptera bara den här gången" #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:84 msgid "Accessibility" diff --git a/locale/tr-TR.po b/locale/tr-TR.po index a8b26a35..9f3df279 100644 --- a/locale/tr-TR.po +++ b/locale/tr-TR.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Turkish\n" "Language: tr_TR\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/uk-UA.po b/locale/uk-UA.po index a040deec..f6ad1e3d 100644 --- a/locale/uk-UA.po +++ b/locale/uk-UA.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/zh-CN.po b/locale/zh-CN.po index ebc376b8..55e8afec 100644 --- a/locale/zh-CN.po +++ b/locale/zh-CN.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/locale/zh-TW.po b/locale/zh-TW.po index 893fb43f..ae206d35 100644 --- a/locale/zh-TW.po +++ b/locale/zh-TW.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: tabby\n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" -"PO-Revision-Date: 2024-03-11 20:11\n" +"PO-Revision-Date: 2024-07-10 09:04\n" #: tabby-local/src/components/terminalTab.component.ts:113 msgid "\"{command}\" is still running. Close?" diff --git a/package.json b/package.json index 1cbb181d..ea9a461f 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "cross-env": "7.0.3", "css-loader": "^6.7.3", "deep-equal": "2.0.5", - "electron": "^27.0.4", + "electron": "^29", "electron-builder": "^24.6.4", "electron-download": "^4.1.1", "electron-installer-snap": "^5.1.0", @@ -55,7 +55,7 @@ "lru-cache": "^6.0.0", "macos-release": "^3.1.0", "ngx-toastr": "^16.0.2", - "node-abi": "^3.51.0", + "node-abi": "^3.65.0", "npmlog": "6.0.2", "npx": "^10.2.2", "patch-package": "^6.4.7", diff --git a/patches/app-builder-lib+24.4.0.patch b/patches/app-builder-lib+24.6.4.patch similarity index 100% rename from patches/app-builder-lib+24.4.0.patch rename to patches/app-builder-lib+24.6.4.patch diff --git a/scripts/vars.mjs b/scripts/vars.mjs index 11ade76e..218402f8 100755 --- a/scripts/vars.mjs +++ b/scripts/vars.mjs @@ -3,7 +3,7 @@ import * as fs from 'fs' import * as semver from 'semver' import * as childProcess from 'child_process' -process.env.ARCH = ((process.env.ARCH || process.arch) === 'arm') ? 'armv7l' : process.env.ARCH || process.arch +process.env.ARCH = ((process.env.ARCH || process.arch) === 'arm') ? 'armv7l' : (process.env.ARCH || process.arch) import * as url from 'url' const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) diff --git a/tabby-core/src/components/splitTab.component.ts b/tabby-core/src/components/splitTab.component.ts index a2c428e2..1e4f4c29 100644 --- a/tabby-core/src/components/splitTab.component.ts +++ b/tabby-core/src/components/splitTab.component.ts @@ -1,4 +1,4 @@ -import { Observable, Subject } from 'rxjs' +import { Observable, Subject, takeWhile } from 'rxjs' import { Component, Injectable, ViewChild, ViewContainerRef, EmbeddedViewRef, AfterViewInit, OnDestroy, Injector } from '@angular/core' import { BaseTabComponent, BaseTabProcess, GetRecoveryTokenOptions } from './baseTab.component' import { TabRecoveryProvider, RecoveryToken } from '../api/tabRecovery' @@ -381,6 +381,9 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit } } }, 100) + + // Propagate visibility to new children + this.emitVisibility(this.visibility.value) } this.initialized.next() this.initialized.complete() @@ -834,20 +837,38 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit }) } - tab.subscribeUntilDestroyed(tab.titleChange$, () => this.updateTitle()) - tab.subscribeUntilDestroyed(tab.activity$, a => a ? this.displayActivity() : this.clearActivity()) - tab.subscribeUntilDestroyed(tab.progress$, p => this.setProgress(p)) + tab.subscribeUntilDestroyed( + this.observeUntilChildDetached(tab, tab.titleChange$), + () => this.updateTitle(), + ) + tab.subscribeUntilDestroyed( + this.observeUntilChildDetached(tab, tab.activity$), + a => a ? this.displayActivity() : this.clearActivity(), + ) + tab.subscribeUntilDestroyed( + this.observeUntilChildDetached(tab, tab.progress$), + p => this.setProgress(p), + ) if (tab.title) { this.updateTitle() } - tab.subscribeUntilDestroyed(tab.recoveryStateChangedHint$, () => { - this.recoveryStateChangedHint.next() - }) + tab.subscribeUntilDestroyed( + this.observeUntilChildDetached(tab, tab.recoveryStateChangedHint$), + () => { + this.recoveryStateChangedHint.next() + }, + ) tab.destroyed$.subscribe(() => { this.removeTab(tab) }) } + private observeUntilChildDetached (tab: BaseTabComponent, event: Observable): Observable { + return event.pipe(takeWhile(() => { + return this.getAllTabs().includes(tab) + })) + } + private onAfterTabAdded (tab: BaseTabComponent) { setImmediate(() => { this.layout() diff --git a/tabby-electron/src/services/electron.service.ts b/tabby-electron/src/services/electron.service.ts index a56e32ca..24e88a61 100644 --- a/tabby-electron/src/services/electron.service.ts +++ b/tabby-electron/src/services/electron.service.ts @@ -16,7 +16,6 @@ export class ElectronService { clipboard: Clipboard globalShortcut: GlobalShortcut screen: Screen - remote = remote process: any autoUpdater: AutoUpdater powerSaveBlocker: PowerSaveBlocker @@ -44,7 +43,6 @@ export class ElectronService { this.BrowserWindow = remote.BrowserWindow this.Menu = remote.Menu this.MenuItem = remote.MenuItem - this.MenuItem = remote.MenuItem this.nativeTheme = remote.nativeTheme } } diff --git a/tabby-electron/src/services/updater.service.ts b/tabby-electron/src/services/updater.service.ts index ae6132a9..141ca2fc 100644 --- a/tabby-electron/src/services/updater.service.ts +++ b/tabby-electron/src/services/updater.service.ts @@ -1,4 +1,3 @@ -import type { AppUpdater } from 'electron-updater' import { Injectable } from '@angular/core' import axios from 'axios' @@ -13,7 +12,6 @@ export class ElectronUpdaterService extends UpdaterService { private downloaded: Promise private electronUpdaterAvailable = true private updateURL: string - private autoUpdater: AppUpdater constructor ( log: LogService, @@ -30,32 +28,28 @@ export class ElectronUpdaterService extends UpdaterService { return } - this.autoUpdater = electron.remote.require('electron-updater').autoUpdater - this.autoUpdater.autoDownload = true - this.autoUpdater.autoInstallOnAppQuit = false - - this.autoUpdater.on('update-available', () => { + this.electron.ipcRenderer.on('updater:update-available', () => { this.logger.info('Update available') }) - this.autoUpdater.on('update-not-available', () => { + this.electron.ipcRenderer.on('updater:update-not-available', () => { this.logger.info('No updates') }) - this.autoUpdater.on('error', err => { + this.electron.ipcRenderer.on('updater:error', err => { this.logger.error(err) this.electronUpdaterAvailable = false }) this.downloaded = new Promise(resolve => { - this.autoUpdater.once('update-downloaded', () => resolve(true)) + this.electron.ipcRenderer.once('updater:update-downloaded', () => resolve(true)) }) config.ready$.toPromise().then(() => { if (config.store.enableAutomaticUpdates && this.electronUpdaterAvailable && !process.env.TABBY_DEV) { this.logger.debug('Checking for updates') try { - this.autoUpdater.checkForUpdates() + this.electron.ipcRenderer.send('updater:check-for-updates') } catch (e) { this.electronUpdaterAvailable = false this.logger.info('Electron updater unavailable, falling back', e) @@ -82,26 +76,26 @@ export class ElectronUpdaterService extends UpdaterService { reject(err) } cancel = () => { - this.autoUpdater.off('error', onError) - this.autoUpdater.off('update-not-available', onNoUpdate) - this.autoUpdater.off('update-available', onUpdate) + this.electron.ipcRenderer.off('updater:error', onError) + this.electron.ipcRenderer.off('updater:update-not-available', onNoUpdate) + this.electron.ipcRenderer.off('updater:update-available', onUpdate) } - this.autoUpdater.on('error', onError) - this.autoUpdater.on('update-not-available', onNoUpdate) - this.autoUpdater.on('update-available', onUpdate) + this.electron.ipcRenderer.on('updater:error', onError) + this.electron.ipcRenderer.on('updater:update-not-available', onNoUpdate) + this.electron.ipcRenderer.on('updater:update-available', onUpdate) try { - this.autoUpdater.checkForUpdates() + this.electron.ipcRenderer.send('updater:check-for-updates') } catch (e) { this.electronUpdaterAvailable = false this.logger.info('Electron updater unavailable, falling back', e) } }) - this.autoUpdater.on('update-available', () => { + this.electron.ipcRenderer.on('updater:update-available', () => { this.logger.info('Update available') }) - this.autoUpdater.once('update-not-available', () => { + this.electron.ipcRenderer.once('updater:update-not-available', () => { this.logger.info('No updates') }) @@ -138,7 +132,7 @@ export class ElectronUpdaterService extends UpdaterService { }, )).response === 0) { await this.downloaded - this.autoUpdater.quitAndInstall() + this.electron.ipcRenderer.send('updater:quit-and-install') } } } diff --git a/tabby-linkifier/yarn.lock b/tabby-linkifier/yarn.lock index 93475bf7..81339e7b 100644 --- a/tabby-linkifier/yarn.lock +++ b/tabby-linkifier/yarn.lock @@ -11,8 +11,3 @@ 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/src/components/sshTab.component.pug b/tabby-ssh/src/components/sshTab.component.pug index f4ef807f..f6dd1aac 100644 --- a/tabby-ssh/src/components/sshTab.component.pug +++ b/tabby-ssh/src/components/sshTab.component.pug @@ -1,7 +1,10 @@ terminal-toolbar([tab]='this') i.fas.fa-xs.fa-circle.text-success.me-2(*ngIf='session && session.open') i.fas.fa-xs.fa-circle.text-danger.me-2(*ngIf='!session || !session.open') - strong.me-auto {{profile.options.user}}@{{profile.options.host}}:{{profile.options.port}} + strong.me-auto( + style='user-select: text; cursor: text;' + onclick='event.stopPropagation()' + ) {{profile.options.user}}@{{profile.options.host}}:{{profile.options.port}} .me-2( ngbDropdown, diff --git a/tabby-ssh/src/polyfills.ts b/tabby-ssh/src/polyfills.ts index 0893d22e..06235b1f 100644 --- a/tabby-ssh/src/polyfills.ts +++ b/tabby-ssh/src/polyfills.ts @@ -1,4 +1,12 @@ +import 'ssh2' const nodeCrypto = require('crypto') const browserDH = require('diffie-hellman/browser') nodeCrypto.createDiffieHellmanGroup = browserDH.createDiffieHellmanGroup nodeCrypto.createDiffieHellman = browserDH.createDiffieHellman + +// Declare function missing from @types +declare module 'ssh2' { + interface Client { + setNoDelay: (enable?: boolean) => this + } +} diff --git a/tabby-ssh/yarn.lock b/tabby-ssh/yarn.lock index 75d5e470..34474ca1 100644 --- a/tabby-ssh/yarn.lock +++ b/tabby-ssh/yarn.lock @@ -9,15 +9,22 @@ dependencies: ipv6 "*" -"@types/node@*", "@types/node@20.3.1": +"@types/node@*": + version "22.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" + integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== + dependencies: + undici-types "~6.13.0" + +"@types/node@20.3.1": version "20.3.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== "@types/ssh2-streams@*": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz#142af404dae059931aea7fcd1511b5478964feb6" - integrity sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA== + version "0.1.12" + resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.12.tgz#e68795ba2bf01c76b93f9c9809e1f42f0eaaec5f" + integrity sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg== dependencies: "@types/node" "*" @@ -337,6 +344,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +undici-types@~6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" + integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== + winston@0.8.x: version "0.8.3" resolved "https://registry.yarnpkg.com/winston/-/winston-0.8.3.tgz#64b6abf4cd01adcaefd5009393b1d8e8bec19db0" diff --git a/tabby-terminal/src/frontends/xtermFrontend.ts b/tabby-terminal/src/frontends/xtermFrontend.ts index be93e9b1..26961e77 100644 --- a/tabby-terminal/src/frontends/xtermFrontend.ts +++ b/tabby-terminal/src/frontends/xtermFrontend.ts @@ -399,6 +399,10 @@ export class XTermFrontend extends Frontend { } }) + this.xtermCore.browser.isWindows = this.hostApp.platform === Platform.Windows + this.xtermCore.browser.isLinux = this.hostApp.platform === Platform.Linux + this.xtermCore.browser.isMac = this.hostApp.platform === Platform.macOS + this.xterm.options.fontFamily = getCSSFontFamily(config) this.xterm.options.cursorStyle = { beam: 'bar', diff --git a/yarn.lock b/yarn.lock index dcdd9f68..44dade65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -863,10 +863,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== -"@types/node@^18.11.18": - version "18.17.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.12.tgz#c6bd7413a13e6ad9cfb7e97dd5c4e904c1821e50" - integrity sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ== +"@types/node@^20.9.0": + version "20.14.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.14.tgz#6b655d4a88623b0edb98300bb9dd2107225f885e" + integrity sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ== + dependencies: + undici-types "~5.26.4" "@types/parse5@^5": version "5.0.3" @@ -2505,13 +2507,13 @@ 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#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cpu-features@~0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.8.tgz#a2d464b023b8ad09004c8cdca23b33f192f63546" - integrity sha512-BbHBvtYhUhksqTjr6bhNOjGgMnhwhGTQmOoZGD+K7BCaQDCuZl/Ve1ZxUSMRwVC4D/rkCPQ2MAIeYzrWyK7eEg== +cpu-features@~0.0.9: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.10.tgz#9aae536db2710c7254d7ed67cb3cbc7d29ad79c5" + integrity sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA== dependencies: buildcheck "~0.0.6" - nan "^2.17.0" + nan "^2.19.0" crc@^3.8.0: version "3.8.0" @@ -3071,13 +3073,13 @@ electron-to-chromium@^1.4.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz#0e039de59135f44ab9a8ec9025e53a9135eba11f" integrity sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ== -electron@^27.0.4: - version "27.1.0" - resolved "https://registry.yarnpkg.com/electron/-/electron-27.1.0.tgz#d759885e552d7d926526cfc433ab312796f74a9a" - integrity sha512-XPdJiO475QJ8cx59/goWNNWnlV0vab+Ut3occymos7VDxkHV5mFrlW6tcGi+M3bW6gBfwpJocWMng8tw542vww== +electron@^29: + version "29.4.5" + resolved "https://registry.yarnpkg.com/electron/-/electron-29.4.5.tgz#b83bbeee6fc722dbbaab30d3a6bc8e982c9ab98d" + integrity sha512-DlEuzGbWBYl1Qr0qUYgNZdoixJg4YGHy2HC6fkRjSXSlb01UrQ5ORi8hNLzelzyYx8rNQyyE3zDUuk9EnZwYuA== dependencies: "@electron/get" "^2.0.0" - "@types/node" "^18.11.18" + "@types/node" "^20.9.0" extract-zip "^2.0.1" elliptic@^6.5.3: @@ -5983,7 +5985,7 @@ mute-stream@~0.0.4: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@2.17.0, nan@^2.17.0: +nan@2.17.0, nan@^2.18.0, nan@^2.19.0: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== @@ -6028,10 +6030,10 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-abi@^3.0.0, node-abi@^3.51.0: - version "3.51.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.51.0.tgz#970bf595ef5a26a271307f8a4befa02823d4e87d" - integrity sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA== +node-abi@^3.0.0, node-abi@^3.65.0: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== dependencies: semver "^7.3.5" @@ -8219,15 +8221,15 @@ sprintf-js@~1.0.2: integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= ssh2@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.14.0.tgz#8f68440e1b768b66942c9e4e4620b2725b3555bb" - integrity sha512-AqzD1UCqit8tbOKoj6ztDDi1ffJZ2rV2SwlgrVVrHPkV5vWqGJOVp5pmtj18PunkPJAuKQsnInyKV+/Nb2bUnA== + version "1.15.0" + resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.15.0.tgz#2f998455036a7f89e0df5847efb5421748d9871b" + integrity sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw== dependencies: asn1 "^0.2.6" bcrypt-pbkdf "^1.0.2" optionalDependencies: - cpu-features "~0.0.8" - nan "^2.17.0" + cpu-features "~0.0.9" + nan "^2.18.0" sshpk@^1.7.0: version "1.16.1" @@ -8926,6 +8928,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unique-filename@^1.1.0, unique-filename@~1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz"