cd server
python -m pip install -e ".[dev]"
pytest -q
ruff check app tests
mypy appFrom repo root:
docker compose -f infra/docker-compose.yml up --buildOptional Redis mode:
docker compose -f infra/docker-compose.yml -f infra/docker-compose.redis.yml up --buildCheck these:
http://localhost:8000/health/live
http://localhost:8000/health/ready
Open two PowerShell terminals from repo root. Terminal A (Alice):
python -m tools.reference_client.cli register alice password123
python -m tools.reference_client.cli device-init laptopTerminal B (Bob):
python -m tools.reference_client.cli --state bob.json register bob password123
python -m tools.reference_client.cli --state bob.json device-init phone
python -m tools.reference_client.cli --state bob.json open-wsTerminal A
python -m tools.reference_client.cli send bob "hello from alice"Stop Bob’s open-ws. Send again from Alice. Restart Bob websocket:
python -m tools.reference_client.cli --state bob.json open-ws --onceBuilding and verifing build:
cd client-cpp-gui
.\scripts\bootstrap-windows.ps1
.\scripts\build.ps1 -Config Debug
.\scripts\test.ps1 -Config DebugLaunch Blackwire
.\scripts\run.ps1 -Config DebugPackage Blackwire
.\scripts\package-release.ps1Zip here: client-cpp-gui\dist
For full end-to-end (with server running):
.\scripts\smoke-e2e.ps1 -BaseUrl http://localhost:8000Run once:
cd C:\projects\_other\Blackwire\client-cpp-gui
.\scripts\build.ps1 -Config ReleaseOpen Terminal A:
./scripts/run.ps1 -Config Release -Profile aliceOpen Terminal B:
./scripts/run.ps1 -Config Release -Profile bobdocker compose -f infra/docker-compose.yml down -v --remove-orphans
docker compose -f infra/docker-compose.yml up --build -d