testing-combo-fallbacklisted
Install: claude install-skill quangdang46/openproxy
# Testing OpenProxy combo fallback + seeding the dashboard
This skill captures the non-obvious bits learned while E2E-testing the combo
fallback dispatch fix in `src/server/api/chat.rs` and unblanking the four
dashboard pages in PR #8. Most setup is straightforward; the gotchas below are
what actually consumed time.
## Stack layout (local)
- Rust BE on `127.0.0.1:4623` (serves `/api/*` and `/v1/*`).
- Astro dashboard on `127.0.0.1:4624` (sidecar; the BE also serves the built
dashboard at `/dashboard`, which is what most testing uses).
- Recommended: `npm run dev:stack` against an empty `DATA_DIR=/tmp/openproxy-e2e`.
Empty directory means a fresh `db.json` and a freshly-generated management API
key (printed to stdout).
For combo fallback specifically you also want a tiny mock OpenAI on a local port
that returns a canned `chat.completion`. A Python `http.server` BaseHTTPRequestHandler
emitting `{"id":"cmpl-mock-pass","choices":[{"message":{"content":"hello-from-pass"}}]}`
on `POST /v1/chat/completions` is enough.
## Toolchain prerequisites
The Rust BE uses crates that require **Rust 1.95.0** or newer (`hybrid-array` needs
`edition2024`). On a fresh box:
```
rustup update stable # 1.95.0+ as of April 2026
sudo apt-get install -y libssl-dev pkg-config # for openssl-sys
```
Astro dev needs an explicit host or it binds IPv6-only:
```
npx astro dev --port 4624 --host 127.0.0.1
```
## Auth: turn off `require_login` before scripted seeding
Default `db.json