Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
77920b6
feat: Add auto-start and system tray functionality (WIP)
Feb 6, 2026
2aa376d
Merge main into feature/autostart-system-tray
Feb 6, 2026
7a1ee9a
fix: Resolve compilation errors after merge
Feb 6, 2026
fed9391
feat: Simplify system tray and fix startup settings UI
Feb 6, 2026
b0fa549
fix: Add extensive logging for startup settings debugging
Feb 6, 2026
3cb8e98
fix: Only update auto-launch when value changes and fix switch visibi…
Feb 6, 2026
4f76075
fix: Improve switch visibility with solid gray colors
Feb 6, 2026
22e5f36
fix: Explicitly set tray icon to improve visibility
Feb 6, 2026
a02c654
test: Add comprehensive tests for auto-start and system tray
Feb 6, 2026
52ec9de
refactor: Move desktop-specific E2E tests to WebdriverIO
Feb 6, 2026
ccfc890
ci: Add pre-commit hooks for Rust and TypeScript validation
Feb 6, 2026
da3d861
chore: adds githooks
Feb 6, 2026
930d08d
ci: Add Clippy to pre-commit hooks and fix linting issues
Feb 6, 2026
c8c815c
ci: Add pnpm lint to pre-commit hooks
Feb 6, 2026
7c24f61
fix: Auto-update system tray menu when spaces change
Feb 6, 2026
6e34ae4
docs: Clarify tray update logic and success conditions
Feb 6, 2026
0cbaed6
fix: Skip Tauri-dependent tests in web E2E and add signing password t…
Feb 6, 2026
754d48d
fix: Resolve Linux AppImage bundling failure in CI
Feb 6, 2026
913673f
fix: Exclude AppImage from Linux builds to prevent CI failures
Feb 6, 2026
2ea1d70
fix: Use pnpm --filter to run Tauri CLI in correct package context
Feb 6, 2026
9ce9cb9
fix: Add Wayland runtime libraries for Linux E2E tests
Feb 6, 2026
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
87 changes: 87 additions & 0 deletions .github/GIT_HOOKS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Git Hooks

This project uses Git hooks to maintain code quality and prevent CI failures.

## Pre-commit Hook

The pre-commit hook automatically runs before each commit to validate:

### ✅ **Rust Validation**
- Formats Rust code with `cargo fmt`
- Runs `cargo clippy --workspace -- -D warnings` to catch linting issues
- Runs `cargo check --workspace` to verify compilation
- Automatically adds formatted files to the commit

### ✅ **TypeScript Validation**
- Runs `pnpm lint` to check code style and catch common errors
- Runs `pnpm typecheck` to verify type correctness
- Checks all TypeScript files in the workspace

## Setup

The hook is automatically set up when you:
1. Clone the repository
2. Run `pnpm install` (triggers `prepare` script)

### Manual Setup

If the hook isn't working, run:

```bash
# Make hook executable (Linux/Mac)
chmod +x .git/hooks/pre-commit

# Windows (PowerShell)
icacls ".git\hooks\pre-commit" /grant Everyone:RX
```

## Testing the Hook

To test the validation without committing:

```bash
# Run both checks
pnpm validate

# Or individually
cargo clippy --workspace -- -D warnings
cargo check --workspace
pnpm lint
pnpm typecheck
```

## Bypassing the Hook (Not Recommended)

In rare cases where you need to bypass validation:

```bash
git commit --no-verify -m "your message"
```

**Note**: Only use `--no-verify` when absolutely necessary, as it skips important validations that prevent CI failures.

## Troubleshooting

### Hook not running
- Ensure `.git/hooks/pre-commit` exists
- Check it's executable: `ls -la .git/hooks/pre-commit`
- Try manual setup commands above

### Hook fails on Windows
- The hook uses bash scripting (requires Git Bash or WSL)
- Alternatively, use the PowerShell version: `.git/hooks/pre-commit.ps1`
- Configure Git to use PowerShell hooks:
```powershell
git config core.hooksPath .git/hooks
```

### Slow validation
- The hook only validates files in your commit (staged changes)
- If you have many Rust crates, consider using `cargo check -p <crate-name>`
- TypeScript check runs on entire workspace (necessary for type consistency)

## CI Integration

These same checks run in CI:
- GitHub Actions runs `cargo check` and `pnpm typecheck`
- Pre-commit hooks help catch issues early before pushing
8 changes: 4 additions & 4 deletions .github/actions/install-linux-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ runs:
- name: Cache apt packages (base)
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: build-essential pkg-config libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
version: 1.0
packages: build-essential pkg-config libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev libfuse2
version: 1.1

- name: Cache apt packages (E2E)
if: ${{ inputs.e2e == 'true' }}
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: webkit2gtk-driver xvfb gnome-keyring gsettings-desktop-schemas dbus-x11 at-spi2-core libglib2.0-bin
version: 1.2
packages: webkit2gtk-driver xvfb gnome-keyring gsettings-desktop-schemas dbus-x11 at-spi2-core libglib2.0-bin libwayland-server0 libwayland-client0
version: 1.3

# Compile gsettings schemas (required after restore from cache)
- name: Compile gsettings schemas
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ jobs:
- run: pnpm build
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}

# ─────────────────────────────────────────────────────────────
# Test Results Report (separate checks per test type and OS)
Expand Down
15 changes: 13 additions & 2 deletions .github/workflows/e2e-desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ on:
secrets:
TAURI_SIGNING_PRIVATE_KEY:
required: false
TAURI_SIGNING_PRIVATE_KEY_PASSWORD:
required: false

env:
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
Expand Down Expand Up @@ -95,11 +97,20 @@ jobs:

- run: pnpm install --frozen-lockfile

- name: Build app
run: pnpm build
- name: Build app (Linux)
if: matrix.os == 'ubuntu-latest'
run: pnpm --filter @mcpmux/desktop exec tauri build --bundles deb,rpm,updater
env:
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}

- name: Build app (Windows)
if: matrix.os == 'windows-latest'
run: pnpm build
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}

- name: Run desktop E2E tests (Linux)
if: matrix.os == 'ubuntu-latest'
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ jobs:
- run: pnpm build
env:
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

- name: Upload artifacts
Expand Down
117 changes: 112 additions & 5 deletions Cargo.lock

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

Loading