Compare commits

..

26 Commits

Author SHA1 Message Date
Eugene Pankov
8d000a3bd4 wip 2023-02-26 19:18:28 +01:00
Eugene Pankov
90e00fdcac wip 2023-02-26 18:28:31 +01:00
Eugene Pankov
324ca6ed82 wip 2023-02-26 18:04:40 +01:00
Eugene Pankov
93c9bc67bc wip 2023-02-26 18:04:36 +01:00
Eugene Pankov
4935c1a985 . 2023-02-26 11:16:42 +01:00
Eugene Pankov
45ce50e1c4 wip 2023-02-26 10:54:48 +01:00
Eugene Pankov
6181e73f8d wip 2023-02-26 10:33:53 +01:00
Eugene Pankov
e5b5dde1e5 wip 2023-02-26 10:01:50 +01:00
Eugene Pankov
2158f589cd wip 2023-02-26 09:58:59 +01:00
Eugene Pankov
c91ccecc1f lint 2023-02-26 09:18:11 +01:00
Eugene Pankov
42e95f15b4 wip 2023-02-26 00:13:04 +01:00
Eugene Pankov
08929f89de wip 2023-02-25 23:55:48 +01:00
Eugene Pankov
fa16ad11e1 wip 2023-02-25 22:55:57 +01:00
Eugene Pankov
4943e2cd5e wip 2023-02-20 11:38:34 +01:00
Eugene Pankov
921214dd09 wip 2023-02-16 00:45:45 +01:00
Eugene Pankov
4d86850bc7 wip 2023-02-06 22:01:53 +01:00
Eugene Pankov
faecb9b501 Merge branch 'master' into bs5 2023-02-06 20:58:48 +01:00
Eugene Pankov
23c6f86917 wip 2023-02-06 20:57:44 +01:00
Eugene Pankov
1b92b71575 wip 2023-02-06 20:06:06 +01:00
Eugene Pankov
a49db682a1 wip 2023-02-06 12:21:22 +01:00
Eugene Pankov
905a2f54d2 wip 2023-02-06 10:13:12 +01:00
Eugene Pankov
6059de434f wip 2023-02-06 09:18:04 +01:00
Eugene Pankov
aef96f8b9b wip 2023-02-05 22:13:15 +01:00
Eugene Pankov
0187a83cfe angular 15 WIP 2023-02-05 21:02:50 +01:00
Eugene Pankov
a793c44b94 bootstrap 5 & angular 15 WIP 2023-02-05 18:58:58 +01:00
Eugene Pankov
153d11cfe2 bootstrap 5 WIP 2023-02-04 20:50:11 +01:00
240 changed files with 8501 additions and 7372 deletions

View File

@@ -1121,69 +1121,6 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "karaketir16",
"name": "Osman Karaketir",
"avatar_url": "https://avatars.githubusercontent.com/u/27349806?v=4",
"profile": "https://github.com/karaketir16",
"contributions": [
"code"
]
},
{
"login": "CryptoGnome",
"name": "Crypto Gnome",
"avatar_url": "https://avatars.githubusercontent.com/u/33667144?v=4",
"profile": "https://www.gnomegarden.io/",
"contributions": [
"financial"
]
},
{
"login": "rbukovansky",
"name": "Richard Bukovansky",
"avatar_url": "https://avatars.githubusercontent.com/u/1004491?v=4",
"profile": "https://github.com/rbukovansky",
"contributions": [
"financial"
]
},
{
"login": "pseudocc",
"name": "catlas",
"avatar_url": "https://avatars.githubusercontent.com/u/85104110?v=4",
"profile": "https://github.com/pseudocc",
"contributions": [
"financial"
]
},
{
"login": "Kapocsi",
"name": "Thomas Kapocsi",
"avatar_url": "https://avatars.githubusercontent.com/u/84490604?v=4",
"profile": "http://kapocsi.ca",
"contributions": [
"doc"
]
},
{
"login": "dylhack",
"name": "Dylan Hackworth",
"avatar_url": "https://avatars.githubusercontent.com/u/27179786?v=4",
"profile": "https://dylhack.dev/",
"contributions": [
"financial"
]
},
{
"login": "echo304",
"name": "Sangboak Lee",
"avatar_url": "https://avatars.githubusercontent.com/u/16456651?v=4",
"profile": "https://github.com/echo304",
"contributions": [
"code"
]
} }
], ],
"contributorsPerLine": 7, "contributorsPerLine": 7,

View File

@@ -11,7 +11,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Installing Node - name: Installing Node
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.5.1
with: with:
node-version: 16 node-version: 16
@@ -47,7 +47,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Installing Node - name: Installing Node
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.5.1
with: with:
node-version: 16 node-version: 16
@@ -127,7 +127,7 @@ jobs:
path: artifact-zip path: artifact-zip
Linux-Build: Linux-Build:
runs-on: ubuntu-20.04 runs-on: ubuntu-18.04 # build against an older glibc for compatibility
needs: Lint needs: Lint
strategy: strategy:
matrix: matrix:
@@ -144,7 +144,7 @@ jobs:
if: matrix.build-arch != 'x64' if: matrix.build-arch != 'x64'
- name: Install Node (x64) - name: Install Node (x64)
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.5.1
with: with:
node-version: 16 node-version: 16
if: matrix.build-arch == 'x64' if: matrix.build-arch == 'x64'
@@ -293,7 +293,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Installing Node - name: Installing Node
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.5.1
with: with:
node-version: 16 node-version: 16

View File

@@ -12,7 +12,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Installing Node - name: Installing Node
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.5.1
with: with:
node-version: 16 node-version: 16

View File

@@ -42,13 +42,13 @@ yarn start
To build an installer, first complete a "normal" build as described above and then run: To build an installer, first complete a "normal" build as described above and then run:
``` ```
node scripts/prepackage-plugins.mjs node scripts/prepackage-plugins.js
node scripts/build-windows.mjs node scripts/build-windows.js
# or # or
node scripts/build-linux.mjs node scripts/build-linux.js
# or # or
node scripts/build-macos.mjs node scripts/build-macos.js
``` ```
The artifacts will be produced in the `dist` folder. The artifacts will be produced in the `dist` folder.

View File

@@ -312,16 +312,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/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -314,15 +314,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/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -311,15 +311,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/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -307,16 +307,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/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -11,24 +11,17 @@
</a> </a>
</p> </p>
---
> 👋 リモート環境の管理に困ってませんか? [WarpgateというSSH/HTTP/MySQL向けの便利な踏み台サーバー](https://github.com/warp-tech/warpgate)も作ってます。Tabbyとも相性ばっちりなので良かったらお試しください。
---- ----
### ダウンロード: ### ダウンロード:
* [最新のリリース](https://github.com/Eugeny/tabby/releases/latest) * [Latest release](https://github.com/Eugeny/tabby/releases/latest)
* [リポジトリ](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu向け](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM向け](https://packagecloud.io/eugeny/tabby/install#bash-rpm) * [Repositories](https://packagecloud.io/eugeny/tabby): [Debian/Ubuntu-based](https://packagecloud.io/eugeny/tabby/install#bash-deb), [RPM-based](https://packagecloud.io/eugeny/tabby/install#bash-rpm)
* [最新の開発ビルド版](https://nightly.link/Eugeny/tabby/workflows/build/master) * [Latest nightly build](https://nightly.link/Eugeny/tabby/workflows/build/master)
<br/> <br/>
<p align="center"> <p align="center">
このREADMEは次の言語でもご覧いただけます: <a href="./README.md">:gb: English</a> · <a href="./README.es-ES.md">:es: Spanish</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.id-ID.md">:id: Bahasa Indonesia</a> · <a href="./README.pt-BR.md">:br: Português</a> このREADMEは次の言語にも対応: <a href="./README.md">:gb: English</a> · <a href="./README.es-ES.md">:es: Spanish</a> · <a href="./README.ru-RU.md">:ru: Русский</a> · <a href="./README.ko-KR.md">:kr: 한국어</a> · <a href="./README.zh-CN.md">:cn: 简体中文</a> · <a href="./README.it-IT.md">:it: Italiano</a> · <a href="./README.de-DE.md">:de: Deutsch</a> · <a href="./README.id-ID.md">:id: Bahasa Indonesia</a> · <a href="./README.pt-BR.md">:br: Português</a>
</p> </p>
---- ----
@@ -47,7 +40,7 @@
* 大量の出力にも止まることはありません * 大量の出力にも止まることはありません
* タブキーによる補完機能にも対応したWindows上での快適なシェル (Clink使用) * タブキーによる補完機能にも対応したWindows上での快適なシェル (Clink使用)
* SSHの機密性の高い情報と設定を保存する暗号化コンテナの搭載 * SSHの機密性の高い情報と設定を保存する暗号化コンテナの搭載
* SSH、SFTP、Telnetクライアントが[Webアプリ](https://tabby.sh/app)として利用できます ([セルフホスティング](https://github.com/Eugeny/tabby-web)も可能) * SSH、SFTP、Telnetクライアントが[Webアプリ](https://tabby.sh/app)として利用可能 ([セルフホスティング](https://github.com/Eugeny/tabby-web)も可能)
# コンテンツ <!-- omit in toc --> # コンテンツ <!-- omit in toc -->
@@ -94,7 +87,7 @@
* SSH2クライアントと接続マネージャー * SSH2クライアントと接続マネージャー
* X11とポートフォワーディング * X11とポートフォワーディング
* 自動ジャンプサーバー管理 * 自動ジャンプサーバー管理
* エージェント転送PageantとWindows標準OpenSSHエージェントを含む * エージェント転送(PageantとWindows標準OpenSSHエージェントを含む)
* ログインスクリプト * ログインスクリプト
<a name="serial"></a> <a name="serial"></a>
@@ -111,7 +104,7 @@
# ポータブル機能 # ポータブル機能
Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォルダを作成すれば、ポータブルアプリとして実行することができます。 Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォルダを作成すれば、ポータブルアプリケーションとして実行することができます。
<a name="plugins"></a> <a name="plugins"></a>
@@ -123,10 +116,10 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
* [title-control](https://github.com/kbjr/terminus-title-control) - タブ名の前後に文字を入れたり指定した文字の削除をすることができます * [title-control](https://github.com/kbjr/terminus-title-control) - タブ名の前後に文字を入れたり指定した文字の削除をすることができます
* [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - 一つもしくは複数のタブに手軽にコマンド送信することができます * [quick-cmds](https://github.com/Domain/terminus-quick-cmds) - 一つもしくは複数のタブに手軽にコマンド送信することができます
* [save-output](https://github.com/Eugeny/tabby-save-output) - ターミナルの出力をファイルに保存することができます * [save-output](https://github.com/Eugeny/tabby-save-output) - ターミナルの出力をファイルに保存することができます
* [sync-config](https://github.com/starxg/terminus-sync-config) - GistやGitee設定ファイルを同期することができます * [sync-config](https://github.com/starxg/terminus-sync-config) - GistやGitee設定ファイルを同期することができます
* [clippy](https://github.com/Eugeny/tabby-clippy) - プラグインの作例として、いつも厄介なあいつが出てくるプラグイン * [clippy](https://github.com/Eugeny/tabby-clippy) - いつもあなたを悩ますプラグインの作例
* [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - 指定された設定からカスタマイズされたワークスペースを作成することができます * [workspace-manager](https://github.com/composer404/tabby-workspace-manager) - 指定された設定からカスタマイズされたワークスペースを作成することができます
* [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - Tabby内の端末で選択したテキストを既定ブラウザで開くことができます。 * [search-in-browser](https://github.com/composer404/tabby-search-in-browser) - Tabby内の端末で選択したテキストを標準の既定ブラウザで開くことができます。
<a name="themes"></a> <a name="themes"></a>
@@ -144,21 +137,17 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
[**packagecloud**](https://packagecloud.io)は、Debian/RPMリポジトリのホスティングを無償で提供しています [**packagecloud**](https://packagecloud.io)は、Debian/RPMリポジトリのホスティングを無償で提供しています
[![](https://user-images.githubusercontent.com/161476/200423885-7aba2202-fea7-4409-95b9-3a062ce902c7.png)](https://keygen.sh/?via=eugene)
[**keygen**](https://keygen.sh/?via=eugene)は、自動リリース機能および自動更新機能のホスティングを無償で提供しています
<a name="contributing"></a> <a name="contributing"></a>
# コントリビュート # コントリビュート
プルリクエストやプラグインは大歓迎です! プルリクエストやプラグインは大歓迎です!
プロジェクトの構成や、非常に簡単なプラグイン開発のチュートリアルについては、[HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md)および、[API docs](https://docs.tabby.sh/)を参照してください。 プロジェクトの構成や、ごく簡単なプラグイン開発のチュートリアルについては、[HACKING.md](https://github.com/Eugeny/tabby/blob/master/HACKING.md)び、[API docs](https://docs.tabby.sh/)を参照してください。
--- ---
<a name="contributors"></a> <a name="contributors"></a>
以下の素晴らしい方々([emoji key](https://allcontributors.org/docs/en/emoji-key))に感謝いたします: の素晴らしい人たち([emoji key](https://allcontributors.org/docs/en/emoji-key))に感謝します:
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
@@ -322,15 +311,6 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -340,4 +320,4 @@ Windows上では、`Tabby.exe`がある場所と同じ場所に`data`フォル
<!-- ALL-CONTRIBUTORS-LIST:END --> <!-- ALL-CONTRIBUTORS-LIST:END -->
このプロジェクトは[all-contributors](https://github.com/all-contributors/all-contributors)の仕様に準拠しています。どのような形の貢献でも歓迎いたします このプロジェクトは[all-contributors](https://github.com/all-contributors/all-contributors)の仕様に準拠しています。どのような形の貢献でも歓迎します!

View File

@@ -301,16 +301,6 @@ Pull requests and plugins are welcome!
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -16,8 +16,6 @@
> 👋 Managing remote environments? Check out [Warpgate, my smart SSH/HTTP/MySQL bastion server](https://github.com/warp-tech/warpgate), it works great with Tabby, you'll love it. > 👋 Managing remote environments? Check out [Warpgate, my smart SSH/HTTP/MySQL bastion server](https://github.com/warp-tech/warpgate), it works great with Tabby, you'll love it.
> 👋 [Tabby-web](https://github.com/Eugeny/tabby-web) is looking for sponsors. As I can't afford to host it myself any longer, I'm looking for a sponsor to cover the hosting costs. If you're interested, please [get in touch](https://twitter.com/eugeeeeny)!
---- ----
@@ -323,16 +321,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/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -315,15 +315,6 @@ Obrigado vai para essas pessoas maravilhosas ([emoji key](https://allcontributor
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -307,16 +307,6 @@ Pull-запросы и плагины приветствуются!
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -306,16 +306,6 @@
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Clem-Fern"><img src="https://avatars.githubusercontent.com/u/20025949?v=4?s=100" width="100px;" alt="Clem"/><br /><sub><b>Clem</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Clem-Fern" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/elizabeth-dev"><img src="https://avatars.githubusercontent.com/u/13015727?v=4?s=100" width="100px;" alt="Elizabeth Martín Campos"/><br /><sub><b>Elizabeth Martín Campos</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=elizabeth-dev" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/siccous"><img src="https://avatars.githubusercontent.com/u/7812885?v=4?s=100" width="100px;" alt="Tomáš Hruška"/><br /><sub><b>Tomáš Hruška</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=siccous" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/karaketir16"><img src="https://avatars.githubusercontent.com/u/27349806?v=4?s=100" width="100px;" alt="Osman Karaketir"/><br /><sub><b>Osman Karaketir</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=karaketir16" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.gnomegarden.io/"><img src="https://avatars.githubusercontent.com/u/33667144?v=4?s=100" width="100px;" alt="Crypto Gnome"/><br /><sub><b>Crypto Gnome</b></sub></a><br /><a href="#financial-CryptoGnome" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbukovansky"><img src="https://avatars.githubusercontent.com/u/1004491?v=4?s=100" width="100px;" alt="Richard Bukovansky"/><br /><sub><b>Richard Bukovansky</b></sub></a><br /><a href="#financial-rbukovansky" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pseudocc"><img src="https://avatars.githubusercontent.com/u/85104110?v=4?s=100" width="100px;" alt="catlas"/><br /><sub><b>catlas</b></sub></a><br /><a href="#financial-pseudocc" title="Financial">💵</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://kapocsi.ca"><img src="https://avatars.githubusercontent.com/u/84490604?v=4?s=100" width="100px;" alt="Thomas Kapocsi"/><br /><sub><b>Thomas Kapocsi</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=Kapocsi" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://dylhack.dev/"><img src="https://avatars.githubusercontent.com/u/27179786?v=4?s=100" width="100px;" alt="Dylan Hackworth"/><br /><sub><b>Dylan Hackworth</b></sub></a><br /><a href="#financial-dylhack" title="Financial">💵</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/echo304"><img src="https://avatars.githubusercontent.com/u/16456651?v=4?s=100" width="100px;" alt="Sangboak Lee"/><br /><sub><b>Sangboak Lee</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=echo304" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/qyecst"><img src="https://avatars.githubusercontent.com/u/13901864?v=4?s=100" width="100px;" alt="qyecst"/><br /><sub><b>qyecst</b></sub></a><br /><a href="https://github.com/Eugeny/tabby/commits?author=qyecst" title="Code">💻</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -125,11 +125,7 @@ export class Window {
}) })
this.window.on('blur', () => { this.window.on('blur', () => {
if ( if ((this.configStore.appearance?.dock ?? 'off') !== 'off' && this.configStore.appearance?.dockHideOnBlur) {
(this.configStore.appearance?.dock ?? 'off') !== 'off' &&
this.configStore.appearance?.dockHideOnBlur &&
!BrowserWindow.getFocusedWindow()
) {
this.hide() this.hide()
} }
}) })

View File

@@ -15,7 +15,7 @@
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch"
}, },
"dependencies": { "dependencies": {
"@electron/remote": "2.0.10", "@electron/remote": "2.0.8",
"@tabby-gang/node-pty": "^0.11.0-beta.203", "@tabby-gang/node-pty": "^0.11.0-beta.203",
"any-promise": "^1.3.0", "any-promise": "^1.3.0",
"electron-config": "2.0.0", "electron-config": "2.0.0",
@@ -32,24 +32,24 @@
"rxjs": "^7.5.7", "rxjs": "^7.5.7",
"source-map-support": "^0.5.20", "source-map-support": "^0.5.20",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
"yargs": "^17.7.2" "yargs": "^17.3.1"
}, },
"optionalDependencies": { "optionalDependencies": {
"@tabby-gang/windows-blurbehind": "^3.0.0", "@tabby-gang/windows-blurbehind": "^3.0.0",
"macos-native-processlist": "^2.1.0", "macos-native-processlist": "^2.1.0",
"patch-package": "^6.5.0", "patch-package": "^6.5.0",
"serialport": "11.0.0", "serialport": "10.5.0",
"serialport-binding-webserialapi": "^1.0.3", "serialport-binding-webserialapi": "^1.0.3",
"windows-native-registry": "^3.2.1", "windows-native-registry": "^3.2.1",
"windows-process-tree": "^0.4.0" "windows-process-tree": "^0.3.4"
}, },
"devDependencies": { "devDependencies": {
"@ngx-translate/core": "^14.0.0", "@ngx-translate/core": "^14.0.0",
"@types/mz": "2.7.4", "@types/mz": "2.7.4",
"@types/node": "20.3.1", "@types/node": "18.11.19",
"atomically": "^1.7.0", "atomically": "^1.7.0",
"filesize": "^9", "filesize": "^9",
"ngx-filesize": "^3.0.2" "ngx-filesize": "^3.0.1"
}, },
"peerDependencies": { "peerDependencies": {
"tabby-community-color-schemes": "*", "tabby-community-color-schemes": "*",

View File

@@ -1,7 +1,3 @@
html {
--spaciness: 1;
}
body { body {
min-height: 100vh; min-height: 100vh;
overflow: hidden; overflow: hidden;
@@ -25,8 +21,8 @@ a, button {
& > svg { & > svg {
pointer-events: none; pointer-events: none;
// width: 16px; width: 16px;
// height: 16px; height: 16px;
} }
} }
} }

View File

@@ -4,6 +4,4 @@ export const PLUGIN_BLACKLIST = [
'terminus-clickable-links', // now bundled with Tabby 'terminus-clickable-links', // now bundled with Tabby
'tabby-clickable-links', // now bundled with Tabby 'tabby-clickable-links', // now bundled with Tabby
'terminus-clickable-ips', // broken, functionality now bundled with Tabby 'terminus-clickable-ips', // broken, functionality now bundled with Tabby
'terminus-elastic-quick-commands', // broken and abandoned, fork of quick-commands
'terminus-elastic-quick-cmds', // broken and abandoned, fork of quick-commands
] ]

View File

@@ -27,8 +27,6 @@ const cachedBuiltinModules = {
'@angular/compiler': require('@angular/compiler'), '@angular/compiler': require('@angular/compiler'),
'@angular/core': require('@angular/core'), '@angular/core': require('@angular/core'),
'@angular/forms': require('@angular/forms'), '@angular/forms': require('@angular/forms'),
'@angular/localize': require('@angular/localize'),
'@angular/localize/init': require('@angular/localize/init'),
'@angular/platform-browser': require('@angular/platform-browser'), '@angular/platform-browser': require('@angular/platform-browser'),
'@angular/platform-browser/animations': require('@angular/platform-browser/animations'), '@angular/platform-browser/animations': require('@angular/platform-browser/animations'),
'@angular/platform-browser-dynamic': require('@angular/platform-browser-dynamic'), '@angular/platform-browser-dynamic': require('@angular/platform-browser-dynamic'),
@@ -92,43 +90,12 @@ export function initModuleLookup (userPluginsPath: string): void {
}) })
} }
const PLUGIN_PREFIX = 'tabby-' export async function findPlugins (): Promise<PluginInfo[]> {
const LEGACY_PLUGIN_PREFIX = 'terminus-' const paths = nodeModule.globalPaths
let foundPlugins: PluginInfo[] = []
async function getCandidateLocationsInPluginDir (pluginDir: any): Promise<{ pluginDir: string, packageName: string }[]> {
const candidateLocations: { pluginDir: string, packageName: string }[] = [] const candidateLocations: { pluginDir: string, packageName: string }[] = []
const PREFIX = 'tabby-'
if (await fs.exists(pluginDir)) { const LEGACY_PREFIX = 'terminus-'
const pluginNames = await fs.readdir(pluginDir)
if (await fs.exists(path.join(pluginDir, 'package.json'))) {
candidateLocations.push({
pluginDir: path.dirname(pluginDir),
packageName: path.basename(pluginDir),
})
}
const promises = []
for (const packageName of pluginNames) {
if ((packageName.startsWith(PLUGIN_PREFIX) || packageName.startsWith(LEGACY_PLUGIN_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
const pluginPath = path.join(pluginDir, packageName)
const infoPath = path.join(pluginPath, 'package.json')
promises.push(fs.exists(infoPath).then(result => {
if (result) {
candidateLocations.push({ pluginDir, packageName })
}
}))
}
}
await Promise.all(promises)
}
return candidateLocations
}
async function getPluginCandidateLocation (paths: any): Promise<{ pluginDir: string, packageName: string }[]> {
const candidateLocationsPromises: Promise<{ pluginDir: string, packageName: string }[]>[] = []
const processedPaths = [] const processedPaths = []
@@ -139,84 +106,69 @@ async function getPluginCandidateLocation (paths: any): Promise<{ pluginDir: str
processedPaths.push(pluginDir) processedPaths.push(pluginDir)
pluginDir = normalizePath(pluginDir) pluginDir = normalizePath(pluginDir)
if (!await fs.exists(pluginDir)) {
candidateLocationsPromises.push(getCandidateLocationsInPluginDir(pluginDir)) continue
}
const candidateLocations: { pluginDir: string, packageName: string }[] = []
for (const pluginCandidateLocations of await Promise.all(candidateLocationsPromises)) {
candidateLocations.push(...pluginCandidateLocations)
}
return candidateLocations
}
async function parsePluginInfo (pluginDir: string, packageName: string): Promise<PluginInfo|null> {
const pluginPath = path.join(pluginDir, packageName)
const infoPath = path.join(pluginPath, 'package.json')
const name = packageName.startsWith(PLUGIN_PREFIX) ? packageName.substring(PLUGIN_PREFIX.length) : packageName.substring(LEGACY_PLUGIN_PREFIX.length)
try {
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
return null
} }
const pluginNames = await fs.readdir(pluginDir)
let author = info.author if (await fs.exists(path.join(pluginDir, 'package.json'))) {
author = author.name || author candidateLocations.push({
pluginDir: path.dirname(pluginDir),
console.log(`Found ${name} in ${pluginDir}`) packageName: path.basename(pluginDir),
})
return { }
name: name, for (const packageName of pluginNames) {
packageName: packageName, if ((packageName.startsWith(PREFIX) || packageName.startsWith(LEGACY_PREFIX)) && !PLUGIN_BLACKLIST.includes(packageName)) {
isBuiltin: pluginDir === builtinPluginsPath, candidateLocations.push({ pluginDir, packageName })
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'), }
version: info.version,
description: info.description,
author,
path: pluginPath,
info,
} }
} catch (error) {
console.error('Cannot load package info for', packageName)
return null
} }
}
export async function findPlugins (): Promise<PluginInfo[]> {
const paths = nodeModule.globalPaths
let foundPlugins: PluginInfo[] = []
const candidateLocations: { pluginDir: string, packageName: string }[] = await getPluginCandidateLocation(paths)
const foundPluginsPromises: Promise<PluginInfo|null>[] = []
for (const { pluginDir, packageName } of candidateLocations) { for (const { pluginDir, packageName } of candidateLocations) {
const pluginPath = path.join(pluginDir, packageName)
const infoPath = path.join(pluginPath, 'package.json')
if (!await fs.exists(infoPath)) {
continue
}
const name = packageName.startsWith(PREFIX) ? packageName.substring(PREFIX.length) : packageName.substring(LEGACY_PREFIX.length)
if (builtinModules.includes(packageName) && pluginDir !== builtinPluginsPath) { if (builtinModules.includes(packageName) && pluginDir !== builtinPluginsPath) {
continue continue
} }
foundPluginsPromises.push(parsePluginInfo(pluginDir, packageName)) console.log(`Found ${name} in ${pluginDir}`)
}
for (const pluginInfo of await Promise.all(foundPluginsPromises)) { const existing = foundPlugins.find(x => x.name === name)
if (pluginInfo) { if (existing) {
const existing = foundPlugins.find(x => x.name === pluginInfo.name) if (existing.isLegacy) {
if (existing) { console.info(`Plugin ${packageName} already exists, overriding`)
if (existing.isLegacy) { foundPlugins = foundPlugins.filter(x => x.name !== name)
console.info(`Plugin ${pluginInfo.packageName} already exists, overriding`) } else {
foundPlugins = foundPlugins.filter(x => x.name !== pluginInfo.name) console.info(`Plugin ${packageName} already exists, skipping`)
} else { continue
console.info(`Plugin ${pluginInfo.packageName} already exists, skipping`)
continue
}
} }
}
foundPlugins.push(pluginInfo) try {
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
continue
}
let author = info.author
author = author.name || author
foundPlugins.push({
name: name,
packageName: packageName,
isBuiltin: pluginDir === builtinPluginsPath,
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'),
version: info.version,
description: info.description,
author,
path: pluginPath,
info,
})
} catch (error) {
console.error('Cannot load package info for', packageName)
} }
} }
@@ -227,36 +179,26 @@ export async function findPlugins (): Promise<PluginInfo[]> {
export async function loadPlugins (foundPlugins: PluginInfo[], progress: ProgressCallback): Promise<any[]> { export async function loadPlugins (foundPlugins: PluginInfo[], progress: ProgressCallback): Promise<any[]> {
const plugins: any[] = [] const plugins: any[] = []
const pluginsPromises: Promise<any>[] = []
let index = 0
const setProgress = function () {
index++
progress(index, foundPlugins.length)
}
progress(0, 1) progress(0, 1)
let index = 0
for (const foundPlugin of foundPlugins) { for (const foundPlugin of foundPlugins) {
pluginsPromises.push(new Promise(x => { console.info(`Loading ${foundPlugin.name}: ${nodeRequire.resolve(foundPlugin.path)}`)
console.info(`Loading ${foundPlugin.name}: ${nodeRequire.resolve(foundPlugin.path)}`) progress(index, foundPlugins.length)
try { try {
const packageModule = nodeRequire(foundPlugin.path) const packageModule = nodeRequire(foundPlugin.path)
if (foundPlugin.packageName.startsWith('tabby-')) { if (foundPlugin.packageName.startsWith('tabby-')) {
cachedBuiltinModules[foundPlugin.packageName.replace('tabby-', 'terminus-')] = packageModule cachedBuiltinModules[foundPlugin.packageName.replace('tabby-', 'terminus-')] = packageModule
}
const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
pluginModule.pluginName = foundPlugin.name
pluginModule.bootstrap = packageModule.bootstrap
plugins.push(pluginModule)
} catch (error) {
console.error(`Could not load ${foundPlugin.name}:`, error)
} }
setProgress() const pluginModule = packageModule.default.forRoot ? packageModule.default.forRoot() : packageModule.default
setTimeout(x, 50) pluginModule.pluginName = foundPlugin.name
})) pluginModule.bootstrap = packageModule.bootstrap
plugins.push(pluginModule)
await new Promise(x => setTimeout(x, 50))
} catch (error) {
console.error(`Could not load ${foundPlugin.name}:`, error)
}
index++
} }
await Promise.all(pluginsPromises)
progress(1, 1) progress(1, 1)
return plugins return plugins
} }

View File

@@ -2,10 +2,10 @@
# yarn lockfile v1 # yarn lockfile v1
"@electron/remote@2.0.10": "@electron/remote@2.0.8":
version "2.0.10" version "2.0.8"
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.10.tgz#133e2f607b1861ac249bd78b5abd1e961feed713" resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.8.tgz#85ff321f0490222993207106e2f720273bb1a5c3"
integrity sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA== integrity sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==
"@iarna/cli@^1.2.0": "@iarna/cli@^1.2.0":
version "1.2.0" version "1.2.0"
@@ -38,16 +38,16 @@
"@serialport/bindings-interface" "^1.2.1" "@serialport/bindings-interface" "^1.2.1"
debug "^4.3.3" debug "^4.3.3"
"@serialport/bindings-cpp@11.0.1": "@serialport/bindings-cpp@10.8.0":
version "11.0.1" version "10.8.0"
resolved "https://registry.yarnpkg.com/@serialport/bindings-cpp/-/bindings-cpp-11.0.1.tgz#38afa6105ceb7888c6a2af2782822fca9130d65a" resolved "https://registry.yarnpkg.com/@serialport/bindings-cpp/-/bindings-cpp-10.8.0.tgz#79507b57022ac264e963e7fbf3647a3821569a20"
integrity sha512-3I1mniVg3osYuIUXxU0jB5AHPsxWmErmc3JC3WfUSlfXsjWMHkHfFzbW9Scuv/z/6DLCJIDyltabRa2FoW2qsQ== integrity sha512-OMQNJz5kJblbmZN5UgJXLwi2XNtVLxSKmq5VyWuXQVsUIJD4l9UGHnLPqM5LD9u3HPZgDI5w7iYN7gxkQNZJUw==
dependencies: dependencies:
"@serialport/bindings-interface" "1.2.2" "@serialport/bindings-interface" "1.2.2"
"@serialport/parser-readline" "10.5.0" "@serialport/parser-readline" "^10.2.1"
debug "4.3.4" debug "^4.3.2"
node-addon-api "6.1.0" node-addon-api "^5.0.0"
node-gyp-build "4.6.0" node-gyp-build "^4.3.0"
"@serialport/bindings-interface@1.2.2": "@serialport/bindings-interface@1.2.2":
version "1.2.2" version "1.2.2"
@@ -59,77 +59,65 @@
resolved "https://registry.yarnpkg.com/@serialport/bindings-interface/-/bindings-interface-1.2.1.tgz#1ee80b0951ef4e4fd8a5a186621feff046aa2faf" resolved "https://registry.yarnpkg.com/@serialport/bindings-interface/-/bindings-interface-1.2.1.tgz#1ee80b0951ef4e4fd8a5a186621feff046aa2faf"
integrity sha512-63Dyqz2gtryRDDckFusOYqLYhR3Hq/M4sEdbF9i/VsvDb6T+tNVgoAKUZ+FMrXXKnCSu+hYbk+MTc0XQANszxw== integrity sha512-63Dyqz2gtryRDDckFusOYqLYhR3Hq/M4sEdbF9i/VsvDb6T+tNVgoAKUZ+FMrXXKnCSu+hYbk+MTc0XQANszxw==
"@serialport/parser-byte-length@11.0.0": "@serialport/parser-byte-length@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-11.0.0.tgz#074e6ed6b18d7a61edc75dba22d3115e8f37dd8c" resolved "https://registry.yarnpkg.com/@serialport/parser-byte-length/-/parser-byte-length-10.5.0.tgz#f3d4c1c7923222df2f3d3c7c8aaaa207fe373b49"
integrity sha512-rExsdFKdzOIHOBqTwzxUF1A9nrluVIZKZOtvMq5i0Hc3euooGdmkx0VXYNRlI2rd6kJLTL2P+uIR+ZtCTRyT+w== integrity sha512-eHhr4lHKboq1OagyaXAqkemQ1XyoqbLQC8XJbvccm95o476TmEdW5d7AElwZV28kWprPW68ZXdGF2VXCkJgS2w==
"@serialport/parser-cctalk@11.0.0": "@serialport/parser-cctalk@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-11.0.0.tgz#6a5e2b299e8f1ef00308980e45ecdae23825181e" resolved "https://registry.yarnpkg.com/@serialport/parser-cctalk/-/parser-cctalk-10.5.0.tgz#0ee88db0768a361b7cfb9a394b74e480c38e1992"
integrity sha512-eN1MvEIFwI4GedWJhte6eWF+NZtrjchZbMf0CE6NV9TRzJI1KLnFf90ZOj/mhGuANojX4sqWfJKQXwN6E8VSHQ== integrity sha512-Iwsdr03xmCKAiibLSr7b3w6ZUTBNiS+PwbDQXdKU/clutXjuoex83XvsOtYVcNZmwJlVNhAUbkG+FJzWwIa4DA==
"@serialport/parser-delimiter@10.5.0": "@serialport/parser-delimiter@10.5.0":
version "10.5.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-10.5.0.tgz#b0d93100cdfd0619d020a427d652495073f3b828" resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-10.5.0.tgz#b0d93100cdfd0619d020a427d652495073f3b828"
integrity sha512-/uR/yT3jmrcwnl2FJU/2ySvwgo5+XpksDUR4NF/nwTS5i3CcuKS+FKi/tLzy1k8F+rCx5JzpiK+koqPqOUWArA== integrity sha512-/uR/yT3jmrcwnl2FJU/2ySvwgo5+XpksDUR4NF/nwTS5i3CcuKS+FKi/tLzy1k8F+rCx5JzpiK+koqPqOUWArA==
"@serialport/parser-delimiter@11.0.0": "@serialport/parser-inter-byte-timeout@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-delimiter/-/parser-delimiter-11.0.0.tgz#e830c6bb49723d4446131277dc3243b502d09388" resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-10.5.0.tgz#8665ee5e6138f794ac055e83ef2d1c3653a577c0"
integrity sha512-aZLJhlRTjSmEwllLG7S4J8s8ctRAS0cbvCpO87smLvl3e4BgzbVgF6Z6zaJd3Aji2uSiYgfedCdNc4L6W+1E2g== integrity sha512-WPvVlSx98HmmUF9jjK6y9mMp3Wnv6JQA0cUxLeZBgS74TibOuYG3fuUxUWGJALgAXotOYMxfXSezJ/vSnQrkhQ==
"@serialport/parser-inter-byte-timeout@11.0.0": "@serialport/parser-packet-length@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-inter-byte-timeout/-/parser-inter-byte-timeout-11.0.0.tgz#baf7223bf3d49d159c82386928c763bfecf8f70f" resolved "https://registry.yarnpkg.com/@serialport/parser-packet-length/-/parser-packet-length-10.5.0.tgz#4c4d733bdff8cc4749f2bd750e42e66f8f478def"
integrity sha512-RLgqZC50IET6FtEIt6Oi0vdRsesSBWLNwB7ldzR9OzyXKgK0XHRzqKqbB0u5Q+tC5OScdWeiQ2AO6jooKUZtsw== integrity sha512-jkpC/8w4/gUBRa2Teyn7URv1D7T//0lGj27/4u9AojpDVXsR6dtdcTG7b7dNirXDlOrSLvvN7aS5/GNaRlEByw==
"@serialport/parser-packet-length@11.0.0": "@serialport/parser-readline@10.5.0", "@serialport/parser-readline@^10.2.1":
version "11.0.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-packet-length/-/parser-packet-length-11.0.0.tgz#ec06934b40b45b8f5eb04ba5527e98a1062c2a20"
integrity sha512-6ZkOiaCooabpV/EM7ttSRbisbDWpGEf7Yxyr13t28LicYR43THRdjdMZcRnWxEM/jpwfskkLLXAR6wziVpKrlw==
"@serialport/parser-readline@10.5.0":
version "10.5.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-10.5.0.tgz#df23365ae7f45679b1735deae26f72ba42802862" resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-10.5.0.tgz#df23365ae7f45679b1735deae26f72ba42802862"
integrity sha512-0aXJknodcl94W9zSjvU+sLdXiyEG2rqjQmvBWZCr8wJZjWEtv3RgrnYiWq4i2OTOyC8C/oPK8ZjpBjQptRsoJQ== integrity sha512-0aXJknodcl94W9zSjvU+sLdXiyEG2rqjQmvBWZCr8wJZjWEtv3RgrnYiWq4i2OTOyC8C/oPK8ZjpBjQptRsoJQ==
dependencies: dependencies:
"@serialport/parser-delimiter" "10.5.0" "@serialport/parser-delimiter" "10.5.0"
"@serialport/parser-readline@11.0.0": "@serialport/parser-ready@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-readline/-/parser-readline-11.0.0.tgz#c2c8c88e163d2abf7c0ffddbc1845336444e3454" resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-10.5.0.tgz#1d9029f57b1abd664cb468e21bfccf7b44c6e8ea"
integrity sha512-rRAivhRkT3YO28WjmmG4FQX6L+KMb5/ikhyylRfzWPw0nSXy97+u07peS9CbHqaNvJkMhH1locp2H36aGMOEIA== integrity sha512-QIf65LTvUoxqWWHBpgYOL+soldLIIyD1bwuWelukem2yDZVWwEjR288cLQ558BgYxH4U+jLAQahhqoyN1I7BaA==
dependencies:
"@serialport/parser-delimiter" "11.0.0"
"@serialport/parser-ready@11.0.0": "@serialport/parser-regex@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-ready/-/parser-ready-11.0.0.tgz#802e7189d9e5d13df70d3aa1559403b72fcfa700" resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-10.5.0.tgz#f98eab6e3d9bc99086269e9acf39a82db36d245f"
integrity sha512-lSsCPIctoc5kADCKnZDYBz1j69TsFqtnaWUicBzUAIAoUXpYKeYld8YX5NrvjViuVfIJeiqLZeGjxOWe5fqQqQ== integrity sha512-9jnr9+PCxRoLjtGs7uxwsFqvho+rxuJlW6ZWSB7oqfzshEZWXtTJgJRgac/RuLft4hRlrmRz5XU40i3uoL4HKw==
"@serialport/parser-regex@11.0.0": "@serialport/parser-slip-encoder@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-regex/-/parser-regex-11.0.0.tgz#bb247297851b1a789f4dde1c4ad48c39d6db7ed6" resolved "https://registry.yarnpkg.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-10.5.0.tgz#cb79ac0fda1fc87f049690ff7b498c787da67991"
integrity sha512-aKuc/+/KE9swahTbYpSuOsQa7LggPx7jhfobJLPVVbAic80OpfCIY+MKr6Ax4R6UtQwF90O5Yk6OEmbbvtEmiA== integrity sha512-wP8m+uXQdkWSa//3n+VvfjLthlabwd9NiG6kegf0fYweLWio8j4pJRL7t9eTh2Lbc7zdxuO0r8ducFzO0m8CQw==
"@serialport/parser-slip-encoder@11.0.0": "@serialport/parser-spacepacket@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-slip-encoder/-/parser-slip-encoder-11.0.0.tgz#f1c3f56e04c497ca89059c69ea79411b30e8da60" resolved "https://registry.yarnpkg.com/@serialport/parser-spacepacket/-/parser-spacepacket-10.5.0.tgz#2fc077c0ec16a9532c511ad5f2ab12d588796bc7"
integrity sha512-3ZI/swd2it20vmu2tzqDbkyE4dqy+kExEDY6T33YQ210HDKPVhqj7FAVGo5P++MZ3dup1of11t4P9UPBNkuJnQ== integrity sha512-BEZ/HAEMwOd8xfuJSeI/823IR/jtnThovh7ils90rXD4DPL1ZmrP4abAIEktwe42RobZjIPfA4PaVfyO0Fjfhg==
"@serialport/parser-spacepacket@11.0.0": "@serialport/stream@10.5.0":
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/@serialport/parser-spacepacket/-/parser-spacepacket-11.0.0.tgz#7737aaa1397db4bf820160dd2f7dd0c9df5f74a0" resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-10.5.0.tgz#cda8fb3e8d03094b0962a3d14b73adfcd591be58"
integrity sha512-+hqRckrTEqz+/uAUZY0Tq6YIRyCl4oQOH1MeVzKiFiGNjZP7hDJCDoY7LTr9CeJhxvcT0ItTbtjGBqGumV8fxg== integrity sha512-gbcUdvq9Kyv2HsnywS7QjnEB28g+6OGB5Z8TLP7X+UPpoMIWoUsoQIq5Kt0ZTgMoWn3JGM2lqwTsSHF+1qhniA==
"@serialport/stream@11.0.0":
version "11.0.0"
resolved "https://registry.yarnpkg.com/@serialport/stream/-/stream-11.0.0.tgz#9887db096b51fabe1919a591b920b06f7580e8ee"
integrity sha512-Zty7B8C1H2XRnay2mVmW1ygEHXRHXQDcaC5wAVvOZMbQSc7ye03rMlPvviDS+pGxU2t2A2bMo34CUrRduSBong==
dependencies: dependencies:
"@serialport/bindings-interface" "1.2.2" "@serialport/bindings-interface" "1.2.2"
debug "4.3.4" debug "^4.3.2"
"@serialport/stream@^9.0.2": "@serialport/stream@^9.0.2":
version "9.2.4" version "9.2.4"
@@ -159,10 +147,15 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/node@*", "@types/node@20.3.1": "@types/node@*":
version "20.3.1" version "18.7.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.1.tgz#e8a83f1aa8b649377bb1fb5d7bac5cb90e784dfe" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.23.tgz#75c580983846181ebe5f4abc40fe9dfb2d65665f"
integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==
"@types/node@18.11.19":
version "18.11.19"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d"
integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==
"@types/node@^10.12.18": "@types/node@^10.12.18":
version "10.17.60" version "10.17.60"
@@ -590,13 +583,13 @@ cliui@^5.0.0:
strip-ansi "^5.2.0" strip-ansi "^5.2.0"
wrap-ansi "^5.1.0" wrap-ansi "^5.1.0"
cliui@^8.0.1: cliui@^7.0.2:
version "8.0.1" version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
dependencies: dependencies:
string-width "^4.2.0" string-width "^4.2.0"
strip-ansi "^6.0.1" strip-ansi "^6.0.0"
wrap-ansi "^7.0.0" wrap-ansi "^7.0.0"
clone@^1.0.2: clone@^1.0.2:
@@ -780,13 +773,6 @@ debug@3.1.0:
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
debug@4.3.4, debug@^4.0.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@^3.1.0: debug@^3.1.0:
version "3.2.7" version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
@@ -794,6 +780,13 @@ debug@^3.1.0:
dependencies: dependencies:
ms "^2.1.1" ms "^2.1.1"
debug@^4.0.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debuglog@^1.0.1: debuglog@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz"
@@ -805,9 +798,9 @@ decamelize@^1.1.1, decamelize@^1.2.0:
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
decode-uri-component@^0.2.0: decode-uri-component@^0.2.0:
version "0.2.2" version "0.2.0"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
decompress-response@^6.0.0: decompress-response@^6.0.0:
version "6.0.0" version "6.0.0"
@@ -2264,7 +2257,7 @@ mz@^2.7.0:
object-assign "^4.0.1" object-assign "^4.0.1"
thenify-all "^1.0.0" thenify-all "^1.0.0"
nan@^2.16.0, nan@^2.17.0, "nan@github:jkleinsc/nan#remove_accessor_signature": nan@^2.13.2, nan@^2.16.0, "nan@github:jkleinsc/nan#remove_accessor_signature":
version "2.16.0" version "2.16.0"
resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059" resolved "https://codeload.github.com/jkleinsc/nan/tar.gz/6a2f95a6a2209d8aa7542fb18099fd808a802059"
@@ -2280,10 +2273,10 @@ native-process-working-directory@^1.0.2:
dependencies: dependencies:
node-addon-api "^3.1.0" node-addon-api "^3.1.0"
ngx-filesize@^3.0.2: ngx-filesize@^3.0.1:
version "3.0.2" version "3.0.1"
resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.2.tgz#aab5ce9ce6eaa421f0393447d9c01653f3839a2c" resolved "https://registry.yarnpkg.com/ngx-filesize/-/ngx-filesize-3.0.1.tgz#620933ae181a1128905404e43b26abb99accba90"
integrity sha512-0h1gzcQYeNcGzDVcQcdhKK8RCrXdIXn4foT/DcXRwoht0KL3FQemJFKZowZmXESL7cnLlETaeRSnsHuqfchoWg== integrity sha512-792I4fiG9EEPYjGib2+YTYAzfWIlccfy8uXNSXFFepuAntoS+eijLwnl0m7ajcQuNgbTtwEf9VmYIPN8mS3jqQ==
dependencies: dependencies:
tslib "^2.3.0" tslib "^2.3.0"
@@ -2311,16 +2304,16 @@ node-addon-api@3.1.0, node-addon-api@^3.0.2, node-addon-api@^3.1.0:
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz"
integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==
node-addon-api@6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
node-addon-api@^4.0.0, node-addon-api@^4.3.0: node-addon-api@^4.0.0, node-addon-api@^4.3.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
node-addon-api@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501"
integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==
node-fetch-npm@^2.0.2: node-fetch-npm@^2.0.2:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
@@ -2330,10 +2323,10 @@ node-fetch-npm@^2.0.2:
json-parse-better-errors "^1.0.0" json-parse-better-errors "^1.0.0"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
node-gyp-build@4.6.0: node-gyp-build@^4.3.0:
version "4.6.0" version "4.3.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
node-gyp@^5.0.2, node-gyp@^5.1.0: node-gyp@^5.0.2, node-gyp@^5.1.0:
version "5.1.1" version "5.1.1"
@@ -3011,9 +3004,9 @@ qrcode-terminal@^0.12.0:
integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
qs@~6.5.2: qs@~6.5.2:
version "6.5.3" version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz"
integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
query-string@^6.8.2: query-string@^6.8.2:
version "6.13.8" version "6.13.8"
@@ -3299,25 +3292,25 @@ serialport-binding-webserialapi@^1.0.3:
"@serialport/binding-abstract" "^9.0.2" "@serialport/binding-abstract" "^9.0.2"
"@serialport/stream" "^9.0.2" "@serialport/stream" "^9.0.2"
serialport@11.0.0: serialport@10.5.0:
version "11.0.0" version "10.5.0"
resolved "https://registry.yarnpkg.com/serialport/-/serialport-11.0.0.tgz#a4114fc60e91b23f133ec459345b7be637b1e8ef" resolved "https://registry.yarnpkg.com/serialport/-/serialport-10.5.0.tgz#b85f614def6e8914e5865c798b0555330903a0f8"
integrity sha512-bxs3XejQcOHWpzPAaXMhxVRlbem6fjNUrux3ToqrGvFR6BcjOYhqE5CsHOuutv37kmhmnuHrn+/hN+1BpTmaFg== integrity sha512-7OYLDsu5i6bbv3lU81pGy076xe0JwpK6b49G6RjNvGibstUqQkI+I3/X491yBGtf4gaqUdOgoU1/5KZ/XxL4dw==
dependencies: dependencies:
"@serialport/binding-mock" "10.2.2" "@serialport/binding-mock" "10.2.2"
"@serialport/bindings-cpp" "11.0.1" "@serialport/bindings-cpp" "10.8.0"
"@serialport/parser-byte-length" "11.0.0" "@serialport/parser-byte-length" "10.5.0"
"@serialport/parser-cctalk" "11.0.0" "@serialport/parser-cctalk" "10.5.0"
"@serialport/parser-delimiter" "11.0.0" "@serialport/parser-delimiter" "10.5.0"
"@serialport/parser-inter-byte-timeout" "11.0.0" "@serialport/parser-inter-byte-timeout" "10.5.0"
"@serialport/parser-packet-length" "11.0.0" "@serialport/parser-packet-length" "10.5.0"
"@serialport/parser-readline" "11.0.0" "@serialport/parser-readline" "10.5.0"
"@serialport/parser-ready" "11.0.0" "@serialport/parser-ready" "10.5.0"
"@serialport/parser-regex" "11.0.0" "@serialport/parser-regex" "10.5.0"
"@serialport/parser-slip-encoder" "11.0.0" "@serialport/parser-slip-encoder" "10.5.0"
"@serialport/parser-spacepacket" "11.0.0" "@serialport/parser-spacepacket" "10.5.0"
"@serialport/stream" "11.0.0" "@serialport/stream" "10.5.0"
debug "4.3.4" debug "^4.3.3"
set-blocking@^2.0.0, set-blocking@~2.0.0: set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0" version "2.0.0"
@@ -3735,7 +3728,12 @@ tough-cookie@~2.5.0:
psl "^1.1.28" psl "^1.1.28"
punycode "^2.1.1" punycode "^2.1.1"
tslib@^2.1.0, tslib@^2.3.0: tslib@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
tslib@^2.3.0:
version "2.5.0" version "2.5.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
@@ -3941,12 +3939,12 @@ windows-native-registry@^3.2.1:
dependencies: dependencies:
node-addon-api "^3.1.0" node-addon-api "^3.1.0"
windows-process-tree@^0.4.0: windows-process-tree@^0.3.4:
version "0.4.0" version "0.3.4"
resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.4.0.tgz#31ac49c5da557e628ce7e37a5800972173d3349a" resolved "https://registry.yarnpkg.com/windows-process-tree/-/windows-process-tree-0.3.4.tgz#6bc4b8010129c30ff95bcd333b9f94744dd3c4fb"
integrity sha512-9LunDnc1WwuhyLeTAXMFX8wbActGJtDCBaiapQXFYk/nO4W4X9YxOKV5g/lQL3XX69QYxveDbjVVrdnTt1qqCQ== integrity sha512-rtSX73i9OnkDxSdBP9c1YBunEwheZdO/hjRwNk9uSoWqO92x0zDRGfIIK0MtUn8gZZD+2kPEVpj5MmfNl7JpJA==
dependencies: dependencies:
nan "^2.17.0" nan "^2.13.2"
worker-farm@^1.6.0, worker-farm@^1.7.0: worker-farm@^1.6.0, worker-farm@^1.7.0:
version "1.7.0" version "1.7.0"
@@ -4055,10 +4053,10 @@ yargs-parser@^15.0.1:
camelcase "^5.0.0" camelcase "^5.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
yargs-parser@^21.1.1: yargs-parser@^21.0.0:
version "21.1.1" version "21.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==
yargs-parser@^7.0.0: yargs-parser@^7.0.0:
version "7.0.0" version "7.0.0"
@@ -4084,18 +4082,18 @@ yargs@^14.2.3:
y18n "^4.0.0" y18n "^4.0.0"
yargs-parser "^15.0.1" yargs-parser "^15.0.1"
yargs@^17.7.2: yargs@^17.3.1:
version "17.7.2" version "17.3.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==
dependencies: dependencies:
cliui "^8.0.1" cliui "^7.0.2"
escalade "^3.1.1" escalade "^3.1.1"
get-caller-file "^2.0.5" get-caller-file "^2.0.5"
require-directory "^2.1.1" require-directory "^2.1.1"
string-width "^4.2.3" string-width "^4.2.3"
y18n "^5.0.5" y18n "^5.0.5"
yargs-parser "^21.1.1" yargs-parser "^21.0.0"
yargs@^8.0.2: yargs@^8.0.2:
version "8.0.2" version "8.0.2"

View File

@@ -2,7 +2,7 @@
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const notarizer = require('@electron/notarize') const notarizer = require('electron-notarize')
module.exports = async function (params) { module.exports = async function (params) {
// notarize the app on Mac OS only. // notarize the app on Mac OS only.

2152
config.yaml Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
#: tabby-local/src/components/terminalTab.component.ts:111 #: tabby-local/src/components/terminalTab.component.ts:112
msgid "\"{command}\" is still running. Close?" msgid "\"{command}\" is still running. Close?"
msgstr "" msgstr ""
@@ -31,7 +31,7 @@ msgstr ""
msgid "Accessibility" msgid "Accessibility"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:27 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:20
msgid "Acrylic background" msgid "Acrylic background"
msgstr "" msgstr ""
@@ -116,7 +116,7 @@ msgstr ""
msgid "Ask a question" msgid "Ask a question"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:20 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Ask before closing the browser tab" msgid "Ask before closing the browser tab"
msgstr "" msgstr ""
@@ -158,12 +158,12 @@ msgstr ""
msgid "Available" msgid "Available"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:35 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:28
msgid "Background type" msgid "Background type"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:14 #: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:14
#: tabby-serial/src/components/serialTab.component.ts:111 #: tabby-serial/src/components/serialTab.component.ts:112
#: tabby-serial/src/profiles.ts:86 #: tabby-serial/src/profiles.ts:86
msgid "Baud rate" msgid "Baud rate"
msgstr "" msgstr ""
@@ -180,7 +180,7 @@ msgstr ""
msgid "Blue" msgid "Blue"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:39 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:32
msgid "Blur" msgid "Blur"
msgstr "" msgstr ""
@@ -188,8 +188,8 @@ msgstr ""
msgid "Bold font weight" msgid "Bold font weight"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:132 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:125
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:80 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:73
msgid "Bottom" msgid "Bottom"
msgstr "" msgstr ""
@@ -214,12 +214,12 @@ msgstr ""
#: locale/tmp-html/tabby-ssh/src/components/sftpDeleteModal.component.html:7 #: locale/tmp-html/tabby-ssh/src/components/sftpDeleteModal.component.html:7
#: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:32 #: locale/tmp-html/tabby-terminal/src/components/colorSchemeSettingsTab.component.html:32
#: tabby-electron/src/services/updater.service.ts:134 #: tabby-electron/src/services/updater.service.ts:134
#: tabby-local/src/components/terminalTab.component.ts:116 #: tabby-local/src/components/terminalTab.component.ts:117
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:117 #: tabby-settings/src/components/configSyncSettingsTab.component.ts:117
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:79 #: tabby-settings/src/components/configSyncSettingsTab.component.ts:79
#: tabby-settings/src/components/configSyncSettingsTab.component.ts:99 #: tabby-settings/src/components/configSyncSettingsTab.component.ts:99
#: tabby-ssh/src/sftpContextMenu.ts:40 #: tabby-ssh/src/sftpContextMenu.ts:40
#: tabby-terminal/src/api/baseTerminalTab.component.ts:484 #: tabby-terminal/src/api/baseTerminalTab.component.ts:480
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@@ -294,7 +294,7 @@ msgstr ""
msgid "Close tabs to the right" msgid "Close tabs to the right"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:175
msgid "Close the window after closing the last tab" msgid "Close the window after closing the last tab"
msgstr "" msgstr ""
@@ -327,7 +327,7 @@ msgstr ""
msgid "Commands" msgid "Commands"
msgstr "" msgstr ""
#: tabby-core/src/theme.ts:21 #: tabby-core/src/theme.ts:20
msgid "Compact (legacy)" msgid "Compact (legacy)"
msgstr "" msgstr ""
@@ -339,8 +339,8 @@ msgstr ""
msgid "Config downloaded" msgid "Config downloaded"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:115 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:109
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:120 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:114
msgid "Config file" msgid "Config file"
msgstr "" msgstr ""
@@ -361,7 +361,7 @@ msgstr ""
msgid "Connect through a proxy server" msgid "Connect through a proxy server"
msgstr "" msgstr ""
#: tabby-core/src/index.ts:214 #: tabby-core/src/index.ts:212
#: tabby-core/src/services/profiles.service.ts:178 #: tabby-core/src/services/profiles.service.ts:178
msgid "Connect to \"%s\"..." msgid "Connect to \"%s\"..."
msgstr "" msgstr ""
@@ -371,7 +371,7 @@ msgid "Connect to a different host first and use it as a proxy"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:19 #: locale/tmp-html/tabby-ssh/src/components/sftpPanel.component.html:19
#: tabby-serial/src/components/serialTab.component.ts:65 #: tabby-serial/src/components/serialTab.component.ts:66
#: tabby-ssh/src/components/sshTab.component.ts:143 #: tabby-ssh/src/components/sshTab.component.ts:143
#: tabby-telnet/src/components/telnetTab.component.ts:72 #: tabby-telnet/src/components/telnetTab.component.ts:72
msgid "Connecting" msgid "Connecting"
@@ -393,14 +393,10 @@ msgstr ""
msgid "Context menu" msgid "Context menu"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14 #: tabby-terminal/src/api/baseTerminalTab.component.ts:225
msgid "Controls the amount of space between elements" #: tabby-terminal/src/api/baseTerminalTab.component.ts:233
msgstr "" #: tabby-terminal/src/api/baseTerminalTab.component.ts:549
#: tabby-terminal/src/api/baseTerminalTab.component.ts:770
#: tabby-terminal/src/api/baseTerminalTab.component.ts:229
#: tabby-terminal/src/api/baseTerminalTab.component.ts:237
#: tabby-terminal/src/api/baseTerminalTab.component.ts:553
#: tabby-terminal/src/api/baseTerminalTab.component.ts:775
#: tabby-terminal/src/tabContextMenu.ts:30 #: tabby-terminal/src/tabContextMenu.ts:30
msgid "Copied" msgid "Copied"
msgstr "" msgstr ""
@@ -443,7 +439,7 @@ msgstr ""
msgid "Create directory" msgid "Create directory"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:90 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:83
msgid "Current" msgid "Current"
msgstr "" msgstr ""
@@ -495,7 +491,7 @@ msgstr ""
msgid "Default profile settings" msgid "Default profile settings"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:124 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:118
msgid "Defaults" msgid "Defaults"
msgstr "" msgstr ""
@@ -576,11 +572,11 @@ msgstr ""
msgid "Disable dynamic tab title" msgid "Disable dynamic tab title"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:218 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211
msgid "Disable fluent background while dragging" msgid "Disable fluent background while dragging"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:204 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:197
msgid "Disable GPU acceleration" msgid "Disable GPU acceleration"
msgstr "" msgstr ""
@@ -603,7 +599,7 @@ msgstr ""
msgid "Display images via Sixel escape sequences" msgid "Display images via Sixel escape sequences"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:85 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78
msgid "Display on" msgid "Display on"
msgstr "" msgstr ""
@@ -621,23 +617,23 @@ msgstr ""
msgid "Do not remember" msgid "Do not remember"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:97 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:90
msgid "Dock always on top" msgid "Dock always on top"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:67 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:60
msgid "Dock the terminal" msgid "Dock the terminal"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:104 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:97
msgid "Docked terminal size" msgid "Docked terminal size"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:111 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:104
msgid "Docked terminal space" msgid "Docked terminal space"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:64 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:57
msgid "Docking" msgid "Docking"
msgstr "" msgstr ""
@@ -661,7 +657,7 @@ msgstr ""
msgid "Duplicate" msgid "Duplicate"
msgstr "" msgstr ""
#: tabby-local/src/tabContextMenu.ts:122 #: tabby-local/src/tabContextMenu.ts:123
msgid "Duplicate as administrator" msgid "Duplicate as administrator"
msgstr "" msgstr ""
@@ -695,7 +691,7 @@ msgstr ""
msgid "Enable automatic installation of updates when they become available." msgid "Enable automatic installation of updates when they become available."
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:211 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:204
msgid "Enable fluent background option" msgid "Enable fluent background option"
msgstr "" msgstr ""
@@ -744,7 +740,7 @@ msgstr ""
msgid "Example:" msgid "Example:"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:205
msgid "Experimental Windows 10 background style known to cause issues" msgid "Experimental Windows 10 background style known to cause issues"
msgstr "" msgstr ""
@@ -768,11 +764,11 @@ msgstr ""
msgid "Filter" msgid "Filter"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:147 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:140
msgid "Fixed" msgid "Fixed"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:219 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:212
msgid "Fluent background sometimes causes drag lag" msgid "Fluent background sometimes causes drag lag"
msgstr "" msgstr ""
@@ -792,7 +788,7 @@ msgstr ""
msgid "Focus all tabs at once (broadcast)" msgid "Focus all tabs at once (broadcast)"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:196 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189
msgid "Focus follows mouse" msgid "Focus follows mouse"
msgstr "" msgstr ""
@@ -832,7 +828,7 @@ msgstr ""
msgid "Focus the pane on the right" msgid "Focus the pane on the right"
msgstr "" msgstr ""
#: tabby-core/src/theme.ts:43 #: tabby-core/src/theme.ts:42
msgid "Follow the color scheme" msgid "Follow the color scheme"
msgstr "" msgstr ""
@@ -840,7 +836,7 @@ msgstr ""
msgid "Font" msgid "Font"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:190 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:183
msgid "For keyboard shortcuts" msgid "For keyboard shortcuts"
msgstr "" msgstr ""
@@ -884,7 +880,7 @@ msgstr ""
msgid "Frontend" msgid "Frontend"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:61 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:54
msgid "Full" msgid "Full"
msgstr "" msgstr ""
@@ -906,7 +902,7 @@ msgstr ""
msgid "Get it from the Tabby Web settings window" msgid "Get it from the Tabby Web settings window"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:29 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:22
msgid "Gives the window a blurred transparent background" msgid "Gives the window a blurred transparent background"
msgstr "" msgstr ""
@@ -922,7 +918,7 @@ msgstr ""
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:201 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:194
msgid "Hacks" msgid "Hacks"
msgstr "" msgstr ""
@@ -939,23 +935,23 @@ msgstr ""
msgid "Hexadecimal" msgid "Hexadecimal"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:176 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:169
msgid "Hide tab close button" msgid "Hide tab close button"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:158 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:151
msgid "Hide tab index" msgid "Hide tab index"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:170 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:163
msgid "Hide tab options button" msgid "Hide tab options button"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:118 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:111
msgid "Hide window on focus loss" msgid "Hide window on focus loss"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:119 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112
msgid "Hides the docked terminal when you click away." msgid "Hides the docked terminal when you click away."
msgstr "" msgstr ""
@@ -1001,7 +997,7 @@ msgstr ""
msgid "Icon" msgid "Icon"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:145 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:138
msgid "id.tab-width.dynamic" msgid "id.tab-width.dynamic"
msgstr "" msgstr ""
@@ -1049,7 +1045,7 @@ msgstr ""
msgid "Interactive" msgid "Interactive"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:130 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:124
msgid "Invalid syntax" msgid "Invalid syntax"
msgstr "" msgstr ""
@@ -1079,7 +1075,7 @@ msgstr ""
msgid "Keep Alive Interval (Milliseconds)" msgid "Keep Alive Interval (Milliseconds)"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:98 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:91
msgid "Keep docked terminal always on top" msgid "Keep docked terminal always on top"
msgstr "" msgstr ""
@@ -1099,7 +1095,7 @@ msgstr ""
msgid "Keyboard-interactive auth" msgid "Keyboard-interactive auth"
msgstr "" msgstr ""
#: tabby-local/src/components/terminalTab.component.ts:115 #: tabby-local/src/components/terminalTab.component.ts:116
msgid "Kill" msgid "Kill"
msgstr "" msgstr ""
@@ -1125,8 +1121,8 @@ msgstr ""
msgid "Learn how to allow Tabby to detect remote shell's working directory." msgid "Learn how to allow Tabby to detect remote shell's working directory."
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:134 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:127
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:76 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:69
#: tabby-core/src/tabContextMenu.ts:80 #: tabby-core/src/tabContextMenu.ts:80
msgid "Left" msgid "Left"
msgstr "" msgstr ""
@@ -1190,7 +1186,6 @@ msgstr ""
msgid "Maximize the active pane" msgid "Maximize the active pane"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:93
#: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:70 #: locale/tmp-html/tabby-terminal/src/components/appearanceSettingsTab.component.html:70
msgid "Minimum contrast ratio" msgid "Minimum contrast ratio"
msgstr "" msgstr ""
@@ -1215,7 +1210,7 @@ msgstr ""
msgid "Move to \"Ungrouped\"" msgid "Move to \"Ungrouped\""
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:197 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:190
msgid "Moving the mouse over an inactive pane will cause it to activate" msgid "Moving the mouse over an inactive pane will cause it to activate"
msgstr "" msgstr ""
@@ -1232,11 +1227,11 @@ msgstr ""
msgid "Name for the new directory" msgid "Name for the new directory"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:57 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:50
msgid "Native" msgid "Native"
msgstr "" msgstr ""
#: tabby-local/src/tabContextMenu.ts:103 #: tabby-local/src/tabContextMenu.ts:104
msgid "New admin tab" msgid "New admin tab"
msgstr "" msgstr ""
@@ -1257,7 +1252,7 @@ msgstr ""
msgid "New profile" msgid "New profile"
msgstr "" msgstr ""
#: tabby-local/src/tabContextMenu.ts:30 #: tabby-local/src/tabContextMenu.ts:31
msgid "New profile name" msgid "New profile name"
msgstr "" msgstr ""
@@ -1270,7 +1265,7 @@ msgid "New tab: {profile}"
msgstr "" msgstr ""
#: tabby-local/src/buttonProvider.ts:20 #: tabby-local/src/buttonProvider.ts:20
#: tabby-local/src/tabContextMenu.ts:77 #: tabby-local/src/tabContextMenu.ts:78
msgid "New terminal" msgid "New terminal"
msgstr "" msgstr ""
@@ -1278,11 +1273,11 @@ msgstr ""
msgid "New window" msgid "New window"
msgstr "" msgstr ""
#: tabby-electron/src/services/dockMenu.service.ts:62 #: tabby-local/src/services/dockMenu.service.ts:62
msgid "New Window" msgid "New Window"
msgstr "" msgstr ""
#: tabby-local/src/tabContextMenu.ts:87 #: tabby-local/src/tabContextMenu.ts:88
msgid "New with profile" msgid "New with profile"
msgstr "" msgstr ""
@@ -1328,7 +1323,7 @@ msgstr ""
msgid "Number of lines kept in the buffer" msgid "Number of lines kept in the buffer"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:72 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:65
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:137 #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:137
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:60 #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:60
msgid "Off" msgid "Off"
@@ -1342,7 +1337,7 @@ msgstr ""
msgid "On GitHub Discussions" msgid "On GitHub Discussions"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:46 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:39
msgid "Opacity" msgid "Opacity"
msgstr "" msgstr ""
@@ -1375,11 +1370,11 @@ msgstr ""
msgid "Orange" msgid "Orange"
msgstr "" msgstr ""
#: tabby-electron/src/shells/macDefault.ts:25 #: tabby-local/src/shells/macDefault.ts:25
msgid "OS default" msgid "OS default"
msgstr "" msgstr ""
#: tabby-electron/src/shells/winDefault.ts:43 #: tabby-local/src/shells/winDefault.ts:43
msgid "OS default ({name})" msgid "OS default ({name})"
msgstr "" msgstr ""
@@ -1419,18 +1414,14 @@ msgstr ""
msgid "Overwrite the local config and start syncing?" msgid "Overwrite the local config and start syncing?"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:189 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:182
msgid "Pane resize step" msgid "Pane resize step"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:186 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:179
msgid "Panes" msgid "Panes"
msgstr "" msgstr ""
#: tabby-core/src/theme.ts:35
msgid "Paper (legacy)"
msgstr ""
#: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38 #: locale/tmp-html/tabby-serial/src/components/serialProfileSettings.component.html:38
msgid "Parity" msgid "Parity"
msgstr "" msgstr ""
@@ -1449,7 +1440,7 @@ msgid "Password"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:62 #: locale/tmp-html/tabby-terminal/src/components/terminalSettingsTab.component.html:62
#: tabby-terminal/src/api/baseTerminalTab.component.ts:483 #: tabby-terminal/src/api/baseTerminalTab.component.ts:479
#: tabby-terminal/src/tabContextMenu.ts:35 #: tabby-terminal/src/tabContextMenu.ts:35
msgid "Paste" msgid "Paste"
msgstr "" msgstr ""
@@ -1462,7 +1453,7 @@ msgstr ""
msgid "Paste if no selection, else copy" msgid "Paste if no selection, else copy"
msgstr "" msgstr ""
#: tabby-terminal/src/api/baseTerminalTab.component.ts:490 #: tabby-terminal/src/api/baseTerminalTab.component.ts:486
msgid "Paste multiple lines?" msgid "Paste multiple lines?"
msgstr "" msgstr ""
@@ -1491,7 +1482,7 @@ msgstr ""
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: tabby-serial/src/components/serialTab.component.ts:70 #: tabby-serial/src/components/serialTab.component.ts:71
msgid "Port opened" msgid "Port opened"
msgstr "" msgstr ""
@@ -1500,7 +1491,7 @@ msgstr ""
msgid "Ports" msgid "Ports"
msgstr "" msgstr ""
#: tabby-serial/src/components/serialTab.component.ts:85 #: tabby-serial/src/components/serialTab.component.ts:86
#: tabby-ssh/src/components/sshTab.component.ts:172 #: tabby-ssh/src/components/sshTab.component.ts:172
#: tabby-telnet/src/components/telnetTab.component.ts:53 #: tabby-telnet/src/components/telnetTab.component.ts:53
msgid "Press any key to reconnect" msgid "Press any key to reconnect"
@@ -1510,7 +1501,7 @@ msgstr ""
msgid "Press the key now" msgid "Press the key now"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:21 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:14
msgid "Prevents accidental closing" msgid "Prevents accidental closing"
msgstr "" msgstr ""
@@ -1536,7 +1527,7 @@ msgstr ""
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:2 #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:2
#: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:4 #: locale/tmp-html/tabby-settings/src/components/profilesSettingsTab.component.html:4
#: tabby-electron/src/services/dockMenu.service.ts:40 #: tabby-local/src/services/dockMenu.service.ts:40
msgid "Profiles" msgid "Profiles"
msgstr "" msgstr ""
@@ -1561,7 +1552,7 @@ msgstr ""
msgid "Puts all of Tabby's configuration into the vault" msgid "Puts all of Tabby's configuration into the vault"
msgstr "" msgstr ""
#: tabby-core/src/index.ts:213 #: tabby-core/src/index.ts:211
#: tabby-core/src/services/profiles.service.ts:177 #: tabby-core/src/services/profiles.service.ts:177
msgid "Quick connect" msgid "Quick connect"
msgstr "" msgstr ""
@@ -1581,7 +1572,7 @@ msgstr ""
#: tabby-core/src/services/profiles.service.ts:120 #: tabby-core/src/services/profiles.service.ts:120
#: tabby-core/src/services/profiles.service.ts:134 #: tabby-core/src/services/profiles.service.ts:134
#: tabby-electron/src/services/dockMenu.service.ts:28 #: tabby-local/src/services/dockMenu.service.ts:28
msgid "Recent" msgid "Recent"
msgstr "" msgstr ""
@@ -1668,7 +1659,7 @@ msgstr ""
msgid "Restart tab" msgid "Restart tab"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:140 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:134
msgid "Restart the app to apply changes" msgid "Restart the app to apply changes"
msgstr "" msgstr ""
@@ -1680,8 +1671,8 @@ msgstr ""
msgid "Reuse session for multiple tabs" msgid "Reuse session for multiple tabs"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:136 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:129
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:78 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:71
#: tabby-core/src/tabContextMenu.ts:78 #: tabby-core/src/tabContextMenu.ts:78
msgid "Right" msgid "Right"
msgstr "" msgstr ""
@@ -1704,11 +1695,11 @@ msgstr ""
msgid "Save a password in the keychain" msgid "Save a password in the keychain"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:129 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:123
msgid "Save and apply" msgid "Save and apply"
msgstr "" msgstr ""
#: tabby-local/src/tabContextMenu.ts:27 #: tabby-local/src/tabContextMenu.ts:28
msgid "Save as profile" msgid "Save as profile"
msgstr "" msgstr ""
@@ -1716,7 +1707,7 @@ msgstr ""
msgid "Save layout as profile" msgid "Save layout as profile"
msgstr "" msgstr ""
#: tabby-local/src/tabContextMenu.ts:48 #: tabby-local/src/tabContextMenu.ts:49
msgid "Saved" msgid "Saved"
msgstr "" msgstr ""
@@ -1790,7 +1781,7 @@ msgstr ""
msgid "Select file storage" msgid "Select file storage"
msgstr "" msgstr ""
#: tabby-core/src/index.ts:225 #: tabby-core/src/index.ts:223
msgid "Select profile" msgid "Select profile"
msgstr "" msgstr ""
@@ -1854,7 +1845,7 @@ msgstr ""
msgid "Shell" msgid "Shell"
msgstr "" msgstr ""
#: tabby-terminal/src/api/baseTerminalTab.component.ts:555 #: tabby-terminal/src/api/baseTerminalTab.component.ts:551
msgid "Shell does not support current path detection" msgid "Shell does not support current path detection"
msgstr "" msgstr ""
@@ -1878,11 +1869,11 @@ msgstr ""
msgid "Show command selector" msgid "Show command selector"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:132 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:126
msgid "Show config file" msgid "Show config file"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:131 #: locale/tmp-html/tabby-settings/src/components/settingsTab.component.html:125
msgid "Show defaults" msgid "Show defaults"
msgstr "" msgstr ""
@@ -1894,7 +1885,7 @@ msgstr ""
msgid "Show pane labels (for rearranging)" msgid "Show pane labels (for rearranging)"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:164 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:157
msgid "Show profile icon on tab" msgid "Show profile icon on tab"
msgstr "" msgstr ""
@@ -1914,7 +1905,7 @@ msgstr ""
msgid "Show Serial connections" msgid "Show Serial connections"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:152 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:145
msgid "Show tabs in fullscreen mode" msgid "Show tabs in fullscreen mode"
msgstr "" msgstr ""
@@ -1938,8 +1929,8 @@ msgstr ""
msgid "Slow feed" msgid "Slow feed"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:68 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:61
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:86 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:79
msgid "Snaps the window to a side of the screen" msgid "Snaps the window to a side of the screen"
msgstr "" msgstr ""
@@ -1965,10 +1956,6 @@ msgstr ""
msgid "Source code" msgid "Source code"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:13
msgid "Spaciness"
msgstr ""
#: tabby-core/src/tabContextMenu.ts:75 #: tabby-core/src/tabContextMenu.ts:75
msgid "Split" msgid "Split"
msgstr "" msgstr ""
@@ -2011,7 +1998,7 @@ msgstr ""
msgid "SSH password for {user}@{host}:{port}" msgid "SSH password for {user}@{host}:{port}"
msgstr "" msgstr ""
#: tabby-core/src/theme.ts:9 #: tabby-core/src/theme.ts:8
msgid "Standard (legacy)" msgid "Standard (legacy)"
msgstr "" msgstr ""
@@ -2106,15 +2093,15 @@ msgstr ""
msgid "Tabby news and updates on Twitter" msgid "Tabby news and updates on Twitter"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:116
msgid "Tabs" msgid "Tabs"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:126 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:119
msgid "Tabs location" msgid "Tabs location"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:141 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:134
msgid "Tabs width" msgid "Tabs width"
msgstr "" msgstr ""
@@ -2122,7 +2109,7 @@ msgstr ""
msgid "Telnet session" msgid "Telnet session"
msgstr "" msgstr ""
#: tabby-terminal/src/api/baseTerminalTab.component.ts:204 #: tabby-terminal/src/api/baseTerminalTab.component.ts:200
#: tabby-terminal/src/settings.ts:43 #: tabby-terminal/src/settings.ts:43
msgid "Terminal" msgid "Terminal"
msgstr "" msgstr ""
@@ -2159,11 +2146,11 @@ msgstr ""
msgid "These apply to all profiles of a given type" msgid "These apply to all profiles of a given type"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:59 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52
msgid "Thin" msgid "Thin"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:205 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:198
msgid "Tick this if you're experiencing aliasing, ghosting or other visual issues" msgid "Tick this if you're experiencing aliasing, ghosting or other visual issues"
msgstr "" msgstr ""
@@ -2183,8 +2170,8 @@ msgstr ""
msgid "Toggles the Tabby window visibility" msgid "Toggles the Tabby window visibility"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:130 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:123
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:74 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:67
msgid "Top" msgid "Top"
msgstr "" msgstr ""
@@ -2254,8 +2241,8 @@ msgstr ""
msgid "Use ConPTY" msgid "Use ConPTY"
msgstr "" msgstr ""
#: tabby-electron/src/shells/linuxDefault.ts:31 #: tabby-local/src/shells/linuxDefault.ts:31
#: tabby-electron/src/shells/linuxDefault.ts:38 #: tabby-local/src/shells/linuxDefault.ts:38
msgid "User default" msgid "User default"
msgstr "" msgstr ""
@@ -2308,7 +2295,7 @@ msgstr ""
msgid "Version: {version}" msgid "Version: {version}"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:28 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:21
msgid "Vibrancy" msgid "Vibrancy"
msgstr "" msgstr ""
@@ -2348,28 +2335,24 @@ msgstr ""
msgid "When WinSCP is detected, you can launch an SCP session from the context menu." msgid "When WinSCP is detected, you can launch an SCP session from the context menu."
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:53 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:46
msgid "Whether a custom window or an OS native window should be used" msgid "Whether a custom window or an OS native window should be used"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-ssh/src/components/sshProfileSettings.component.html:141
msgid "Will prevent the SSH greeting from showing up"
msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:2
#: tabby-settings/src/settings.ts:30 #: tabby-settings/src/settings.ts:30
msgid "Window" msgid "Window"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:112 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105
msgid "Window dimension along the edge" msgid "Window dimension along the edge"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:105 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:98
msgid "Window dimension away from the edge" msgid "Window dimension away from the edge"
msgstr "" msgstr ""
#: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:52 #: locale/tmp-html/tabby-settings/src/components/windowSettingsTab.component.html:45
msgid "Window frame" msgid "Window frame"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,20 @@
{ {
"devDependencies": { "devDependencies": {
"@angular/animations": "^15.2.6", "@angular/animations": "^15.1.3",
"@angular/cdk": "^15.2.6", "@angular/cdk": "^15.1.3",
"@angular/common": "^15.2.6", "@angular/common": "^15.1.3",
"@angular/compiler": "^15.2.6", "@angular/compiler": "^15.1.3",
"@angular/compiler-cli": "^15.2.6", "@angular/compiler-cli": "^15.1.3",
"@angular/core": "^15.2.6", "@angular/core": "^15.1.3",
"@angular/forms": "^15.2.6", "@angular/forms": "^15.1.3",
"@angular/localize": "^15.2.9", "@angular/platform-browser": "^15.1.3",
"@angular/platform-browser": "^15.2.6", "@angular/platform-browser-dynamic": "^15.1.3",
"@angular/platform-browser-dynamic": "^15.2.6",
"@biesbjerg/ngx-translate-extract-marker": "^1.0.0", "@biesbjerg/ngx-translate-extract-marker": "^1.0.0",
"@electron/notarize": "^1.2.3", "@fortawesome/fontawesome-free": "^6.2.0",
"@fortawesome/fontawesome-free": "^6.4.0", "@ng-bootstrap/ng-bootstrap": "^14.0.1",
"@ng-bootstrap/ng-bootstrap": "^14.1.0", "@ngtools/webpack": "^15.1.4",
"@ngtools/webpack": "^15.2.5",
"@popperjs/core": "^2.11.6", "@popperjs/core": "^2.11.6",
"@sentry/cli": "^2.18.1", "@sentry/cli": "^1.74.3",
"@sentry/electron": "^2.5.4", "@sentry/electron": "^2.5.4",
"@tabby-gang/to-string-loader": "^1.1.7-beta.2", "@tabby-gang/to-string-loader": "^1.1.7-beta.2",
"@types/deep-equal": "1.0.1", "@types/deep-equal": "1.0.1",
@@ -24,17 +22,17 @@
"@types/electron-debug": "^2.1.0", "@types/electron-debug": "^2.1.0",
"@types/fs-extra": "^9.0.13", "@types/fs-extra": "^9.0.13",
"@types/js-yaml": "^4.0.5", "@types/js-yaml": "^4.0.5",
"@types/node": "20.3.1", "@types/node": "16.0.1",
"@types/webpack-env": "^1.18.0", "@types/webpack-env": "^1.18.0",
"@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/eslint-plugin": "^5.45.0",
"@typescript-eslint/parser": "^5.54.1", "@typescript-eslint/parser": "^5.45.0",
"apply-loader": "2.0.0", "apply-loader": "2.0.0",
"axios": "^1.4.0", "axios": "^0.27.2",
"babel-loader": "^9.1.2", "babel-loader": "^9.1.2",
"browserify-sign": "^4.2.1", "browserify-sign": "^4.2.1",
"clone-deep": "^4.0.1", "clone-deep": "^4.0.1",
"compare-versions": "^5", "compare-versions": "^5",
"core-js": "^3.31.0", "core-js": "^3.21.1",
"core-js-pure": "^3.21.1", "core-js-pure": "^3.21.1",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"css-loader": "^6.7.3", "css-loader": "^6.7.3",
@@ -43,10 +41,11 @@
"electron-builder": "^24.0.0-alpha.1", "electron-builder": "^24.0.0-alpha.1",
"electron-download": "^4.1.1", "electron-download": "^4.1.1",
"electron-installer-snap": "^5.1.0", "electron-installer-snap": "^5.1.0",
"electron-notarize": "^1.2.2",
"electron-rebuild": "^3.2.9", "electron-rebuild": "^3.2.9",
"eslint": "^8.38.0", "eslint": "^8.29.0",
"eslint-import-resolver-typescript": "^3.5.2", "eslint-import-resolver-typescript": "^3.5.2",
"eslint-plugin-import": "^2.27.5", "eslint-plugin-import": "^2.26.0",
"file-loader": "^6.2.0", "file-loader": "^6.2.0",
"gettext-extractor": "^3.5.4", "gettext-extractor": "^3.5.4",
"graceful-fs": "^4.2.10", "graceful-fs": "^4.2.10",
@@ -55,7 +54,7 @@
"lru-cache": "^6.0.0", "lru-cache": "^6.0.0",
"macos-release": "^3.1.0", "macos-release": "^3.1.0",
"ngx-toastr": "^16.0.2", "ngx-toastr": "^16.0.2",
"node-abi": "^3.45.0", "node-abi": "^3.33.0",
"npmlog": "6.0.2", "npmlog": "6.0.2",
"npx": "^10.2.2", "npx": "^10.2.2",
"patch-package": "^6.4.7", "patch-package": "^6.4.7",
@@ -68,7 +67,7 @@
"pug-static-loader": "2.0.0", "pug-static-loader": "2.0.0",
"raw-loader": "4.0.2", "raw-loader": "4.0.2",
"rxjs": "^7.5.7", "rxjs": "^7.5.7",
"sass": "^1.63.4", "sass": "^1.58.0",
"sass-loader": "^13.2.0", "sass-loader": "^13.2.0",
"shell-quote": "^1.7.4", "shell-quote": "^1.7.4",
"shelljs": "0.8.5", "shelljs": "0.8.5",
@@ -85,20 +84,19 @@
"tslib": "^2.5.0", "tslib": "^2.5.0",
"typedoc": "^0.22.18", "typedoc": "^0.22.18",
"typescript": "^4.9.5", "typescript": "^4.9.5",
"utils-decorators": "^2.0.6", "utils-decorators": "^1.10.4",
"val-loader": "5.0.1", "val-loader": "5.0.1",
"webpack": "^5.86.0", "webpack": "^5.75.0",
"webpack-bundle-analyzer": "^4.7.0", "webpack-bundle-analyzer": "^4.7.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"yaml-loader": "0.8.0", "yaml-loader": "0.8.0",
"zone.js": "^0.13.0" "zone.js": "^0.11.5"
}, },
"resolutions": { "resolutions": {
"*/pug": "^3", "*/pug": "^3",
"lzma-native": "^8.0.0", "lzma-native": "^8.0.0",
"*/node-abi": "^3.33.0", "*/node-abi": "^3.33.0",
"**/graceful-fs": "^4.2.4", "**/graceful-fs": "^4.2.4"
"nan": "2.17.0"
}, },
"scripts": { "scripts": {
"build": "npm run build:typings && node scripts/build-modules.mjs", "build": "npm run build:typings && node scripts/build-modules.mjs",

View File

@@ -25,8 +25,8 @@ export const builtinPlugins = [
'tabby-ssh', 'tabby-ssh',
'tabby-serial', 'tabby-serial',
'tabby-telnet', 'tabby-telnet',
'tabby-local',
'tabby-electron', 'tabby-electron',
'tabby-local',
'tabby-plugin-manager', 'tabby-plugin-manager',
'tabby-linkifier', 'tabby-linkifier',
] ]

View File

@@ -1,6 +1,6 @@
{ {
"name": "tabby-community-color-schemes", "name": "tabby-community-color-schemes",
"version": "1.0.197-nightly.1", "version": "1.0.189-nightly.2",
"description": "Community color schemes for Tabby", "description": "Community color schemes for Tabby",
"keywords": [ "keywords": [
"tabby-builtin-plugin" "tabby-builtin-plugin"
@@ -17,7 +17,7 @@
"author": "Eugene Pankov", "author": "Eugene Pankov",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@angular/core": "^15", "@angular/core": "^9.1.9",
"tabby-core": "*", "tabby-core": "*",
"tabby-terminal": "*" "tabby-terminal": "*"
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "tabby-core", "name": "tabby-core",
"version": "1.0.197-nightly.1", "version": "1.0.189-nightly.0",
"description": "Tabby core", "description": "Tabby core",
"keywords": [ "keywords": [
"tabby-builtin-plugin" "tabby-builtin-plugin"
@@ -12,7 +12,6 @@
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch"
}, },
"files": [ "files": [
"dist",
"typings" "typings"
], ],
"author": "Eugene Pankov", "author": "Eugene Pankov",
@@ -26,16 +25,16 @@
"messageformat": "^2.3.0", "messageformat": "^2.3.0",
"mixpanel": "^0.17.0", "mixpanel": "^0.17.0",
"ngx-translate-messageformat-compiler": "^4.11.0", "ngx-translate-messageformat-compiler": "^4.11.0",
"readable-stream": "4.4.0", "readable-stream": "4.2.0",
"uuid": "^9.0.0" "uuid": "^9.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/animations": "^15", "@angular/animations": "^9.1.9",
"@angular/common": "^15", "@angular/common": "^9.1.11",
"@angular/core": "^15", "@angular/core": "^9.1.9",
"@angular/forms": "^15", "@angular/forms": "^9.1.11",
"@angular/platform-browser": "^15", "@angular/platform-browser": "^9.1.11",
"@angular/platform-browser-dynamic": "^15", "@angular/platform-browser-dynamic": "^9.1.11",
"rxjs": "^7" "rxjs": "^6.6.3"
} }
} }

View File

@@ -176,7 +176,6 @@ export abstract class PlatformService {
abstract setErrorHandler (handler: (_: any) => void): void abstract setErrorHandler (handler: (_: any) => void): void
abstract popupContextMenu (menu: MenuItemOptions[], event?: MouseEvent): void abstract popupContextMenu (menu: MenuItemOptions[], event?: MouseEvent): void
abstract showMessageBox (options: MessageBoxOptions): Promise<MessageBoxResult> abstract showMessageBox (options: MessageBoxOptions): Promise<MessageBoxResult>
abstract pickDirectory (): Promise<string>
abstract quit (): void abstract quit (): void
} }

View File

@@ -14,7 +14,6 @@ export interface Profile {
icon?: string icon?: string
color?: string color?: string
disableDynamicTitle: boolean disableDynamicTitle: boolean
behaviorOnSessionEnd: 'auto'|'keep'|'reconnect'|'close'
weight: number weight: number
isBuiltin: boolean isBuiltin: boolean

View File

@@ -27,7 +27,7 @@ export class CoreCommandProvider extends CommandProvider {
async provide (): Promise<Command[]> { async provide (): Promise<Command[]> {
return [ return [
{ {
id: 'core:profile-selector', id: 'profile-selector',
locations: [CommandLocation.LeftToolbar, CommandLocation.StartPage], locations: [CommandLocation.LeftToolbar, CommandLocation.StartPage],
label: this.translate.instant('Profiles & connections'), label: this.translate.instant('Profiles & connections'),
icon: this.hostApp.platform === Platform.Web icon: this.hostApp.platform === Platform.Web
@@ -35,8 +35,7 @@ export class CoreCommandProvider extends CommandProvider {
: require('./icons/profiles.svg'), : require('./icons/profiles.svg'),
run: async () => this.activate(), run: async () => this.activate(),
}, },
...this.profilesService.getRecentProfiles().map((profile, index) => ({ ...this.profilesService.getRecentProfiles().map(profile => ({
id: `core:recent-profile-${index}`,
label: profile.name, label: profile.name,
locations: [CommandLocation.StartPage], locations: [CommandLocation.StartPage],
icon: require('./icons/history.svg'), icon: require('./icons/history.svg'),

View File

@@ -37,12 +37,14 @@ title-bar(
.btn-group.background .btn-group.background
.d-flex( .d-flex(
*ngFor='let button of leftToolbarButtons' *ngFor='let button of leftToolbarButtons',
ngbDropdown
) )
button.btn.btn-secondary.btn-tab-bar( button.btn.btn-secondary.btn-tab-bar(
[title]='button.label', [title]='button.label',
(click)='button.run && button.run()', (click)='button.run && button.run()',
[fastHtmlBind]='button.icon' [fastHtmlBind]='button.icon',
ngbDropdownToggle,
) )
.d-flex( .d-flex(
@@ -51,7 +53,7 @@ title-bar(
#activeTransfersDropdown='ngbDropdown' #activeTransfersDropdown='ngbDropdown'
) )
button.btn.btn-secondary.btn-tab-bar( button.btn.btn-secondary.btn-tab-bar(
[hidden]='activeTransfers.length == 0', *ngIf='activeTransfers.length > 0',
title='File transfers', title='File transfers',
ngbDropdownToggle ngbDropdownToggle
) !{require('../icons/transfers.svg')} ) !{require('../icons/transfers.svg')}
@@ -65,12 +67,14 @@ title-bar(
.btn-group.background .btn-group.background
.d-flex( .d-flex(
*ngFor='let button of rightToolbarButtons' *ngFor='let button of rightToolbarButtons',
ngbDropdown
) )
button.btn.btn-secondary.btn-tab-bar( button.btn.btn-secondary.btn-tab-bar(
[title]='button.label', [title]='button.title',
(click)='button.run && button.run()', (click)='button.run && button.run()',
[fastHtmlBind]='button.icon' [fastHtmlBind]='button.icon',
ngbDropdownToggle,
) )
button.btn.btn-secondary.btn-tab-bar.btn-update( button.btn.btn-secondary.btn-tab-bar.btn-update(

View File

@@ -10,12 +10,11 @@
cursor: default; cursor: default;
animation: 0.5s ease-out fadeIn; animation: 0.5s ease-out fadeIn;
transition: 0.25s background; transition: 0.25s background;
--tabs-height: calc(38px * var(--spaciness));
--side-tab-width: calc(200px * var(--spaciness));
} }
$tabs-height: 38px;
$tab-border-radius: 4px; $tab-border-radius: 4px;
$side-tab-width: 200px;
.wrap { .wrap {
display: flex; display: flex;
@@ -47,19 +46,19 @@ $tab-border-radius: 4px;
.content.tabs-on-side > .tab-bar { .content.tabs-on-side > .tab-bar {
height: 100%; height: 100%;
width: var(--side-tab-width); width: $side-tab-width;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
flex-direction: column; flex-direction: column;
background: rgba(0, 0, 0, 0.25); background: rgba(0, 0, 0, 0.25);
.tabs { .tabs {
width: var(--side-tab-width); width: $side-tab-width;
flex: none; flex: none;
flex-direction: column; flex-direction: column;
tab-header { tab-header {
flex: 0 0 var(--tabs-height); flex: 0 0 $tabs-height;
} }
} }
@@ -70,22 +69,18 @@ $tab-border-radius: 4px;
&>.inset { &>.inset {
opacity: 0; opacity: 0;
} }
::ng-deep tab-header {
width: 100% !important;
}
} }
.tab-bar { .tab-bar {
flex: none; flex: none;
height: var(--tabs-height); height: $tabs-height;
display: flex; display: flex;
width: 100%; width: 100%;
.btn-tab-bar { .btn-tab-bar {
line-height: calc(var(--tabs-height) + 2px); line-height: $tabs-height + 2px;
height: var(--tabs-height); height: $tabs-height;
cursor: pointer; cursor: pointer;
display: flex; display: flex;
@@ -118,20 +113,17 @@ $tab-border-radius: 4px;
&>.drag-space { &>.drag-space {
min-width: 1px; min-width: 1px;
flex: 1 0 1%; flex: 1 0 1%;
margin-top: 2px; // for window resizing
-webkit-app-region: drag; -webkit-app-region: drag;
.tabs-on-top & {
margin-top: 2px; // for window resizing
}
&.persistent { &.persistent {
min-width: 72px; // 2 x 36 px height, ie 2 squares min-width: 72px; // 2 x 36 px height, ie 2 squares
} }
} }
& > .inset { & > .inset {
width: calc(70px + 15px * var(--spaciness)); width: 85px;
height: var(--tabs-height); height: $tabs-height;
flex: none; flex: none;
-webkit-app-region: drag; -webkit-app-region: drag;
} }
@@ -178,12 +170,18 @@ hotkey-hint {
::ng-deep .btn-tab-bar svg, ::ng-deep .btn-tab-bar svg,
::ng-deep .btn-tab-bar + .dropdown-menu svg { ::ng-deep .btn-tab-bar + .dropdown-menu svg {
width: calc(22px * var(--spaciness)); width: 22px;
height: calc(16px * var(--spaciness)); height: 16px;
fill: white; fill: white;
fill-opacity: 0.75; fill-opacity: 0.75;
} }
.icon-wrapper {
display: flex;
width: 16px;
height: 17px;
}
::ng-deep .btn-update svg { ::ng-deep .btn-update svg {
fill: cyan; fill: cyan;
} }

View File

@@ -79,8 +79,8 @@ export class AppRootComponent {
constructor ( constructor (
private hotkeys: HotkeysService, private hotkeys: HotkeysService,
private updater: UpdaterService,
private commands: CommandService, private commands: CommandService,
public updater: UpdaterService,
public hostWindow: HostWindowService, public hostWindow: HostWindowService,
public hostApp: HostAppService, public hostApp: HostAppService,
public config: ConfigService, public config: ConfigService,

View File

@@ -192,14 +192,6 @@ export abstract class BaseTabComponent extends BaseComponent {
this.viewContainer = undefined this.viewContainer = undefined
} }
get topmostParent (): BaseTabComponent|null {
let parent = this.parent
while (parent?.parent) {
parent = parent.parent
}
return parent
}
/** /**
* Called before the tab is closed * Called before the tab is closed
*/ */

View File

@@ -5,7 +5,7 @@ import { BaseComponent } from './base.component'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'profile-icon', selector: 'profile-icon',
templateUrl: './profileIcon.component.pug', templateUrl:'./profileIcon.component.pug',
styleUrls: ['./profileIcon.component.scss'], styleUrls: ['./profileIcon.component.scss'],
}) })
export class ProfileIconComponent extends BaseComponent { export class ProfileIconComponent extends BaseComponent {

View File

@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
/** @hidden */ /** @hidden */
@Component({ @Component({
templateUrl: './promptModal.component.pug', templateUrl:'./promptModal.component.pug',
}) })
export class PromptModalComponent { export class PromptModalComponent {
@Input() value: string @Input() value: string

View File

@@ -5,7 +5,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'rename-tab-modal', selector: 'rename-tab-modal',
templateUrl: './renameTabModal.component.pug', templateUrl:'./renameTabModal.component.pug',
}) })
export class RenameTabModalComponent { export class RenameTabModalComponent {
@Input() value: string @Input() value: string

View File

@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
/** @hidden */ /** @hidden */
@Component({ @Component({
templateUrl: './safeModeModal.component.pug', templateUrl:'./safeModeModal.component.pug',
}) })
export class SafeModeModalComponent { export class SafeModeModalComponent {
@Input() error: Error @Input() error: Error

View File

@@ -26,9 +26,9 @@
*ngIf='option.description !== getOptionText(option)' *ngIf='option.description !== getOptionText(option)'
) {{option.description}} ) {{option.description}}
.ms-auto .ms-auto
.no-wrap.badge.text-bg-secondary.ms-2(*ngIf='selectedIndex == i && canEditSelected()') .no-wrap.badge.text-bg-secondary.text-muted.ms-2(*ngIf='selectedIndex == i && canEditSelected()')
span BACKSPACE span Backspace
i.fas.fa-pencil.ms-1 i.fas.fa-pencil.ms-1
.no-wrap.badge.text-bg-secondary.ms-2(*ngIf='selectedIndex == i') .no-wrap.badge.text-bg-secondary.text-muted.ms-2(*ngIf='selectedIndex == i')
span ENTER span Enter
i.fas.fa-arrow-right.ms-1 i.fas.fa-arrow-right.ms-1

View File

@@ -7,7 +7,7 @@ import { SelectorOption } from '../api/selector'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'selector-modal', selector: 'selector-modal',
templateUrl: './selectorModal.component.pug', templateUrl:'./selectorModal.component.pug',
styleUrls: ['./selectorModal.component.scss'], styleUrls: ['./selectorModal.component.scss'],
}) })
export class SelectorModalComponent<T> { export class SelectorModalComponent<T> {

View File

@@ -24,7 +24,3 @@
border-radius: 10px; border-radius: 10px;
} }
} }
::ng-deep .no-animations split-tab > .child {
transition: none;
}

View File

@@ -458,18 +458,12 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
tab.destroy() tab.destroy()
} }
let allTabs: BaseTabComponent[] = []
if (thing instanceof BaseTabComponent) { if (thing instanceof BaseTabComponent) {
allTabs = [thing] if (thing.parent instanceof SplitTabComponent) {
} else if (thing instanceof SplitContainer) { thing.parent.removeTab(thing)
allTabs = thing.getAllTabs()
}
for (const tab of allTabs) {
if (tab.parent instanceof SplitTabComponent) {
tab.parent.removeTab(tab)
} }
tab.removeFromContainer() thing.removeFromContainer()
tab.parent = this thing.parent = this
} }
let target = relative ? this.getParentOf(relative) : null let target = relative ? this.getParentOf(relative) : null
@@ -787,7 +781,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
} }
get icon (): string|null { get icon (): string|null {
return this.getFocusedTab()?.icon ?? this.getAllTabs()[0]?.icon ?? null return this.getFocusedTab()?.icon ?? null
} }
set icon (icon: string|null) { set icon (icon: string|null) {
@@ -797,7 +791,7 @@ export class SplitTabComponent extends BaseTabComponent implements AfterViewInit
} }
get color (): string|null { get color (): string|null {
return this.getFocusedTab()?.color ?? this.getAllTabs()[0]?.color ?? null return this.getFocusedTab()?.color ?? null
} }
set color (color: string|null) { set color (color: string|null) {

View File

@@ -1,5 +1,4 @@
.mt-5
.mt-auto.mb-auto
.tabby-logo .tabby-logo
h1.tabby-title Tabby h1.tabby-title Tabby
sup α sup α

View File

@@ -7,7 +7,7 @@ import { Command, CommandLocation } from '../api/commands'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'start-page', selector: 'start-page',
templateUrl: './startPage.component.pug', templateUrl:'./startPage.component.pug',
styleUrls: ['./startPage.component.scss'], styleUrls: ['./startPage.component.scss'],
}) })
export class StartPageComponent { export class StartPageComponent {

View File

@@ -1,7 +1,6 @@
.colorbar([style.background-color]='tab.color', *ngIf='tab.color != null') .colorbar([style.background-color]='tab.color', *ngIf='tab.color != null')
.progressbar([style.width]='progress + "%"', *ngIf='progress != null') .progressbar([style.width]='progress + "%"', *ngIf='progress != null')
.activity-indicator(*ngIf='tab.activity$|async') .activity-indicator(*ngIf='tab.activity$|async')
.current-tab-indicator
.index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform === Platform.macOS', cdkDragHandle) {{index + 1}} .index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform === Platform.macOS', cdkDragHandle) {{index + 1}}
.index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform !== Platform.macOS') {{index + 1}} .index(*ngIf='!config.store.terminal.hideTabIndex && hostApp.platform !== Platform.macOS') {{index + 1}}

View File

@@ -35,7 +35,7 @@ $tabs-height: 38px;
-webkit-app-region: no-drag; -webkit-app-region: no-drag;
cursor: -webkit-grab; cursor: -webkit-grab;
width: calc(22px * var(--spaciness)); width: 22px;
border-radius: 10px; border-radius: 10px;
text-align: center; text-align: center;
transition: 0.25s all; transition: 0.25s all;
@@ -134,29 +134,15 @@ $tabs-height: 38px;
z-index: 1; z-index: 1;
} }
.activity-indicator, .current-tab-indicator {
position: absolute;
height: 2px;
}
&.active .activity-indicator { &.active .activity-indicator {
display: none; display: none;
} }
.activity-indicator { .activity-indicator {
bottom: 4px; position: absolute;
left: 10px; left: 10px;
right: 10px; right: 10px;
} bottom: 4px;
height: 2px;
&.active .current-tab-indicator {
display: block;
}
.current-tab-indicator {
display: none;
top: 0;
left: 0;
right: 0;
} }
} }

View File

@@ -15,7 +15,7 @@ import { PlatformService } from '../api/platform'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'tab-header', selector: 'tab-header',
templateUrl: './tabHeader.component.pug', templateUrl:'./tabHeader.component.pug',
styleUrls: ['./tabHeader.component.scss'], styleUrls: ['./tabHeader.component.scss'],
}) })
export class TabHeaderComponent extends BaseComponent { export class TabHeaderComponent extends BaseComponent {

View File

@@ -4,7 +4,7 @@ import { HostWindowService } from '../api'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'title-bar', selector: 'title-bar',
templateUrl: './titleBar.component.pug', templateUrl:'./titleBar.component.pug',
styleUrls: ['./titleBar.component.scss'], styleUrls: ['./titleBar.component.scss'],
}) })
export class TitleBarComponent { export class TitleBarComponent {

View File

@@ -6,7 +6,12 @@
.icon(*ngIf='!isDownload(transfer)') !{require('../icons/upload.svg')} .icon(*ngIf='!isDownload(transfer)') !{require('../icons/upload.svg')}
.main .main
label.no-wrap([title]='transfer.getName()') {{transfer.getName()}} label.no-wrap([title]='transfer.getName()') {{transfer.getName()}}
ngb-progressbar([type]='transfer.isComplete() ? "success" : transfer.isCancelled() ? "danger" : "info"', [value]='getProgress(transfer)') .status(*ngIf='transfer.isComplete()')
ngb-progressbar(type='success', [value]='100')
.status(*ngIf='transfer.isCancelled()')
ngb-progressbar(type='danger', [value]='100')
.status(*ngIf='!transfer.isComplete() && !transfer.isCancelled()')
ngb-progressbar(type='info', [value]='getProgress(transfer)')
.metadata .metadata
.size {{transfer.getSize()|filesize}} .size {{transfer.getSize()|filesize}}
.speed(*ngIf='transfer.getSpeed()') {{transfer.getSpeed()|filesize}}/s .speed(*ngIf='transfer.getSpeed()') {{transfer.getSpeed()|filesize}}/s

View File

@@ -5,7 +5,7 @@ import { FileDownload, FileTransfer, PlatformService } from '../api/platform'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'transfers-menu', selector: 'transfers-menu',
templateUrl: './transfersMenu.component.pug', templateUrl:'./transfersMenu.component.pug',
styleUrls: ['./transfersMenu.component.scss'], styleUrls: ['./transfersMenu.component.scss'],
}) })
export class TransfersMenuComponent { export class TransfersMenuComponent {

View File

@@ -3,7 +3,7 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
/** @hidden */ /** @hidden */
@Component({ @Component({
templateUrl: './unlockVaultModal.component.pug', templateUrl:'./unlockVaultModal.component.pug',
}) })
export class UnlockVaultModalComponent { export class UnlockVaultModalComponent {
passphrase: string passphrase: string

View File

@@ -8,7 +8,7 @@ import { LocaleService } from '../services/locale.service'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'welcome-page', selector: 'welcome-page',
templateUrl: './welcomeTab.component.pug', templateUrl:'./welcomeTab.component.pug',
styleUrls: ['./welcomeTab.component.scss'], styleUrls: ['./welcomeTab.component.scss'],
}) })
export class WelcomeTabComponent extends BaseTabComponent { export class WelcomeTabComponent extends BaseTabComponent {

View File

@@ -1,18 +1,18 @@
button.btn.btn-dark( button.btn.btn-secondary.btn-minimize(
(click)='hostWindow.minimize()', (click)='hostWindow.minimize()',
) )
svg(version='1.1', width='10', height='10') svg(version='1.1', width='10', height='10')
path(d='M 0,5 10,5 10,6 0,6 Z') path(d='M 0,5 10,5 10,6 0,6 Z')
button.btn.btn-dark((click)='hostWindow.toggleMaximize()', *ngIf='!hostWindow.isMaximized()') button.btn.btn-secondary.btn-maximize((click)='hostWindow.toggleMaximize()', *ngIf='!hostWindow.isMaximized()')
svg(version='1.1', width='10', height='10') svg(version='1.1', width='10', height='10')
path(d='M 0,0 0,10 10,10 10,0 Z M 1,1 9,1 9,9 1,9 Z') path(d='M 0,0 0,10 10,10 10,0 Z M 1,1 9,1 9,9 1,9 Z')
button.btn.btn-dark((click)='hostWindow.toggleMaximize()', *ngIf='hostWindow.isMaximized()') button.btn.btn-secondary.btn-maximize((click)='hostWindow.toggleMaximize()', *ngIf='hostWindow.isMaximized()')
svg(version='1.1', width='10', height='10', viewBox='0 0 512 512') svg(version='1.1', width='10', height='10', viewBox='0 0 512 512')
path(d="M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM32 144c0-8.8 7.2-16 16-16h320c8.8 0 16 7.2 16 16v320c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16v-80zm448 224c0 8.8-7.2 16-16 16h-48V144c0-26.5-21.5-48-48-48H128V48c0-8.8 7.2-16 16-16h320c8.8 0 16 7.2 16 16v320z") path(d="M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM32 144c0-8.8 7.2-16 16-16h320c8.8 0 16 7.2 16 16v320c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16v-80zm448 224c0 8.8-7.2 16-16 16h-48V144c0-26.5-21.5-48-48-48H128V48c0-8.8 7.2-16 16-16h320c8.8 0 16 7.2 16 16v320z")
button.btn.btn-danger( button.btn.btn-secondary.btn-close(
(click)='closeWindow()' (click)='closeWindow()'
) )
svg(version='1.1', width='10', height='10') svg(version='1.1', width='10', height='10')

View File

@@ -6,7 +6,7 @@ import { AppService } from '../services/app.service'
/** @hidden */ /** @hidden */
@Component({ @Component({
selector: 'window-controls', selector: 'window-controls',
templateUrl: './windowControls.component.pug', templateUrl:'./windowControls.component.pug',
styleUrls: ['./windowControls.component.scss'], styleUrls: ['./windowControls.component.scss'],
}) })
export class WindowControlsComponent { export class WindowControlsComponent {

View File

@@ -22,8 +22,6 @@ hotkeys:
- 'Ctrl-Shift' - 'Ctrl-Shift'
duplicate-tab: [] duplicate-tab: []
restart-tab: [] restart-tab: []
reconnect-tab: []
disconnect-tab: []
explode-tab: explode-tab:
- 'Ctrl-Shift-.' - 'Ctrl-Shift-.'
combine-tabs: combine-tabs:

View File

@@ -39,8 +39,6 @@ hotkeys:
tab-10: [] tab-10: []
duplicate-tab: [] duplicate-tab: []
restart-tab: [] restart-tab: []
reconnect-tab: []
disconnect-tab: []
explode-tab: explode-tab:
- '⌘-Shift-.' - '⌘-Shift-.'
combine-tabs: combine-tabs:

View File

@@ -23,8 +23,6 @@ hotkeys:
- 'Ctrl-Shift' - 'Ctrl-Shift'
duplicate-tab: [] duplicate-tab: []
restart-tab: [] restart-tab: []
reconnect-tab: []
disconnect-tab: []
explode-tab: explode-tab:
- 'Ctrl-Shift-.' - 'Ctrl-Shift-.'
combine-tabs: combine-tabs:

View File

@@ -18,7 +18,6 @@ appearance:
vibrancy: false vibrancy: false
vibrancyType: 'blur' vibrancyType: 'blur'
lastTabClosesWindow: false lastTabClosesWindow: false
spaciness: 1
terminal: terminal:
showBuiltinProfiles: true showBuiltinProfiles: true
showRecentProfiles: 3 showRecentProfiles: 3
@@ -46,9 +45,6 @@ vault: null
encrypted: false encrypted: false
enableExperimentalFeatures: false enableExperimentalFeatures: false
pluginBlacklist: [] pluginBlacklist: []
commandBlacklist: []
providerBlacklist: []
profileBlacklist: []
hacks: hacks:
disableGPU: false disableGPU: false
disableVibrancyWhileDragging: false disableVibrancyWhileDragging: false

View File

@@ -19,7 +19,6 @@ export class CdkAutoDropGroup implements OnInit {
) { } ) { }
ngOnInit (): void { ngOnInit (): void {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
CdkAutoDropGroup.groups[this.groupName] ??= new FakeDropGroup() CdkAutoDropGroup.groups[this.groupName] ??= new FakeDropGroup()
CdkAutoDropGroup.groups[this.groupName]._items.add(this.cdkDropList) CdkAutoDropGroup.groups[this.groupName]._items.add(this.cdkDropList)
this.cdkDropList['_group'] = CdkAutoDropGroup.groups[this.groupName] this.cdkDropList['_group'] = CdkAutoDropGroup.groups[this.groupName]

View File

@@ -6,7 +6,7 @@ import { PlatformService } from '../api/platform'
selector: '[fastHtmlBind]', selector: '[fastHtmlBind]',
}) })
export class FastHtmlBindDirective implements OnChanges { export class FastHtmlBindDirective implements OnChanges {
@Input() fastHtmlBind?: string @Input() fastHtmlBind: string
constructor ( constructor (
private el: ElementRef, private el: ElementRef,
@@ -14,7 +14,7 @@ export class FastHtmlBindDirective implements OnChanges {
) { } ) { }
ngOnChanges (): void { ngOnChanges (): void {
this.el.nativeElement.innerHTML = this.fastHtmlBind ?? '' this.el.nativeElement.innerHTML = this.fastHtmlBind || ''
for (const link of this.el.nativeElement.querySelectorAll('a')) { for (const link of this.el.nativeElement.querySelectorAll('a')) {
link.addEventListener('click', event => { link.addEventListener('click', event => {
event.preventDefault() event.preventDefault()

View File

@@ -5,11 +5,9 @@ import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap' import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { NgxFilesizeModule } from 'ngx-filesize' import { NgxFilesizeModule } from 'ngx-filesize'
import { DragDropModule } from '@angular/cdk/drag-drop' import { DragDropModule } from '@angular/cdk/drag-drop'
import { TranslateModule, TranslateCompiler, TranslateService, MissingTranslationHandler } from '@ngx-translate/core' import { TranslateModule, TranslateCompiler, TranslateService } from '@ngx-translate/core'
import { TranslateMessageFormatCompiler, MESSAGE_FORMAT_CONFIG } from 'ngx-translate-messageformat-compiler' import { TranslateMessageFormatCompiler, MESSAGE_FORMAT_CONFIG } from 'ngx-translate-messageformat-compiler'
import '@angular/localize/init'
import { AppRootComponent } from './components/appRoot.component' import { AppRootComponent } from './components/appRoot.component'
import { CheckboxComponent } from './components/checkbox.component' import { CheckboxComponent } from './components/checkbox.component'
import { TabBodyComponent } from './components/tabBody.component' import { TabBodyComponent } from './components/tabBody.component'
@@ -43,7 +41,7 @@ import { AppService } from './services/app.service'
import { ConfigService } from './services/config.service' import { ConfigService } from './services/config.service'
import { VaultFileProvider } from './services/vault.service' import { VaultFileProvider } from './services/vault.service'
import { HotkeysService } from './services/hotkeys.service' import { HotkeysService } from './services/hotkeys.service'
import { CustomMissingTranslationHandler, LocaleService } from './services/locale.service' import { LocaleService } from './services/locale.service'
import { CommandService } from './services/commands.service' import { CommandService } from './services/commands.service'
import { StandardTheme, StandardCompactTheme, PaperTheme, NewTheme } from './theme' import { StandardTheme, StandardCompactTheme, PaperTheme, NewTheme } from './theme'
@@ -101,10 +99,6 @@ const PROVIDERS = [
provide: TranslateCompiler, provide: TranslateCompiler,
useFactory: TranslateMessageFormatCompilerFactory, useFactory: TranslateMessageFormatCompilerFactory,
}, },
missingTranslationHandler: {
provide: MissingTranslationHandler,
useClass: CustomMissingTranslationHandler,
},
}), }),
], ],
declarations: [ declarations: [
@@ -195,7 +189,7 @@ export default class AppModule { // eslint-disable-line @typescript-eslint/no-ex
} }
if (hotkey === 'profile-selector') { if (hotkey === 'profile-selector') {
commands.run('core:profile-selector', {}) commands.run('profile-selector', {})
} }
}) })
} }

View File

@@ -71,7 +71,6 @@ export class CommandService {
} }
return commands return commands
.filter(c => !this.config.store.commandBlacklist.includes(c.id))
.sort((a, b) => (a.weight ?? 0) - (b.weight ?? 0)) .sort((a, b) => (a.weight ?? 0) - (b.weight ?? 0))
.map(command => { .map(command => {
const run = command.run const run = command.run

View File

@@ -254,9 +254,7 @@ export class ConfigService {
return services.filter(service => { return services.filter(service => {
for (const pluginName in this.servicesCache) { for (const pluginName in this.servicesCache) {
if (this.servicesCache[pluginName].includes(service.constructor)) { if (this.servicesCache[pluginName].includes(service.constructor)) {
const id = `${pluginName}:${service.constructor.name}`
return !this.store?.pluginBlacklist?.includes(pluginName) return !this.store?.pluginBlacklist?.includes(pluginName)
&& !this.store?.providerBlacklist?.includes(id)
} }
} }
return true return true

View File

@@ -178,7 +178,7 @@ export class HotkeysService {
this._key.next(getKeyName(eventData)) this._key.next(getKeyName(eventData))
}) })
if (process.platform === 'darwin' && eventData.metaKey && eventName === 'keydown' && !['Ctrl', 'Shift', altKeyName, metaKeyName, 'Enter'].includes(keyName)) { if (process.platform === 'darwin' && eventData.metaKey && eventName === 'keydown' && !['Ctrl', 'Shift', altKeyName, metaKeyName].includes(keyName)) {
// macOS will swallow non-modified keyups if Cmd is held down // macOS will swallow non-modified keyups if Cmd is held down
this.pushKeyEvent('keyup', nativeEvent) this.pushKeyEvent('keyup', nativeEvent)
} }

View File

@@ -1,7 +1,6 @@
import { Injectable } from '@angular/core' import { Injectable } from '@angular/core'
import { registerLocaleData } from '@angular/common' import { registerLocaleData } from '@angular/common'
import { TranslateService, MissingTranslationHandler } from '@ngx-translate/core' import { TranslateService } from '@ngx-translate/core'
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler'
import localeENUS from '@angular/common/locales/en' import localeENUS from '@angular/common/locales/en'
import localeENGB from '@angular/common/locales/en-GB' import localeENGB from '@angular/common/locales/en-GB'
@@ -56,19 +55,6 @@ function flattenMessageFormatTranslation (po: any) {
return translation return translation
} }
export class CustomMissingTranslationHandler extends MissingTranslationHandler {
compiler = new TranslateMessageFormatCompiler()
// eslint-disable-next-line @typescript-eslint/ban-types
handle (params: { key: string, translateService: TranslateService, interpolateParams?: Object }): any {
const v = this.compiler.compile(params.key, params.translateService.currentLang)
if (typeof v === 'string') {
return v
}
return v(params.interpolateParams)
}
}
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class LocaleService { export class LocaleService {
private logger: Logger private logger: Logger

View File

@@ -24,7 +24,6 @@ export class ProfilesService {
isBuiltin: false, isBuiltin: false,
isTemplate: false, isTemplate: false,
terminalColorScheme: null, terminalColorScheme: null,
behaviorOnSessionEnd: 'auto',
} }
constructor ( constructor (
@@ -96,8 +95,6 @@ export class ProfilesService {
const freeInputEquivalent = provider?.intoQuickConnectString(fullProfile) ?? undefined const freeInputEquivalent = provider?.intoQuickConnectString(fullProfile) ?? undefined
return { return {
...profile, ...profile,
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
group: profile.group || '',
freeInputEquivalent, freeInputEquivalent,
description: provider?.getDescription(fullProfile), description: provider?.getDescription(fullProfile),
} }
@@ -153,8 +150,6 @@ export class ProfilesService {
profiles = profiles.filter(x => !x.isTemplate) profiles = profiles.filter(x => !x.isTemplate)
profiles = profiles.filter(x => x.id && !this.config.store.profileBlacklist.includes(x.id))
options = [...options, ...profiles.map((p): SelectorOption<void> => ({ options = [...options, ...profiles.map((p): SelectorOption<void> => ({
...this.selectorOptionForProfile(p), ...this.selectorOptionForProfile(p),
weight: p.isBuiltin ? 2 : 1, weight: p.isBuiltin ? 2 : 1,

View File

@@ -26,14 +26,15 @@ export class ThemesService {
this.applyThemeVariables() this.applyThemeVariables()
config.changed$.subscribe(() => { config.changed$.subscribe(() => {
this.applyCurrentTheme() this.applyCurrentTheme()
this.applyThemeVariables()
}) })
}) })
config.changed$.subscribe(() => this.applyThemeVariables())
} }
private applyThemeVariables () { private applyThemeVariables () {
if (!this.findCurrentTheme().followsColorScheme) { if (!this.findCurrentTheme().followsColorScheme) {
document.documentElement.style.cssText = this.rootElementStyleBackup document.documentElement.style.cssText = this.rootElementStyleBackup
return
} }
const theme = this.config.store.terminal.colorScheme const theme = this.config.store.terminal.colorScheme
@@ -62,118 +63,68 @@ export class ThemesService {
// const backgroundMore =more(theme.background, 0.25).string() // const backgroundMore =more(theme.background, 0.25).string()
const accentIndex = 4 const accentIndex = 4
const vars: Record<string, string> = {} const vars: Record<string, string> = {}
const contrastPairs: string[][] = []
vars['--body-bg'] = background.string() vars['--bs-body-bg'] = background.string()
if (this.findCurrentTheme().followsColorScheme) { vars['--bs-body-color'] = theme.foreground
vars['--bs-body-bg'] = theme.background vars['--bs-black'] = theme.colors[0]
vars['--bs-body-color'] = theme.foreground vars['--bs-red'] = theme.colors[1]
vars['--bs-black'] = theme.colors[0] vars['--bs-green'] = theme.colors[2]
vars['--bs-red'] = theme.colors[1] vars['--bs-yellow'] = theme.colors[3]
vars['--bs-green'] = theme.colors[2] vars['--bs-blue'] = theme.colors[4]
vars['--bs-yellow'] = theme.colors[3] vars['--bs-purple'] = theme.colors[5]
vars['--bs-blue'] = theme.colors[4] vars['--bs-cyan'] = theme.colors[6]
vars['--bs-purple'] = theme.colors[5] vars['--bs-gray'] = theme.colors[7]
vars['--bs-cyan'] = theme.colors[6] vars['--bs-gray-dark'] = theme.colors[8]
vars['--bs-gray'] = theme.colors[7] // vars['--bs-red'] = theme.colors[9]
vars['--bs-gray-dark'] = theme.colors[8] // vars['--bs-green'] = theme.colors[10]
// vars['--bs-red'] = theme.colors[9] // vars['--bs-yellow'] = theme.colors[11]
// vars['--bs-green'] = theme.colors[10] // vars['--bs-blue'] = theme.colors[12]
// vars['--bs-yellow'] = theme.colors[11] // vars['--bs-purple'] = theme.colors[13]
// vars['--bs-blue'] = theme.colors[12] // vars['--bs-cyan'] = theme.colors[14]
// vars['--bs-purple'] = theme.colors[13]
// vars['--bs-cyan'] = theme.colors[14]
contrastPairs.push(['--bs-body-bg', '--bs-body-color']) vars['--theme-fg-more-2'] = more(theme.foreground, 0.5).string()
vars['--theme-fg-more'] = more(theme.foreground, 0.25).string()
vars['--theme-fg'] = theme.foreground
vars['--theme-fg-less'] = less(theme.foreground, 0.25).string()
vars['--theme-fg-less-2'] = less(theme.foreground, 0.5).string()
vars['--theme-fg-more-2'] = more(theme.foreground, 0.5).string() vars['--theme-bg-less-2'] = less(theme.background, 0.5).string()
vars['--theme-fg-more'] = more(theme.foreground, 0.25).string() vars['--theme-bg-less'] = less(theme.background, 0.25).string()
vars['--theme-fg'] = theme.foreground vars['--theme-bg'] = theme.background
vars['--theme-fg-less'] = less(theme.foreground, 0.25).string() vars['--theme-bg-more'] = backgroundMore
vars['--theme-fg-less-2'] = less(theme.foreground, 0.5).string() vars['--theme-bg-more-2'] = more(backgroundMore, 0.25).string()
vars['--theme-bg-less-2'] = less(theme.background, 0.5).string() const themeColors = {
vars['--theme-bg-less'] = less(theme.background, 0.25).string() primary: theme.colors[accentIndex],
vars['--theme-bg'] = theme.background secondary: theme.colors[8],
vars['--theme-bg-more'] = backgroundMore tertiary: theme.colors[8],
vars['--theme-bg-more-2'] = more(backgroundMore, 0.25).string() warning: theme.colors[3],
danger: theme.colors[1],
contrastPairs.push(['--theme-bg', '--theme-fg']) success: theme.colors[2],
contrastPairs.push(['--theme-bg-less', '--theme-fg-less']) info: theme.colors[4],
contrastPairs.push(['--theme-bg-less-2', '--theme-fg-less-2']) dark: more(theme.background, 0.5).string(),
contrastPairs.push(['--theme-bg-more', '--theme-fg-more']) light: more(theme.foreground, 0.5).string(),
contrastPairs.push(['--theme-bg-more-2', '--theme-fg-more-2']) link: theme.colors[8], // for .btn-link
const themeColors = {
primary: theme.colors[accentIndex],
secondary: less(theme.background, 0.5).string(),
tertiary: theme.colors[8],
warning: theme.colors[3],
danger: theme.colors[1],
success: theme.colors[2],
info: theme.colors[4],
dark: more(theme.background, 0.75).string(),
light: more(theme.foreground, 0.5).string(),
link: theme.colors[8], // for .btn-link
}
for (const [key, color] of Object.entries(themeColors)) {
vars[`--bs-${key}-bg`] = more(color, 0.5).string()
vars[`--bs-${key}-color`] = less(color, 0.5).string()
vars[`--bs-${key}`] = color
vars[`--bs-${key}-rgb`] = Color(color).rgb().array().join(', ')
vars[`--theme-${key}-more-2`] = more(color, 1).string()
vars[`--theme-${key}-more`] = more(color, 0.5).string()
vars[`--theme-${key}`] = color
vars[`--theme-${key}-less`] = less(color, 0.25).string()
vars[`--theme-${key}-less-2`] = less(color, 0.75).string()
vars[`--theme-${key}-fg`] = more(color, 3).string()
vars[`--theme-${key}-active-bg`] = less(color, 1).string()
vars[`--theme-${key}-active-fg`] = more(color, 1).string()
contrastPairs.push([`--theme-${key}`, `--theme-${key}-fg`])
contrastPairs.push([`--theme-${key}-active-bg`, `--theme-${key}-active-fg`])
}
const switchBackground = less(theme.colors[accentIndex], 0.25).string()
vars['--bs-form-switch-bg'] = `url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27${switchBackground}%27/%3e%3c/svg%3e")`
} }
vars['--spaciness'] = this.config.store.appearance.spaciness for (const [key, color] of Object.entries(themeColors)) {
vars[`--bs-${key}-bg`] = more(color, 0.5).string()
for (const [bg, fg] of contrastPairs) { vars[`--bs-${key}-color`] = less(color, 0.5).string()
const colorBg = Color(vars[bg]).hsl() vars[`--bs-${key}`] = color
const colorFg = Color(vars[fg]).hsl() vars[`--bs-${key}-rgb`] = Color(color).rgb().array().join(', ')
const bgContrast = colorBg.contrast(colorFg) vars[`--theme-${key}-more-2`] = more(color, 1).string()
if (bgContrast < this.config.store.terminal.minimumContrastRatio) { vars[`--theme-${key}-more`] = more(color, 0.5).string()
vars[fg] = this.ensureContrast(colorFg, colorBg).string() vars[`--theme-${key}`] = color
} vars[`--theme-${key}-less`] = less(color, 0.25).string()
vars[`--theme-${key}-less-2`] = less(color, 0.75).string()
} }
const switchBackground = less(theme.colors[accentIndex], 0.25).string()
vars['--bs-form-switch-bg'] = `url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%27-4 -4 8 8%27%3e%3ccircle r=%273%27 fill=%27${switchBackground}%27/%3e%3c/svg%3e")`
for (const [key, value] of Object.entries(vars)) { for (const [key, value] of Object.entries(vars)) {
document.documentElement.style.setProperty(key, value) document.documentElement.style.setProperty(key, value)
} }
document.body.classList.toggle('no-animations', !this.config.store.accessibility.animations)
}
private ensureContrast (color: Color, against: Color): Color {
const a = this.increaseContrast(color, against, 1.1)
const b = this.increaseContrast(color, against, 0.9)
return a.contrast(against) > b.contrast(against) ? a : b
}
private increaseContrast (color: Color, against: Color, step=1.1): Color {
color = color.hsl()
color.color[2] = Math.max(color.color[2], 0.01)
while (
(step < 1 && color.color[2] > 1 ||
step > 1 && color.color[2] < 99) &&
color.contrast(against) < this.config.store.terminal.minimumContrastRatio) {
color.color[2] *= step
}
return color
} }
findTheme (name: string): Theme|null { findTheme (name: string): Theme|null {

View File

@@ -10,7 +10,7 @@ app-root {
&> .content { &> .content {
.tab-bar { .tab-bar {
background: var(--theme-bg-more-2); background: var(--theme-bg-more);
.btn-tab-bar { .btn-tab-bar {
background: transparent; background: transparent;
@@ -30,7 +30,6 @@ app-root {
border-left: 1px solid transparent; border-left: 1px solid transparent;
border-right: 1px solid transparent; border-right: 1px solid transparent;
transition: 0.125s ease-out width; transition: 0.125s ease-out width;
color: var(--theme-fg-more-2);
.index { .index {
color: var(--bs-body-color); color: var(--bs-body-color);
@@ -55,41 +54,131 @@ app-root {
opacity: .2; opacity: .2;
} }
.current-tab-indicator {
background:var(--bs-light);
}
&.active { &.active {
color: var(--theme-fg); // color: $black;
background: var(--body-bg); background: var(--bs-body-bg);
// border-left: 1px solid $border-color;
// border-right: 1px solid $border-color;
} }
} }
} }
} }
// &.tabs-on-top .tab-bar {
// &>.background {
// border-bottom: 1px solid $border-color;
// }
// tab-header {
// border-bottom: 1px solid $border-color;
// &.active {
// border-bottom-color: transparent;
// }
// }
// }
// &:not(.tabs-on-top) .tab-bar {
// &>.background {
// border-top: 1px solid $border-color;
// }
// tab-header {
// border-top: 1px solid $border-color;
// &.active {
// margin-top: -1px;
// }
// }
// }
} }
// &.platform-win32, &.platform-linux {
// border: 1px solid #111;
// &>.content .tab-bar .tabs tab-header:first-child {
// border-left: none;
// }
// }
} }
tab-body { tab-body {
background: var(--body-bg); background: var(--bs-body-bg);
} }
$tab-border-radius: 5px; // $black: #002b36;
// $base02: #073642;
// $base01: #586e75;
// $base00: #657b83;
// $base0: #839496;
// $base1: #93a1a1;
// $base2: #eee8d5;
// $white: #fdf6e3;
// $yellow: #b58900;
// $orange: #cb4b16;
// $red: #dc322f;
// $pink: #d33682;
// $purple: #6c71c4;
// $blue: #268bd2;
// $teal: #2aa198;
// $green: #859900;
$tab-border-radius: 5px;
// $button-hover-bg: rgba(0, 0, 0, .125);
// $button-active-bg: rgba(0, 0, 0, .25);
// $btn-border-radius: 0;
// $input-bg: $base2;
// $input-disabled-bg: $base1;
// $input-color: $body-color;
// $input-color-placeholder: $base1;
// $input-border-color: $base1;
// //$input-box-shadow: inset 0 1px 1px rgba($black,.075);
// $input-border-radius: 0;
// $custom-select-border-radius: 0;
// $input-bg-focus: $input-bg;
// //$input-border-focus: lighten($brand-primary, 25%);
// //$input-box-shadow-focus: $input-box-shadow, rgba($input-border-focus, .6);
// $input-color-focus: $input-color;
// $input-group-addon-bg: $body-bg;
// $input-group-addon-border-color: $input-border-color;
// $modal-content-bg: $content-bg-solid;
// $modal-content-border-color: $body-bg;
$modal-header-border-color: transparent; $modal-header-border-color: transparent;
$modal-footer-border-color: transparent; $modal-footer-border-color: transparent;
// $popover-bg: $body-bg;
// $dropdown-bg: $body-bg;
// $dropdown-link-color: $body-color;
// $dropdown-link-hover-color: #333;
// $dropdown-link-hover-bg: $body-bg2;
// //$dropdown-link-active-color: $component-active-color;
// //$dropdown-link-active-bg: $component-active-bg;
// $dropdown-link-disabled-color: #333;
// $dropdown-header-color: #333;
// $list-group-action-bg: rgba($black,.05);
// $list-group-action-active-bg: $list-group-link-active-bg;
// $pre-bg: $dropdown-bg;
// $pre-color: $dropdown-link-color;
// $headings-font-weight: lighter;
// $headings-color: $base0;
$form-check-input-width: 1.4em; $form-check-input-width: 1.4em;
$form-switch-width: 2.5em; $form-switch-width: 2.5em;
$input-placeholder-color: var(--theme-fg-more-2);
@import '~bootstrap/scss/bootstrap.scss'; @import '~bootstrap/scss/bootstrap.scss';
@import "./theme.vendor.scss"; @import "./theme.vendor.scss";
body { body {
background: var(--body-bg);
--bs-border-color: var(--theme-bg-more-2); --bs-border-color: var(--theme-bg-more-2);
--bs-form-control-bg: var(--theme-bg-more-2); --bs-form-control-bg: var(--theme-bg-more);
--bs-emphasis-color: var(--theme-fg-less-2); --bs-emphasis-color: var(--theme-fg-less-2);
} }
@@ -97,6 +186,8 @@ body {
--bs-list-group-bg: var(--theme-bg-more); --bs-list-group-bg: var(--theme-bg-more);
--bs-list-group-border-color: var(--theme-bg-more-2); --bs-list-group-border-color: var(--theme-bg-more-2);
--bs-list-group-border-width: 0; --bs-list-group-border-width: 0;
// --bs-list-group-item-padding-x: 1rem;
// --bs-list-group-item-padding-y: 0.5rem;
--bs-list-group-action-color: var(--bs-body-color); --bs-list-group-action-color: var(--bs-body-color);
--bs-list-group-action-hover-color: var(--theme-fg); --bs-list-group-action-hover-color: var(--theme-fg);
--bs-list-group-action-hover-bg: var(--theme-bg-more-2); --bs-list-group-action-hover-bg: var(--theme-bg-more-2);
@@ -107,15 +198,23 @@ body {
--bs-list-group-disabled-bg: var(--bs-body-bg); --bs-list-group-disabled-bg: var(--bs-body-bg);
--bs-list-group-active-color: var(--bs-primary-color); --bs-list-group-active-color: var(--bs-primary-color);
--bs-list-group-active-bg: var(--bs-primary-bg); --bs-list-group-active-bg: var(--bs-primary-bg);
// --bs-list-group-active-border-color: #0d6efd;
} }
.nav { .nav {
--bs-nav-link-color: var(--theme-fg); // scss-docs-start nav-css-vars
--bs-nav-link-hover-color: var(--theme-fg-less); // --bs-nav-link-padding-x: #{$nav-link-padding-x};
// --bs-nav-link-padding-y: #{$nav-link-padding-y};
// @include rfs($nav-link-font-size, --bs-nav-link-font-size);
// --bs-nav-link-font-weight: #{$nav-link-font-weight};
--bs-nav-link-color: var(--bs-body-color);
--bs-nav-link-hover-color: var(--theme-fg-less-2);
--bs-nav-link-disabled-color: var(--bs-gray); --bs-nav-link-disabled-color: var(--bs-gray);
// scss-docs-end nav-css-vars
} }
.nav-tabs { .nav-tabs {
// scss-docs-start nav-tabs-css-vars
--bs-nav-tabs-border-width: 2px; --bs-nav-tabs-border-width: 2px;
--bs-nav-tabs-border-radius: 0; --bs-nav-tabs-border-radius: 0;
--bs-nav-tabs-link-hover-border-color: var(--bs-body-bg); --bs-nav-tabs-link-hover-border-color: var(--bs-body-bg);
@@ -124,12 +223,15 @@ body {
--bs-nav-tabs-link-active-bg: transparent; --bs-nav-tabs-link-active-bg: transparent;
--bs-nav-tabs-link-active-border-color: transparent; --bs-nav-tabs-link-active-border-color: transparent;
// scss-docs-end nav-tabs-css-vars
} }
.nav-pills { .nav-pills {
// scss-docs-start nav-pills-css-vars
--bs-nav-pills-border-radius: #{$nav-pills-border-radius}; --bs-nav-pills-border-radius: #{$nav-pills-border-radius};
--bs-nav-pills-link-active-color: var(--theme-primary-fg); --bs-nav-pills-link-active-color: var(--theme-bg-more);
--bs-nav-pills-link-active-bg: var(--theme-primary); --bs-nav-pills-link-active-bg: var(--bs-primary);
// scss-docs-end nav-pills-css-vars
} }
.nav-tabs { .nav-tabs {
@@ -173,13 +275,6 @@ body {
} }
} }
.dropdown-menu {
--bs-dropdown-bg: var(--theme-bg-more);
}
.progress {
--bs-progress-height: 3px;
}
tab-body { tab-body {
terminal-toolbar { terminal-toolbar {
@@ -202,20 +297,20 @@ tab-body {
--bs-btn-hover-border-color: var(--theme-#{$color}-less); --bs-btn-hover-border-color: var(--theme-#{$color}-less);
--bs-btn-hover-bg: var(--theme-#{$color}-less); --bs-btn-hover-bg: var(--theme-#{$color}-less);
--bs-btn-active-border-color: var(--theme-#{$color}); --bs-btn-active-border-color: var(--theme-#{$color}-less-2);
--bs-btn-active-bg: var(--theme-#{$color}-active-bg); --bs-btn-active-bg: var(--theme-#{$color}-less-2);
--bs-btn-focus-shadow-rgb: 130, 138, 145; --bs-btn-focus-shadow-rgb: 130, 138, 145;
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
--bs-btn-color: var(--theme-#{$color}-fg); --bs-btn-color: var(--theme-#{$color}-more-2);
--bs-btn-hover-color: var(--theme-#{$color}-fg); --bs-btn-hover-color: var(--theme-#{$color}-more-2);
--bs-btn-active-color: var(--theme-#{$color}-active-fg); --bs-btn-active-color: var(--theme-#{$color}-more-2);
--bs-btn-disabled-color: var(--theme-#{$color}-fg); --bs-btn-disabled-color: var(--theme-#{$color}-more-2);
} }
.alert-#{$color} { .alert-#{$color} {
--bs-alert-bg: var(--theme-#{$color}-fg); --bs-alert-bg: var(--theme-#{$color}-more-2);
--bs-alert-border-color: var(--theme-#{$color}-more); --bs-alert-border-color: var(--theme-#{$color}-more);
--bs-alert-color: var(--theme-#{$color}); --bs-alert-color: var(--theme-#{$color});
} }
@@ -343,6 +438,19 @@ hotkey-input-modal {
} }
} }
// checkbox i.on {
// color: $blue;
// }
// .modal .modal-footer {
// background: rgba(0, 0, 0, .25);
// .btn {
// font-weight: bold;
// padding: 0.375rem 1.5rem;
// }
// }
.list-group-item svg { .list-group-item svg {
fill: var(--bs-body-color); fill: var(--bs-body-color);
fill-opacity: 0.75; fill-opacity: 0.75;
@@ -385,8 +493,30 @@ search-panel {
.btn-link { .btn-link {
text-decoration: none; text-decoration: none;
// &:hover, &[aria-expanded=true], &:active, &.active {
// color: $link-hover-color;
// border-radius: $btn-border-radius;
// }
// &[aria-expanded=true], &:active, &.active {
// background: rgba(255, 255, 255, 0.1);
// }
} }
// .btn-group .btn.active {
// border-color: transparent !important;
// }
// hr {
// border-color: $list-group-border-color;
// }
// .dropdown-menu {
// box-shadow: $dropdown-box-shadow;
// }
ngx-colors-panel .opened { ngx-colors-panel .opened {
background: var(--bs-body-bg) !important; background: var(--bs-body-bg) !important;
@@ -400,8 +530,8 @@ ngx-colors-panel .opened {
} }
.text-muted { .text-muted {
// color: var(--bs-body-color) !important;
opacity: .5; opacity: .5;
color: var(--theme-fg) !important;
} }
.form-switch .form-check-input { .form-switch .form-check-input {
@@ -426,7 +556,7 @@ ngx-colors-panel .opened {
} }
start-page { start-page {
background: var(--theme-bg-more-2); background: var(--theme-bg);
} }
split-tab-spanner { split-tab-spanner {
@@ -436,9 +566,3 @@ split-tab-spanner {
background: rgba(var(--bs-dark-rgb), .2); background: rgba(var(--bs-dark-rgb), .2);
} }
} }
window-controls {
button svg {
fill: var(--theme-fg) !important;
}
}

View File

@@ -1,29 +1,37 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'
import { Injectable } from '@angular/core' import { Injectable } from '@angular/core'
import { TranslateService } from '@ngx-translate/core'
import { Theme } from './api' import { Theme } from './api'
/** @hidden */ /** @hidden */
@Injectable() @Injectable()
export class StandardTheme extends Theme { export class StandardTheme extends Theme {
name = _('Standard (legacy)') name = this.translate.instant('Standard (legacy)')
css = require('./theme.scss') css = require('./theme.scss')
terminalBackground = '#222a33' terminalBackground = '#222a33'
constructor (private translate: TranslateService) {
super()
}
} }
/** @hidden */ /** @hidden */
@Injectable() @Injectable()
export class StandardCompactTheme extends Theme { export class StandardCompactTheme extends Theme {
name = _('Compact (legacy)') name = this.translate.instant('Compact (legacy)')
css = require('./theme.compact.scss') css = require('./theme.compact.scss')
terminalBackground = '#222a33' terminalBackground = '#222a33'
macOSWindowButtonsInsetX = 8 macOSWindowButtonsInsetX = 8
macOSWindowButtonsInsetY = 6 macOSWindowButtonsInsetY = 6
constructor (private translate: TranslateService) {
super()
}
} }
/** @hidden */ /** @hidden */
@Injectable() @Injectable()
export class PaperTheme extends Theme { export class PaperTheme extends Theme {
name = _('Paper (legacy)') name = 'Paper (legacy)'
css = require('./theme.paper.scss') css = require('./theme.paper.scss')
terminalBackground = '#f7f1e0' terminalBackground = '#f7f1e0'
} }
@@ -31,8 +39,12 @@ export class PaperTheme extends Theme {
/** @hidden */ /** @hidden */
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class NewTheme extends Theme { export class NewTheme extends Theme {
name = _('Follow the color scheme') name = this.translate.instant('Follow the color scheme')
css = require('./theme.new.scss') css = require('./theme.new.scss')
terminalBackground = '#f7f1e0' terminalBackground = '#f7f1e0'
followsColorScheme = true followsColorScheme = true
constructor (private translate: TranslateService) {
super()
}
} }

View File

@@ -7,13 +7,8 @@ export const WIN_BUILD_CONPTY_STABLE = 18309
export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763 export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763
export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063 export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063
export function getWindows10Build (): number|undefined {
return process.platform === 'win32' && parseFloat(os.release()) >= 10 ? parseInt(os.release().split('.')[2]) : undefined
}
export function isWindowsBuild (build: number): boolean { export function isWindowsBuild (build: number): boolean {
const b = getWindows10Build() return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
return b !== undefined && b >= build
} }
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types

View File

@@ -174,10 +174,10 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
readable-stream@4.4.0: readable-stream@4.2.0:
version "4.4.0" version "4.2.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.2.0.tgz#a7ef523d3b39e4962b0db1a1af22777b10eeca46"
integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== integrity sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==
dependencies: dependencies:
abort-controller "^3.0.0" abort-controller "^3.0.0"
buffer "^6.0.3" buffer "^6.0.3"

View File

@@ -1,6 +1,6 @@
{ {
"name": "tabby-electron", "name": "tabby-electron",
"version": "1.0.197-nightly.1", "version": "1.0.189-nightly.2",
"description": "Electron-specific bindings", "description": "Electron-specific bindings",
"keywords": [ "keywords": [
"tabby-builtin-plugin" "tabby-builtin-plugin"
@@ -12,20 +12,16 @@
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch"
}, },
"files": [ "files": [
"dist", "dist"
"typings"
], ],
"author": "Eugene Pankov", "author": "Eugene Pankov",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@angular/core": "^15", "@angular/core": "^9.1.9"
"tabby-local": "*"
}, },
"devDependencies": { "devDependencies": {
"electron-promise-ipc": "^2.2.4", "electron-promise-ipc": "^2.2.4",
"ps-node": "^0.1.6",
"tmp-promise": "^3.0.2", "tmp-promise": "^3.0.2",
"which": "^3.0.0",
"winston": "^3.3.3" "winston": "^3.3.3"
} }
} }

View File

@@ -2,7 +2,6 @@ import { NgModule } from '@angular/core'
import { PlatformService, LogService, UpdaterService, DockingService, HostAppService, ThemesService, Platform, AppService, ConfigService, WIN_BUILD_FLUENT_BG_SUPPORTED, isWindowsBuild, HostWindowService, HotkeyProvider, ConfigProvider, FileProvider } from 'tabby-core' import { PlatformService, LogService, UpdaterService, DockingService, HostAppService, ThemesService, Platform, AppService, ConfigService, WIN_BUILD_FLUENT_BG_SUPPORTED, isWindowsBuild, HostWindowService, HotkeyProvider, ConfigProvider, FileProvider } from 'tabby-core'
import { TerminalColorSchemeProvider } from 'tabby-terminal' import { TerminalColorSchemeProvider } from 'tabby-terminal'
import { SFTPContextMenuItemProvider, SSHProfileImporter, AutoPrivateKeyLocator } from 'tabby-ssh' import { SFTPContextMenuItemProvider, SSHProfileImporter, AutoPrivateKeyLocator } from 'tabby-ssh'
import { PTYInterface, ShellProvider, UACService } from 'tabby-local'
import { auditTime } from 'rxjs' import { auditTime } from 'rxjs'
import { HyperColorSchemes } from './colorSchemes' import { HyperColorSchemes } from './colorSchemes'
@@ -15,28 +14,10 @@ import { ElectronHostWindow } from './services/hostWindow.service'
import { ElectronFileProvider } from './services/fileProvider.service' import { ElectronFileProvider } from './services/fileProvider.service'
import { ElectronHostAppService } from './services/hostApp.service' import { ElectronHostAppService } from './services/hostApp.service'
import { ElectronService } from './services/electron.service' import { ElectronService } from './services/electron.service'
import { DockMenuService } from './services/dockMenu.service'
import { ElectronUACService } from './services/uac.service'
import { ElectronHotkeyProvider } from './hotkeys' import { ElectronHotkeyProvider } from './hotkeys'
import { ElectronConfigProvider } from './config' import { ElectronConfigProvider } from './config'
import { EditSFTPContextMenu } from './sftpContextMenu' import { EditSFTPContextMenu } from './sftpContextMenu'
import { OpenSSHImporter, PrivateKeyLocator, StaticFileImporter } from './sshImporters' import { OpenSSHImporter, PrivateKeyLocator, StaticFileImporter } from './sshImporters'
import { ElectronPTYInterface } from './pty'
import { CmderShellProvider } from './shells/cmder'
import { Cygwin32ShellProvider } from './shells/cygwin32'
import { Cygwin64ShellProvider } from './shells/cygwin64'
import { GitBashShellProvider } from './shells/gitBash'
import { LinuxDefaultShellProvider } from './shells/linuxDefault'
import { MacOSDefaultShellProvider } from './shells/macDefault'
import { MSYS2ShellProvider } from './shells/msys2'
import { POSIXShellsProvider } from './shells/posix'
import { PowerShellCoreShellProvider } from './shells/powershellCore'
import { WindowsDefaultShellProvider } from './shells/winDefault'
import { WindowsStockShellsProvider } from './shells/windowsStock'
import { WSLShellProvider } from './shells/wsl'
import { VSDevToolsProvider } from './shells/vs'
@NgModule({ @NgModule({
providers: [ providers: [
@@ -54,29 +35,6 @@ import { VSDevToolsProvider } from './shells/vs'
{ provide: SSHProfileImporter, useExisting: OpenSSHImporter, multi: true }, { provide: SSHProfileImporter, useExisting: OpenSSHImporter, multi: true },
{ provide: SSHProfileImporter, useExisting: StaticFileImporter, multi: true }, { provide: SSHProfileImporter, useExisting: StaticFileImporter, multi: true },
{ provide: AutoPrivateKeyLocator, useExisting: PrivateKeyLocator, multi: true }, { provide: AutoPrivateKeyLocator, useExisting: PrivateKeyLocator, multi: true },
{ provide: ShellProvider, useClass: WindowsDefaultShellProvider, multi: true },
{ provide: ShellProvider, useClass: MacOSDefaultShellProvider, multi: true },
{ provide: ShellProvider, useClass: LinuxDefaultShellProvider, multi: true },
{ provide: ShellProvider, useClass: WindowsStockShellsProvider, multi: true },
{ provide: ShellProvider, useClass: PowerShellCoreShellProvider, multi: true },
{ provide: ShellProvider, useClass: CmderShellProvider, multi: true },
{ provide: ShellProvider, useClass: Cygwin32ShellProvider, multi: true },
{ provide: ShellProvider, useClass: Cygwin64ShellProvider, multi: true },
{ provide: ShellProvider, useClass: GitBashShellProvider, multi: true },
{ provide: ShellProvider, useClass: POSIXShellsProvider, multi: true },
{ provide: ShellProvider, useClass: MSYS2ShellProvider, multi: true },
{ provide: ShellProvider, useClass: WSLShellProvider, multi: true },
{ provide: ShellProvider, useClass: VSDevToolsProvider, multi: true },
{ provide: UACService, useClass: ElectronUACService },
{ provide: PTYInterface, useClass: ElectronPTYInterface },
// For WindowsDefaultShellProvider
PowerShellCoreShellProvider,
WSLShellProvider,
WindowsStockShellsProvider,
], ],
}) })
export default class ElectronModule { export default class ElectronModule {
@@ -89,7 +47,6 @@ export default class ElectronModule {
docking: DockingService, docking: DockingService,
themeService: ThemesService, themeService: ThemesService,
app: AppService, app: AppService,
dockMenu: DockMenuService,
) { ) {
config.ready$.toPromise().then(() => { config.ready$.toPromise().then(() => {
touchbar.update() touchbar.update()
@@ -130,10 +87,6 @@ export default class ElectronModule {
}) })
config.changed$.subscribe(() => this.updateVibrancy()) config.changed$.subscribe(() => this.updateVibrancy())
config.ready$.toPromise().then(() => {
dockMenu.update()
})
} }
private registerGlobalHotkey () { private registerGlobalHotkey () {

View File

@@ -1,140 +0,0 @@
import * as psNode from 'ps-node'
import { ipcRenderer } from 'electron'
import { ChildProcess, PTYInterface, PTYProxy } from 'tabby-local'
import { getWorkingDirectoryFromPID } from 'native-process-working-directory'
/* eslint-disable block-scoped-var */
try {
var macOSNativeProcessList = require('macos-native-processlist') // eslint-disable-line @typescript-eslint/no-var-requires, no-var
} catch { }
try {
var windowsProcessTree = require('windows-process-tree') // eslint-disable-line @typescript-eslint/no-var-requires, no-var
} catch { }
export class ElectronPTYInterface extends PTYInterface {
async spawn (...options: any[]): Promise<PTYProxy> {
const id = ipcRenderer.sendSync('pty:spawn', ...options)
return new ElectronPTYProxy(id)
}
async restore (id: string): Promise<ElectronPTYProxy|null> {
if (ipcRenderer.sendSync('pty:exists', id)) {
return new ElectronPTYProxy(id)
}
return null
}
}
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
export class ElectronPTYProxy extends PTYProxy {
private subscriptions: Map<string, any> = new Map()
private truePID: Promise<number>
constructor (
private id: string,
) {
super()
this.truePID = new Promise(async (resolve) => {
let pid = await this.getPID()
try {
await new Promise(r => setTimeout(r, 2000))
// Retrieve any possible single children now that shell has fully started
let processes = await this.getChildProcessesInternal(pid)
while (pid && processes.length === 1) {
if (!processes[0].pid) {
break
}
pid = processes[0].pid
processes = await this.getChildProcessesInternal(pid)
}
} finally {
resolve(pid)
}
})
this.truePID = this.truePID.catch(() => this.getPID())
}
getID (): string {
return this.id
}
getTruePID (): Promise<number> {
return this.truePID
}
async getPID (): Promise<number> {
return ipcRenderer.sendSync('pty:get-pid', this.id)
}
subscribe (event: string, handler: (..._: any[]) => void): void {
const key = `pty:${this.id}:${event}`
const newHandler = (_event, ...args) => handler(...args)
this.subscriptions.set(key, newHandler)
ipcRenderer.on(key, newHandler)
}
ackData (length: number): void {
ipcRenderer.send('pty:ack-data', this.id, length)
}
unsubscribeAll (): void {
for (const k of this.subscriptions.keys()) {
ipcRenderer.off(k, this.subscriptions.get(k))
}
}
async resize (columns: number, rows: number): Promise<void> {
ipcRenderer.send('pty:resize', this.id, columns, rows)
}
async write (data: Buffer): Promise<void> {
ipcRenderer.send('pty:write', this.id, data)
}
async kill (signal?: string): Promise<void> {
ipcRenderer.send('pty:kill', this.id, signal)
}
async getChildProcesses (): Promise<ChildProcess[]> {
return this.getChildProcessesInternal(await this.getTruePID())
}
async getChildProcessesInternal (truePID: number): Promise<ChildProcess[]> {
if (process.platform === 'darwin') {
const processes = await macOSNativeProcessList.getProcessList()
return processes.filter(x => x.ppid === truePID).map(p => ({
pid: p.pid,
ppid: p.ppid,
command: p.name,
}))
}
if (process.platform === 'win32') {
return new Promise<ChildProcess[]>(resolve => {
windowsProcessTree.getProcessTree(truePID, tree => {
resolve(tree ? tree.children.map(child => ({
pid: child.pid,
ppid: tree.pid,
command: child.name,
})) : [])
})
})
}
return new Promise<ChildProcess[]>((resolve, reject) => {
psNode.lookup({ ppid: truePID }, (err, processes) => {
if (err) {
reject(err)
return
}
resolve(processes as ChildProcess[])
})
})
}
async getWorkingDirectory (): Promise<string|null> {
return getWorkingDirectoryFromPID(await this.getTruePID())
}
}

View File

@@ -234,15 +234,6 @@ export class ElectronPlatformService extends PlatformService {
handler(err) handler(err)
}) })
} }
async pickDirectory (): Promise<string> {
return (await this.electron.dialog.showOpenDialog(
this.hostWindow.getWindow(),
{
properties: ['openDirectory', 'showHiddenFiles'],
},
)).filePaths[0]
}
} }
class ElectronFileUpload extends FileUpload { class ElectronFileUpload extends FileUpload {

View File

@@ -88,11 +88,6 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
connected-domain@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/connected-domain/-/connected-domain-1.0.0.tgz#bfe77238c74be453a79f0cb6058deeb4f2358e93"
integrity sha512-lHlohUiJxlpunvDag2Y0pO20bnvarMjnrdciZeuJUqRwrf/5JHNhdpiPIr5GQ8IkqrFj5TDMQwcCjblGo1oeuA==
define-properties@^1.1.3: define-properties@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -284,11 +279,6 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies: dependencies:
has-symbols "^1.0.2" has-symbols "^1.0.2"
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
kuler@^2.0.0: kuler@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
@@ -366,13 +356,6 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
ps-node@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/ps-node/-/ps-node-0.1.6.tgz#9af67a99d7b1d0132e51a503099d38a8d2ace2c3"
integrity sha512-w7QJhUTbu70hpDso0YXDRNKCPNuchV8UTUZsAv0m7Qj5g85oHOJfr9drA1EjvK4nQK/bG8P97W4L6PJ3IQLoOA==
dependencies:
table-parser "^0.1.3"
readable-stream@^3.4.0, readable-stream@^3.6.0: readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.0" version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
@@ -441,13 +424,6 @@ string_decoder@^1.1.1:
dependencies: dependencies:
safe-buffer "~5.2.0" safe-buffer "~5.2.0"
table-parser@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/table-parser/-/table-parser-0.1.3.tgz#0441cfce16a59481684c27d1b5a67ff15a43c7b0"
integrity sha512-LCYeuvqqoPII3lzzYaXKbC3Forb+d2u4bNwhk/9FlivuGRxPE28YEWAYcujeSlLLDlMfvy29+WPybFJZFiKMYg==
dependencies:
connected-domain "^1.0.0"
text-hex@1.0.x: text-hex@1.0.x:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
@@ -508,13 +484,6 @@ which-boxed-primitive@^1.0.2:
is-string "^1.0.5" is-string "^1.0.5"
is-symbol "^1.0.3" is-symbol "^1.0.3"
which@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1"
integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==
dependencies:
isexe "^2.0.0"
winston-transport@^4.5.0: winston-transport@^4.5.0:
version "4.5.0" version "4.5.0"
resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
@@ -525,11 +494,10 @@ winston-transport@^4.5.0:
triple-beam "^1.3.0" triple-beam "^1.3.0"
winston@^3.3.3: winston@^3.3.3:
version "3.9.0" version "3.7.2"
resolved "https://registry.yarnpkg.com/winston/-/winston-3.9.0.tgz#2bbdeb8167a75fac6d9a0c6d002890cd908016c2" resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1"
integrity sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ== integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==
dependencies: dependencies:
"@colors/colors" "1.5.0"
"@dabh/diagnostics" "^2.0.2" "@dabh/diagnostics" "^2.0.2"
async "^3.2.3" async "^3.2.3"
is-stream "^2.0.0" is-stream "^2.0.0"

View File

@@ -1,6 +1,6 @@
{ {
"name": "tabby-linkifier", "name": "tabby-linkifier",
"version": "1.0.197-nightly.1", "version": "1.0.189-nightly.2",
"description": "Makes URLs, IPs and file paths clickable in Tabby", "description": "Makes URLs, IPs and file paths clickable in Tabby",
"keywords": [ "keywords": [
"tabby-builtin-plugin" "tabby-builtin-plugin"
@@ -12,7 +12,6 @@
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch"
}, },
"files": [ "files": [
"dist",
"typings" "typings"
], ],
"author": "Eugene Pankov", "author": "Eugene Pankov",

View File

@@ -1,6 +1,6 @@
{ {
"name": "tabby-local", "name": "tabby-local",
"version": "1.0.197-nightly.1", "version": "1.0.189-nightly.2",
"description": "Tabby's local shell plugin", "description": "Tabby's local shell plugin",
"keywords": [ "keywords": [
"tabby-builtin-plugin" "tabby-builtin-plugin"
@@ -12,7 +12,6 @@
"watch": "webpack --progress --color --watch" "watch": "webpack --progress --color --watch"
}, },
"files": [ "files": [
"dist",
"typings" "typings"
], ],
"author": "Eugene Pankov", "author": "Eugene Pankov",
@@ -20,16 +19,18 @@
"devDependencies": { "devDependencies": {
"ansi-colors": "^4.1.1", "ansi-colors": "^4.1.1",
"dataurl": "0.1.0", "dataurl": "0.1.0",
"hasbin": "^1.2.3",
"ps-node": "^0.1.6",
"runes": "^0.4.2" "runes": "^0.4.2"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/animations": "^15", "@angular/animations": "^9.1.9",
"@angular/common": "^15", "@angular/common": "^9.1.11",
"@angular/core": "^15", "@angular/core": "^9.1.9",
"@angular/forms": "^15", "@angular/forms": "^9.1.11",
"@angular/platform-browser": "^15", "@angular/platform-browser": "^9.1.11",
"@ng-bootstrap/ng-bootstrap": "^14", "@ng-bootstrap/ng-bootstrap": "^6.1.0",
"rxjs": "^7", "rxjs": "^6.5.5",
"tabby-core": "*", "tabby-core": "*",
"tabby-settings": "*", "tabby-settings": "*",
"tabby-terminal": "*" "tabby-terminal": "*"

View File

@@ -53,28 +53,3 @@ export interface ChildProcess {
ppid: number ppid: number
command: string command: string
} }
export abstract class UACService {
isAvailable = false
abstract patchSessionOptionsForUAC (sessionOptions: SessionOptions): SessionOptions
}
export abstract class PTYProxy {
abstract getID (): string
abstract getPID (): Promise<number>
abstract resize (columns: number, rows: number): Promise<void>
abstract write (data: Buffer): Promise<void>
abstract kill (signal?: string): Promise<void>
abstract ackData (length: number): void
abstract subscribe (event: string, handler: (..._: any[]) => void): void
abstract unsubscribeAll (): void
abstract getChildProcesses (): Promise<ChildProcess[]>
abstract getTruePID (): Promise<number>
abstract getWorkingDirectory (): Promise<string|null>
}
export abstract class PTYInterface {
abstract spawn (...options: any[]): Promise<PTYProxy>
abstract restore (id: string): Promise<PTYProxy|null>
}

View File

@@ -130,7 +130,7 @@ export class AutoOpenTabCLIHandler extends CLIHandler {
} }
async handle (event: CLIEvent): Promise<boolean> { async handle (event: CLIEvent): Promise<boolean> {
if (!event.secondInstance && this.config.store.terminal.autoOpen && !this.config.store.enableWelcomeTab) { if (!event.secondInstance && this.config.store.terminal.autoOpen) {
this.app.ready$.subscribe(() => { this.app.ready$.subscribe(() => {
this.terminal.openTab() this.terminal.openTab()
}) })

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