mirror of
https://github.com/Eugeny/tabby.git
synced 2025-07-30 14:14:35 +00:00
Compare commits
1 Commits
test
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3e7333ec80 |
@@ -1220,33 +1220,6 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "siebsie23",
|
||||
"name": "Sibren",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/25083973?v=4",
|
||||
"profile": "https://siebsie23.nl/",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "nwalser",
|
||||
"name": "Nathaniel Walser",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/33339996?v=4",
|
||||
"profile": "https://www.nathaniel-walser.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "aaronhuggins",
|
||||
"name": "Aaron Huggins",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/16567111?v=4",
|
||||
"profile": "https://github.com/aaronhuggins",
|
||||
"contributions": [
|
||||
"design"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
19
.github/workflows/build.yml
vendored
19
.github/workflows/build.yml
vendored
@@ -2,7 +2,7 @@ name: Package-Build
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
Lint:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: macos-11
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
run: yarn run lint
|
||||
|
||||
macOS-Build:
|
||||
runs-on: macos-12
|
||||
runs-on: macos-11
|
||||
needs: Lint
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -53,8 +53,7 @@ jobs:
|
||||
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo -H pip install setuptools
|
||||
sudo npm i -g yarn@1.22.1 node-gyp@10
|
||||
sudo npm i -g yarn@1.22.1
|
||||
yarn --network-timeout 1000000
|
||||
env:
|
||||
ARCH: ${{matrix.arch}}
|
||||
@@ -111,16 +110,16 @@ jobs:
|
||||
|
||||
- name: Package artifacts
|
||||
run: |
|
||||
mkdir artifact-dmg
|
||||
mv dist/*.dmg artifact-dmg/
|
||||
mkdir artifact-pkg
|
||||
mv dist/*.pkg artifact-pkg/
|
||||
mkdir artifact-zip
|
||||
mv dist/*.zip artifact-zip/
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload DMG
|
||||
name: Upload PKG
|
||||
with:
|
||||
name: macOS .dmg (${{matrix.arch}})
|
||||
path: artifact-dmg
|
||||
name: macOS .pkg (${{matrix.arch}})
|
||||
path: artifact-pkg
|
||||
|
||||
- uses: actions/upload-artifact@master
|
||||
name: Upload ZIP
|
||||
@@ -163,7 +162,7 @@ jobs:
|
||||
- name: Install deps (amd64)
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install libarchive-tools zsh python3-distutils
|
||||
sudo apt-get install libarchive-tools zsh
|
||||
|
||||
- name: Install npm_modules (amd64)
|
||||
run: |
|
||||
|
@@ -327,11 +327,6 @@ Dank geht an diese wunderbaren Menschen ([emoji key](https://allcontributors.org
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -329,11 +329,6 @@ Gracias a estas maravillosas personas ([emoji key](https://allcontributors.org/d
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -326,11 +326,6 @@ Terima kasih kepada mereka yang telah membantu ([emoji key](https://allcontribut
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -322,11 +322,6 @@ Grazie a queste persone meravigliose ([emoji key](https://allcontributors.org/do
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -337,11 +337,6 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -316,11 +316,6 @@ Pull requests and plugins are welcome!
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -139,8 +139,6 @@ Plugins and themes can be installed directly from the Settings view inside Tabby
|
||||
* [gruvbox](https://github.com/porkloin/terminus-theme-gruvbox)
|
||||
* [windows10](https://www.npmjs.com/package/terminus-theme-windows10)
|
||||
* [altair](https://github.com/yxuko/terminus-altair)
|
||||
* [catppuccin](https://github.com/catppuccin/tabby) - Soothing pastel theme for Tabby
|
||||
* [noctis](https://github.com/aaronhuggins/tabby-colors-noctis) - color themes inspired by Noctis VS Code theme
|
||||
|
||||
# Sponsors <!-- omit in toc -->
|
||||
|
||||
@@ -340,11 +338,6 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -330,11 +330,6 @@ Obrigado vai para essas pessoas maravilhosas ([emoji key](https://allcontributor
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -322,11 +322,6 @@ Pull-запросы и плагины приветствуются!
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -321,11 +321,6 @@
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wljince007"><img src="https://avatars.githubusercontent.com/u/88243938?v=4?s=100" width="100px;" alt="wljince007"/><br /><sub><b>wljince007</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=wljince007" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/FeroTheFox"><img src="https://avatars.githubusercontent.com/u/52982404?v=4?s=100" width="100px;" alt="fero"/><br /><sub><b>fero</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=FeroTheFox" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://siebsie23.nl/"><img src="https://avatars.githubusercontent.com/u/25083973?v=4?s=100" width="100px;" alt="Sibren"/><br /><sub><b>Sibren</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siebsie23" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.nathaniel-walser.com"><img src="https://avatars.githubusercontent.com/u/33339996?v=4?s=100" width="100px;" alt="Nathaniel Walser"/><br /><sub><b>Nathaniel Walser</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=nwalser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aaronhuggins"><img src="https://avatars.githubusercontent.com/u/16567111?v=4?s=100" width="100px;" alt="Aaron Huggins"/><br /><sub><b>Aaron Huggins</b></sub></a><br /><a href="#design-aaronhuggins" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@@ -1,14 +1,13 @@
|
||||
import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
import * as yaml from 'js-yaml'
|
||||
import { app } from 'electron'
|
||||
import { writeFile } from 'atomically'
|
||||
|
||||
|
||||
export const configPath = path.join(process.env.TABBY_CONFIG_DIRECTORY!, 'config.yaml')
|
||||
const legacyConfigPath = path.join(process.env.TABBY_CONFIG_DIRECTORY!, '../terminus', 'config.yaml')
|
||||
|
||||
|
||||
export function migrateConfig (): void {
|
||||
const configPath = path.join(app.getPath('userData'), 'config.yaml')
|
||||
const legacyConfigPath = path.join(app.getPath('userData'), '../terminus', 'config.yaml')
|
||||
if (fs.existsSync(legacyConfigPath) && (
|
||||
!fs.existsSync(configPath) ||
|
||||
fs.statSync(configPath).mtime < fs.statSync(legacyConfigPath).mtime
|
||||
@@ -20,6 +19,7 @@ export function migrateConfig (): void {
|
||||
export function loadConfig (): any {
|
||||
migrateConfig()
|
||||
|
||||
const configPath = path.join(app.getPath('userData'), 'config.yaml')
|
||||
if (fs.existsSync(configPath)) {
|
||||
return yaml.load(fs.readFileSync(configPath, 'utf8'))
|
||||
} else {
|
||||
@@ -27,6 +27,8 @@ export function loadConfig (): any {
|
||||
}
|
||||
}
|
||||
|
||||
const configPath = path.join(app.getPath('userData'), 'config.yaml')
|
||||
|
||||
export async function saveConfig (content: string): Promise<void> {
|
||||
await writeFile(configPath, content, { encoding: 'utf8' })
|
||||
await writeFile(configPath + '.backup', content, { encoding: 'utf8' })
|
||||
|
@@ -1,21 +1,17 @@
|
||||
import { app, ipcMain, Menu, dialog } from 'electron'
|
||||
|
||||
// set defaults of environment variables
|
||||
import 'dotenv/config'
|
||||
process.env.TABBY_PLUGINS ??= ''
|
||||
process.env.TABBY_CONFIG_DIRECTORY ??= app.getPath('userData')
|
||||
|
||||
|
||||
import 'v8-compile-cache'
|
||||
import './portable'
|
||||
import 'source-map-support/register'
|
||||
import './sentry'
|
||||
import './lru'
|
||||
import { app, ipcMain, Menu, dialog } from 'electron'
|
||||
import { parseArgs } from './cli'
|
||||
import { Application } from './app'
|
||||
import electronDebug = require('electron-debug')
|
||||
import { loadConfig } from './config'
|
||||
|
||||
if (!process.env.TABBY_PLUGINS) {
|
||||
process.env.TABBY_PLUGINS = ''
|
||||
}
|
||||
|
||||
const argv = parseArgs(process.argv, process.cwd())
|
||||
|
||||
|
@@ -26,7 +26,7 @@ abstract class GlasstronWindow extends BrowserWindow {
|
||||
abstract setBlur (_: boolean)
|
||||
}
|
||||
|
||||
const macOSVibrancyType: any = process.platform === 'darwin' ? compareVersions(macOSRelease().version || '0.0', '10.14', '>=') ? 'under-window' : 'dark' : null
|
||||
const macOSVibrancyType = process.platform === 'darwin' ? compareVersions(macOSRelease().version || '0.0', '10.14', '>=') ? 'under-window' : 'dark' : null
|
||||
|
||||
const activityIcon = nativeImage.createFromPath(`${app.getAppPath()}/assets/activity.png`)
|
||||
|
||||
|
@@ -38,7 +38,7 @@
|
||||
"@tabby-gang/windows-blurbehind": "^3.0.0",
|
||||
"macos-native-processlist": "^2.1.0",
|
||||
"patch-package": "^6.5.0",
|
||||
"serialport": "11.0.1",
|
||||
"serialport": "12.0.0",
|
||||
"serialport-binding-webserialapi": "^1.0.3",
|
||||
"windows-native-registry": "^3.2.1",
|
||||
"windows-process-tree": "^0.4.0"
|
||||
@@ -64,7 +64,6 @@
|
||||
},
|
||||
"resolutions": {
|
||||
"*/node-abi": "^2.20.0",
|
||||
"node-gyp": "10.0.0",
|
||||
"nan": "github:jkleinsc/nan#remove_accessor_signature"
|
||||
}
|
||||
}
|
||||
|
689
app/yarn.lock
689
app/yarn.lock
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,7 @@
|
||||
appId: org.tabby
|
||||
productName: Tabby
|
||||
compression: normal
|
||||
npmRebuild: false
|
||||
files:
|
||||
- '**/*'
|
||||
- dist
|
||||
|
402
locale/af-ZA.po
402
locale/af-ZA.po
File diff suppressed because it is too large
Load Diff
400
locale/app.pot
400
locale/app.pot
File diff suppressed because it is too large
Load Diff
402
locale/bg-BG.po
402
locale/bg-BG.po
File diff suppressed because it is too large
Load Diff
430
locale/cs-CZ.po
430
locale/cs-CZ.po
File diff suppressed because it is too large
Load Diff
402
locale/da-DK.po
402
locale/da-DK.po
File diff suppressed because it is too large
Load Diff
426
locale/de-DE.po
426
locale/de-DE.po
File diff suppressed because it is too large
Load Diff
402
locale/en-GB.po
402
locale/en-GB.po
File diff suppressed because it is too large
Load Diff
402
locale/es-ES.po
402
locale/es-ES.po
File diff suppressed because it is too large
Load Diff
426
locale/fr-FR.po
426
locale/fr-FR.po
File diff suppressed because it is too large
Load Diff
402
locale/hr-HR.po
402
locale/hr-HR.po
File diff suppressed because it is too large
Load Diff
402
locale/id-ID.po
402
locale/id-ID.po
File diff suppressed because it is too large
Load Diff
432
locale/it-IT.po
432
locale/it-IT.po
File diff suppressed because it is too large
Load Diff
442
locale/ja-JP.po
442
locale/ja-JP.po
File diff suppressed because it is too large
Load Diff
436
locale/ko-KR.po
436
locale/ko-KR.po
File diff suppressed because it is too large
Load Diff
402
locale/pl-PL.po
402
locale/pl-PL.po
File diff suppressed because it is too large
Load Diff
402
locale/pt-BR.po
402
locale/pt-BR.po
File diff suppressed because it is too large
Load Diff
402
locale/pt-PT.po
402
locale/pt-PT.po
File diff suppressed because it is too large
Load Diff
402
locale/ru-RU.po
402
locale/ru-RU.po
File diff suppressed because it is too large
Load Diff
432
locale/sv-SE.po
432
locale/sv-SE.po
File diff suppressed because it is too large
Load Diff
402
locale/uk-UA.po
402
locale/uk-UA.po
File diff suppressed because it is too large
Load Diff
402
locale/zh-CN.po
402
locale/zh-CN.po
File diff suppressed because it is too large
Load Diff
438
locale/zh-TW.po
438
locale/zh-TW.po
File diff suppressed because it is too large
Load Diff
12
package.json
12
package.json
@@ -40,7 +40,7 @@
|
||||
"css-loader": "^6.7.3",
|
||||
"deep-equal": "2.0.5",
|
||||
"electron": "^25.3.0",
|
||||
"electron-builder": "^24.6.4",
|
||||
"electron-builder": "^24.0.0-alpha.1",
|
||||
"electron-download": "^4.1.1",
|
||||
"electron-installer-snap": "^5.1.0",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
@@ -96,10 +96,9 @@
|
||||
"resolutions": {
|
||||
"*/pug": "^3",
|
||||
"lzma-native": "^8.0.6",
|
||||
"*/node-abi": "^3.51.0",
|
||||
"*/node-abi": "^3.33.0",
|
||||
"**/graceful-fs": "^4.2.4",
|
||||
"nan": "2.17.0",
|
||||
"node-gyp": "10.0.0"
|
||||
"nan": "2.17.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "npm run build:typings && node scripts/build-modules.mjs",
|
||||
@@ -116,8 +115,5 @@
|
||||
"i18n:push": "crowdin push"
|
||||
},
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"dotenv": "^16.3.1"
|
||||
}
|
||||
"private": true
|
||||
}
|
||||
|
@@ -1,45 +0,0 @@
|
||||
diff --git a/node_modules/electron-rebuild/lib/src/module-rebuilder.js b/node_modules/electron-rebuild/lib/src/module-rebuilder.js
|
||||
index 0d78dbe..60ee50d 100644
|
||||
--- a/node_modules/electron-rebuild/lib/src/module-rebuilder.js
|
||||
+++ b/node_modules/electron-rebuild/lib/src/module-rebuilder.js
|
||||
@@ -123,7 +123,7 @@ class ModuleRebuilder {
|
||||
await fs.outputFile(this.metaPath, this.metaData);
|
||||
}
|
||||
async rebuild(cacheKey) {
|
||||
- return (await this.findPrebuildifyModule(cacheKey)) ||
|
||||
+ return
|
||||
(await this.findPrebuildInstallModule(cacheKey)) ||
|
||||
(await this.rebuildNodeGypModule(cacheKey));
|
||||
}
|
||||
diff --git a/node_modules/electron-rebuild/lib/src/module-walker.js b/node_modules/electron-rebuild/lib/src/module-walker.js
|
||||
index b36e35c..09c6d03 100644
|
||||
--- a/node_modules/electron-rebuild/lib/src/module-walker.js
|
||||
+++ b/node_modules/electron-rebuild/lib/src/module-walker.js
|
||||
@@ -57,6 +57,7 @@ class ModuleWalker {
|
||||
return;
|
||||
}
|
||||
d('exploring', modulePath);
|
||||
+
|
||||
let childPackageJson;
|
||||
try {
|
||||
childPackageJson = await (0, read_package_json_1.readPackageJson)(modulePath, true);
|
||||
diff --git a/node_modules/electron-rebuild/lib/src/rebuild.js b/node_modules/electron-rebuild/lib/src/rebuild.js
|
||||
index 41e3a3e..3f63287 100644
|
||||
--- a/node_modules/electron-rebuild/lib/src/rebuild.js
|
||||
+++ b/node_modules/electron-rebuild/lib/src/rebuild.js
|
||||
@@ -101,6 +101,7 @@ class Rebuilder {
|
||||
await this.moduleWalker.findAllModulesIn(nodeModulesPath);
|
||||
}
|
||||
for (const modulePath of this.moduleWalker.modulesToRebuild) {
|
||||
+ await this.rebuildModuleAt(modulePath)
|
||||
this.rebuilds.push(() => this.rebuildModuleAt(modulePath));
|
||||
}
|
||||
this.rebuilds.push(() => this.rebuildModuleAt(this.buildPath));
|
||||
@@ -117,6 +118,7 @@ class Rebuilder {
|
||||
if (!(await fs.pathExists(path.resolve(modulePath, 'binding.gyp')))) {
|
||||
return;
|
||||
}
|
||||
+
|
||||
const moduleRebuilder = new module_rebuilder_1.ModuleRebuilder(this, modulePath);
|
||||
this.lifecycle.emit('module-found', path.basename(modulePath));
|
||||
if (!this.force && await moduleRebuilder.alreadyBuiltByRebuild()) {
|
@@ -18,7 +18,7 @@ process.env.APPLE_APP_SPECIFIC_PASSWORD ??= process.env.APPSTORE_PASSWORD
|
||||
|
||||
builder({
|
||||
dir: true,
|
||||
mac: ['dmg', 'zip'],
|
||||
mac: ['pkg', 'zip'],
|
||||
x64: process.env.ARCH === 'x86_64',
|
||||
arm64: process.env.ARCH === 'arm64',
|
||||
config: {
|
||||
@@ -32,6 +32,7 @@ builder({
|
||||
teamId: process.env.APPLE_TEAM_ID,
|
||||
} : false,
|
||||
},
|
||||
npmRebuild: process.env.ARCH !== 'arm64',
|
||||
publish: process.env.KEYGEN_TOKEN ? [
|
||||
vars.keygenConfig,
|
||||
{
|
||||
|
@@ -18,18 +18,17 @@ export class SelectorModalComponent<T> {
|
||||
@Input() selectedIndex = 0
|
||||
hasGroups = false
|
||||
@ViewChildren('item') itemChildren: QueryList<ElementRef>
|
||||
private preventEdit: boolean
|
||||
|
||||
constructor (public modalInstance: NgbActiveModal) {
|
||||
this.preventEdit = false
|
||||
}
|
||||
constructor (
|
||||
public modalInstance: NgbActiveModal,
|
||||
) { }
|
||||
|
||||
ngOnInit (): void {
|
||||
this.onFilterChange()
|
||||
this.hasGroups = this.options.some(x => x.group)
|
||||
}
|
||||
|
||||
@HostListener('keydown', ['$event']) onKeyDown (event: KeyboardEvent): void {
|
||||
@HostListener('keydown', ['$event']) onKeyUp (event: KeyboardEvent): void {
|
||||
if (event.key === 'Escape') {
|
||||
this.close()
|
||||
} else if (this.filteredOptions.length > 0) {
|
||||
@@ -47,14 +46,10 @@ export class SelectorModalComponent<T> {
|
||||
event.preventDefault()
|
||||
} else if (event.key === 'Enter') {
|
||||
this.selectOption(this.filteredOptions[this.selectedIndex])
|
||||
} else if (event.key === 'Backspace' && !this.preventEdit) {
|
||||
if (this.canEditSelected()) {
|
||||
event.preventDefault()
|
||||
this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent!
|
||||
this.onFilterChange()
|
||||
} else {
|
||||
this.preventEdit = true
|
||||
}
|
||||
} else if (event.key === 'Backspace' && this.canEditSelected()) {
|
||||
event.preventDefault()
|
||||
this.filter = this.filteredOptions[this.selectedIndex].freeInputEquivalent!
|
||||
this.onFilterChange()
|
||||
}
|
||||
|
||||
this.selectedIndex = (this.selectedIndex + this.filteredOptions.length) % this.filteredOptions.length
|
||||
@@ -66,12 +61,6 @@ export class SelectorModalComponent<T> {
|
||||
}
|
||||
}
|
||||
|
||||
@HostListener('keyup', ['$event']) onKeyUp (event: KeyboardEvent): void {
|
||||
if (event.key === 'Backspace' && this.preventEdit) {
|
||||
this.preventEdit = false
|
||||
}
|
||||
}
|
||||
|
||||
onFilterChange (): void {
|
||||
const f = this.filter.trim().toLowerCase()
|
||||
if (!f) {
|
||||
|
@@ -1,10 +1,10 @@
|
||||
.container.mt-3.mb-3
|
||||
.mb-3
|
||||
.container.mt-5.mb-5
|
||||
.mb-4
|
||||
.tabby-logo
|
||||
h1.tabby-title Tabby
|
||||
sup α
|
||||
|
||||
.text-center.mb-3(translate) Thank you for downloading Tabby!
|
||||
.text-center.mb-5(translate) Thank you for downloading Tabby!
|
||||
|
||||
.form-line
|
||||
.header
|
||||
@@ -16,54 +16,13 @@
|
||||
*ngFor='let lang of allLanguages'
|
||||
) {{lang.name}}
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title(translate) Switch color scheme
|
||||
|
||||
.btn-group(role='group')
|
||||
input.btn-check(
|
||||
type='radio',
|
||||
name='colorSchemeMode',
|
||||
[(ngModel)]='config.store.appearance.colorSchemeMode',
|
||||
(ngModelChange)='config.save()',
|
||||
id='colorSchemeModeAuto',
|
||||
[value]='"auto"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='colorSchemeModeAuto'
|
||||
)
|
||||
span(translate) From system
|
||||
input.btn-check(
|
||||
type='radio',
|
||||
name='colorSchemeMode',
|
||||
[(ngModel)]='config.store.appearance.colorSchemeMode',
|
||||
(ngModelChange)='config.save()',
|
||||
id='colorSchemeModeDark',
|
||||
[value]='"dark"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='colorSchemeModeDark'
|
||||
)
|
||||
span(translate) Always dark
|
||||
input.btn-check(
|
||||
type='radio',
|
||||
name='colorSchemeMode',
|
||||
[(ngModel)]='config.store.appearance.colorSchemeMode',
|
||||
(ngModelChange)='config.save()',
|
||||
id='colorSchemeModeLight',
|
||||
[value]='"light"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='colorSchemeModeLight'
|
||||
)
|
||||
span(translate) Always light
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title(translate) Enable analytics
|
||||
.description(translate) Help track the number of Tabby installs across the world!
|
||||
toggle([(ngModel)]='config.store.enableAnalytics')
|
||||
|
||||
|
||||
.form-line
|
||||
.header
|
||||
.title(translate) Enable global hotkey (Ctrl-Space)
|
||||
|
@@ -6,8 +6,3 @@
|
||||
max-height: 100%;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.tabby-logo {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
|
@@ -96,3 +96,5 @@ hotkeys:
|
||||
- '⌘-Shift-E'
|
||||
command-selector:
|
||||
- '⌘-Shift-P'
|
||||
appearance:
|
||||
vibrancy: true
|
||||
|
@@ -19,7 +19,6 @@ appearance:
|
||||
vibrancyType: 'blur'
|
||||
lastTabClosesWindow: false
|
||||
spaciness: 1
|
||||
colorSchemeMode: 'dark'
|
||||
terminal:
|
||||
showBuiltinProfiles: true
|
||||
showRecentProfiles: 3
|
||||
|
@@ -398,22 +398,12 @@ export class ConfigService {
|
||||
config.version = 5
|
||||
}
|
||||
if (config.version < 6) {
|
||||
if (config.ssh?.clearServiceMessagesOnConnect === false) {
|
||||
config.profileDefaults ??= {}
|
||||
config.profileDefaults.ssh ??= {}
|
||||
if (config.ssh.clearServiceMessagesOnConnect === false) {
|
||||
config.profileDefaults.ssh.clearServiceMessagesOnConnect = false
|
||||
delete config.ssh?.clearServiceMessagesOnConnect
|
||||
}
|
||||
config.version = 6
|
||||
}
|
||||
if (config.version < 7) {
|
||||
if (!config.configSync?.host || config.configSync?.host === 'https://api.tabby.sh') {
|
||||
config.configSync ??= {}
|
||||
delete config.configSync.host
|
||||
delete config.configSync.token
|
||||
}
|
||||
config.version = 7
|
||||
}
|
||||
}
|
||||
|
||||
private async maybeDecryptConfig (store) {
|
||||
|
@@ -115,11 +115,10 @@ export class ProfilesService {
|
||||
async writeProfile (profile: PartialProfile<Profile>): Promise<void> {
|
||||
const cProfile = this.config.store.profiles.find(p => p.id === profile.id)
|
||||
if (cProfile) {
|
||||
// Fully replace the config
|
||||
for (const k in cProfile) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete cProfile[k]
|
||||
if (!profile.group) {
|
||||
delete cProfile.group
|
||||
}
|
||||
|
||||
Object.assign(cProfile, profile)
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@ import { Subject, Observable } from 'rxjs'
|
||||
import * as Color from 'color'
|
||||
import { ConfigService } from '../services/config.service'
|
||||
import { Theme } from '../api/theme'
|
||||
import { PlatformService, PlatformTheme } from '../api/platform'
|
||||
import { PlatformService } from '../api/platform'
|
||||
import { NewTheme } from '../theme'
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
@@ -194,14 +194,7 @@ export class ThemesService {
|
||||
|
||||
/// @hidden
|
||||
_getActiveColorScheme (): any {
|
||||
let theme: PlatformTheme = 'dark'
|
||||
if (this.config.store.appearance.colorSchemeMode === 'light') {
|
||||
theme = 'light'
|
||||
} else if (this.config.store.appearance.colorSchemeMode === 'auto') {
|
||||
theme = this.platform.getTheme()
|
||||
}
|
||||
|
||||
if (theme === 'light') {
|
||||
if (this.platform.getTheme() === 'light') {
|
||||
return this.config.store.terminal.lightColorScheme
|
||||
} else {
|
||||
return this.config.store.terminal.colorScheme
|
||||
|
@@ -11,7 +11,6 @@ import { ElectronHostWindow } from './hostWindow.service'
|
||||
import { ShellIntegrationService } from './shellIntegration.service'
|
||||
import { ElectronHostAppService } from './hostApp.service'
|
||||
import { PlatformTheme } from '../../../tabby-core/src/api/platform'
|
||||
import { configPath } from '../../../app/lib/config'
|
||||
const fontManager = require('fontmanager-redux') // eslint-disable-line
|
||||
|
||||
/* eslint-disable block-scoped-var */
|
||||
@@ -37,7 +36,7 @@ export class ElectronPlatformService extends PlatformService {
|
||||
private translate: TranslateService,
|
||||
) {
|
||||
super()
|
||||
this.configPath = configPath
|
||||
this.configPath = path.join(electron.app.getPath('userData'), 'config.yaml')
|
||||
|
||||
electron.ipcRenderer.on('host:display-metrics-changed', () => {
|
||||
this.zone.run(() => this.displayMetricsChanged.next())
|
||||
|
@@ -87,11 +87,6 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
.description(translate) Sends data one byte at a time
|
||||
toggle([(ngModel)]='profile.options.slowSend')
|
||||
|
||||
li(ngbNavItem)
|
||||
a(ngbNavLink, translate) Colors
|
||||
ng-template(ngbNavContent)
|
||||
color-scheme-selector([(model)]='profile.terminalColorScheme')
|
||||
|
||||
li(ngbNavItem)
|
||||
a(ngbNavLink, translate) Login scripts
|
||||
ng-template(ngbNavContent)
|
||||
|
@@ -20,7 +20,7 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
)
|
||||
i.fas.fa-external-link-alt
|
||||
|
||||
.form-line(*ngIf='config.store.configSync.token')
|
||||
.form-line
|
||||
.header
|
||||
.title(translate) Secret sync token
|
||||
.description(translate) Get it from the Tabby Web settings window
|
||||
@@ -36,11 +36,6 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
i.fas.fa-fw.fa-check.text-success(*ngIf='connectionSuccessful')
|
||||
i.fas.fa-fw.fa-exclamation-triangle.text-danger(*ngIf='connectionSuccessful === false')
|
||||
|
||||
.alert.alert-info.d-flex.align-items-center
|
||||
.me-auto
|
||||
span(translate) Config sync requires an instance of the Tabby Web service.
|
||||
a.ml-1((click)='openTabbyWebInfo()', href='#', translate) Learn more
|
||||
|
||||
ng-container(*ngIf='config.store.configSync.token')
|
||||
.alert.alert-danger(*ngIf='connectionSuccessful === false')
|
||||
i.fas.fa-exclamation-triangle
|
||||
|
@@ -141,8 +141,4 @@ export class ConfigSyncSettingsTabComponent extends BaseComponent {
|
||||
this.platform.openExternal(this.config.store.configSync.host)
|
||||
}
|
||||
}
|
||||
|
||||
openTabbyWebInfo () {
|
||||
this.platform.openExternal('https://github.com/Eugeny/tabby-web')
|
||||
}
|
||||
}
|
||||
|
@@ -12,16 +12,14 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
[(ngModel)]='config.store.terminal.profile',
|
||||
(ngModelChange)='config.save()',
|
||||
)
|
||||
optgroup([label]='"Custom Profiles"|translate', *ngIf='customProfiles?.length > 0')
|
||||
option(
|
||||
*ngFor='let profile of customProfiles',
|
||||
[ngValue]='profile.id'
|
||||
) {{profile.name}}
|
||||
optgroup([label]='"Built-in Profiles"|translate')
|
||||
option(
|
||||
*ngFor='let profile of builtinProfiles',
|
||||
[ngValue]='profile.id'
|
||||
) {{profile.name}}
|
||||
option(
|
||||
*ngFor='let profile of profiles',
|
||||
[ngValue]='profile.id'
|
||||
) {{profile.name}}
|
||||
option(
|
||||
*ngFor='let profile of builtinProfiles',
|
||||
[ngValue]='profile.id'
|
||||
) {{profile.name}}
|
||||
|
||||
.d-flex.mb-3
|
||||
.input-group
|
||||
|
@@ -20,9 +20,7 @@ interface CollapsableProfileGroup extends ProfileGroup {
|
||||
})
|
||||
export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
builtinProfiles: PartialProfile<Profile>[] = []
|
||||
profiles: PartialProfile<Profile>[] = []
|
||||
templateProfiles: PartialProfile<Profile>[] = []
|
||||
customProfiles: PartialProfile<Profile>[] = []
|
||||
profileGroups: PartialProfileGroup<CollapsableProfileGroup>[]
|
||||
filter = ''
|
||||
Platform = Platform
|
||||
@@ -42,17 +40,12 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
}
|
||||
|
||||
async ngOnInit (): Promise<void> {
|
||||
await this.refreshProfileGroups()
|
||||
await this.refreshProfiles()
|
||||
this.subscribeUntilDestroyed(this.config.changed$, () => this.refreshProfileGroups())
|
||||
this.subscribeUntilDestroyed(this.config.changed$, () => this.refreshProfiles())
|
||||
}
|
||||
|
||||
async refreshProfiles (): Promise<void> {
|
||||
this.refresh()
|
||||
this.builtinProfiles = (await this.profilesService.getProfiles()).filter(x => x.isBuiltin)
|
||||
this.customProfiles = (await this.profilesService.getProfiles()).filter(x => !x.isBuiltin)
|
||||
this.templateProfiles = this.builtinProfiles.filter(x => x.isTemplate)
|
||||
this.builtinProfiles = this.builtinProfiles.filter(x => !x.isTemplate)
|
||||
this.refresh()
|
||||
this.subscribeUntilDestroyed(this.config.changed$, () => this.refresh())
|
||||
}
|
||||
|
||||
launchProfile (profile: PartialProfile<Profile>): void {
|
||||
@@ -77,24 +70,25 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
return
|
||||
}
|
||||
}
|
||||
const baseProfile: PartialProfile<Profile> = deepClone(base)
|
||||
delete baseProfile.id
|
||||
const profile: PartialProfile<Profile> = deepClone(base)
|
||||
delete profile.id
|
||||
if (base.isTemplate) {
|
||||
baseProfile.name = ''
|
||||
profile.name = ''
|
||||
} else if (!base.isBuiltin) {
|
||||
baseProfile.name = this.translate.instant('{name} copy', base)
|
||||
profile.name = this.translate.instant('{name} copy', base)
|
||||
}
|
||||
baseProfile.isBuiltin = false
|
||||
baseProfile.isTemplate = false
|
||||
const result = await this.showProfileEditModal(baseProfile)
|
||||
profile.isBuiltin = false
|
||||
profile.isTemplate = false
|
||||
const result = await this.showProfileEditModal(profile)
|
||||
if (!result) {
|
||||
return
|
||||
}
|
||||
if (!result.name) {
|
||||
const cfgProxy = this.profilesService.getConfigProxyForProfile(result)
|
||||
result.name = this.profilesService.providerForProfile(result)?.getSuggestedName(cfgProxy) ?? this.translate.instant('{name} copy', base)
|
||||
Object.assign(profile, result)
|
||||
if (!profile.name) {
|
||||
const cfgProxy = this.profilesService.getConfigProxyForProfile(profile)
|
||||
profile.name = this.profilesService.providerForProfile(profile)?.getSuggestedName(cfgProxy) ?? this.translate.instant('{name} copy', base)
|
||||
}
|
||||
await this.profilesService.newProfile(result)
|
||||
await this.profilesService.newProfile(profile)
|
||||
await this.config.save()
|
||||
}
|
||||
|
||||
@@ -103,7 +97,8 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
if (!result) {
|
||||
return
|
||||
}
|
||||
await this.profilesService.writeProfile(result)
|
||||
Object.assign(profile, result)
|
||||
await this.profilesService.writeProfile(profile)
|
||||
await this.config.save()
|
||||
}
|
||||
|
||||
@@ -124,6 +119,12 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
return null
|
||||
}
|
||||
|
||||
// Fully replace the config
|
||||
for (const k in profile) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete profile[k]
|
||||
}
|
||||
|
||||
result.type = provider.id
|
||||
return result
|
||||
}
|
||||
@@ -161,7 +162,8 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
if (!result) {
|
||||
return
|
||||
}
|
||||
await this.profilesService.writeProfileGroup(ProfilesSettingsTabComponent.collapsableIntoPartialProfileGroup(result))
|
||||
Object.assign(group, result)
|
||||
await this.profilesService.writeProfileGroup(ProfilesSettingsTabComponent.collapsableIntoPartialProfileGroup(group))
|
||||
await this.config.save()
|
||||
}
|
||||
|
||||
@@ -247,7 +249,7 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
|
||||
}
|
||||
}
|
||||
|
||||
async refreshProfileGroups (): Promise<void> {
|
||||
async refresh (): Promise<void> {
|
||||
const profileGroupCollapsed = JSON.parse(window.localStorage.profileGroupCollapsed ?? '{}')
|
||||
const groups = await this.profilesService.getProfileGroups({ includeNonUserGroup: true, includeProfiles: true })
|
||||
groups.sort((a, b) => a.name.localeCompare(b.name))
|
||||
|
@@ -1,15 +0,0 @@
|
||||
h4.modal-header.m-0.pb-0 {{title}}
|
||||
.modal-body
|
||||
.input-group.w-100
|
||||
input.form-control(
|
||||
type='text',
|
||||
[(ngModel)]='secret.value',
|
||||
disabled
|
||||
)
|
||||
button.btn.btn-secondary(
|
||||
(click)='copySecret()'
|
||||
)
|
||||
i.fas.fa-copy
|
||||
|
||||
.modal-footer
|
||||
button.btn.btn-primary((click)='close()', translate) Close
|
@@ -1,27 +0,0 @@
|
||||
import { Component, Input } from '@angular/core'
|
||||
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { NotificationsService, VaultFileSecret } from 'tabby-core'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
templateUrl: './showSecretModal.component.pug',
|
||||
})
|
||||
export class ShowSecretModalComponent {
|
||||
@Input() title: string
|
||||
@Input() secret: VaultFileSecret
|
||||
|
||||
constructor (
|
||||
public modalInstance: NgbActiveModal,
|
||||
private notifications: NotificationsService,
|
||||
) { }
|
||||
|
||||
close (): void {
|
||||
this.modalInstance.dismiss()
|
||||
}
|
||||
|
||||
copySecret (): void {
|
||||
navigator.clipboard.writeText(this.secret.value)
|
||||
// Show a notification
|
||||
this.notifications.info('Copied to clipboard')
|
||||
}
|
||||
}
|
@@ -32,9 +32,6 @@ div(*ngIf='vault.isEnabled()')
|
||||
button.btn.btn-link(ngbDropdownToggle)
|
||||
i.fas.fa-ellipsis-v
|
||||
div(ngbDropdownMenu)
|
||||
button(ngbDropdownItem, (click)='showSecret(secret)')
|
||||
i.fas.fa-fw.fa-eye
|
||||
span(translate) Show
|
||||
button(
|
||||
ngbDropdownItem,
|
||||
*ngIf='secret.type === VAULT_SECRET_TYPE_FILE',
|
||||
|
@@ -3,7 +3,6 @@ import { Component, HostBinding } from '@angular/core'
|
||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { BaseComponent, VaultService, VaultSecret, Vault, PlatformService, ConfigService, VAULT_SECRET_TYPE_FILE, PromptModalComponent, VaultFileSecret, TranslateService } from 'tabby-core'
|
||||
import { SetVaultPassphraseModalComponent } from './setVaultPassphraseModal.component'
|
||||
import { ShowSecretModalComponent } from './showSecretModal.component'
|
||||
|
||||
|
||||
/** @hidden */
|
||||
@@ -98,16 +97,6 @@ export class VaultSettingsTabComponent extends BaseComponent {
|
||||
return this.translate.instant('Unknown secret of type {type} for {key}', { type: secret.type, key: JSON.stringify(secret.key) })
|
||||
}
|
||||
|
||||
showSecret (secret: VaultSecret) {
|
||||
if (!this.vaultContents) {
|
||||
return
|
||||
}
|
||||
const modal = this.ngbModal.open(ShowSecretModalComponent)
|
||||
modal.componentInstance.title = this.getSecretLabel(secret)
|
||||
modal.componentInstance.secret = secret
|
||||
|
||||
}
|
||||
|
||||
removeSecret (secret: VaultSecret) {
|
||||
if (!this.vaultContents) {
|
||||
return
|
||||
|
@@ -4,8 +4,8 @@ import { ConfigProvider, Platform } from 'tabby-core'
|
||||
export class SettingsConfigProvider extends ConfigProvider {
|
||||
defaults = {
|
||||
configSync: {
|
||||
host: null,
|
||||
token: null,
|
||||
host: 'https://api.tabby.sh',
|
||||
token: '',
|
||||
configID: null,
|
||||
auto: false,
|
||||
parts: {
|
||||
|
@@ -19,7 +19,6 @@ import { SetVaultPassphraseModalComponent } from './components/setVaultPassphras
|
||||
import { ProfilesSettingsTabComponent } from './components/profilesSettingsTab.component'
|
||||
import { ReleaseNotesComponent } from './components/releaseNotesTab.component'
|
||||
import { ConfigSyncSettingsTabComponent } from './components/configSyncSettingsTab.component'
|
||||
import { ShowSecretModalComponent } from './components/showSecretModal.component'
|
||||
|
||||
import { ConfigSyncService } from './services/configSync.service'
|
||||
|
||||
@@ -62,7 +61,6 @@ import { HotkeySettingsTabProvider, WindowSettingsTabProvider, VaultSettingsTabP
|
||||
WindowSettingsTabComponent,
|
||||
ConfigSyncSettingsTabComponent,
|
||||
ReleaseNotesComponent,
|
||||
ShowSecretModalComponent,
|
||||
],
|
||||
})
|
||||
export default class SettingsModule {
|
||||
|
@@ -160,12 +160,10 @@ ul.nav-tabs(ngbNav, #nav='ngbNav')
|
||||
type='radio',
|
||||
name='auth',
|
||||
[(ngModel)]='profile.options.auth',
|
||||
id='auth"keyboardInteractive"',
|
||||
id='auth"keyboardInteractive"'
|
||||
[value]='"keyboardInteractive"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='auth"keyboardInteractive"'
|
||||
)
|
||||
label.btn.btn-secondary(ngbButtonLabel)
|
||||
i.far.fa-keyboard
|
||||
.m-0(translate) Interactive
|
||||
|
||||
|
@@ -28,15 +28,15 @@
|
||||
"ngx-colors": "^3.4.0",
|
||||
"patch-package": "^6.5.0",
|
||||
"runes": "^0.4.2",
|
||||
"xterm": "^5.3.0",
|
||||
"xterm-addon-canvas": "^0.5.0",
|
||||
"xterm-addon-fit": "^0.8.0",
|
||||
"xterm-addon-image": "^0.5.0",
|
||||
"xterm-addon-ligatures": "^0.7.0",
|
||||
"xterm-addon-search": "^0.13.0",
|
||||
"xterm-addon-serialize": "^0.11.0",
|
||||
"xterm-addon-unicode11": "^0.6.0",
|
||||
"xterm-addon-webgl": "^0.16.0",
|
||||
"xterm": "^5.2.0",
|
||||
"xterm-addon-canvas": "^0.4.0",
|
||||
"xterm-addon-fit": "^0.7.0",
|
||||
"xterm-addon-image": "^0.4.1",
|
||||
"xterm-addon-ligatures": "^0.6.0",
|
||||
"xterm-addon-search": "^0.12.0",
|
||||
"xterm-addon-serialize": "^0.10.0",
|
||||
"xterm-addon-unicode11": "^0.5.0",
|
||||
"xterm-addon-webgl": "^0.15.0",
|
||||
"zmodem.js": "^0.1.9"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
@@ -340,26 +340,7 @@ export class BaseTerminalTabComponent<P extends BaseTerminalProfile> extends Bas
|
||||
this.configure()
|
||||
})
|
||||
|
||||
// Check if the the WebGL renderer is compatible with xterm.js:
|
||||
// - https://github.com/Eugeny/tabby/issues/8884
|
||||
// - https://github.com/microsoft/vscode/issues/190195
|
||||
// - https://github.com/xtermjs/xterm.js/issues/4665
|
||||
// - https://bugs.chromium.org/p/chromium/issues/detail?id=1476475
|
||||
//
|
||||
// Inspired by https://github.com/microsoft/vscode/pull/191795
|
||||
|
||||
let enable8884Workarround = false
|
||||
const checkCanvas = document.createElement('canvas')
|
||||
const checkGl = checkCanvas.getContext('webgl2')
|
||||
const debugInfo = checkGl?.getExtension('WEBGL_debug_renderer_info')
|
||||
if (checkGl && debugInfo) {
|
||||
const renderer = checkGl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)
|
||||
if (renderer.startsWith('ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero)')) {
|
||||
enable8884Workarround = true
|
||||
}
|
||||
}
|
||||
|
||||
const cls: new (..._) => Frontend = enable8884Workarround ? XTermFrontend : {
|
||||
const cls: new (..._) => Frontend = {
|
||||
xterm: XTermFrontend,
|
||||
'xterm-webgl': XTermWebGLFrontend,
|
||||
}[this.config.store.terminal.frontend] ?? XTermFrontend
|
||||
|
@@ -46,9 +46,7 @@ export abstract class ConnectableTerminalTabComponent<P extends ConnectableTermi
|
||||
}
|
||||
|
||||
protected onFrontendReady (): void {
|
||||
this.initializeSession().then(() => {
|
||||
this.clearServiceMessagesOnConnect()
|
||||
})
|
||||
this.initializeSession()
|
||||
super.onFrontendReady()
|
||||
}
|
||||
|
||||
@@ -59,6 +57,9 @@ export abstract class ConnectableTerminalTabComponent<P extends ConnectableTermi
|
||||
async initializeSession (): Promise<void> {
|
||||
this.reconnectOffered = false
|
||||
this.isDisconnectedByHand = false
|
||||
if (this.profile.clearServiceMessagesOnConnect) {
|
||||
this.frontend?.clear()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -118,14 +119,7 @@ export abstract class ConnectableTerminalTabComponent<P extends ConnectableTermi
|
||||
async reconnect (): Promise<void> {
|
||||
this.session?.destroy()
|
||||
await this.initializeSession()
|
||||
this.clearServiceMessagesOnConnect()
|
||||
this.session?.releaseInitialDataBuffer()
|
||||
}
|
||||
|
||||
private clearServiceMessagesOnConnect (): void {
|
||||
if (this.profile.clearServiceMessagesOnConnect && this.session?.open) {
|
||||
this.frontend?.clear()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,47 +1,5 @@
|
||||
h3.mb-3(translate) Color schemes
|
||||
|
||||
.form-line.mb-4
|
||||
.header
|
||||
.title(translate) Switch color scheme
|
||||
|
||||
.btn-group(role='group')
|
||||
input.btn-check(
|
||||
type='radio',
|
||||
name='colorSchemeMode',
|
||||
[(ngModel)]='config.store.appearance.colorSchemeMode',
|
||||
(ngModelChange)='config.save()',
|
||||
id='colorSchemeModeAuto',
|
||||
[value]='"auto"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='colorSchemeModeAuto'
|
||||
)
|
||||
span(translate) From system
|
||||
input.btn-check(
|
||||
type='radio',
|
||||
name='colorSchemeMode',
|
||||
[(ngModel)]='config.store.appearance.colorSchemeMode',
|
||||
(ngModelChange)='config.save()',
|
||||
id='colorSchemeModeDark',
|
||||
[value]='"dark"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='colorSchemeModeDark'
|
||||
)
|
||||
span(translate) Always dark
|
||||
input.btn-check(
|
||||
type='radio',
|
||||
name='colorSchemeMode',
|
||||
[(ngModel)]='config.store.appearance.colorSchemeMode',
|
||||
(ngModelChange)='config.save()',
|
||||
id='colorSchemeModeLight',
|
||||
[value]='"light"'
|
||||
)
|
||||
label.btn.btn-secondary(
|
||||
for='colorSchemeModeLight'
|
||||
)
|
||||
span(translate) Always light
|
||||
|
||||
ul.nav-tabs(ngbNav, #nav='ngbNav', [activeId]='defaultTab')
|
||||
li(ngbNavItem='dark')
|
||||
a(ngbNavLink, translate) Dark mode
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { Component } from '@angular/core'
|
||||
import { ConfigService, PlatformService } from 'tabby-core'
|
||||
import { PlatformService } from 'tabby-core'
|
||||
|
||||
/** @hidden */
|
||||
@Component({
|
||||
@@ -10,7 +10,6 @@ export class ColorSchemeSettingsTabComponent {
|
||||
|
||||
constructor (
|
||||
platform: PlatformService,
|
||||
public config: ConfigService,
|
||||
) {
|
||||
this.defaultTab = platform.getTheme()
|
||||
}
|
||||
|
@@ -464,53 +464,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.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.5.0.tgz#95d056cec6da42a51b2c47746a011409020c388c"
|
||||
integrity sha512-QOo/eZCMrCleAgMimfdbaZCgmQRWOml63Ued6RwQ+UTPvQj3Av9QKx3xksmyYrDGRO/AVRXa9oNuzlYvLdmoLQ==
|
||||
xterm-addon-canvas@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.4.0.tgz#a6ee6a56deb0c495fcef29afe6d94b7119a0f334"
|
||||
integrity sha512-iTC8CdjX9+hGX7jiEuiDMXzHsY/FKJdVnbjep5xjRXNu7RKOk15xuecIkJ7HZORqMVPpr4DGS3jyd9XUoBuxqw==
|
||||
|
||||
xterm-addon-fit@^0.8.0:
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.8.0.tgz#48ca99015385141918f955ca7819e85f3691d35f"
|
||||
integrity sha512-yj3Np7XlvxxhYF/EJ7p3KHaMt6OdwQ+HDu573Vx1lRXsVxOcnVJs51RgjZOouIZOczTsskaS+CpXspK81/DLqw==
|
||||
|
||||
xterm-addon-image@^0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.5.0.tgz#3c9bb332a3de55ab200dbefd3411e3b0d985314f"
|
||||
integrity sha512-bWXUBeDzhisYh0clVKx4JgQrZjpn+/QRMRwNsfnRpjCMhgmZ+SL3Bivktd7q03O4uKMMcAOe6bSmppwP9/um0Q==
|
||||
|
||||
xterm-addon-ligatures@^0.7.0:
|
||||
xterm-addon-fit@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-ligatures/-/xterm-addon-ligatures-0.7.0.tgz#28e24744fc06e83b0e3dad51f96823b036714ab3"
|
||||
integrity sha512-5HXKCN5vB8KkqLIloItZkYAwMWF4Y2yOQsc4oFUXOjV3GnZskZpH0W+8rJH+80wxLNym7OMpdmg3a/Vd/+owDg==
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-fit/-/xterm-addon-fit-0.7.0.tgz#b8ade6d96e63b47443862088f6670b49fb752c6a"
|
||||
integrity sha512-tQgHGoHqRTgeROPnvmtEJywLKoC/V9eNs4bLLz7iyJr1aW/QFzRwfd3MGiJ6odJd9xEfxcW36/xRU47JkD5NKQ==
|
||||
|
||||
xterm-addon-image@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-image/-/xterm-addon-image-0.4.1.tgz#ec8f750af48005ad641c1128fa1f551ac198472a"
|
||||
integrity sha512-iJpYyvtbHg4oXSv+D6J73ZfCjnboZpbZ567MLplXDBlYSUknv3kvPTfVMPJATV7Zsx7+bDgyXboCh9vsDf/m/w==
|
||||
|
||||
xterm-addon-ligatures@^0.6.0:
|
||||
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.13.0:
|
||||
version "0.13.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.13.0.tgz#21286f4db48aa949fbefce34bb8bc0c9d3cec627"
|
||||
integrity sha512-sDUwG4CnqxUjSEFh676DlS3gsh3XYCzAvBPSvJ5OPgF3MRL3iHLPfsb06doRicLC2xXNpeG2cWk8x1qpESWJMA==
|
||||
xterm-addon-search@^0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.12.0.tgz#2ef8f56aecf699a3989223a1260f1e079d7c74e2"
|
||||
integrity sha512-hXAuO7Ts2+Jf9K8mZrUx8IFd7c/Flgks/jyqA1L4reymyfmXtcsd+WDLel8R9Tgy2CLyKABVBP09/Ua/FmXcvg==
|
||||
|
||||
xterm-addon-serialize@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.11.0.tgz#e8b34a3618750a9e132562a6459627059c031226"
|
||||
integrity sha512-2CNDnmLdLkNWfsxNFkGsI5FE9W/BbsMzeOrbu59yNqH9L6k1gmL+Ab6VXxEp2NQUJSzaiqi6t0nFR5k5EDkVIg==
|
||||
xterm-addon-serialize@^0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.10.0.tgz#c16a8cb456dcbd2f008fa83d15ce1d4721892e01"
|
||||
integrity sha512-Syp9eSBypn70iAczcJ+kAi0foQIepAvFS6x53JwI4XylTBHn87Ep9fovslhwmUV3rwH2yMnpdDjXH5W/whx2lA==
|
||||
|
||||
xterm-addon-unicode11@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.6.0.tgz#733fd17bdf2ae6e818493db1d41241c999de0786"
|
||||
integrity sha512-5pkb8YoS/deRtNqQRw8t640mu+Ga8B2MG3RXGQu0bwgcfr8XiXIRI880TWM49ICAHhTmnOLPzIIBIjEnCq7k2A==
|
||||
xterm-addon-unicode11@^0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz#41c0d96acc1e3bb6c6596eee64e163b6bca74be7"
|
||||
integrity sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg==
|
||||
|
||||
xterm-addon-webgl@^0.16.0:
|
||||
version "0.16.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.16.0.tgz#9872d08a64136f893b27ef9a6412136d3bf563c4"
|
||||
integrity sha512-E8cq1AiqNOv0M/FghPT+zPAEnvIQRDbAbkb04rRYSxUym69elPWVJ4sv22FCLBqM/3LcrmBLl/pELnBebVFKgA==
|
||||
xterm-addon-webgl@^0.15.0:
|
||||
version "0.15.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0.tgz#c10f93ca619524f5a470eaac44258bab0ae8e3c7"
|
||||
integrity sha512-ZLcqogMFHr4g/YRhcCh3xE8tTklnyut/M+O/XhVsFBRB/YCvYhPdLQ5/AQk54V0wjWAQpa8CF3W8DVR9OqyMCg==
|
||||
|
||||
xterm@^5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.3.0.tgz#867daf9cc826f3d45b5377320aabd996cb0fce46"
|
||||
integrity sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==
|
||||
xterm@^5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.1.tgz#b3fea7bdb55b9be1d4b31f4cd1091f26ac42afb8"
|
||||
integrity sha512-cs5Y1fFevgcdoh2hJROMVIWwoBHD80P1fIP79gopLHJIE4kTzzblanoivxTiQ4+92YM9IxS36H1q0MxIJXQBcA==
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
Reference in New Issue
Block a user