Allow well-formed bread.command events on the emit bus

Docs already said any module or app could publish bread.command.<app>.<verb>,
but command is reserved so both unsourced bread-emit and sourced App emit
rejected the whole namespace. Keep command unclaimable as an app id; accept
bread.command.<known-app>.<verb> (and let an app command another known app).
Also ship bread-emit and bread-module-host, and give udev enumerate the same
classification fields as a live add so boot-time devices are not all unknown.
This commit is contained in:
Breadway 2026-08-15 21:41:40 +08:00
parent a6973360bd
commit d3517d1433
52 changed files with 26405 additions and 6811 deletions

View file

@ -42,10 +42,12 @@ return M
## Architecture
```
breadd/ Rust daemon — event pipeline, state engine, IPC, adapter supervision
bread-cli/ CLI frontend — talks to breadd over a Unix socket
bread-shared/ Shared types — RawEvent, BreadEvent, AdapterSource
packaging/ Arch PKGBUILD and systemd user service
breadd/ Rust daemon — event pipeline, state engine, IPC, adapter supervision
bread-cli/ CLI frontend — talks to breadd over a Unix socket
bread-emit/ Tiny fire-and-forget IPC emitter (hooks / command bus)
bread-module-host/ Out-of-process sandboxed Lua module runtime
bread-shared/ Shared types — RawEvent, BreadEvent, AdapterSource
packaging/ systemd user service unit (bakery installs this)
```
The daemon is structured in four layers:
@ -80,7 +82,7 @@ git clone https://git.breadway.dev/Breadway/bread.git
cd bread
```
Run the install script — it builds, symlinks `breadd` and `bread` into `~/.local/bin` (override with `BIN_DIR=…`), installs the systemd user service, and starts the daemon:
Run the install script — it builds, symlinks `breadd`, `bread`, `bread-emit`, and `bread-module-host` into `~/.local/bin` (override with `BIN_DIR=…`), installs the systemd user service, and starts the daemon:
```bash
bash scripts/install.sh
@ -92,13 +94,16 @@ Or step by step (system-wide install):
cargo build --release
sudo install -Dm755 target/release/breadd /usr/bin/breadd
sudo install -Dm755 target/release/bread /usr/bin/bread
sudo install -Dm755 target/release/bread-emit /usr/bin/bread-emit
sudo install -Dm755 target/release/bread-module-host /usr/bin/bread-module-host
```
### Arch Linux (PKGBUILD)
### Via bakery
Prebuilt binaries ship through `bakery` (the bread-ecosystem package manager), not a PKGBUILD / pacman package:
```bash
cd packaging/arch
makepkg -si
bakery install bread
```
### systemd user service