Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b98be33120 | |||
| 69c96777ff | |||
| bcc41bdc06 | |||
| 48eff492b0 | |||
| 47a666f7db | |||
| c9d59ee044 | |||
| 3ff2cd0e5a | |||
| 74c941e5b8 | |||
| 00c7572cd0 | |||
| d1bf862a6c | |||
| 9a5ecbb22c |
@@ -7,7 +7,7 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
name: Build App
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: alpine-linux
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
||||
@@ -6,7 +6,7 @@ on:
|
||||
jobs:
|
||||
git-town:
|
||||
name: Display the branch stack
|
||||
runs-on: ubuntu-slim
|
||||
runs-on: alpine-linux
|
||||
|
||||
if: ${{ !startsWith(github.head_ref, 'release-please--') }}
|
||||
|
||||
|
||||
@@ -1,50 +1,13 @@
|
||||
name: Release Please
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main] # updates/opens the release PR when commits land on main
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: release-please
|
||||
cancel-in-progress: true
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
release-please:
|
||||
name: Release Please
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
release_created: ${{ steps.rp.outputs.release_created }}
|
||||
steps:
|
||||
- id: app-token
|
||||
uses: actions/create-github-app-token@v2
|
||||
with:
|
||||
app-id: ${{ secrets.GH_STOAT_RELEASE_APP_ID }}
|
||||
private-key: ${{ secrets.GH_STOAT_RELEASE_APP_PRIVATE_KEY }}
|
||||
- id: rp
|
||||
uses: googleapis/release-please-action@v4
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
config-file: release-please-config.json
|
||||
|
||||
publish-release:
|
||||
name: Publish App
|
||||
needs: release-please
|
||||
if: needs.release-please.outputs.release_created == 'true'
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||
|
||||
build:
|
||||
runs-on: alpine-linux
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
@@ -69,20 +32,3 @@ jobs:
|
||||
- name: Publish
|
||||
run: |
|
||||
pnpm run publish
|
||||
env:
|
||||
PLATFORM: ${{ matrix.os }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Publish macOS x64
|
||||
if: matrix.os == 'macos-latest'
|
||||
run: pnpm run publish --arch=x64
|
||||
env:
|
||||
PLATFORM: ${{ matrix.os }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Publish Linux arm64
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: pnpm run publish --arch=arm64
|
||||
env:
|
||||
PLATFORM: ${{ matrix.os }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
# DO NOT EDIT DIRECTLY IN REPOSITORY
|
||||
# Managed in Terraform templates
|
||||
|
||||
name: Release Webhook
|
||||
|
||||
on:
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
# DO NOT EDIT DIRECTLY IN REPOSITORY
|
||||
# Managed in Terraform templates
|
||||
|
||||
name: "Lint PR"
|
||||
|
||||
on:
|
||||
@@ -15,6 +18,6 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: read
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v6
|
||||
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -19,7 +19,7 @@
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<caption>Main window</caption>
|
||||
<image>screenshot.png</image>
|
||||
<image>https://raw.githubusercontent.com/stoatchat/for-desktop/b57faa2c59865fea15a879c9a9304271067d0020/screenshot.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<releases>
|
||||
|
||||
@@ -40,95 +40,6 @@ const makers: ForgeConfig["makers"] = [
|
||||
new MakerZIP({}),
|
||||
];
|
||||
|
||||
// skip these makers in CI/CD
|
||||
if (!process.env.PLATFORM) {
|
||||
makers.push(
|
||||
// must be manually built (freezes CI process)
|
||||
// not much use in being published anyhow
|
||||
new MakerAppX({
|
||||
certPass: "",
|
||||
packageExecutable: `app\\${STRINGS.execName}.exe`,
|
||||
publisher: "CN=B040CC7E-0016-4AF5-957F-F8977A6CFA3B",
|
||||
}),
|
||||
// flatpak publishing should occur through flathub repos.
|
||||
// this is just for testing purposes
|
||||
new MakerFlatpak({
|
||||
options: {
|
||||
id: "chat.stoat.stoat-desktop",
|
||||
description: STRINGS.description,
|
||||
productName: STRINGS.name,
|
||||
productDescription: STRINGS.description,
|
||||
runtimeVersion: "25.08",
|
||||
icon: {
|
||||
"16x16": `${ASSET_DIR}/hicolor/16x16.png`,
|
||||
"32x32": `${ASSET_DIR}/hicolor/32x32.png`,
|
||||
"64x64": `${ASSET_DIR}/hicolor/64x64.png`,
|
||||
"128x128": `${ASSET_DIR}/hicolor/128x128.png`,
|
||||
"256x256": `${ASSET_DIR}/hicolor/256x256.png`,
|
||||
"512x512": `${ASSET_DIR}/hicolor/512x512.png`,
|
||||
} as unknown,
|
||||
categories: ["Network"],
|
||||
modules: [
|
||||
// use the latest zypak -- Electron sandboxing for Flatpak
|
||||
{
|
||||
name: "zypak",
|
||||
sources: [
|
||||
{
|
||||
type: "git",
|
||||
url: "https://github.com/refi64/zypak",
|
||||
tag: "v2025.09",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
finishArgs: [
|
||||
// default arguments found by running
|
||||
// DEBUG=electron-installer-flatpak* pnpm make
|
||||
"--socket=fallback-x11",
|
||||
"--share=ipc",
|
||||
"--device=dri",
|
||||
"--socket=pulseaudio",
|
||||
"--filesystem=home",
|
||||
"--env=TMPDIR=/var/tmp",
|
||||
"--share=network",
|
||||
"--talk-name=org.freedesktop.Notifications",
|
||||
// add Unity talk name for badges
|
||||
"--talk-name=com.canonical.Unity",
|
||||
],
|
||||
// files: [
|
||||
// // is this necessary?
|
||||
// // https://stackoverflow.com/q/79745700
|
||||
// ...[16, 32, 64, 128, 256, 512].map(
|
||||
// (size) =>
|
||||
// [
|
||||
// `assets/desktop/hicolor/${size}x${size}.png`,
|
||||
// `/app/share/icons/hicolor/${size}x${size}/apps/chat.stoat.stoat-desktop.png`,
|
||||
// ] as [string, string],
|
||||
// ),
|
||||
// [
|
||||
// `assets/desktop/icon.svg`,
|
||||
// `/app/share/icons/hicolor/scalable/apps/chat.stoat.stoat-desktop.svg`,
|
||||
// ] as [string, string],
|
||||
// ],
|
||||
files: [],
|
||||
} as MakerFlatpakOptionsConfig,
|
||||
/* as Omit<
|
||||
MakerFlatpakOptionsConfig,
|
||||
"files"
|
||||
> */
|
||||
}),
|
||||
// testing purposes
|
||||
new MakerDeb({
|
||||
options: {
|
||||
productName: STRINGS.name,
|
||||
productDescription: STRINGS.description,
|
||||
categories: ["Network"],
|
||||
icon: `${ASSET_DIR}/icon.png`,
|
||||
},
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
const config: ForgeConfig = {
|
||||
packagerConfig: {
|
||||
asar: true,
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
"main": ".vite/build/main.js",
|
||||
"repository": "stoatchat/desktop",
|
||||
"scripts": {
|
||||
"start": "electron-forge start",
|
||||
"start": "electron-forge start -- --no-sandbox",
|
||||
"package": "electron-forge package",
|
||||
"make": "electron-forge make",
|
||||
"publish": "electron-forge publish",
|
||||
@@ -36,7 +36,7 @@
|
||||
"@types/electron-squirrel-startup": "^1.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||
"@typescript-eslint/parser": "^5.62.0",
|
||||
"electron": "38.1.2",
|
||||
"electron": "^40.8.3",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"json-schema-typed": "^8.0.1",
|
||||
|
||||
Generated
+58
-37
@@ -85,8 +85,8 @@ importers:
|
||||
specifier: ^5.62.0
|
||||
version: 5.62.0(eslint@8.57.1)(typescript@4.5.5)
|
||||
electron:
|
||||
specifier: 38.1.2
|
||||
version: 38.1.2
|
||||
specifier: ^40.8.3
|
||||
version: 40.8.3
|
||||
eslint:
|
||||
specifier: ^8.57.1
|
||||
version: 8.57.1
|
||||
@@ -104,7 +104,7 @@ importers:
|
||||
version: 4.5.5
|
||||
vite:
|
||||
specifier: ^5.4.20
|
||||
version: 5.4.20(@types/node@24.5.2)
|
||||
version: 5.4.20(@types/node@24.10.13)
|
||||
|
||||
packages:
|
||||
|
||||
@@ -825,6 +825,9 @@ packages:
|
||||
'@types/node@22.18.6':
|
||||
resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==}
|
||||
|
||||
'@types/node@24.10.13':
|
||||
resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==}
|
||||
|
||||
'@types/node@24.5.2':
|
||||
resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==}
|
||||
|
||||
@@ -907,6 +910,7 @@ packages:
|
||||
'@xmldom/xmldom@0.8.11':
|
||||
resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
deprecated: this version has critical issues, please update to the latest version
|
||||
|
||||
abbrev@1.1.1:
|
||||
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
|
||||
@@ -1075,6 +1079,9 @@ packages:
|
||||
brace-expansion@2.0.2:
|
||||
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
|
||||
|
||||
brace-expansion@2.1.0:
|
||||
resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==}
|
||||
|
||||
braces@3.0.3:
|
||||
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -1372,8 +1379,8 @@ packages:
|
||||
resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
|
||||
electron@38.1.2:
|
||||
resolution: {integrity: sha512-WXUcN3W8h8NTTZViA3KNX0rV2YBU0X0mEUM3ubupXTDY4QtIN7tmiqYVOKSKpR2LckTmBWGuEeY4D6xVoffwKQ==}
|
||||
electron@40.8.3:
|
||||
resolution: {integrity: sha512-MH6LK4xM6VVmmtz0nRE0Fe8l2jTKSYTvH1t0ZfbNLw3o6dlBCVTRqQha6uL8ZQVoMy74JyLguGwK7dU7rCKIhw==}
|
||||
engines: {node: '>= 12.20.55'}
|
||||
hasBin: true
|
||||
|
||||
@@ -1537,8 +1544,8 @@ packages:
|
||||
resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
exponential-backoff@3.1.2:
|
||||
resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==}
|
||||
exponential-backoff@3.1.3:
|
||||
resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
|
||||
|
||||
external-editor@3.1.0:
|
||||
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
|
||||
@@ -1715,12 +1722,12 @@ packages:
|
||||
|
||||
glob@7.2.3:
|
||||
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
||||
deprecated: Glob versions prior to v9 are no longer supported
|
||||
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||
|
||||
glob@8.1.0:
|
||||
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
|
||||
engines: {node: '>=12'}
|
||||
deprecated: Glob versions prior to v9 are no longer supported
|
||||
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||
|
||||
global-agent@3.0.0:
|
||||
resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==}
|
||||
@@ -1866,8 +1873,8 @@ packages:
|
||||
resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
|
||||
ip-address@10.0.1:
|
||||
resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
|
||||
ip-address@10.1.0:
|
||||
resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
|
||||
engines: {node: '>= 12'}
|
||||
|
||||
is-array-buffer@3.0.5:
|
||||
@@ -2185,8 +2192,8 @@ packages:
|
||||
minimatch@3.1.2:
|
||||
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
|
||||
|
||||
minimatch@5.1.6:
|
||||
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
|
||||
minimatch@5.1.9:
|
||||
resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
minimatch@9.0.5:
|
||||
@@ -2204,8 +2211,8 @@ packages:
|
||||
resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
|
||||
minipass-flush@1.0.5:
|
||||
resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
|
||||
minipass-flush@1.0.7:
|
||||
resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
minipass-pipeline@1.2.4:
|
||||
@@ -2273,8 +2280,8 @@ packages:
|
||||
nice-try@1.0.5:
|
||||
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
|
||||
|
||||
node-abi@3.77.0:
|
||||
resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==}
|
||||
node-abi@3.89.0:
|
||||
resolution: {integrity: sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
node-addon-api@1.7.2:
|
||||
@@ -2876,6 +2883,7 @@ packages:
|
||||
tar@6.2.1:
|
||||
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
|
||||
engines: {node: '>=10'}
|
||||
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||
|
||||
temp@0.9.4:
|
||||
resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==}
|
||||
@@ -2983,6 +2991,9 @@ packages:
|
||||
undici-types@7.12.0:
|
||||
resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==}
|
||||
|
||||
undici-types@7.16.0:
|
||||
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
|
||||
|
||||
unique-filename@2.0.1:
|
||||
resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
@@ -3531,7 +3542,7 @@ snapshots:
|
||||
'@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
|
||||
dependencies:
|
||||
env-paths: 2.2.1
|
||||
exponential-backoff: 3.1.2
|
||||
exponential-backoff: 3.1.3
|
||||
glob: 8.1.0
|
||||
graceful-fs: 4.2.11
|
||||
make-fetch-happen: 10.2.1
|
||||
@@ -3598,7 +3609,7 @@ snapshots:
|
||||
detect-libc: 2.1.1
|
||||
fs-extra: 10.1.0
|
||||
got: 11.8.6
|
||||
node-abi: 3.77.0
|
||||
node-abi: 3.89.0
|
||||
node-api-version: 0.2.1
|
||||
ora: 5.4.1
|
||||
read-binary-file-arch: 1.0.6
|
||||
@@ -4103,7 +4114,7 @@ snapshots:
|
||||
|
||||
'@types/fs-extra@9.0.13':
|
||||
dependencies:
|
||||
'@types/node': 24.5.2
|
||||
'@types/node': 24.10.13
|
||||
optional: true
|
||||
|
||||
'@types/http-cache-semantics@4.0.4': {}
|
||||
@@ -4114,16 +4125,20 @@ snapshots:
|
||||
|
||||
'@types/keyv@3.1.4':
|
||||
dependencies:
|
||||
'@types/node': 24.5.2
|
||||
'@types/node': 24.10.13
|
||||
|
||||
'@types/mute-stream@0.0.4':
|
||||
dependencies:
|
||||
'@types/node': 22.18.6
|
||||
'@types/node': 24.10.13
|
||||
|
||||
'@types/node@22.18.6':
|
||||
dependencies:
|
||||
undici-types: 6.21.0
|
||||
|
||||
'@types/node@24.10.13':
|
||||
dependencies:
|
||||
undici-types: 7.16.0
|
||||
|
||||
'@types/node@24.5.2':
|
||||
dependencies:
|
||||
undici-types: 7.12.0
|
||||
@@ -4138,7 +4153,7 @@ snapshots:
|
||||
|
||||
'@types/yauzl@2.10.3':
|
||||
dependencies:
|
||||
'@types/node': 22.18.6
|
||||
'@types/node': 24.10.13
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.5.5))(eslint@8.57.1)(typescript@4.5.5)':
|
||||
@@ -4416,6 +4431,10 @@ snapshots:
|
||||
dependencies:
|
||||
balanced-match: 1.0.2
|
||||
|
||||
brace-expansion@2.1.0:
|
||||
dependencies:
|
||||
balanced-match: 1.0.2
|
||||
|
||||
braces@3.0.3:
|
||||
dependencies:
|
||||
fill-range: 7.1.1
|
||||
@@ -4444,7 +4463,7 @@ snapshots:
|
||||
lru-cache: 7.18.3
|
||||
minipass: 3.3.6
|
||||
minipass-collect: 1.0.2
|
||||
minipass-flush: 1.0.5
|
||||
minipass-flush: 1.0.7
|
||||
minipass-pipeline: 1.2.4
|
||||
mkdirp: 1.0.4
|
||||
p-map: 4.0.0
|
||||
@@ -4787,10 +4806,10 @@ snapshots:
|
||||
- supports-color
|
||||
optional: true
|
||||
|
||||
electron@38.1.2:
|
||||
electron@40.8.3:
|
||||
dependencies:
|
||||
'@electron/get': 2.0.3
|
||||
'@types/node': 22.18.6
|
||||
'@types/node': 24.10.13
|
||||
extract-zip: 2.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -5079,7 +5098,7 @@ snapshots:
|
||||
signal-exit: 3.0.7
|
||||
strip-eof: 1.0.0
|
||||
|
||||
exponential-backoff@3.1.2: {}
|
||||
exponential-backoff@3.1.3: {}
|
||||
|
||||
external-editor@3.1.0:
|
||||
dependencies:
|
||||
@@ -5315,7 +5334,7 @@ snapshots:
|
||||
fs.realpath: 1.0.0
|
||||
inflight: 1.0.6
|
||||
inherits: 2.0.4
|
||||
minimatch: 5.1.6
|
||||
minimatch: 5.1.9
|
||||
once: 1.4.0
|
||||
|
||||
global-agent@3.0.0:
|
||||
@@ -5483,7 +5502,7 @@ snapshots:
|
||||
|
||||
interpret@3.1.1: {}
|
||||
|
||||
ip-address@10.0.1: {}
|
||||
ip-address@10.1.0: {}
|
||||
|
||||
is-array-buffer@3.0.5:
|
||||
dependencies:
|
||||
@@ -5734,7 +5753,7 @@ snapshots:
|
||||
minipass: 3.3.6
|
||||
minipass-collect: 1.0.2
|
||||
minipass-fetch: 2.1.2
|
||||
minipass-flush: 1.0.5
|
||||
minipass-flush: 1.0.7
|
||||
minipass-pipeline: 1.2.4
|
||||
negotiator: 0.6.4
|
||||
promise-retry: 2.0.1
|
||||
@@ -5791,9 +5810,9 @@ snapshots:
|
||||
dependencies:
|
||||
brace-expansion: 1.1.12
|
||||
|
||||
minimatch@5.1.6:
|
||||
minimatch@5.1.9:
|
||||
dependencies:
|
||||
brace-expansion: 2.0.2
|
||||
brace-expansion: 2.1.0
|
||||
|
||||
minimatch@9.0.5:
|
||||
dependencies:
|
||||
@@ -5813,7 +5832,7 @@ snapshots:
|
||||
optionalDependencies:
|
||||
encoding: 0.1.13
|
||||
|
||||
minipass-flush@1.0.5:
|
||||
minipass-flush@1.0.7:
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
|
||||
@@ -5866,7 +5885,7 @@ snapshots:
|
||||
|
||||
nice-try@1.0.5: {}
|
||||
|
||||
node-abi@3.77.0:
|
||||
node-abi@3.89.0:
|
||||
dependencies:
|
||||
semver: 7.7.2
|
||||
|
||||
@@ -6375,7 +6394,7 @@ snapshots:
|
||||
|
||||
socks@2.8.7:
|
||||
dependencies:
|
||||
ip-address: 10.0.1
|
||||
ip-address: 10.1.0
|
||||
smart-buffer: 4.2.0
|
||||
|
||||
source-map-js@1.2.1: {}
|
||||
@@ -6638,6 +6657,8 @@ snapshots:
|
||||
|
||||
undici-types@7.12.0: {}
|
||||
|
||||
undici-types@7.16.0: {}
|
||||
|
||||
unique-filename@2.0.1:
|
||||
dependencies:
|
||||
unique-slug: 3.0.0
|
||||
@@ -6679,13 +6700,13 @@ snapshots:
|
||||
spdx-correct: 3.2.0
|
||||
spdx-expression-parse: 3.0.1
|
||||
|
||||
vite@5.4.20(@types/node@24.5.2):
|
||||
vite@5.4.20(@types/node@24.10.13):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.5.6
|
||||
rollup: 4.52.2
|
||||
optionalDependencies:
|
||||
'@types/node': 24.5.2
|
||||
'@types/node': 24.10.13
|
||||
fsevents: 2.3.3
|
||||
|
||||
wcwidth@1.0.1:
|
||||
|
||||
+57
-2
@@ -5,8 +5,10 @@ import {
|
||||
Menu,
|
||||
MenuItem,
|
||||
app,
|
||||
desktopCapturer,
|
||||
ipcMain,
|
||||
nativeImage,
|
||||
session,
|
||||
} from "electron";
|
||||
|
||||
import windowIconAsset from "../../assets/desktop/icon.png?asset";
|
||||
@@ -21,7 +23,7 @@ export let mainWindow: BrowserWindow;
|
||||
export const BUILD_URL = new URL(
|
||||
app.commandLine.hasSwitch("force-server")
|
||||
? app.commandLine.getSwitchValue("force-server")
|
||||
: /*MAIN_WINDOW_VITE_DEV_SERVER_URL ??*/ "https://beta.revolt.chat",
|
||||
: /*MAIN_WINDOW_VITE_DEV_SERVER_URL ??*/ "https://chat.mistox.net",
|
||||
);
|
||||
|
||||
// internal window state
|
||||
@@ -79,7 +81,7 @@ export function createMainWindow() {
|
||||
}
|
||||
|
||||
// maximise the window if it was maximised before
|
||||
if (config.windowState.isMaximised && !startHidden) {
|
||||
if (config.windowState.isMaximised) {
|
||||
mainWindow.maximize();
|
||||
}
|
||||
|
||||
@@ -187,6 +189,59 @@ export function createMainWindow() {
|
||||
}
|
||||
});
|
||||
|
||||
// Create display media request handler
|
||||
session.defaultSession.setDisplayMediaRequestHandler(
|
||||
(request, callback) => {
|
||||
desktopCapturer
|
||||
.getSources({ types: ["screen", "window"], fetchWindowIcons: true })
|
||||
.then((sources) => {
|
||||
// Shortcut for linux wayland.
|
||||
if (sources.length == 1) {
|
||||
// TODO: Get audio to work with wayland
|
||||
// See vencord for an implementation using a virtual microphone.
|
||||
callback({
|
||||
video: sources[0],
|
||||
audio: request.audioRequested ? "loopbackWithMute" : undefined,
|
||||
});
|
||||
return;
|
||||
}
|
||||
ipcMain.once(
|
||||
"screenPickerCallback",
|
||||
(_, idx: number, audio: boolean) => {
|
||||
if (idx < 0 || idx > sources.length) {
|
||||
callback({});
|
||||
} else {
|
||||
callback({
|
||||
video: sources[idx],
|
||||
audio: audio ? "loopbackWithMute" : undefined,
|
||||
});
|
||||
}
|
||||
},
|
||||
);
|
||||
mainWindow.webContents.send(
|
||||
"screenPicker",
|
||||
sources.map((source, idx) => {
|
||||
const image = source.appIcon;
|
||||
if (image) {
|
||||
if (image.getAspectRatio() > 1) {
|
||||
image.resize({ width: 256 });
|
||||
} else {
|
||||
image.resize({ height: 256 });
|
||||
}
|
||||
}
|
||||
return {
|
||||
idx: idx,
|
||||
name: source.name,
|
||||
isFullScreen: source.id.startsWith("screen"),
|
||||
image: image?.toDataURL(),
|
||||
};
|
||||
}),
|
||||
);
|
||||
});
|
||||
},
|
||||
{ useSystemPicker: true },
|
||||
);
|
||||
|
||||
// push world events to the window
|
||||
ipcMain.on("minimise", () => mainWindow.minimize());
|
||||
ipcMain.on("maximise", () =>
|
||||
|
||||
@@ -15,4 +15,21 @@ contextBridge.exposeInMainWorld("native", {
|
||||
close: () => ipcRenderer.send("close"),
|
||||
|
||||
setBadgeCount: (count: number) => ipcRenderer.send("setBadgeCount", count),
|
||||
|
||||
onceScreenPicker: (
|
||||
onScreenPick: (
|
||||
sources: {
|
||||
idx: number;
|
||||
name: string;
|
||||
isFullScreen: boolean;
|
||||
image?: string;
|
||||
}[],
|
||||
) => void,
|
||||
) => {
|
||||
const eventName = "screenPicker";
|
||||
ipcRenderer.removeAllListeners(eventName);
|
||||
ipcRenderer.once(eventName, (_, sources) => onScreenPick(sources));
|
||||
},
|
||||
screenPickerCallback: (idx: number, audio: boolean) =>
|
||||
ipcRenderer.send("screenPickerCallback", idx, audio),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user