Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 33 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,40 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Install Linux desktop dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev \
patchelf

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache Rust build
uses: Swatinem/rust-cache@v2

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
cache-dependency-path: apps/desktop/pnpm-lock.yaml

- name: Install frontend dependencies
run: pnpm -C apps/desktop install --frozen-lockfile

- name: Build frontend
run: pnpm -C apps/desktop build

- name: Run Rust tests
run: cargo test --workspace

Expand Down Expand Up @@ -75,7 +103,7 @@ jobs:
libappindicator3-dev \
librsvg2-dev \
patchelf \
webkitgtk-webdriver \
webkit2gtk-driver \
xvfb

- name: Install Rust toolchain
Expand All @@ -99,11 +127,14 @@ jobs:
- name: Install JS dependencies
run: pnpm install --frozen-lockfile

- name: Install e2e dependencies
run: pnpm --dir e2e install --frozen-lockfile

- name: Install tauri-driver
run: cargo install tauri-driver --locked

- name: Verify WebKit WebDriver
run: which WebKitWebDriver
run: which WebKitWebDriver || which webkit2gtk-driver || dpkg -L webkit2gtk-driver | grep bin

- name: Run desktop E2E
run: pnpm test:e2e
118 changes: 118 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ tauri-build = { version = "2", features = [] }
tauri-plugin-opener = "2"
tauri-plugin-dialog = "2"

# CLI
clap = { version = "4", features = ["derive"] }

# Error handling / logging
anyhow = "1"
thiserror = "2"
Expand All @@ -48,6 +51,8 @@ sysinfo = "0.32"

# Async
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "fs", "process", "io-util"] }
ureq = "2"
dirs = "6"

# Filesystem watching
notify = "7"
Expand Down
38 changes: 27 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,28 @@ Additional crates (`opencherry_inject`, `opencherry_commit_msg`,

## Development

### System dependencies (Ubuntu 24.04+)
### Quick Start (Recommended)

The easiest way to set up the project is using the provided setup script and `just` task runner.

1. **Install all dependencies:**
```bash
./scripts/setup.sh
```

2. **Run the app:**
```bash
just dev
```

3. **Run tests:**
```bash
just test
```

### Manual Setup

#### System dependencies (Ubuntu 24.04+)

```bash
sudo apt install libwebkit2gtk-4.1-dev \
Expand All @@ -109,28 +130,23 @@ sudo apt install libwebkit2gtk-4.1-dev \
libayatana-appindicator3-dev
```

### Toolchain
#### Toolchain

- Rust stable (1.80+)
- Node.js 20+
- pnpm 9+

### Run dev shell
#### Run dev shell

```bash
cd apps/desktop
pnpm install
pnpm tauri dev
pnpm -C apps/desktop install
pnpm -C apps/desktop tauri dev
```

### Validate

```bash
cargo check --workspace
cargo test --workspace
pnpm -C apps/desktop test
pnpm -C apps/desktop build
pnpm -C apps/desktop test:e2e
just check
```

## Packaging & local install
Expand Down
2 changes: 2 additions & 0 deletions apps/desktop/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ thiserror = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
tokio = { workspace = true }
clap = { workspace = true }
dirs = "6"

[features]
default = ["custom-protocol"]
Expand Down
Loading
Loading