Port
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,5 +2,7 @@ experiment
|
|||||||
dist
|
dist
|
||||||
node_modules
|
node_modules
|
||||||
devAssets
|
devAssets
|
||||||
|
src-tauri/gen/android
|
||||||
|
src-tauri/gen/ios
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
57
README.md
57
README.md
@@ -1,39 +1,42 @@
|
|||||||
# Cinny desktop
|
**NOTE: This is a vibe-ported HARD FORK of the cinny-desktop repo and iOS support is untested. Have fun.**
|
||||||
|
|
||||||
<a href="https://github.com/cinnyapp/cinny-desktop/releases">
|
---
|
||||||
<img alt="GitHub release downloads" src="https://img.shields.io/github/downloads/cinnyapp/cinny-desktop/total?style=social"></a>
|
|
||||||
|
|
||||||
Cinny is a matrix client focusing primarily on simple, elegant and secure interface. The desktop app is made with Tauri.
|
# Cinny Mobile
|
||||||
|
|
||||||
## Download
|
Cinny is a Matrix client focused on a simple, elegant, and secure interface. This fork ports the Tauri host from desktop packaging to Tauri’s Android and iOS targets while keeping the upstream Cinny web app as the frontend.
|
||||||
|
|
||||||
Installers for macOS, Windows and Linux can be downloaded from [Github releases](https://github.com/cinnyapp/cinny-desktop/releases). Releases are signed with a [Ed25519](https://ed25519.cr.yp.to/) public-key.
|
|
||||||
|
|
||||||
Operating System | Download
|
## Project Layout
|
||||||
---|---
|
|
||||||
Windows | <a href='https://github.com/cinnyapp/cinny-desktop/releases/latest/download/Cinny_desktop-x86_64.msi'>Get it on Windows</a>
|
|
||||||
macOS | <a href='https://github.com/cinnyapp/cinny-desktop/releases/latest/download/Cinny_desktop-universal.dmg'>Get it on macOS</a>
|
|
||||||
Linux | <a href='https://github.com/cinnyapp/cinny-desktop/releases/latest/download/Cinny_desktop-x86_64.AppImage'>Get it on Linux</a> · <a href='https://flathub.org/apps/details/in.cinny.Cinny'>Flatpak</a>
|
|
||||||
|
|
||||||
Decoded public key:
|
- `cinny/`: upstream web client, included as a git submodule
|
||||||
> RWRflTUQD3RHFtn25QNANCmePR9+4LSK89kAKTMEEB4OKpOFpLMgc64z
|
- `src-tauri/`: Tauri mobile host, capabilities, and native project scaffolding
|
||||||
|
|
||||||
To verify release files, you need to download [minisign](https://jedisct1.github.io/minisign/) tool and [decode](https://www.base64decode.org/) the *.sig* file before running:
|
## Local Development
|
||||||
> minisign -Vm ***RELEASE_FILE.msi.zip*** -P RWRflTUQD3RHFtn25QNANCmePR9+4LSK89kAKTMEEB4OKpOFpLMgc64z -x ***SINGATURE.msi.zip.sig***
|
|
||||||
|
|
||||||
## Local development
|
Follow the official [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/) first. For phone targets, also install the Android and iOS toolchains described there.
|
||||||
|
|
||||||
Firstly, to setup Rust, NodeJS and build tools follow [Tauri documentation](https://v2.tauri.app/start/prerequisites/).
|
Then install dependencies:
|
||||||
|
|
||||||
Now, to setup development locally run the following commands:
|
- `git clone --recursive https://git.czchan.org/sneedmaster/cinny-mobile.git`
|
||||||
* `git clone --recursive https://github.com/cinnyapp/cinny-desktop.git`
|
- `cd cinny-desktop/cinny`
|
||||||
* `cd cinny-desktop/cinny`
|
- `npm ci`
|
||||||
* `npm ci`
|
- `cd ..`
|
||||||
* `cd ..`
|
- `npm ci`
|
||||||
* `npm ci`
|
|
||||||
|
|
||||||
To build the app locally, run:
|
## Mobile Commands
|
||||||
* `npm run tauri build`
|
|
||||||
|
|
||||||
To start local dev server, run:
|
- `npm run android:init`
|
||||||
* `npm run tauri dev`
|
- `npm run android:dev`
|
||||||
|
- `npm run android:build`
|
||||||
|
- `npm run ios:init`
|
||||||
|
- `npm run ios:dev`
|
||||||
|
- `npm run ios:build`
|
||||||
|
|
||||||
|
`npm run tauri dev` is still useful for validating the shared Tauri host on the current machine before deploying to a handset or simulator.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- The Tauri entrypoint lives in src-tauri/src/lib.rs and is shared by desktop dev runs plus Android and iOS builds.
|
||||||
|
- Production assets are served through `tauri-plugin-localhost` so the wrapped web app can continue using its existing browser-oriented runtime behavior.
|
||||||
|
- Android scaffolding has been regenerated in this workspace. iOS setup is intentionally deferred for now and still requires the usual Apple-side tooling plus a valid development team for signed runs.
|
||||||
|
|||||||
420
package-lock.json
generated
420
package-lock.json
generated
@@ -8,198 +8,13 @@
|
|||||||
"name": "cinny",
|
"name": "cinny",
|
||||||
"version": "4.11.2",
|
"version": "4.11.2",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "2.7.0",
|
|
||||||
"@tauri-apps/plugin-clipboard-manager": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-dialog": "2.3.2",
|
|
||||||
"@tauri-apps/plugin-fs": "2.4.1",
|
|
||||||
"@tauri-apps/plugin-global-shortcut": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-http": "2.5.1",
|
|
||||||
"@tauri-apps/plugin-notification": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-os": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-process": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-shell": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-updater": "2.9.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@actions/github": "6.0.0",
|
"@tauri-apps/cli": "2.7.1"
|
||||||
"@tauri-apps/cli": "2.7.1",
|
|
||||||
"node-fetch": "3.3.2"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/github": {
|
|
||||||
"version": "6.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
|
|
||||||
"integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@actions/http-client": "^2.2.0",
|
|
||||||
"@octokit/core": "^5.0.1",
|
|
||||||
"@octokit/plugin-paginate-rest": "^9.0.0",
|
|
||||||
"@octokit/plugin-rest-endpoint-methods": "^10.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@actions/http-client": {
|
|
||||||
"version": "2.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz",
|
|
||||||
"integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"tunnel": "^0.0.6",
|
|
||||||
"undici": "^5.25.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@fastify/busboy": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/auth-token": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/core": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/auth-token": "^4.0.0",
|
|
||||||
"@octokit/graphql": "^7.0.0",
|
|
||||||
"@octokit/request": "^8.0.2",
|
|
||||||
"@octokit/request-error": "^5.0.0",
|
|
||||||
"@octokit/types": "^12.0.0",
|
|
||||||
"before-after-hook": "^2.2.0",
|
|
||||||
"universal-user-agent": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/endpoint": {
|
|
||||||
"version": "9.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.2.tgz",
|
|
||||||
"integrity": "sha512-qhKW8YLIi+Kmc92FQUFGr++DYtkx/1fBv+Thua6baqnjnOsgBYJDCvWZR1YcINuHGOEQt416WOfE+A/oG60NBQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/types": "^12.0.0",
|
|
||||||
"is-plain-object": "^5.0.0",
|
|
||||||
"universal-user-agent": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/graphql": {
|
|
||||||
"version": "7.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
|
|
||||||
"integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/request": "^8.0.1",
|
|
||||||
"@octokit/types": "^12.0.0",
|
|
||||||
"universal-user-agent": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/openapi-types": {
|
|
||||||
"version": "19.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.0.2.tgz",
|
|
||||||
"integrity": "sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/plugin-paginate-rest": {
|
|
||||||
"version": "9.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.2.tgz",
|
|
||||||
"integrity": "sha512-euDbNV6fxX6btsCDnZoZM4vw3zO1nj1Z7TskHAulO6mZ9lHoFTpwll6farf+wh31mlBabgU81bBYdflp0GLVAQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/types": "^12.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@octokit/core": ">=5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/plugin-rest-endpoint-methods": {
|
|
||||||
"version": "10.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.1.2.tgz",
|
|
||||||
"integrity": "sha512-JztgZ82CY4JNlPTuF0jh4iWuuGpEi5czFCoXyAbMg4F2XyFBbG5DWAKfa3odRvdZww6Df1tQgBKnqpd9X0WF9g==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/types": "^12.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@octokit/core": ">=5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/request": {
|
|
||||||
"version": "8.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.4.tgz",
|
|
||||||
"integrity": "sha512-M0aaFfpGPEKrg7XoA/gwgRvc9MSXHRO2Ioki1qrPDbl1e9YhjIwVoHE7HIKmv/m3idzldj//xBujcFNqGX6ENA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/endpoint": "^9.0.0",
|
|
||||||
"@octokit/request-error": "^5.0.0",
|
|
||||||
"@octokit/types": "^12.0.0",
|
|
||||||
"is-plain-object": "^5.0.0",
|
|
||||||
"universal-user-agent": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/request-error": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/types": "^12.0.0",
|
|
||||||
"deprecation": "^2.0.0",
|
|
||||||
"once": "^1.4.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/types": {
|
|
||||||
"version": "12.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.1.1.tgz",
|
|
||||||
"integrity": "sha512-qnJTldJ1NyGT5MTsCg/Zi+y2IFHZ1Jo5+njNCjJ9FcainV7LjuHgmB697kA0g4MjZeDAJsM3B45iqCVsCLVFZg==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@octokit/openapi-types": "^19.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/api": {
|
|
||||||
"version": "2.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.7.0.tgz",
|
|
||||||
"integrity": "sha512-v7fVE8jqBl8xJFOcBafDzXFc8FnicoH3j8o8DNNs0tHuEBmXUDqrCOAzMRX0UkfpwqZLqvrvK0GNQ45DfnoVDg==",
|
|
||||||
"funding": {
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/tauri"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/cli": {
|
"node_modules/@tauri-apps/cli": {
|
||||||
"version": "2.7.1",
|
"version": "2.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.7.1.tgz",
|
||||||
@@ -404,239 +219,6 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-clipboard-manager": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-clipboard-manager/-/plugin-clipboard-manager-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-81NOBA2P+OTY8RLkBwyl9ZR/0CeggLub4F6zxcxUIfFOAqtky7J61+K/MkH2SC1FMxNBxrX0swDuKvkjkHadlA==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-dialog": {
|
|
||||||
"version": "2.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.3.2.tgz",
|
|
||||||
"integrity": "sha512-cNLo9YeQSC0MF4IgXnotHsqEgJk72MBZLXmQPrLA95qTaaWiiaFQ38hIMdZ6YbGUNkr3oni3EhU+AD5jLHcdUA==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-fs": {
|
|
||||||
"version": "2.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.4.1.tgz",
|
|
||||||
"integrity": "sha512-vJlKZVGF3UAFGoIEVT6Oq5L4HGDCD78WmA4uhzitToqYiBKWAvZR61M6zAyQzHqLs0ADemkE4RSy/5sCmZm6ZQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-global-shortcut": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-global-shortcut/-/plugin-global-shortcut-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-WbAz0ElhpP+0kzQZRScdCC7UQ7OPH8PAn//fsBNu7+ywihsnVSVOg1L9YhieAtLNtAlnmFI69Yl5AGaA3ge5IQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-http": {
|
|
||||||
"version": "2.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-http/-/plugin-http-2.5.1.tgz",
|
|
||||||
"integrity": "sha512-SpQ1azXEdQI0UB2NZTIPljJTDEe0bIaKzHYR/k4UQp6yzRYGLC/ktmIgEfQ2RvKAWus8GcYgGr5K6LJPbo/NZw==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-notification": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-notification/-/plugin-notification-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-QDwXo9VzAlH97c0veuf19TZI6cRBPfJDl2O6hNEDvI66j60lOO9z+PL6MJrj8A6Y+t55r7mGhe3rQWLmOre2HA==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-os": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-os/-/plugin-os-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-dm3bDsMuUngpIQdJ1jaMkMfyQpHyDcaTIKTFaAMHoKeUd+Is3UHO2uzhElr6ZZkfytIIyQtSVnCWdW2Kc58f3g==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-process": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-process/-/plugin-process-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-0DNj6u+9csODiV4seSxxRbnLpeGYdojlcctCuLOCgpH9X3+ckVZIEj6H7tRQ7zqWr7kSTEWnrxtAdBb0FbtrmQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-shell": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-6GIRxO2z64uxPX4CCTuhQzefvCC0ew7HjdBhMALiGw74vFBDY95VWueAHOHgNOMV4UOUAFupyidN9YulTe5xlA==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@tauri-apps/plugin-updater": {
|
|
||||||
"version": "2.9.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-updater/-/plugin-updater-2.9.0.tgz",
|
|
||||||
"integrity": "sha512-j++sgY8XpeDvzImTrzWA08OqqGqgkNyxczLD7FjNJJx/uXxMZFz5nDcfkyoI/rCjYuj2101Tci/r/HFmOmoxCg==",
|
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "^2.6.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/before-after-hook": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/data-uri-to-buffer": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/deprecation": {
|
|
||||||
"version": "2.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
|
|
||||||
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/fetch-blob": {
|
|
||||||
"version": "3.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
|
||||||
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/jimmywarting"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "paypal",
|
|
||||||
"url": "https://paypal.me/jimmywarting"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"node-domexception": "^1.0.0",
|
|
||||||
"web-streams-polyfill": "^3.0.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20 || >= 14.13"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/formdata-polyfill": {
|
|
||||||
"version": "4.0.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
|
||||||
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"fetch-blob": "^3.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.20.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/is-plain-object": {
|
|
||||||
"version": "5.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
|
||||||
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/node-domexception": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://github.com/sponsors/jimmywarting"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "github",
|
|
||||||
"url": "https://paypal.me/jimmywarting"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/node-fetch": {
|
|
||||||
"version": "3.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
|
|
||||||
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"data-uri-to-buffer": "^4.0.0",
|
|
||||||
"fetch-blob": "^3.1.4",
|
|
||||||
"formdata-polyfill": "^4.0.10"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/node-fetch"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/once": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tunnel": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/undici": {
|
|
||||||
"version": "5.27.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz",
|
|
||||||
"integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@fastify/busboy": "^2.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/universal-user-agent": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/web-streams-polyfill": {
|
|
||||||
"version": "3.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
|
|
||||||
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/wrappy": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
|
||||||
"dev": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
25
package.json
25
package.json
@@ -8,27 +8,18 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"tauri": "cp config.json cinny/ && tauri",
|
"tauri": "cp config.json cinny/ && tauri",
|
||||||
"release": "node scripts/release.mjs"
|
"android:sync-icons": "sh ./scripts/sync-android-icons.sh",
|
||||||
|
"android:init": "sh ./scripts/with-android-java.sh npm run tauri android init -- --ci --skip-targets-install && npm run android:sync-icons",
|
||||||
|
"android:dev": "npm run android:sync-icons && sh ./scripts/with-android-java.sh npm run tauri android dev",
|
||||||
|
"android:build": "npm run android:sync-icons && sh ./scripts/with-android-java.sh npm run tauri android build",
|
||||||
|
"ios:init": "npm run tauri ios init -- --ci --skip-targets-install",
|
||||||
|
"ios:dev": "npm run tauri ios dev",
|
||||||
|
"ios:build": "npm run tauri ios build"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "Ajay Bura",
|
"author": "Ajay Bura",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"dependencies": {
|
|
||||||
"@tauri-apps/api": "2.7.0",
|
|
||||||
"@tauri-apps/plugin-clipboard-manager": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-dialog": "2.3.2",
|
|
||||||
"@tauri-apps/plugin-fs": "2.4.1",
|
|
||||||
"@tauri-apps/plugin-global-shortcut": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-http": "2.5.1",
|
|
||||||
"@tauri-apps/plugin-notification": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-os": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-process": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-shell": "2.3.0",
|
|
||||||
"@tauri-apps/plugin-updater": "2.9.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@actions/github": "6.0.0",
|
"@tauri-apps/cli": "2.7.1"
|
||||||
"@tauri-apps/cli": "2.7.1",
|
|
||||||
"node-fetch": "3.3.2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
import fetch from "node-fetch";
|
|
||||||
import { getOctokit, context } from "@actions/github";
|
|
||||||
|
|
||||||
async function getAssetSign(url) {
|
|
||||||
const response = await fetch(url, {
|
|
||||||
method: "GET",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/octet-stream",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
return response.text();
|
|
||||||
}
|
|
||||||
|
|
||||||
async function createTauriRelease() {
|
|
||||||
if (process.env.GITHUB_TOKEN === undefined) {
|
|
||||||
throw new Error("GITHUB_TOKEN is not found!");
|
|
||||||
}
|
|
||||||
|
|
||||||
const github = getOctokit(process.env.GITHUB_TOKEN);
|
|
||||||
const { repos } = github.rest;
|
|
||||||
const repoMetaData = {
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
};
|
|
||||||
|
|
||||||
const tagsResult = await repos.listTags({ ...repoMetaData, per_page: 10, page: 1 });
|
|
||||||
const latestTag = tagsResult.data.find((tag) => tag.name.startsWith("v"));
|
|
||||||
console.log(latestTag);
|
|
||||||
|
|
||||||
const latestRelease = await repos.getReleaseByTag({ ...repoMetaData, tag: latestTag.name });
|
|
||||||
const latestAssets = latestRelease.data.assets;
|
|
||||||
|
|
||||||
const windowsX86_64 = {};
|
|
||||||
const linuxX86_64 = {};
|
|
||||||
const darwinX86_64 = {};
|
|
||||||
const darwinAarch64 = {};
|
|
||||||
|
|
||||||
const promises = latestAssets.map(async (asset) => {
|
|
||||||
const { name, browser_download_url } = asset;
|
|
||||||
|
|
||||||
if (/\.msi\.zip$/.test(name)) {
|
|
||||||
windowsX86_64.url = browser_download_url;
|
|
||||||
}
|
|
||||||
if (/\.msi\.zip\.sig$/.test(name)) {
|
|
||||||
windowsX86_64.signature = await getAssetSign(browser_download_url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/\.AppImage\.tar\.gz$/.test(name)) {
|
|
||||||
linuxX86_64.url = browser_download_url;
|
|
||||||
}
|
|
||||||
if (/\.AppImage\.tar\.gz\.sig$/.test(name)) {
|
|
||||||
linuxX86_64.signature = await getAssetSign(browser_download_url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/universal\.app\.tar\.gz$/.test(name)) {
|
|
||||||
darwinX86_64.url = browser_download_url;
|
|
||||||
}
|
|
||||||
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
|
|
||||||
darwinX86_64.signature = await getAssetSign(browser_download_url);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/universal\.app\.tar\.gz$/.test(name)) {
|
|
||||||
darwinAarch64.url = browser_download_url;
|
|
||||||
}
|
|
||||||
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
|
|
||||||
darwinAarch64.signature = await getAssetSign(browser_download_url);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
await Promise.allSettled(promises);
|
|
||||||
|
|
||||||
const releaseData = {
|
|
||||||
name: latestTag.name,
|
|
||||||
notes: `https://github.com/${repoMetaData.owner}/${repoMetaData.repo}/releases/tag/${latestTag.name}`,
|
|
||||||
pub_date: new Date().toISOString(),
|
|
||||||
platforms: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
if (windowsX86_64.url) releaseData.platforms["windows-x86_64"] = windowsX86_64;
|
|
||||||
else console.error('Failed to get release for windowsX86_64');
|
|
||||||
|
|
||||||
if (linuxX86_64.url) releaseData.platforms["linux-x86_64"] = linuxX86_64;
|
|
||||||
else console.error('Failed to get release for linuxX86_64');
|
|
||||||
|
|
||||||
if (darwinX86_64.url) releaseData.platforms["darwin-x86_64"] = darwinX86_64;
|
|
||||||
else console.error('Failed to get release for darwinX86_64');
|
|
||||||
|
|
||||||
if (darwinAarch64.url) releaseData.platforms["darwin-aarch64"] = darwinAarch64;
|
|
||||||
else console.error('Failed to get release for darwinAarch64');
|
|
||||||
|
|
||||||
const releaseResult = await repos.getReleaseByTag({ ...repoMetaData, tag: 'tauri' });
|
|
||||||
const tauriRelease = releaseResult.data;
|
|
||||||
|
|
||||||
const prevReleaseAsset = tauriRelease.assets.find((asset) => asset.name === 'release.json');
|
|
||||||
if (prevReleaseAsset) {
|
|
||||||
await repos.deleteReleaseAsset({ ...repoMetaData, asset_id: prevReleaseAsset.id });
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(releaseData);
|
|
||||||
await repos.uploadReleaseAsset({
|
|
||||||
...repoMetaData,
|
|
||||||
release_id: tauriRelease.id,
|
|
||||||
name: 'release.json',
|
|
||||||
data: JSON.stringify(releaseData, null, 2),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
createTauriRelease();
|
|
||||||
49
scripts/sync-android-icons.sh
Executable file
49
scripts/sync-android-icons.sh
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
||||||
|
REPO_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||||
|
|
||||||
|
SOURCE_ICON="$REPO_ROOT/src-tauri/icons/icon.png"
|
||||||
|
ANDROID_RES_DIR="$REPO_ROOT/src-tauri/gen/android/app/src/main/res"
|
||||||
|
|
||||||
|
if [ ! -f "$SOURCE_ICON" ]; then
|
||||||
|
echo "Missing source icon: $SOURCE_ICON" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$ANDROID_RES_DIR" ]; then
|
||||||
|
echo "Missing Android resources directory: $ANDROID_RES_DIR" >&2
|
||||||
|
echo "Run android init first." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
resize_icon() {
|
||||||
|
size="$1"
|
||||||
|
output="$2"
|
||||||
|
sips -z "$size" "$size" "$SOURCE_ICON" --out "$output" >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
for spec in \
|
||||||
|
"48 mipmap-mdpi" \
|
||||||
|
"72 mipmap-hdpi" \
|
||||||
|
"96 mipmap-xhdpi" \
|
||||||
|
"144 mipmap-xxhdpi" \
|
||||||
|
"192 mipmap-xxxhdpi"
|
||||||
|
do
|
||||||
|
set -- $spec
|
||||||
|
resize_icon "$1" "$ANDROID_RES_DIR/$2/ic_launcher.png"
|
||||||
|
resize_icon "$1" "$ANDROID_RES_DIR/$2/ic_launcher_round.png"
|
||||||
|
done
|
||||||
|
|
||||||
|
for spec in \
|
||||||
|
"108 mipmap-mdpi" \
|
||||||
|
"162 mipmap-hdpi" \
|
||||||
|
"216 mipmap-xhdpi" \
|
||||||
|
"324 mipmap-xxhdpi" \
|
||||||
|
"432 mipmap-xxxhdpi"
|
||||||
|
do
|
||||||
|
set -- $spec
|
||||||
|
resize_icon "$1" "$ANDROID_RES_DIR/$2/ic_launcher_foreground.png"
|
||||||
|
done
|
||||||
99
scripts/with-android-java.sh
Executable file
99
scripts/with-android-java.sh
Executable file
@@ -0,0 +1,99 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
||||||
|
REPO_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||||
|
|
||||||
|
prefer_java_home() {
|
||||||
|
if command -v /usr/libexec/java_home >/dev/null 2>&1; then
|
||||||
|
/usr/libexec/java_home -v 17 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
prefer_homebrew_openjdk_17() {
|
||||||
|
for candidate in \
|
||||||
|
"/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home" \
|
||||||
|
"/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home"
|
||||||
|
do
|
||||||
|
if [ -x "$candidate/bin/java" ]; then
|
||||||
|
printf '%s\n' "$candidate"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
prefer_android_studio_jbr() {
|
||||||
|
for candidate in \
|
||||||
|
"/Applications/Android Studio.app/Contents/jbr/Contents/Home" \
|
||||||
|
"/Applications/Android Studio Preview.app/Contents/jbr/Contents/Home"
|
||||||
|
do
|
||||||
|
if [ -x "$candidate/bin/java" ]; then
|
||||||
|
printf '%s\n' "$candidate"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
java_major_version() {
|
||||||
|
"$1/bin/java" -version 2>&1 | awk -F '"' '/version/ { split($2, v, "."); print v[1]; exit }'
|
||||||
|
}
|
||||||
|
|
||||||
|
SELECTED_JAVA_HOME=""
|
||||||
|
|
||||||
|
if [ -n "${JAVA_HOME:-}" ] && [ -x "${JAVA_HOME}/bin/java" ]; then
|
||||||
|
CURRENT_MAJOR=$(java_major_version "$JAVA_HOME" || true)
|
||||||
|
if [ "$CURRENT_MAJOR" = "17" ]; then
|
||||||
|
SELECTED_JAVA_HOME="$JAVA_HOME"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||||
|
CANDIDATE=$(prefer_java_home)
|
||||||
|
if [ -n "$CANDIDATE" ] && [ -x "$CANDIDATE/bin/java" ]; then
|
||||||
|
SELECTED_JAVA_HOME="$CANDIDATE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||||
|
CANDIDATE=$(prefer_homebrew_openjdk_17 || true)
|
||||||
|
if [ -n "$CANDIDATE" ]; then
|
||||||
|
SELECTED_JAVA_HOME="$CANDIDATE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||||
|
CANDIDATE=$(prefer_android_studio_jbr || true)
|
||||||
|
if [ -n "$CANDIDATE" ]; then
|
||||||
|
SELECTED_JAVA_HOME="$CANDIDATE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||||
|
cat >&2 <<'EOF'
|
||||||
|
Unable to find a Java 17 runtime for Android builds.
|
||||||
|
|
||||||
|
Install JDK 17 or Android Studio, then rerun the Android command.
|
||||||
|
You can also export JAVA_HOME to a Java 17 installation manually.
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export JAVA_HOME="$SELECTED_JAVA_HOME"
|
||||||
|
export PATH="$JAVA_HOME/bin:$PATH"
|
||||||
|
|
||||||
|
# Homebrew's standalone `libzip` can shadow the JDK's bundled zip native
|
||||||
|
# library on macOS, which breaks Gradle startup with Inflater.initIDs errors.
|
||||||
|
JAVA_DYLD_PATH="$JAVA_HOME/lib:$JAVA_HOME/lib/server"
|
||||||
|
if [ -n "${DYLD_LIBRARY_PATH:-}" ]; then
|
||||||
|
export DYLD_LIBRARY_PATH="$JAVA_DYLD_PATH:$DYLD_LIBRARY_PATH"
|
||||||
|
else
|
||||||
|
export DYLD_LIBRARY_PATH="$JAVA_DYLD_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$REPO_ROOT"
|
||||||
|
exec "$@"
|
||||||
1469
src-tauri/Cargo.lock
generated
1469
src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -9,25 +9,14 @@ license = "AGPL-3.0-only"
|
|||||||
repository = "https://github.com/cinnyapp/cinny-desktop"
|
repository = "https://github.com/cinnyapp/cinny-desktop"
|
||||||
default-run = "cinny"
|
default-run = "cinny"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.61"
|
rust-version = "1.77.2"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
tauri-build = { version = "2", features = [] }
|
tauri-build = { version = "2", features = [] }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
serde_json = "1.0.109"
|
tauri = { version = "2", features = [] }
|
||||||
serde = { version = "1.0.193", features = ["derive"] }
|
|
||||||
tauri = { version = "2", features = [ "devtools"] }
|
|
||||||
tauri-plugin-localhost = "2"
|
tauri-plugin-localhost = "2"
|
||||||
tauri-plugin-window-state = "2"
|
|
||||||
tauri-plugin-clipboard-manager = "2"
|
|
||||||
tauri-plugin-notification = "2"
|
|
||||||
tauri-plugin-fs = "2"
|
|
||||||
tauri-plugin-shell = "2"
|
|
||||||
tauri-plugin-http = "2"
|
|
||||||
tauri-plugin-process = "2"
|
|
||||||
tauri-plugin-os = "2"
|
|
||||||
tauri-plugin-dialog = "2"
|
|
||||||
tauri-plugin-opener = "2"
|
tauri-plugin-opener = "2"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
@@ -38,10 +27,6 @@ default = [ "custom-protocol" ]
|
|||||||
# DO NOT remove this
|
# DO NOT remove this
|
||||||
custom-protocol = [ "tauri/custom-protocol" ]
|
custom-protocol = [ "tauri/custom-protocol" ]
|
||||||
|
|
||||||
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
|
|
||||||
tauri-plugin-global-shortcut = "2"
|
|
||||||
tauri-plugin-updater = "2"
|
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "app_lib"
|
name = "app_lib"
|
||||||
crate-type = ["staticlib", "cdylib", "rlib"]
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||||
|
|||||||
18
src-tauri/capabilities/default.json
Normal file
18
src-tauri/capabilities/default.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../gen/schemas/desktop-schema.json",
|
||||||
|
"identifier": "default",
|
||||||
|
"description": "Capability for the main mobile webview.",
|
||||||
|
"local": true,
|
||||||
|
"remote": {
|
||||||
|
"urls": [
|
||||||
|
"http://localhost:44548",
|
||||||
|
"http://localhost:8080"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"windows": [
|
||||||
|
"main"
|
||||||
|
],
|
||||||
|
"permissions": [
|
||||||
|
"core:default"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"identifier": "desktop-capability",
|
|
||||||
"platforms": [
|
|
||||||
"macOS",
|
|
||||||
"windows",
|
|
||||||
"linux"
|
|
||||||
],
|
|
||||||
"windows": [
|
|
||||||
"main"
|
|
||||||
],
|
|
||||||
"permissions": [
|
|
||||||
"updater:default",
|
|
||||||
"global-shortcut:default"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
"identifier": "migrated",
|
|
||||||
"description": "permissions that were migrated from v1",
|
|
||||||
"local": true,
|
|
||||||
"remote": {
|
|
||||||
"urls": [
|
|
||||||
"http://localhost:44548"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"windows": [
|
|
||||||
"main"
|
|
||||||
],
|
|
||||||
"permissions": [
|
|
||||||
"core:default",
|
|
||||||
"fs:allow-read-file",
|
|
||||||
"fs:allow-write-file",
|
|
||||||
"fs:allow-read-dir",
|
|
||||||
"fs:allow-copy-file",
|
|
||||||
"fs:allow-mkdir",
|
|
||||||
"fs:allow-remove",
|
|
||||||
"fs:allow-remove",
|
|
||||||
"fs:allow-rename",
|
|
||||||
"fs:allow-exists",
|
|
||||||
"core:window:allow-create",
|
|
||||||
"core:window:allow-center",
|
|
||||||
"core:window:allow-request-user-attention",
|
|
||||||
"core:window:allow-set-resizable",
|
|
||||||
"core:window:allow-set-maximizable",
|
|
||||||
"core:window:allow-set-minimizable",
|
|
||||||
"core:window:allow-set-closable",
|
|
||||||
"core:window:allow-set-title",
|
|
||||||
"core:window:allow-maximize",
|
|
||||||
"core:window:allow-unmaximize",
|
|
||||||
"core:window:allow-minimize",
|
|
||||||
"core:window:allow-unminimize",
|
|
||||||
"core:window:allow-show",
|
|
||||||
"core:window:allow-hide",
|
|
||||||
"core:window:allow-close",
|
|
||||||
"core:window:allow-set-decorations",
|
|
||||||
"core:window:allow-set-always-on-top",
|
|
||||||
"core:window:allow-set-content-protected",
|
|
||||||
"core:window:allow-set-size",
|
|
||||||
"core:window:allow-set-min-size",
|
|
||||||
"core:window:allow-set-max-size",
|
|
||||||
"core:window:allow-set-position",
|
|
||||||
"core:window:allow-set-fullscreen",
|
|
||||||
"core:window:allow-set-focus",
|
|
||||||
"core:window:allow-set-icon",
|
|
||||||
"core:window:allow-set-skip-taskbar",
|
|
||||||
"core:window:allow-set-cursor-grab",
|
|
||||||
"core:window:allow-set-cursor-visible",
|
|
||||||
"core:window:allow-set-cursor-icon",
|
|
||||||
"core:window:allow-set-cursor-position",
|
|
||||||
"core:window:allow-set-ignore-cursor-events",
|
|
||||||
"core:window:allow-start-dragging",
|
|
||||||
"core:webview:allow-print",
|
|
||||||
"shell:allow-execute",
|
|
||||||
"shell:allow-open",
|
|
||||||
"dialog:allow-open",
|
|
||||||
"dialog:allow-save",
|
|
||||||
"dialog:allow-message",
|
|
||||||
"dialog:allow-ask",
|
|
||||||
"dialog:allow-confirm",
|
|
||||||
"http:default",
|
|
||||||
"notification:default",
|
|
||||||
"global-shortcut:allow-is-registered",
|
|
||||||
"global-shortcut:allow-register",
|
|
||||||
"global-shortcut:allow-register-all",
|
|
||||||
"global-shortcut:allow-unregister",
|
|
||||||
"global-shortcut:allow-unregister-all",
|
|
||||||
"os:allow-platform",
|
|
||||||
"os:allow-version",
|
|
||||||
"os:allow-os-type",
|
|
||||||
"os:allow-family",
|
|
||||||
"os:allow-arch",
|
|
||||||
"os:allow-exe-extension",
|
|
||||||
"os:allow-locale",
|
|
||||||
"os:allow-hostname",
|
|
||||||
"process:allow-restart",
|
|
||||||
"process:allow-exit",
|
|
||||||
"clipboard-manager:allow-read-text",
|
|
||||||
"clipboard-manager:allow-write-text",
|
|
||||||
"core:app:allow-app-show",
|
|
||||||
"core:app:allow-app-hide",
|
|
||||||
"clipboard-manager:default",
|
|
||||||
{
|
|
||||||
"identifier": "opener:allow-open-url",
|
|
||||||
"allow": [{ "url": "http://*" }, { "url": "https://*" }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because one or more lines are too long
2477
src-tauri/gen/schemas/android-schema.json
Normal file
2477
src-tauri/gen/schemas/android-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
|||||||
{"desktop-capability":{"identifier":"desktop-capability","description":"","local":true,"windows":["main"],"permissions":["updater:default","global-shortcut:default"],"platforms":["macOS","windows","linux"]},"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["core:default","fs:allow-read-file","fs:allow-write-file","fs:allow-read-dir","fs:allow-copy-file","fs:allow-mkdir","fs:allow-remove","fs:allow-remove","fs:allow-rename","fs:allow-exists","core:window:allow-create","core:window:allow-center","core:window:allow-request-user-attention","core:window:allow-set-resizable","core:window:allow-set-maximizable","core:window:allow-set-minimizable","core:window:allow-set-closable","core:window:allow-set-title","core:window:allow-maximize","core:window:allow-unmaximize","core:window:allow-minimize","core:window:allow-unminimize","core:window:allow-show","core:window:allow-hide","core:window:allow-close","core:window:allow-set-decorations","core:window:allow-set-always-on-top","core:window:allow-set-content-protected","core:window:allow-set-size","core:window:allow-set-min-size","core:window:allow-set-max-size","core:window:allow-set-position","core:window:allow-set-fullscreen","core:window:allow-set-focus","core:window:allow-set-icon","core:window:allow-set-skip-taskbar","core:window:allow-set-cursor-grab","core:window:allow-set-cursor-visible","core:window:allow-set-cursor-icon","core:window:allow-set-cursor-position","core:window:allow-set-ignore-cursor-events","core:window:allow-start-dragging","core:webview:allow-print","shell:allow-execute","shell:allow-open","dialog:allow-open","dialog:allow-save","dialog:allow-message","dialog:allow-ask","dialog:allow-confirm","http:default","notification:default","global-shortcut:allow-is-registered","global-shortcut:allow-register","global-shortcut:allow-register-all","global-shortcut:allow-unregister","global-shortcut:allow-unregister-all","os:allow-platform","os:allow-version","os:allow-os-type","os:allow-family","os:allow-arch","os:allow-exe-extension","os:allow-locale","os:allow-hostname","process:allow-restart","process:allow-exit","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text","core:app:allow-app-show","core:app:allow-app-hide","clipboard-manager:default",{"identifier":"opener:allow-open-url","allow":[{"url":"http://*"},{"url":"https://*"}]}]}}
|
{"default":{"identifier":"default","description":"Capability for the main mobile webview.","remote":{"urls":["http://localhost:44548","http://localhost:8080"]},"local":true,"windows":["main"],"permissions":["core:default"]}}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
2477
src-tauri/gen/schemas/mobile-schema.json
Normal file
2477
src-tauri/gen/schemas/mobile-schema.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,47 +3,50 @@
|
|||||||
windows_subsystem = "windows"
|
windows_subsystem = "windows"
|
||||||
)]
|
)]
|
||||||
|
|
||||||
// mod menu;
|
use tauri::{
|
||||||
|
webview::{NewWindowResponse, WebviewWindowBuilder},
|
||||||
use tauri::{webview::{NewWindowResponse, WebviewWindowBuilder}, WebviewUrl};
|
WebviewUrl,
|
||||||
|
};
|
||||||
use tauri_plugin_opener::OpenerExt;
|
use tauri_plugin_opener::OpenerExt;
|
||||||
|
|
||||||
|
const LOCALHOST_PORT: u16 = 44_548;
|
||||||
|
|
||||||
|
fn main_window_url() -> WebviewUrl {
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
{
|
||||||
|
WebviewUrl::default()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(debug_assertions))]
|
||||||
|
{
|
||||||
|
let url = format!("http://localhost:{LOCALHOST_PORT}")
|
||||||
|
.parse()
|
||||||
|
.expect("failed to parse localhost app URL");
|
||||||
|
WebviewUrl::External(url)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
let port: u16 = 44548;
|
tauri::Builder::default()
|
||||||
let context = tauri::generate_context!();
|
.plugin(tauri_plugin_localhost::Builder::new(LOCALHOST_PORT).build())
|
||||||
let builder = tauri::Builder::default();
|
|
||||||
|
|
||||||
// #[cfg(target_os = "macos")]
|
|
||||||
// {
|
|
||||||
// builder = builder.menu(menu::menu());
|
|
||||||
// }
|
|
||||||
|
|
||||||
builder
|
|
||||||
.plugin(tauri_plugin_localhost::Builder::new(port).build())
|
|
||||||
.plugin(tauri_plugin_window_state::Builder::default().build())
|
|
||||||
.plugin(tauri_plugin_opener::init())
|
.plugin(tauri_plugin_opener::init())
|
||||||
.setup(move |app| {
|
.setup(|app| {
|
||||||
// Dev: use devUrl from tauri.conf.json (http://localhost:8080) to support HMR
|
|
||||||
#[cfg(debug_assertions)]
|
|
||||||
let window_url = WebviewUrl::App(Default::default());
|
|
||||||
|
|
||||||
// Release: tauri-plugin-localhost serves bundled frontend assets on this port
|
|
||||||
#[cfg(not(debug_assertions))]
|
|
||||||
let window_url = {
|
|
||||||
let url = format!("http://localhost:{}", port).parse().unwrap();
|
|
||||||
WebviewUrl::External(url)
|
|
||||||
};
|
|
||||||
|
|
||||||
let app_handle = app.handle().clone();
|
let app_handle = app.handle().clone();
|
||||||
WebviewWindowBuilder::new(app, "main".to_string(), window_url)
|
let builder = WebviewWindowBuilder::new(app, "main", main_window_url());
|
||||||
.title("Cinny")
|
|
||||||
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
|
let builder = builder.title("Cinny");
|
||||||
|
|
||||||
|
builder
|
||||||
.on_new_window(move |url, _features| {
|
.on_new_window(move |url, _features| {
|
||||||
let _ = app_handle.opener().open_url(url.as_str(), None::<&str>);
|
let _ = app_handle.opener().open_url(url.as_str(), None::<&str>);
|
||||||
NewWindowResponse::Deny
|
NewWindowResponse::Deny
|
||||||
})
|
})
|
||||||
.build()?;
|
.build()?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
.run(context)
|
.run(tauri::generate_context!())
|
||||||
.expect("error while building tauri application");
|
.expect("error while building tauri application");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
app_lib::run();
|
app_lib::run();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
use tauri::menu::{MenuBuilder, SubmenuBuilder};
|
|
||||||
use tauri::AppHandle;
|
|
||||||
|
|
||||||
pub fn menu() -> tauri::menu::Menu {
|
|
||||||
let app_menu = SubmenuBuilder::new(app, "Cinny")
|
|
||||||
.about(Some(Default::default()))
|
|
||||||
.separator()
|
|
||||||
.hide()
|
|
||||||
.hide_others()
|
|
||||||
.show_all()
|
|
||||||
.separator()
|
|
||||||
.quit()
|
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let edit_menu = SubmenuBuilder::new(app, "Edit")
|
|
||||||
.undo()
|
|
||||||
.redo()
|
|
||||||
.separator()
|
|
||||||
.cut()
|
|
||||||
.copy()
|
|
||||||
.paste()
|
|
||||||
.select_all()
|
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let view_menu = SubmenuBuilder::new(app, "View")
|
|
||||||
.fullscreen() // `.fullscreen()` works instead of `.enter_fullscreen()`
|
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let window_menu = SubmenuBuilder::new(app, "Window")
|
|
||||||
.minimize()
|
|
||||||
.build() // no `.zoom()` method directly available
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
MenuBuilder::new(app)
|
|
||||||
.item(&app_menu)
|
|
||||||
.item(&edit_menu)
|
|
||||||
.item(&view_menu)
|
|
||||||
.item(&window_menu)
|
|
||||||
.build()
|
|
||||||
.unwrap()
|
|
||||||
}
|
|
||||||
@@ -1,43 +1,24 @@
|
|||||||
{
|
{
|
||||||
"bundle": {
|
"bundle": {
|
||||||
"active": true,
|
"active": true,
|
||||||
"targets": "all",
|
|
||||||
"windows": {
|
|
||||||
"certificateThumbprint": null,
|
|
||||||
"digestAlgorithm": "sha256",
|
|
||||||
"timestampUrl": "",
|
|
||||||
"wix": {
|
|
||||||
"bannerPath": "wix/banner.bmp",
|
|
||||||
"dialogImagePath": "wix/dialogImage.bmp"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"icon": [
|
"icon": [
|
||||||
"icons/32x32.png",
|
"icons/32x32.png",
|
||||||
"icons/128x128.png",
|
"icons/128x128.png",
|
||||||
"icons/128x128@2x.png",
|
"icons/128x128@2x.png",
|
||||||
"icons/icon.icns",
|
"icons/icon.png"
|
||||||
"icons/icon.ico"
|
|
||||||
],
|
],
|
||||||
"resources": [],
|
"resources": [],
|
||||||
"externalBin": [],
|
"externalBin": [],
|
||||||
"copyright": "",
|
"copyright": "",
|
||||||
"category": "SocialNetworking",
|
"category": "SocialNetworking",
|
||||||
"shortDescription": "Yet another matrix client",
|
"shortDescription": "Yet another matrix client",
|
||||||
"longDescription": "",
|
"longDescription": "Phone-focused fork of Cinny built with Tauri mobile.",
|
||||||
"macOS": {
|
"android": {
|
||||||
"frameworks": [],
|
"minSdkVersion": 24
|
||||||
"minimumSystemVersion": "",
|
|
||||||
"exceptionDomain": "",
|
|
||||||
"signingIdentity": null,
|
|
||||||
"providerShortName": null,
|
|
||||||
"entitlements": null
|
|
||||||
},
|
},
|
||||||
"linux": {
|
"iOS": {
|
||||||
"deb": {
|
"minimumSystemVersion": "14.0"
|
||||||
"depends": []
|
}
|
||||||
}
|
|
||||||
},
|
|
||||||
"createUpdaterArtifacts": "v1Compatible"
|
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"beforeBuildCommand": "cd cinny && npm run build",
|
"beforeBuildCommand": "cd cinny && npm run build",
|
||||||
@@ -49,14 +30,6 @@
|
|||||||
"mainBinaryName": "cinny",
|
"mainBinaryName": "cinny",
|
||||||
"version": "4.11.2",
|
"version": "4.11.2",
|
||||||
"identifier": "in.cinny.app",
|
"identifier": "in.cinny.app",
|
||||||
"plugins": {
|
|
||||||
"updater": {
|
|
||||||
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDE2NDc3NDBGMTAzNTk1NUYKUldSZmxUVVFEM1JIRnRuMjVRTkFOQ21lUFI5KzRMU0s4OWtBS1RNRUVCNE9LcE9GcExNZ2M2NHoK",
|
|
||||||
"endpoints": [
|
|
||||||
"https://github.com/cinnyapp/cinny-desktop/releases/download/tauri/release.json"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"app": {
|
"app": {
|
||||||
"security": {
|
"security": {
|
||||||
"csp": "default-src 'self' blob: data: filesystem: ws: wss: http: https: tauri:; script-src 'self' 'unsafe-eval' 'unsafe-inline' blob: data: filesystem: ws: wss: http: https: tauri:; img-src 'self' data: blob: filesystem: http: https:; connect-src 'self' blob: ipc: ws: wss: http: https: http://ipc.localhost"
|
"csp": "default-src 'self' blob: data: filesystem: ws: wss: http: https: tauri:; script-src 'self' 'unsafe-eval' 'unsafe-inline' blob: data: filesystem: ws: wss: http: https: tauri:; img-src 'self' data: blob: filesystem: http: https:; connect-src 'self' blob: ipc: ws: wss: http: https: http://ipc.localhost"
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 84 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 451 KiB |
Reference in New Issue
Block a user