-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathjustfile
More file actions
88 lines (66 loc) · 2.81 KB
/
Copy pathjustfile
File metadata and controls
88 lines (66 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Mesh desktop — everything a dev needs to try it out.
# node + just are pinned via hermit in ./bin; Rust comes from your rustup (≥1.91.1).
export PATH := justfile_directory() + "/bin:" + env_var('PATH')
# List available recipes
default:
@just --list --unsorted
# One-time setup: UI deps + Playwright browser
setup:
npm --prefix ui install
npm --prefix ui exec -- playwright install chromium
# Build the UI and open the native desktop app — the "try it out" command
run: ui-build
cargo run --bin mesh-console
# Hardware scan + model recommendation for this machine, as JSON
diagnose:
cargo run --bin mesh-consoled -- --diagnose
# ── dev loop ──────────────────────────────────────────────────────────
# Backend daemon on fixed dev ports (app 4640 · api 9337 · console 3131)
backend:
cargo run --bin mesh-consoled
# Frontend dev server with HMR on :5173 (run `just backend` in another terminal)
ui-dev:
npm --prefix ui run dev
# Build the production frontend bundle (served by the backend via rust-embed)
ui-build:
npm --prefix ui run build
# ── quality gates ─────────────────────────────────────────────────────
# Format everything (rustfmt + prettier)
fmt:
cargo fmt
npm --prefix ui run format
# Check formatting without writing
fmt-check:
cargo fmt --check
npm --prefix ui run format:check
# Lint everything (clippy -D warnings, eslint, tsc)
lint:
cargo clippy --all-targets -- -D warnings
npm --prefix ui run lint
npm --prefix ui run typecheck
# Rust unit tests
test:
cargo test -p mesh-console --lib
# Mocked-backend Playwright suite (fast; no model, no network)
test-e2e: ui-build
npm --prefix ui run test:e2e
# Real end-to-end: real node, real model, real cross-node chat (~30s warm; first run downloads Qwen3-0.6B ~400MB)
test-e2e-real: ui-build
cargo build --bin mesh-consoled
./scripts/run-real-e2e.sh
# The full pre-PR gate
check: fmt-check lint test test-e2e
# ── packaging ─────────────────────────────────────────────────────────
# Package Mesh.app (ad-hoc signed) → target/release/bundle/macos/Mesh.app
bundle:
./ui/node_modules/.bin/tauri build
# Signed + notarized Mesh.app + .dmg (Developer ID). Needs APPLE_* env vars.
release:
./scripts/release-macos.sh
# Signed but NOT notarized (fast local check of the signing path)
release-signed-only:
SKIP_NOTARIZE=1 ./scripts/release-macos.sh
# Remove build artifacts
clean:
cargo clean
rm -rf ui/dist ui/test-results ui/playwright-report