chore: fix ci and clean up
This commit is contained in:
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@@ -45,7 +45,7 @@ jobs:
|
|||||||
# Windows and macOS builds using cargo-packager
|
# Windows and macOS builds using cargo-packager
|
||||||
- name: Build with cargo-packager (Windows/macOS)
|
- name: Build with cargo-packager (Windows/macOS)
|
||||||
if: runner.os != 'Linux'
|
if: runner.os != 'Linux'
|
||||||
working-directory: crates/coop
|
working-directory: desktop
|
||||||
run: |
|
run: |
|
||||||
cargo install cargo-packager --locked
|
cargo install cargo-packager --locked
|
||||||
cargo packager --release
|
cargo packager --release
|
||||||
@@ -154,13 +154,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Create draft release
|
- name: Create draft release
|
||||||
id: create_release
|
id: create_release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: akkuman/gitea-release-action@v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.version.outputs.tag }}
|
server_url: "https://git.reya.su/"
|
||||||
name: ${{ steps.version.outputs.tag }}
|
repository: "reya/coop"
|
||||||
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
draft: true
|
draft: true
|
||||||
prerelease: false
|
prerelease: false
|
||||||
generate_release_notes: true
|
|
||||||
files: |
|
files: |
|
||||||
artifacts/**/*
|
artifacts/**/*
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ members = ["crates/*", "desktop", "web"]
|
|||||||
default-members = ["desktop"]
|
default-members = ["desktop"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "1.0.0-beta3"
|
version = "1.0.0-beta4"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
|
|||||||
56
Cargo.toml-E
56
Cargo.toml-E
@@ -1,56 +0,0 @@
|
|||||||
[workspace]
|
|
||||||
resolver = "2"
|
|
||||||
members = ["crates/*", "desktop", "web"]
|
|
||||||
default-members = ["desktop"]
|
|
||||||
|
|
||||||
[workspace.package]
|
|
||||||
version = "1.0.0-beta3"
|
|
||||||
edition = "2024"
|
|
||||||
publish = false
|
|
||||||
|
|
||||||
[workspace.dependencies]
|
|
||||||
# GPUI
|
|
||||||
gpui = { git = "https://github.com/zed-industries/zed" }
|
|
||||||
gpui_platform = { git = "https://github.com/zed-industries/zed", features = ["font-kit", "x11", "wayland"] }
|
|
||||||
gpui_linux = { git = "https://github.com/zed-industries/zed" }
|
|
||||||
gpui_windows = { git = "https://github.com/zed-industries/zed" }
|
|
||||||
gpui_macos = { git = "https://github.com/zed-industries/zed" }
|
|
||||||
gpui_tokio = { git = "https://github.com/zed-industries/zed" }
|
|
||||||
reqwest_client = { git = "https://github.com/zed-industries/zed" }
|
|
||||||
|
|
||||||
# Nostr
|
|
||||||
nostr-lmdb = { git = "https://github.com/rust-nostr/nostr" }
|
|
||||||
nostr-connect = { git = "https://github.com/rust-nostr/nostr" }
|
|
||||||
nostr-blossom = { git = "https://github.com/rust-nostr/nostr" }
|
|
||||||
nostr-gossip-memory = { git = "https://github.com/rust-nostr/nostr" }
|
|
||||||
nostr-sdk = { git = "https://github.com/rust-nostr/nostr" }
|
|
||||||
nostr = { git = "https://github.com/rust-nostr/nostr", features = [ "nip96", "nip59", "nip49", "nip44" ] }
|
|
||||||
|
|
||||||
# Others
|
|
||||||
anyhow = "1.0.44"
|
|
||||||
chrono = "0.4.38"
|
|
||||||
futures = "0.3"
|
|
||||||
itertools = "0.13.0"
|
|
||||||
log = "0.4"
|
|
||||||
oneshot = "0.1.10"
|
|
||||||
flume = { version = "0.11.1", default-features = false, features = ["async", "select"] }
|
|
||||||
rust-embed = "8.5.0"
|
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
|
||||||
serde_json = "1.0"
|
|
||||||
schemars = "1"
|
|
||||||
smallvec = "1.14.0"
|
|
||||||
smol = "2"
|
|
||||||
tracing = "0.1.40"
|
|
||||||
webbrowser = "1.0.4"
|
|
||||||
tracing-subscriber = { version = "0.3.18", features = ["fmt", "env-filter"] }
|
|
||||||
|
|
||||||
[profile.release]
|
|
||||||
strip = true
|
|
||||||
opt-level = "z"
|
|
||||||
lto = true
|
|
||||||
codegen-units = 1
|
|
||||||
panic = "abort"
|
|
||||||
|
|
||||||
[profile.profiling]
|
|
||||||
inherits = "release"
|
|
||||||
debug = true
|
|
||||||
54
GEMINI.md
54
GEMINI.md
@@ -1,54 +0,0 @@
|
|||||||
# Coop - Gemini Context
|
|
||||||
|
|
||||||
## Project Overview
|
|
||||||
|
|
||||||
Coop is a simple, fast, and reliable Nostr client for secure messaging across all platforms. It is written in Rust and structured as a Cargo workspace. The project utilizes:
|
|
||||||
- **GPUI**: The GPU-accelerated UI framework developed by Zed Industries for cross-platform, high-performance user interfaces.
|
|
||||||
- **Rust Nostr SDK**: For handling the Nostr protocol (including NIPs like 44, 49, 59, 96).
|
|
||||||
|
|
||||||
The workspace is divided into several sub-crates under `crates/`, including the main application (`coop`), UI components (`ui`, `chat_ui`, `title_bar`, `theme`), and domain logic (`chat`, `person`, `relay_auth`, `state`, `device`).
|
|
||||||
|
|
||||||
## Building and Running
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
- **Rust Toolchain**: Use `rustup` to install the Rust toolchain.
|
|
||||||
- **System Dependencies**: Depending on your OS, you must run the provided setup scripts to install necessary libraries before compiling.
|
|
||||||
|
|
||||||
### Commands
|
|
||||||
- **Install Linux Dependencies**:
|
|
||||||
```bash
|
|
||||||
./script/linux
|
|
||||||
```
|
|
||||||
- **Install FreeBSD Dependencies**:
|
|
||||||
```bash
|
|
||||||
./script/freebsd
|
|
||||||
```
|
|
||||||
- **Install macOS Dependencies**:
|
|
||||||
```bash
|
|
||||||
./script/macos
|
|
||||||
```
|
|
||||||
- **Build the project** (debug mode):
|
|
||||||
```bash
|
|
||||||
cargo build
|
|
||||||
```
|
|
||||||
- **Run the application**:
|
|
||||||
```bash
|
|
||||||
cargo run
|
|
||||||
```
|
|
||||||
- **Build for Production** (optimized release binary):
|
|
||||||
```bash
|
|
||||||
cargo build --release
|
|
||||||
```
|
|
||||||
|
|
||||||
### Packaging
|
|
||||||
- Packaging scripts and manifests are available in the `script/` directory (e.g., `bundle-linux`, `bundle-snap`, `prepare-flathub`) and the `flathub/` directory.
|
|
||||||
|
|
||||||
## Development Conventions
|
|
||||||
|
|
||||||
- **Code Formatting**: The project enforces a strict Rust code formatting style via `rustfmt.toml`.
|
|
||||||
- **Edition**: 2024
|
|
||||||
- **Indentation**: Block style with 4 tab spaces.
|
|
||||||
- **Imports**: Grouped by `StdExternalCrate`, with module granularity and automatic reordering of imports, modules, and impl items.
|
|
||||||
- **Modularity**: Code is split into focused crates (e.g., separating UI code in `chat_ui` from core messaging logic in `chat`). When contributing, ensure your code respects these boundaries.
|
|
||||||
- **Contributing**: Contributions are made via Pull Requests on the `lumehq/coop` GitHub repository. Ensure all tests pass before submitting.
|
|
||||||
- **UI Architecture**: Because Coop uses GPUI, UI components are built using GPUI's element tree structure, event handling, and view contexts.
|
|
||||||
16
README.md
16
README.md
@@ -1,12 +1,12 @@
|
|||||||

|

|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a href="https://github.com/lumehq/coop/actions/workflows/rust.yml">
|
<a href="https://github.com/reyakov/coop/actions/workflows/rust.yml">
|
||||||
<img alt="Actions" src="https://github.com/lumehq/coop/actions/workflows/rust.yml/badge.svg">
|
<img alt="Actions" src="https://github.com/reyakov/coop/actions/workflows/rust.yml/badge.svg">
|
||||||
</a>
|
</a>
|
||||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/lumehq/coop">
|
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/reyakov/coop">
|
||||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues-raw/lumehq/coop">
|
<img alt="GitHub issues" src="https://img.shields.io/github/issues-raw/reyakov/coop">
|
||||||
<img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/lumehq/coop">
|
<img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr/reyakov/coop">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Coop is a simple, fast, and reliable nostr client for secure messaging across all platforms.
|
Coop is a simple, fast, and reliable nostr client for secure messaging across all platforms.
|
||||||
@@ -36,7 +36,7 @@ To install Coop, follow these steps:
|
|||||||
|
|
||||||
1. **Download the Latest Release**:
|
1. **Download the Latest Release**:
|
||||||
|
|
||||||
- Visit the [Coop Releases page on GitHub](https://github.com/lumehq/coop/releases).
|
- Visit the [Coop Releases page on GitHub](https://github.com/reyakov/coop/releases).
|
||||||
- Download the package that matches your operating system (Windows, macOS, or Linux).
|
- Download the package that matches your operating system (Windows, macOS, or Linux).
|
||||||
|
|
||||||
2. **Install**:
|
2. **Install**:
|
||||||
@@ -65,7 +65,7 @@ Coop is built using Rust and GPUI. All Nostr related stuffs handled by [Rust Nos
|
|||||||
1. Clone the repository:
|
1. Clone the repository:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/lumehq/coop.git
|
git clone https://github.com/reyakov/coop.git
|
||||||
cd coop
|
cd coop
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ For more information, see the [Contributing](#contributing) section.
|
|||||||
- [Rust Nostr](https://github.com/rust-nostr/nostr/)
|
- [Rust Nostr](https://github.com/rust-nostr/nostr/)
|
||||||
- [GPUI](https://www.gpui.rs/)
|
- [GPUI](https://www.gpui.rs/)
|
||||||
- [GPUI Components](https://github.com/longbridge/gpui-component/)
|
- [GPUI Components](https://github.com/longbridge/gpui-component/)
|
||||||
- [Coop Issue Tracker](https://github.com/lumehq/coop/issues/)
|
- [Coop Issue Tracker](https://github.com/reyakov/coop/issues/)
|
||||||
|
|
||||||
### License
|
### License
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ product-name = "Coop"
|
|||||||
description = "Chat Freely, Stay Private on Nostr"
|
description = "Chat Freely, Stay Private on Nostr"
|
||||||
identifier = "su.reya.coop"
|
identifier = "su.reya.coop"
|
||||||
category = "SocialNetworking"
|
category = "SocialNetworking"
|
||||||
version = "1.0.0-beta3"
|
version = "1.0.0-beta4"
|
||||||
out-dir = "../dist"
|
out-dir = "../dist"
|
||||||
before-packaging-command = "cargo build --release"
|
before-packaging-command = "cargo build --release"
|
||||||
resources = ["Cargo.toml", "src"]
|
resources = ["Cargo.toml", "src"]
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "coop"
|
|
||||||
version.workspace = true
|
|
||||||
edition.workspace = true
|
|
||||||
publish.workspace = true
|
|
||||||
|
|
||||||
[[bin]]
|
|
||||||
name = "coop"
|
|
||||||
path = "src/main.rs"
|
|
||||||
|
|
||||||
[package.metadata.packager]
|
|
||||||
name = "Coop"
|
|
||||||
product-name = "Coop"
|
|
||||||
description = "Chat Freely, Stay Private on Nostr"
|
|
||||||
identifier = "su.reya.coop"
|
|
||||||
category = "SocialNetworking"
|
|
||||||
version = "1.0.0-beta3"
|
|
||||||
out-dir = "../dist"
|
|
||||||
before-packaging-command = "cargo build --release"
|
|
||||||
resources = ["Cargo.toml", "src"]
|
|
||||||
icons = [
|
|
||||||
"resources/32x32.png",
|
|
||||||
"resources/128x128.png",
|
|
||||||
"resources/128x128@2x.png",
|
|
||||||
"resources/icon.icns",
|
|
||||||
"resources/icon.ico",
|
|
||||||
]
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
assets = { path = "../crates/assets" }
|
|
||||||
ui = { path = "../crates/ui" }
|
|
||||||
title_bar = { path = "../crates/title_bar" }
|
|
||||||
theme = { path = "../crates/theme" }
|
|
||||||
common = { path = "../crates/common" }
|
|
||||||
state = { path = "../crates/state" }
|
|
||||||
device = { path = "../crates/device" }
|
|
||||||
chat = { path = "../crates/chat" }
|
|
||||||
chat_ui = { path = "../crates/chat_ui" }
|
|
||||||
settings = { path = "../crates/settings" }
|
|
||||||
auto_update = { path = "../crates/auto_update" }
|
|
||||||
person = { path = "../crates/person" }
|
|
||||||
relay_auth = { path = "../crates/relay_auth" }
|
|
||||||
|
|
||||||
gpui.workspace = true
|
|
||||||
gpui_platform.workspace = true
|
|
||||||
gpui_linux.workspace = true
|
|
||||||
gpui_windows.workspace = true
|
|
||||||
gpui_macos.workspace = true
|
|
||||||
gpui_tokio.workspace = true
|
|
||||||
reqwest_client.workspace = true
|
|
||||||
|
|
||||||
nostr-connect.workspace = true
|
|
||||||
nostr-sdk.workspace = true
|
|
||||||
|
|
||||||
anyhow.workspace = true
|
|
||||||
serde.workspace = true
|
|
||||||
serde_json.workspace = true
|
|
||||||
itertools.workspace = true
|
|
||||||
log.workspace = true
|
|
||||||
smallvec.workspace = true
|
|
||||||
smol.workspace = true
|
|
||||||
futures.workspace = true
|
|
||||||
oneshot.workspace = true
|
|
||||||
webbrowser.workspace = true
|
|
||||||
tracing-subscriber.workspace = true
|
|
||||||
|
|
||||||
indexset = "0.12.3"
|
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
|
||||||
# Temporary workaround https://github.com/zed-industries/zed/issues/47168
|
|
||||||
core-text = "=21.0.0"
|
|
||||||
Reference in New Issue
Block a user