cli + misc build stuff. Yes im testing in prod.
This commit is contained in:
12 files changed
+370
-29
No files matched your search
@@ -0,0 +1,12 @@
|
||||
# Completion Checklist
|
||||
|
||||
Before handing back code changes, run the smallest checks covering the changed area:
|
||||
- Rust formatting: `cargo fmt`.
|
||||
- For control-plane SQLx/state/API work: `cargo test -p wakey-control-plane` and `SQLX_OFFLINE=true cargo test -p wakey-control-plane`.
|
||||
- For SQLx query macro changes: run `scripts/prepare_sqlx_sqlite.sh` and include the `.sqlx` metadata changes.
|
||||
- For wakey-linux/core inventory/observation work: `cargo test -p wakey-linux -p wakey-core`.
|
||||
- For agent session/config/protocol work: `cargo test -p wakey-agent`.
|
||||
- For UI work: `pnpm --dir ui typecheck` and `pnpm --dir ui build`; use `pnpm --dir ui format` when touching TS/TSX/CSS formatting.
|
||||
- Run relevant `cargo clippy -p <crate> --all-targets --all-features` when behavior or API shape changes.
|
||||
|
||||
Always check `git status --short` and mention unrelated dirty files or generated metadata in the final summary.
|
||||
@@ -0,0 +1,14 @@
|
||||
# Wakey Project Overview
|
||||
|
||||
Wakey is a Wake-on-LAN and LAN observability workspace for Linux/OpenWrt routers. It includes:
|
||||
- `wakey-core`: shared model and parsing types for devices, neighbors, DHCP, interfaces, wake results.
|
||||
- `wakey-linux`: Linux/OpenWrt adapter layer for DHCP lease files, neighbor lookup, interface data, WoL sending, and local observation storage.
|
||||
- root `wakey` crate: service layer and operator CLI for inventory, leases, devs, wake, and observe.
|
||||
- `wakey-agent`: outbound router daemon. Enrolls with control plane, maintains authenticated websocket, executes relayed commands, syncs observations.
|
||||
- `wakey-control-plane`: Axum control plane, SQLx SQLite state, agent registry, command relay, known devices, observations, audit/alerts, fleet APIs, static UI hosting.
|
||||
- `ipjs`: typed wrappers around Linux `ip -j` data.
|
||||
- `ui`: React/Vite operator UI using shadcn/base-ui style components.
|
||||
|
||||
Current persistence direction: control plane uses SQLx SQLite with migrations in `wakey-control-plane/migrations` and offline query metadata in `.sqlx` plus `wakey-control-plane/.sqlx`. Legacy sled import exists as explicit command.
|
||||
|
||||
Current product direction: fleet-first device UI and backend. Known device identity is manual. Observations/inventory provide suggestions/current state but should not automatically promote or delete durable identifiers.
|
||||
@@ -0,0 +1,23 @@
|
||||
# Style And Conventions
|
||||
|
||||
Rust:
|
||||
- Edition 2024.
|
||||
- Prefer explicit, small service/API functions over large abstractions.
|
||||
- Use `anyhow::Context` for fallible operations in application layers.
|
||||
- Use `tracing` for logs.
|
||||
- Shared domain types live in `wakey-core`; Linux/OpenWrt I/O in `wakey-linux`; root crate owns service/CLI behavior; agent/control-plane should reuse service/domain types where possible.
|
||||
- SQLx query macros are used in control-plane state. Regenerate `.sqlx` metadata after query string changes.
|
||||
- Device identity is manual: observations and inventory may suggest, but should not silently pin, merge, promote, or delete known identifiers.
|
||||
- Hotplug observation actions should stay event-shaped (`add`, `update`, `remove`). Do not store NUD state as the action. NUD belongs to live neighbor/inventory data.
|
||||
|
||||
Frontend:
|
||||
- React + Vite + TypeScript.
|
||||
- Use existing component/style conventions; shadcn/base-ui/lucide are available.
|
||||
- Main operator UI is fleet-first: common path is find device, inspect current IP/MAC/agent, wake, copy, remember/merge.
|
||||
- Admin/debug pages stay available but should not dominate the primary nav.
|
||||
|
||||
Editing:
|
||||
- Keep changes scoped.
|
||||
- Preserve user edits in dirty worktrees.
|
||||
- Use `apply_patch` for manual file edits.
|
||||
- Default to ASCII unless files already use non-ASCII for a reason.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Suggested Commands
|
||||
|
||||
Rust formatting and checks:
|
||||
- `cargo fmt`
|
||||
- `cargo test -p wakey-control-plane`
|
||||
- `SQLX_OFFLINE=true cargo test -p wakey-control-plane`
|
||||
- `cargo test -p wakey-linux -p wakey-core`
|
||||
- `cargo test -p wakey-agent` (may need elevated permissions if tests bind local sockets)
|
||||
- `cargo clippy -p wakey-control-plane --all-targets --all-features`
|
||||
- `cargo clippy -p wakey-linux -p wakey-core --all-targets --all-features`
|
||||
|
||||
SQLx metadata after query macro changes:
|
||||
- `scripts/prepare_sqlx_sqlite.sh`
|
||||
|
||||
UI checks:
|
||||
- `pnpm --dir ui typecheck`
|
||||
- `pnpm --dir ui build`
|
||||
- `pnpm --dir ui format`
|
||||
|
||||
Local run examples:
|
||||
- `cargo run -- inventory <query>`
|
||||
- `cargo run -- leases`
|
||||
- `cargo run -- devs`
|
||||
- `cargo run -- wake --mac aa:bb:cc:dd:ee:ff`
|
||||
- `cargo run -p wakey-agent -- serve --config /etc/wakey-agent/config.toml`
|
||||
- `cargo run -p wakey-control-plane -- serve --config-file /etc/wakey-control-plane/config.toml`
|
||||
|
||||
Useful shell tools:
|
||||
- Prefer `rg` and `rg --files` for search.
|
||||
- Use `git status --short`, `git diff --stat`, and focused `git diff -- <path>` before edits.
|
||||
- Avoid destructive git commands unless explicitly requested.
|
||||
Reference in new issue
Block a user