Compare commits

..

6 Commits

Author SHA1 Message Date
Krishan
2ff11d65e7 Release v4.0.3 (#315) 2024-07-25 16:04:16 +10:00
Ajay Bura
e252a96c4c enable hash router for desktop app (#314) 2024-07-25 15:49:40 +10:00
Krishan
e8f5c4ce24 Undo system tray and single instance (#312)
* Revert 5872ab9

* Undo 095b8fc
2024-07-25 14:15:59 +10:00
Krishan
8921baf41a Universal build for MacOS and fix windows build (#313)
* wip

* Universal macos workflow and fix windows workflow

* fix path for macos and use diff rust action
2024-07-25 14:15:31 +10:00
Krishan
f36934a796 Release v4.0.1 2024-07-25 00:20:22 +10:00
Krishan
b4ae5c3fc7 Fix macos action 2024-07-25 00:18:22 +10:00
11 changed files with 76 additions and 278 deletions

View File

@@ -23,9 +23,7 @@ jobs:
node-version: 20.12.2
cache: 'npm'
- name: Install Rust stable
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
uses: dtolnay/rust-toolchain@stable
- name: Install cinny dependencies
run: cd cinny && npm ci
- name: Install tauri dependencies
@@ -60,9 +58,9 @@ jobs:
uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0
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/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
# Linux-x86_64
linux-x86_64:
@@ -84,9 +82,7 @@ jobs:
node-version: 20.12.2
cache: 'npm'
- name: Install Rust stable
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies
run: |
sudo apt-get update
@@ -124,8 +120,8 @@ jobs:
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
# macos-x86_64
macos-x86_64:
# macos-universal
macos-universal:
runs-on: macos-latest
steps:
- name: Checkout repository
@@ -143,9 +139,9 @@ jobs:
node-version: 20.12.2
cache: 'npm'
- name: Install Rust stable
uses: actions-rs/toolchain@v1.0.7
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: aarch64-apple-darwin,x86_64-apple-darwin
- name: Install cinny dependencies
run: cd cinny && npm ci
- name: Install tauri dependencies
@@ -159,87 +155,28 @@ jobs:
NODE_OPTIONS: "--max_old_space_size=4096"
with:
releaseId: ${{ steps.get_release.outputs.upload_url }}
args: "--target universal-apple-darwin"
- name: Get app version
id: vars
run: echo ::set-output name=tag::$(jq .package.version src-tauri/tauri.conf.json | tr -d '"')
- name: Move dmg
run: mv "src-tauri/target/release/bundle/dmg/Cinny_${{ steps.vars.outputs.tag }}_x64.dmg" "src-tauri/target/release/bundle/dmg/Cinny_desktop-x86_64.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"
- name: Move app.tar.gz
run: mv "src-tauri/target/release/bundle/macos/Cinny.app.tar.gz" "src-tauri/target/release/bundle/macos/Cinny_desktop-x86_64.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"
- name: Move app.tar.gz.sig
run: mv "src-tauri/target/release/bundle/macos/Cinny.app.tar.gz.sig" "src-tauri/target/release/bundle/macos/Cinny_desktop-x86_64.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"
- name: Upload tagged release
uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0
with:
files: |
src-tauri/target/release/bundle/dmg/Cinny_desktop-x86_64.dmg
src-tauri/target/release/bundle/macos/Cinny_desktop-x86_64.app.tar.gz
src-tauri/target/release/bundle/macos/Cinny_desktop-x86_64.app.tar.gz.sig
# macos-aarch64
# macos-aarch64:
# runs-on: macos-12
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4.1.7
# with:
# submodules: true
# - name: Get release
# id: get_release
# uses: bruceadams/get-release@74c3d60f5a28f358ccf241a00c9021ea16f0569f
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Setup node
# uses: actions/setup-node@v3.4.1
# with:
# node-version: 20.12.2
# cache: 'npm'
# - name: Install Rust stable
# uses: actions-rs/toolchain@v1.0.7
# with:
# toolchain: stable
# - name: Install cinny dependencies
# run: cd cinny && npm ci
# - name: Install tauri dependencies
# run: npm ci
# - name: Install rustup target aarch64 darwin
# run: rustup target add aarch64-apple-darwin
# - name: Build desktop app with Tauri
# uses: tauri-apps/tauri-action@v0.3.1
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
# TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
# NODE_OPTIONS: "--max_old_space_size=4096"
# with:
# args: --target aarch64-apple-darwin
# releaseId: ${{ steps.get_release.outputs.upload_url }}
# - name: Get app version
# if: always()
# id: vars
# run: echo ::set-output name=tag::$(jq .package.version src-tauri/tauri.conf.json | tr -d '"')
# - name: Move dmg
# if: always()
# run: mv "src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/Cinny_${{ steps.vars.outputs.tag }}_aarch64.dmg" "src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/Cinny_desktop-aarch64.dmg"
# - name: Move app.tar.gz
# if: always()
# run: mv "src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Cinny.app.tar.gz" "src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Cinny_desktop-aarch64.app.tar.gz"
# - name: Move app.tar.gz.sig
# if: always()
# run: mv "src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Cinny.app.tar.gz.sig" "src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Cinny_desktop-aarch64.app.tar.gz.sig"
# - name: Upload tagged release
# if: always()
# uses: softprops/action-gh-release@a74c6b72af54cfa997e81df42d94703d6313a2d0
# with:
# files: |
# src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/Cinny_desktop-aarch64.dmg
# src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Cinny_desktop-aarch64.tar.gz
# src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Cinny_desktop-aarch64.tar.gz.sig
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
# Upload release.json
release-update:
if: always()
needs: [windows-x86_64, linux-x86_64, macos-x86_64] #, macos-aarch64]
needs: [windows-x86_64, linux-x86_64, macos-universal]
runs-on: ubuntu-latest
steps:
- name: Checkout repository

2
cinny

Submodule cinny updated: 96415a8d2a...44161c4157

38
config.json Normal file
View File

@@ -0,0 +1,38 @@
{
"defaultHomeserver": 2,
"homeserverList": [
"converser.eu",
"envs.net",
"matrix.org",
"monero.social",
"mozilla.org",
"xmr.se"
],
"allowCustomHomeservers": true,
"featuredCommunities": {
"openAsDefault": false,
"spaces": [
"#cinny-space:matrix.org",
"#community:matrix.org",
"#space:envs.net",
"#science-space:matrix.org",
"#libregaming-games:tchncs.de",
"#mathematics-on:matrix.org"
],
"rooms": [
"#cinny:matrix.org",
"#freesoftware:matrix.org",
"#pcapdroid:matrix.org",
"#gentoo:matrix.org",
"#PrivSec.dev:arcticfoxes.net",
"#disroot:aria-net.org"
],
"servers": ["envs.net", "matrix.org", "monero.social", "mozilla.org"]
},
"hashRouter": {
"enabled": true,
"basename": "/"
}
}

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "cinny",
"version": "4.0.0",
"version": "4.0.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "cinny",
"version": "3.2.1",
"version": "4.0.3",
"license": "AGPL-3.0-only",
"dependencies": {
"@tauri-apps/api": "1.6.0"

View File

@@ -1,13 +1,13 @@
{
"name": "cinny",
"version": "4.0.0",
"version": "4.0.3",
"description": "Yet another matrix client",
"main": "index.js",
"engines": {
"node": ">=16.0.0"
},
"scripts": {
"tauri": "tauri",
"tauri": "cp config.json cinny/ && tauri",
"release": "node scripts/release.mjs"
},
"keywords": [],

View File

@@ -34,7 +34,7 @@ async function createTauriRelease() {
const windowsX86_64 = {};
const linuxX86_64 = {};
const darwinX86_64 = {};
// const darwinAarch64 = {};
const darwinAarch64 = {};
const promises = latestAssets.map(async (asset) => {
const { name, browser_download_url } = asset;
@@ -53,19 +53,19 @@ async function createTauriRelease() {
linuxX86_64.signature = await getAssetSign(browser_download_url);
}
if (/x86_64\.app\.tar\.gz$/.test(name)) {
if (/universal\.app\.tar\.gz$/.test(name)) {
darwinX86_64.url = browser_download_url;
}
if (/x86_64\.app\.tar\.gz\.sig$/.test(name)) {
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
darwinX86_64.signature = await getAssetSign(browser_download_url);
}
// if (/aarch64\.app\.tar\.gz$/.test(name)) {
// darwinAarch64.url = browser_download_url;
// }
// if (/aarch64\.app\.tar\.gz\.sig$/.test(name)) {
// darwinAarch64.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);
@@ -86,8 +86,8 @@ async function createTauriRelease() {
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');
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;

53
src-tauri/Cargo.lock generated
View File

@@ -444,13 +444,12 @@ dependencies = [
[[package]]
name = "cinny"
version = "4.0.0"
version = "4.0.3"
dependencies = [
"serde",
"serde_json",
"tauri",
"tauri-build",
"tauri-plugin-single-instance",
]
[[package]]
@@ -1775,46 +1774,12 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libappindicator"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8"
dependencies = [
"glib",
"gtk",
"gtk-sys",
"libappindicator-sys",
"log",
]
[[package]]
name = "libappindicator-sys"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa"
dependencies = [
"gtk-sys",
"libloading",
"once_cell",
]
[[package]]
name = "libc"
version = "0.2.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
[[package]]
name = "libloading"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
dependencies = [
"cfg-if",
"winapi",
]
[[package]]
name = "line-wrap"
version = "0.1.1"
@@ -3452,7 +3417,6 @@ dependencies = [
"core-foundation",
"core-graphics",
"crossbeam-channel",
"dirs-next",
"dispatch",
"gdk",
"gdk-pixbuf",
@@ -3467,7 +3431,6 @@ dependencies = [
"instant",
"jni",
"lazy_static",
"libappindicator",
"libc",
"log",
"ndk",
@@ -3632,20 +3595,6 @@ dependencies = [
"tauri-utils",
]
[[package]]
name = "tauri-plugin-single-instance"
version = "0.0.0"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#a32008965b5cf060cc04e1e143dd221ce410715d"
dependencies = [
"log",
"serde",
"serde_json",
"tauri",
"thiserror",
"windows-sys 0.52.0",
"zbus",
]
[[package]]
name = "tauri-runtime"
version = "0.14.3"

View File

@@ -2,7 +2,7 @@
[package]
name = "cinny"
version = "4.0.0"
version = "4.0.3"
description = "Yet another matrix client"
authors = ["Ajay Bura"]
license = "AGPL-3.0-only"
@@ -17,8 +17,7 @@ tauri-build = { version = "1.5.3", features = [] }
[dependencies]
serde_json = "1.0.109"
serde = { version = "1.0.193", features = ["derive"] }
tauri = { version = "1.6.8", features = ["api-all", "devtools", "system-tray", "updater"] }
tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" }
tauri = { version = "1.6.8", features = ["api-all", "devtools", "updater"] }
[features]
# by default Tauri runs in production mode

View File

@@ -3,10 +3,8 @@
windows_subsystem = "windows"
)]
use tauri::Manager;
#[cfg(target_os = "macos")]
mod menu;
mod tray;
fn main() {
let builder = tauri::Builder::default();
@@ -14,38 +12,7 @@ fn main() {
#[cfg(target_os = "macos")]
let builder = builder.menu(menu::menu());
let builder = builder
.system_tray(tray::system_tray())
.on_system_tray_event(tray::system_tray_handler);
builder
.plugin(tauri_plugin_single_instance::init(|app, _, _| {
let tray_handle = match app.tray_handle_by_id(crate::tray::TRAY_LABEL) {
Some(h) => h,
None => return,
};
let window = app.get_window("main").unwrap();
if !window.is_visible().unwrap() || window.is_minimized().unwrap() {
window.unminimize().unwrap();
window.show().unwrap();
window.set_focus().unwrap();
tray_handle
.get_item("toggle")
.set_title("Hide Cinny")
.unwrap();
}
}))
.build(tauri::generate_context!())
.run(tauri::generate_context!())
.expect("error while building tauri application")
.run(run_event_handler)
}
fn run_event_handler<R: tauri::Runtime>(app: &tauri::AppHandle<R>, event: tauri::RunEvent) {
match event {
tauri::RunEvent::WindowEvent { label, event, .. } => {
tray::window_event_handler(app, &label, &event);
}
_ => {}
}
}

View File

@@ -1,87 +0,0 @@
use tauri::{
CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu,
SystemTrayMenuItem, WindowEvent, SystemTrayHandle, Window,
};
pub const TRAY_LABEL: &'static str = "main-tray";
pub fn window_event_handler<R: tauri::Runtime>(
app: &tauri::AppHandle<R>,
label: &str,
event: &WindowEvent,
) {
match event {
// Prevent Cinny from closing, instead hide it and let it be
// reopened through the tray.
WindowEvent::CloseRequested { api, .. } => {
api.prevent_close();
app.get_window(&label).unwrap().hide().unwrap();
app.tray_handle_by_id(TRAY_LABEL)
.unwrap()
.get_item("toggle")
.set_title("Show Cinny")
.unwrap();
}
_ => {}
}
}
/// Build the system tray object
pub fn system_tray() -> SystemTray {
let toggle = CustomMenuItem::new("toggle".to_owned(), "Hide Cinny");
let quit = CustomMenuItem::new("quit".to_owned(), "Quit");
let menu = SystemTrayMenu::new()
.add_item(toggle)
.add_native_item(SystemTrayMenuItem::Separator)
.add_item(quit);
tauri::SystemTray::new()
.with_menu(menu)
.with_id(TRAY_LABEL.to_owned())
}
pub fn toggle_window_state<R: tauri::Runtime>(window: Window<R>, tray_handle: SystemTrayHandle<R>) {
// Hide the window if it's visible, show it if not
// `is_visible` returns true for minimized state for whatever reason
if window.is_visible().unwrap() {
window.hide().unwrap();
tray_handle
.get_item("toggle")
.set_title("Show Cinny")
.unwrap();
} else {
window.unminimize().unwrap();
window.show().unwrap();
window.set_focus().unwrap();
tray_handle
.get_item("toggle")
.set_title("Hide Cinny")
.unwrap();
};
}
pub fn system_tray_handler<R: tauri::Runtime>(app: &tauri::AppHandle<R>, event: SystemTrayEvent) {
let tray_handle = match app.tray_handle_by_id(TRAY_LABEL) {
Some(h) => h,
None => return,
};
let window = app.get_window("main").unwrap();
match event {
SystemTrayEvent::LeftClick { .. } => {
toggle_window_state(window, tray_handle);
}
SystemTrayEvent::MenuItemClick { id, .. } => {
match id.as_str() {
"quit" => {
app.exit(0);
}
"toggle" => {
toggle_window_state(window, tray_handle)
}
_ => {}
}
}
_ => {}
}
}

View File

@@ -1,7 +1,7 @@
{
"package": {
"productName": "Cinny",
"version": "4.0.0"
"version": "4.0.3"
},
"build": {
"distDir": "../cinny/dist",
@@ -72,11 +72,6 @@
],
"security": {
"csp": "script-src blob: data: filesystem: ws: wss: http: https: tauri: 'unsafe-eval' 'unsafe-inline' 'self' img-src: 'self'"
},
"systemTray": {
"iconPath": "icons/32x32.png",
"iconAsTemplate": true,
"menuOnLeftClick": false
}
}
}