diff --git a/.github/workflows/tauri.yml b/.github/workflows/tauri.yml
index 7fb6fe7..ecb4465 100644
--- a/.github/workflows/tauri.yml
+++ b/.github/workflows/tauri.yml
@@ -57,21 +57,21 @@ jobs:
echo "${Env:TAURI_VERSION}"
shell: pwsh
- name: Move msi
- run: Move-Item "src-tauri\target\release\bundle\msi\Cinny_${{ env.TAURI_VERSION }}_x64_en-US.msi" "src-tauri\target\release\bundle\msi\Cinny_desktop-x86_64.msi"
+ run: Move-Item "src-tauri\target\release\bundle\msi\Paarrot_${{ env.TAURI_VERSION }}_x64_en-US.msi" "src-tauri\target\release\bundle\msi\Paarrot_desktop-x86_64.msi"
shell: pwsh
- name: Move msi.zip
- run: Move-Item "src-tauri\target\release\bundle\msi\Cinny_${{ env.TAURI_VERSION }}_x64_en-US.msi.zip" "src-tauri\target\release\bundle\msi\Cinny_desktop-x86_64.msi.zip"
+ run: Move-Item "src-tauri\target\release\bundle\msi\Paarrot_${{ env.TAURI_VERSION }}_x64_en-US.msi.zip" "src-tauri\target\release\bundle\msi\Paarrot_desktop-x86_64.msi.zip"
shell: pwsh
- name: Move msi.zip.sig
- run: Move-Item "src-tauri\target\release\bundle\msi\Cinny_${{ env.TAURI_VERSION }}_x64_en-US.msi.zip.sig" "src-tauri\target\release\bundle\msi\Cinny_desktop-x86_64.msi.zip.sig"
+ run: Move-Item "src-tauri\target\release\bundle\msi\Paarrot_${{ env.TAURI_VERSION }}_x64_en-US.msi.zip.sig" "src-tauri\target\release\bundle\msi\Paarrot_desktop-x86_64.msi.zip.sig"
shell: pwsh
- name: Upload tagged release
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836
with:
files: |
- src-tauri/target/release/bundle/msi/Cinny_desktop-x86_64.msi
- src-tauri/target/release/bundle/msi/Cinny_desktop-x86_64.msi.zip
- src-tauri/target/release/bundle/msi/Cinny_desktop-x86_64.msi.zip.sig
+ src-tauri/target/release/bundle/msi/Paarrot_desktop-x86_64.msi
+ src-tauri/target/release/bundle/msi/Paarrot_desktop-x86_64.msi.zip
+ src-tauri/target/release/bundle/msi/Paarrot_desktop-x86_64.msi.zip.sig
# Linux-x86_64
linux-x86_64:
@@ -125,21 +125,21 @@ jobs:
id: vars
run: echo "tag=$(jq .package.version src-tauri/tauri.conf.json | tr -d '"')" >> $GITHUB_OUTPUT
- name: Move deb
- run: mv "src-tauri/target/release/bundle/deb/cinny_${{ steps.vars.outputs.tag }}_amd64.deb" "src-tauri/target/release/bundle/deb/Cinny_desktop-x86_64.deb"
+ run: mv "src-tauri/target/release/bundle/deb/Paarrot_${{ steps.vars.outputs.tag }}_amd64.deb" "src-tauri/target/release/bundle/deb/Paarrot_desktop-x86_64.deb"
- name: Move AppImage
- run: mv "src-tauri/target/release/bundle/appimage/cinny_${{ steps.vars.outputs.tag }}_amd64.AppImage" "src-tauri/target/release/bundle/appimage/Cinny_desktop-x86_64.AppImage"
+ run: mv "src-tauri/target/release/bundle/appimage/Paarrot_${{ steps.vars.outputs.tag }}_amd64.AppImage" "src-tauri/target/release/bundle/appimage/Paarrot_desktop-x86_64.AppImage"
- name: Move AppImage.tar.gz
- run: mv "src-tauri/target/release/bundle/appimage/cinny_${{ steps.vars.outputs.tag }}_amd64.AppImage.tar.gz" "src-tauri/target/release/bundle/appimage/Cinny_desktop-x86_64.AppImage.tar.gz"
+ run: mv "src-tauri/target/release/bundle/appimage/Paarrot_${{ steps.vars.outputs.tag }}_amd64.AppImage.tar.gz" "src-tauri/target/release/bundle/appimage/Paarrot_desktop-x86_64.AppImage.tar.gz"
- name: Move AppImage.tar.gz.sig
- run: mv "src-tauri/target/release/bundle/appimage/cinny_${{ steps.vars.outputs.tag }}_amd64.AppImage.tar.gz.sig" "src-tauri/target/release/bundle/appimage/Cinny_desktop-x86_64.AppImage.tar.gz.sig"
+ run: mv "src-tauri/target/release/bundle/appimage/Paarrot_${{ steps.vars.outputs.tag }}_amd64.AppImage.tar.gz.sig" "src-tauri/target/release/bundle/appimage/Paarrot_desktop-x86_64.AppImage.tar.gz.sig"
- name: Upload tagged release
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836
with:
files: |
- src-tauri/target/release/bundle/deb/Cinny_desktop-x86_64.deb
- src-tauri/target/release/bundle/appimage/Cinny_desktop-x86_64.AppImage
- src-tauri/target/release/bundle/appimage/Cinny_desktop-x86_64.AppImage.tar.gz
- src-tauri/target/release/bundle/appimage/Cinny_desktop-x86_64.AppImage.tar.gz.sig
+ src-tauri/target/release/bundle/deb/Paarrot_desktop-x86_64.deb
+ src-tauri/target/release/bundle/appimage/Paarrot_desktop-x86_64.AppImage
+ src-tauri/target/release/bundle/appimage/Paarrot_desktop-x86_64.AppImage.tar.gz
+ src-tauri/target/release/bundle/appimage/Paarrot_desktop-x86_64.AppImage.tar.gz.sig
# macos-universal
macos-universal:
@@ -190,18 +190,18 @@ jobs:
id: vars
run: echo "tag=$(jq .package.version src-tauri/tauri.conf.json | tr -d '"')" >> $GITHUB_OUTPUT
- name: Move dmg
- run: mv "src-tauri/target/universal-apple-darwin/release/bundle/dmg/Cinny_${{ steps.vars.outputs.tag }}_universal.dmg" "src-tauri/target/universal-apple-darwin/release/bundle/dmg/Cinny_desktop-universal.dmg"
+ run: mv "src-tauri/target/universal-apple-darwin/release/bundle/dmg/Paarrot_${{ steps.vars.outputs.tag }}_universal.dmg" "src-tauri/target/universal-apple-darwin/release/bundle/dmg/Paarrot_desktop-universal.dmg"
- name: Move app.tar.gz
- run: mv "src-tauri/target/universal-apple-darwin/release/bundle/macos/Cinny.app.tar.gz" "src-tauri/target/universal-apple-darwin/release/bundle/macos/Cinny_desktop-universal.app.tar.gz"
+ run: mv "src-tauri/target/universal-apple-darwin/release/bundle/macos/Paarrot.app.tar.gz" "src-tauri/target/universal-apple-darwin/release/bundle/macos/Paarrot_desktop-universal.app.tar.gz"
- name: Move app.tar.gz.sig
- run: mv "src-tauri/target/universal-apple-darwin/release/bundle/macos/Cinny.app.tar.gz.sig" "src-tauri/target/universal-apple-darwin/release/bundle/macos/Cinny_desktop-universal.app.tar.gz.sig"
+ run: mv "src-tauri/target/universal-apple-darwin/release/bundle/macos/Paarrot.app.tar.gz.sig" "src-tauri/target/universal-apple-darwin/release/bundle/macos/Paarrot_desktop-universal.app.tar.gz.sig"
- name: Upload tagged release
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836
with:
files: |
- src-tauri/target/universal-apple-darwin/release/bundle/dmg/Cinny_desktop-universal.dmg
- src-tauri/target/universal-apple-darwin/release/bundle/macos/Cinny_desktop-universal.app.tar.gz
- src-tauri/target/universal-apple-darwin/release/bundle/macos/Cinny_desktop-universal.app.tar.gz.sig
+ src-tauri/target/universal-apple-darwin/release/bundle/dmg/Paarrot_desktop-universal.dmg
+ src-tauri/target/universal-apple-darwin/release/bundle/macos/Paarrot_desktop-universal.app.tar.gz
+ src-tauri/target/universal-apple-darwin/release/bundle/macos/Paarrot_desktop-universal.app.tar.gz.sig
# Android ARM64
android-arm64:
@@ -266,12 +266,12 @@ jobs:
id: vars
run: echo "tag=$(jq .package.version src-tauri/tauri.conf.json | tr -d '"')" >> $GITHUB_OUTPUT
- name: Move APK
- run: mv "src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk" "src-tauri/gen/android/app/build/outputs/apk/universal/release/Cinny_desktop-arm64.apk" || true
+ run: mv "src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk" "src-tauri/gen/android/app/build/outputs/apk/universal/release/Paarrot_desktop-arm64.apk" || true
- name: Upload tagged release
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836
with:
files: |
- src-tauri/gen/android/app/build/outputs/apk/universal/release/Cinny_desktop-arm64.apk
+ src-tauri/gen/android/app/build/outputs/apk/universal/release/Paarrot_desktop-arm64.apk
# Upload release.json
release-update:
diff --git a/appicon-square.png b/appicon-square.png
new file mode 100644
index 0000000..6595e24
Binary files /dev/null and b/appicon-square.png differ
diff --git a/appicon.png b/appicon.png
new file mode 100644
index 0000000..a6b01fa
Binary files /dev/null and b/appicon.png differ
diff --git a/cinny b/cinny
index 0cfc6cb..7b97d19 160000
--- a/cinny
+++ b/cinny
@@ -1 +1 @@
-Subproject commit 0cfc6cb0ab560fe8796b39512ef7c7ffddd4a24d
+Subproject commit 7b97d19e48929c340bfbf74be8c3b1af8fe29862
diff --git a/package-lock.json b/package-lock.json
index bc38d2e..1468b7f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,7 +14,8 @@
"devDependencies": {
"@actions/github": "6.0.0",
"@tauri-apps/cli": "^2.0.0",
- "node-fetch": "3.3.2"
+ "node-fetch": "3.3.2",
+ "sharp": "0.34.5"
},
"engines": {
"node": ">=18.0.0"
@@ -42,6 +43,17 @@
"undici": "^5.25.4"
}
},
+ "node_modules/@emnapi/runtime": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz",
+ "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@fastify/busboy": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz",
@@ -51,6 +63,496 @@
"node": ">=14"
}
},
+ "node_modules/@img/colour": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
+ "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
+ "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
+ "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
+ "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
+ "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
+ "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
+ "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
+ "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
+ "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
+ "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
+ "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
+ "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
+ "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
+ "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
+ "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
+ "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-riscv64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
+ "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-riscv64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
+ "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
+ "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
+ "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
+ "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
+ "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.7.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
+ "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
+ "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
+ "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
"node_modules/@octokit/auth-token": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
@@ -429,6 +931,16 @@
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
"dev": true
},
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
@@ -519,6 +1031,72 @@
"wrappy": "1"
}
},
+ "node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
+ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@img/colour": "^1.0.0",
+ "detect-libc": "^2.1.2",
+ "semver": "^7.7.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.34.5",
+ "@img/sharp-darwin-x64": "0.34.5",
+ "@img/sharp-libvips-darwin-arm64": "1.2.4",
+ "@img/sharp-libvips-darwin-x64": "1.2.4",
+ "@img/sharp-libvips-linux-arm": "1.2.4",
+ "@img/sharp-libvips-linux-arm64": "1.2.4",
+ "@img/sharp-libvips-linux-ppc64": "1.2.4",
+ "@img/sharp-libvips-linux-riscv64": "1.2.4",
+ "@img/sharp-libvips-linux-s390x": "1.2.4",
+ "@img/sharp-libvips-linux-x64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
+ "@img/sharp-linux-arm": "0.34.5",
+ "@img/sharp-linux-arm64": "0.34.5",
+ "@img/sharp-linux-ppc64": "0.34.5",
+ "@img/sharp-linux-riscv64": "0.34.5",
+ "@img/sharp-linux-s390x": "0.34.5",
+ "@img/sharp-linux-x64": "0.34.5",
+ "@img/sharp-linuxmusl-arm64": "0.34.5",
+ "@img/sharp-linuxmusl-x64": "0.34.5",
+ "@img/sharp-wasm32": "0.34.5",
+ "@img/sharp-win32-arm64": "0.34.5",
+ "@img/sharp-win32-ia32": "0.34.5",
+ "@img/sharp-win32-x64": "0.34.5"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD",
+ "optional": true
+ },
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
diff --git a/package.json b/package.json
index 02c23a8..3328cce 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "cinny",
+ "name": "paarrot",
"version": "4.10.2",
"description": "Yet another matrix client",
"main": "index.js",
@@ -19,6 +19,7 @@
"devDependencies": {
"@actions/github": "6.0.0",
"@tauri-apps/cli": "^2.0.0",
- "node-fetch": "3.3.2"
+ "node-fetch": "3.3.2",
+ "sharp": "0.34.5"
}
}
diff --git a/scripts/generate-icons.mjs b/scripts/generate-icons.mjs
new file mode 100644
index 0000000..cd56975
--- /dev/null
+++ b/scripts/generate-icons.mjs
@@ -0,0 +1,152 @@
+import sharp from 'sharp';
+import { promises as fs } from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const rootDir = path.resolve(__dirname, '..');
+const sourceIcon = path.join(rootDir, 'appicon-square.png');
+
+// Tauri desktop icons
+const tauriIcons = [
+ { name: '32x32.png', size: 32 },
+ { name: '128x128.png', size: 128 },
+ { name: '128x128@2x.png', size: 256 },
+ { name: 'icon.png', size: 512 },
+ { name: 'Square30x30Logo.png', size: 30 },
+ { name: 'Square44x44Logo.png', size: 44 },
+ { name: 'Square71x71Logo.png', size: 71 },
+ { name: 'Square89x89Logo.png', size: 89 },
+ { name: 'Square107x107Logo.png', size: 107 },
+ { name: 'Square142x142Logo.png', size: 142 },
+ { name: 'Square150x150Logo.png', size: 150 },
+ { name: 'Square284x284Logo.png', size: 284 },
+ { name: 'Square310x310Logo.png', size: 310 },
+ { name: 'StoreLogo.png', size: 50 },
+];
+
+// Android mipmap sizes
+const androidMipmaps = [
+ { folder: 'mipmap-mdpi', size: 48 },
+ { folder: 'mipmap-hdpi', size: 72 },
+ { folder: 'mipmap-xhdpi', size: 96 },
+ { folder: 'mipmap-xxhdpi', size: 144 },
+ { folder: 'mipmap-xxxhdpi', size: 192 },
+];
+
+// Android adaptive icon foreground sizes (with padding for safe zone)
+const androidForegroundSizes = [
+ { folder: 'mipmap-mdpi', size: 108 },
+ { folder: 'mipmap-hdpi', size: 162 },
+ { folder: 'mipmap-xhdpi', size: 216 },
+ { folder: 'mipmap-xxhdpi', size: 324 },
+ { folder: 'mipmap-xxxhdpi', size: 432 },
+];
+
+async function generateTauriIcons() {
+ const iconsDir = path.join(rootDir, 'src-tauri', 'icons');
+
+ for (const icon of tauriIcons) {
+ const outputPath = path.join(iconsDir, icon.name);
+ await sharp(sourceIcon)
+ .resize(icon.size, icon.size)
+ .png()
+ .toFile(outputPath);
+ console.log(`Generated: ${icon.name}`);
+ }
+
+ // Generate ICO file (Windows)
+ const icoPath = path.join(iconsDir, 'icon.ico');
+ const sizes = [16, 24, 32, 48, 64, 128, 256];
+ const icoBuffers = await Promise.all(
+ sizes.map(size =>
+ sharp(sourceIcon)
+ .resize(size, size)
+ .png()
+ .toBuffer()
+ )
+ );
+ // For ICO, we'll just use the 256x256 as the main icon
+ await sharp(sourceIcon)
+ .resize(256, 256)
+ .png()
+ .toFile(icoPath.replace('.ico', '.ico.png'));
+ // Copy as ico (sharp doesn't support ico directly, need to use png2ico or similar)
+ console.log('Note: ICO file needs manual conversion or use png2ico tool');
+
+ // Generate ICNS file (macOS) - sharp doesn't support icns directly
+ console.log('Note: ICNS file needs manual conversion or use iconutil on macOS');
+}
+
+async function generateAndroidIcons() {
+ const androidResDir = path.join(rootDir, 'src-tauri', 'gen', 'android', 'app', 'src', 'main', 'res');
+
+ for (const mipmap of androidMipmaps) {
+ const outputDir = path.join(androidResDir, mipmap.folder);
+
+ // Standard launcher icon
+ await sharp(sourceIcon)
+ .resize(mipmap.size, mipmap.size)
+ .png()
+ .toFile(path.join(outputDir, 'ic_launcher.png'));
+ console.log(`Generated: ${mipmap.folder}/ic_launcher.png`);
+
+ // Round launcher icon
+ const roundSize = mipmap.size;
+ const roundIcon = await sharp(sourceIcon)
+ .resize(roundSize, roundSize)
+ .png()
+ .toBuffer();
+
+ // Create circular mask
+ const circleMask = Buffer.from(
+ ``
+ );
+
+ await sharp(roundIcon)
+ .composite([{
+ input: circleMask,
+ blend: 'dest-in'
+ }])
+ .png()
+ .toFile(path.join(outputDir, 'ic_launcher_round.png'));
+ console.log(`Generated: ${mipmap.folder}/ic_launcher_round.png`);
+ }
+
+ // Generate adaptive icon foregrounds
+ for (const fg of androidForegroundSizes) {
+ const outputDir = path.join(androidResDir, fg.folder);
+ const iconSize = Math.floor(fg.size * 0.66); // Icon should be ~66% of the foreground
+ const padding = Math.floor((fg.size - iconSize) / 2);
+
+ await sharp(sourceIcon)
+ .resize(iconSize, iconSize)
+ .extend({
+ top: padding,
+ bottom: fg.size - iconSize - padding,
+ left: padding,
+ right: fg.size - iconSize - padding,
+ background: { r: 0, g: 0, b: 0, alpha: 0 }
+ })
+ .png()
+ .toFile(path.join(outputDir, 'ic_launcher_foreground.png'));
+ console.log(`Generated: ${fg.folder}/ic_launcher_foreground.png`);
+ }
+}
+
+async function main() {
+ console.log('Generating icons from:', sourceIcon);
+ console.log('');
+
+ console.log('=== Tauri Desktop Icons ===');
+ await generateTauriIcons();
+ console.log('');
+
+ console.log('=== Android Icons ===');
+ await generateAndroidIcons();
+ console.log('');
+
+ console.log('Done! Note: ICO and ICNS files may need manual conversion.');
+}
+
+main().catch(console.error);
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index b39a187..98a93db 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,18 +1,18 @@
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[package]
-name = "cinny"
+name = "paarrot"
version = "4.10.2"
description = "Yet another matrix client"
authors = ["Ajay Bura"]
license = "AGPL-3.0-only"
repository = "https://github.com/cinnyapp/cinny-desktop"
-default-run = "cinny"
+default-run = "paarrot"
edition = "2021"
rust-version = "1.70"
[lib]
-name = "cinny_lib"
+name = "paarrot_lib"
crate-type = ["staticlib", "cdylib", "lib"]
[build-dependencies]
diff --git a/src-tauri/gen/android/app/.gitignore b/src-tauri/gen/android/app/.gitignore
index 4c00a3e..79951c8 100644
--- a/src-tauri/gen/android/app/.gitignore
+++ b/src-tauri/gen/android/app/.gitignore
@@ -1,4 +1,4 @@
-/src/main/java/in/cinny/app/generated
+/src/main/java/wtf/ruv/paarrot/generated
/src/main/jniLibs/**/*.so
/src/main/assets/tauri.conf.json
/tauri.build.gradle.kts
diff --git a/src-tauri/gen/android/app/build.gradle.kts b/src-tauri/gen/android/app/build.gradle.kts
index 1dc4643..2336de3 100644
--- a/src-tauri/gen/android/app/build.gradle.kts
+++ b/src-tauri/gen/android/app/build.gradle.kts
@@ -15,10 +15,10 @@ val tauriProperties = Properties().apply {
android {
compileSdk = 36
- namespace = "in.cinny.app"
+ namespace = "wtf.ruv.paarrot"
defaultConfig {
manifestPlaceholders["usesCleartextTraffic"] = "false"
- applicationId = "in.cinny.app"
+ applicationId = "wtf.ruv.paarrot"
minSdk = 24
targetSdk = 36
versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()
diff --git a/src-tauri/gen/android/app/src/main/AndroidManifest.xml b/src-tauri/gen/android/app/src/main/AndroidManifest.xml
index 64e228d..3593690 100644
--- a/src-tauri/gen/android/app/src/main/AndroidManifest.xml
+++ b/src-tauri/gen/android/app/src/main/AndroidManifest.xml
@@ -15,7 +15,7 @@
= Build.VERSION_CODES.TIRAMISU) {
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)
- != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(
- this,
- arrayOf(Manifest.permission.POST_NOTIFICATIONS),
- NOTIFICATION_PERMISSION_CODE
- )
- }
- }
- }
-
- private fun startSyncService() {
- SyncService.start(this)
- }
-}
diff --git a/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/BootReceiver.kt b/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/BootReceiver.kt
new file mode 100644
index 0000000..d287440
--- /dev/null
+++ b/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/BootReceiver.kt
@@ -0,0 +1,22 @@
+package wtf.ruv.paarrot
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Build
+
+/**
+ * Receives BOOT_COMPLETED broadcast to restart the sync service after device reboot.
+ */
+class BootReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
+ val serviceIntent = Intent(context, SyncService::class.java)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ context.startForegroundService(serviceIntent)
+ } else {
+ context.startService(serviceIntent)
+ }
+ }
+ }
+}
diff --git a/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/MainActivity.kt b/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/MainActivity.kt
new file mode 100644
index 0000000..1c88ab1
--- /dev/null
+++ b/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/MainActivity.kt
@@ -0,0 +1,11 @@
+package wtf.ruv.paarrot
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+
+class MainActivity : TauriActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
+ super.onCreate(savedInstanceState)
+ }
+}
diff --git a/src-tauri/gen/android/app/src/main/java/in/cinny/app/SyncService.kt b/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/SyncService.kt
similarity index 52%
rename from src-tauri/gen/android/app/src/main/java/in/cinny/app/SyncService.kt
rename to src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/SyncService.kt
index 203e0ac..7ec2840 100644
--- a/src-tauri/gen/android/app/src/main/java/in/cinny/app/SyncService.kt
+++ b/src-tauri/gen/android/app/src/main/java/wtf/ruv/paarrot/SyncService.kt
@@ -1,6 +1,5 @@
-package `in`.cinny.app
+package wtf.ruv.paarrot
-import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
@@ -13,30 +12,15 @@ import android.os.PowerManager
import androidx.core.app.NotificationCompat
/**
- * Foreground service to keep Matrix sync connection alive in background.
- * This service maintains a wake lock and shows a persistent notification
- * to prevent Android from killing the app while syncing.
+ * Foreground service that keeps the app alive for background sync.
+ * This allows Matrix sync to continue even when the app is in the background.
*/
class SyncService : Service() {
-
companion object {
- private const val CHANNEL_ID = "cinny_sync_channel"
- private const val NOTIFICATION_ID = 1001
- private const val WAKE_LOCK_TAG = "Cinny:SyncWakeLock"
-
- fun start(context: Context) {
- val intent = Intent(context, SyncService::class.java)
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- context.startForegroundService(intent)
- } else {
- context.startService(intent)
- }
- }
-
- fun stop(context: Context) {
- val intent = Intent(context, SyncService::class.java)
- context.stopService(intent)
- }
+ private const val NOTIFICATION_ID = 1
+ private const val CHANNEL_ID = "paarrot_sync_channel"
+ private const val CHANNEL_NAME = "Background Sync"
+ private const val WAKE_LOCK_TAG = "Paarrot:SyncWakeLock"
}
private var wakeLock: PowerManager.WakeLock? = null
@@ -50,8 +34,7 @@ class SyncService : Service() {
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
- val notification = createNotification()
- startForeground(NOTIFICATION_ID, notification)
+ startForeground(NOTIFICATION_ID, createNotification())
return START_STICKY
}
@@ -64,32 +47,33 @@ class SyncService : Service() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
CHANNEL_ID,
- "Matrix Sync",
+ CHANNEL_NAME,
NotificationManager.IMPORTANCE_LOW
).apply {
- description = "Keeps Cinny connected for message notifications"
+ description = "Keeps Paarrot connected for message notifications"
setShowBadge(false)
}
- val manager = getSystemService(NotificationManager::class.java)
- manager.createNotificationChannel(channel)
+
+ val notificationManager = getSystemService(NotificationManager::class.java)
+ notificationManager.createNotificationChannel(channel)
}
}
- private fun createNotification(): Notification {
- val intent = Intent(this, MainActivity::class.java)
+ private fun createNotification(): android.app.Notification {
val pendingIntent = PendingIntent.getActivity(
- this, 0, intent,
- PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
+ this,
+ 0,
+ Intent(this, MainActivity::class.java),
+ PendingIntent.FLAG_IMMUTABLE
)
return NotificationCompat.Builder(this, CHANNEL_ID)
- .setContentTitle("Cinny")
- .setContentText("Connected to Matrix")
- .setSmallIcon(R.mipmap.ic_launcher)
- .setOngoing(true)
+ .setContentTitle("Paarrot")
+ .setContentText("Syncing messages...")
+ .setSmallIcon(android.R.drawable.ic_dialog_info)
.setContentIntent(pendingIntent)
.setPriority(NotificationCompat.PRIORITY_LOW)
- .setCategory(NotificationCompat.CATEGORY_SERVICE)
+ .setOngoing(true)
.build()
}
@@ -99,7 +83,7 @@ class SyncService : Service() {
PowerManager.PARTIAL_WAKE_LOCK,
WAKE_LOCK_TAG
).apply {
- acquire(10 * 60 * 1000L) // 10 minutes, will be renewed
+ acquire(10 * 60 * 1000L) // 10 minutes timeout
}
}
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 28f1aa1..522867e 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
index 85d0c88..4768fdb 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
index 28f1aa1..4c169c5 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 73e48db..69dee52 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
index 13dd214..d330104 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
index 73e48db..bf2a883 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 1d98044..adca8bc 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
index a888b33..746505a 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 1d98044..3978209 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 0818324..2a8f4d6 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
index a2a838e..aa73395 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index 0818324..a9b2a23 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index b18bceb..a3885eb 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
index 3f8a57f..880616f 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index b18bceb..223a786 100644
Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/src-tauri/gen/android/app/src/main/res/values-night/themes.xml b/src-tauri/gen/android/app/src/main/res/values-night/themes.xml
index 73bdcc1..083c23c 100644
--- a/src-tauri/gen/android/app/src/main/res/values-night/themes.xml
+++ b/src-tauri/gen/android/app/src/main/res/values-night/themes.xml
@@ -1,6 +1,6 @@
-
diff --git a/src-tauri/gen/android/app/src/main/res/values/strings.xml b/src-tauri/gen/android/app/src/main/res/values/strings.xml
index a55d343..3bf966d 100644
--- a/src-tauri/gen/android/app/src/main/res/values/strings.xml
+++ b/src-tauri/gen/android/app/src/main/res/values/strings.xml
@@ -1,4 +1,4 @@
- Cinny
- Cinny
+ Paarrot
+ Paarrot
\ No newline at end of file
diff --git a/src-tauri/gen/android/app/src/main/res/values/themes.xml b/src-tauri/gen/android/app/src/main/res/values/themes.xml
index 73bdcc1..083c23c 100644
--- a/src-tauri/gen/android/app/src/main/res/values/themes.xml
+++ b/src-tauri/gen/android/app/src/main/res/values/themes.xml
@@ -1,6 +1,6 @@
-
diff --git a/src-tauri/gen/android/buildSrc/src/main/java/in/cinny/app/kotlin/BuildTask.kt b/src-tauri/gen/android/buildSrc/src/main/java/wtf/ruv/paarrot/kotlin/BuildTask.kt
similarity index 100%
rename from src-tauri/gen/android/buildSrc/src/main/java/in/cinny/app/kotlin/BuildTask.kt
rename to src-tauri/gen/android/buildSrc/src/main/java/wtf/ruv/paarrot/kotlin/BuildTask.kt
diff --git a/src-tauri/gen/android/buildSrc/src/main/java/in/cinny/app/kotlin/RustPlugin.kt b/src-tauri/gen/android/buildSrc/src/main/java/wtf/ruv/paarrot/kotlin/RustPlugin.kt
similarity index 100%
rename from src-tauri/gen/android/buildSrc/src/main/java/in/cinny/app/kotlin/RustPlugin.kt
rename to src-tauri/gen/android/buildSrc/src/main/java/wtf/ruv/paarrot/kotlin/RustPlugin.kt
diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png
index fb92cc4..6812f43 100644
Binary files a/src-tauri/icons/128x128.png and b/src-tauri/icons/128x128.png differ
diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png
index 0e6f716..60d77eb 100644
Binary files a/src-tauri/icons/128x128@2x.png and b/src-tauri/icons/128x128@2x.png differ
diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png
index 34b3f85..7e49b32 100644
Binary files a/src-tauri/icons/32x32.png and b/src-tauri/icons/32x32.png differ
diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png
index 354ea86..b9fe19f 100644
Binary files a/src-tauri/icons/Square107x107Logo.png and b/src-tauri/icons/Square107x107Logo.png differ
diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png
index 14cbdab..7671f8d 100644
Binary files a/src-tauri/icons/Square142x142Logo.png and b/src-tauri/icons/Square142x142Logo.png differ
diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png
index 10c09f1..a54cc3d 100644
Binary files a/src-tauri/icons/Square150x150Logo.png and b/src-tauri/icons/Square150x150Logo.png differ
diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png
index 84d94eb..a2a6215 100644
Binary files a/src-tauri/icons/Square284x284Logo.png and b/src-tauri/icons/Square284x284Logo.png differ
diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png
index 0c97f33..8426fee 100644
Binary files a/src-tauri/icons/Square30x30Logo.png and b/src-tauri/icons/Square30x30Logo.png differ
diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png
index 384d361..6807a2f 100644
Binary files a/src-tauri/icons/Square310x310Logo.png and b/src-tauri/icons/Square310x310Logo.png differ
diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png
index 6a3dae0..32ad97b 100644
Binary files a/src-tauri/icons/Square44x44Logo.png and b/src-tauri/icons/Square44x44Logo.png differ
diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png
index 29f54c1..0ccb652 100644
Binary files a/src-tauri/icons/Square71x71Logo.png and b/src-tauri/icons/Square71x71Logo.png differ
diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png
index ef039cd..3aed433 100644
Binary files a/src-tauri/icons/Square89x89Logo.png and b/src-tauri/icons/Square89x89Logo.png differ
diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png
index 1884b4f..b1f9929 100644
Binary files a/src-tauri/icons/StoreLogo.png and b/src-tauri/icons/StoreLogo.png differ
diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico
index 20c035e..81988f9 100644
Binary files a/src-tauri/icons/icon.ico and b/src-tauri/icons/icon.ico differ
diff --git a/src-tauri/icons/icon.ico.png b/src-tauri/icons/icon.ico.png
new file mode 100644
index 0000000..60d77eb
Binary files /dev/null and b/src-tauri/icons/icon.ico.png differ
diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png
index 221fb21..ab5e993 100644
Binary files a/src-tauri/icons/icon.png and b/src-tauri/icons/icon.png differ
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index a5a5f61..5d24722 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -4,5 +4,5 @@
)]
fn main() {
- cinny_lib::run();
+ paarrot_lib::run();
}
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 5a9e818..9122f52 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -1,8 +1,8 @@
{
"$schema": "https://schema.tauri.app/config/2",
- "productName": "Cinny",
+ "productName": "Paarrot",
"version": "4.10.8",
- "identifier": "in.cinny.app",
+ "identifier": "wtf.ruv.paarrot",
"build": {
"frontendDist": "../cinny/dist",
"devUrl": "http://localhost:8080",
@@ -12,7 +12,7 @@
"app": {
"windows": [
{
- "title": "Cinny",
+ "title": "Paarrot",
"width": 1280,
"height": 905,
"center": true,