diff --git a/docs/superpowers/plans/2026-07-09-tor-enhancement-phase1.md b/docs/superpowers/plans/2026-07-09-tor-enhancement-phase1.md index f8d86654..2a4ed65b 100644 --- a/docs/superpowers/plans/2026-07-09-tor-enhancement-phase1.md +++ b/docs/superpowers/plans/2026-07-09-tor-enhancement-phase1.md @@ -294,7 +294,9 @@ Endpoints write the state files (dedup, one entry per line), `_audit(...)` to `/ - [ ] **Step 4: Run tests → PASS.** -- [ ] **Step 5: Commit** — `feat(toolbox): exit-country + Tor-VPN-client API (validated, audited, reconcile-triggered)`. +- [ ] **Step 4b: Bridges endpoints** — also add `GET /tor/bridges`, `POST /tor/bridge {line}`, `DELETE /tor/bridge {line}` writing `/etc/secubox/toolbox/tor-bridges.txt` (validate each line starts `Bridge obfs4 ` with a safe charset, reject else 400), audited + reconcile-triggered. Same validator style as the selectors. + +- [ ] **Step 5: Commit** — `feat(toolbox): exit-country + Tor-VPN-client + obfs4-bridge API (validated, audited, reconcile-triggered)`. --- @@ -384,6 +386,7 @@ def test_hidden_services_autodiscovers_onion(monkeypatch, tmp_path): - **Tor-VPN clients** table: add selector (kind ip/cidr/mac + value, client-validated) → `POST …/vpn/client`; per-row remove; shows routed state. - **Emancipate** button ("Publish this dashboard as a .onion") → `POST …/emancipate_webui`; shows the resulting `.onion` with copy. - **Hidden services** list from `/hidden_services` (auto-detected) + **.onion-DNS status** from `/onion_dns`. + - **obfs4 bridges** panel: paste/add a `Bridge obfs4 …` line, list, remove (`/tor/bridges`, `/tor/bridge`); a short hint on where to get bridges (Tor Browser moat / BridgeDB). - Robustness (mirror nextcloud/openclaw dashboards): `esc()` every rendered `.onion`/country/selector; `data-*`+delegated listeners (no `onclick="${…}"`); `sbx_token` auth; fail-safe fetch, 401→login. - [ ] **Step 2: Validate** — extract inline `