chore: dev-stack switches, shared e2e harness, and desktop shell rules

- `LIVE_RELOAD=false npm run dev` keeps the renderer alive across a machine
  suspend; the reload client otherwise destroys the session under test.
- `dev-peer.sh` plus a separate userdata dir runs a second local peer.
- `tools/voice-probe.js` samples peer state and RTP counters from a live
  window, persisting to localStorage so a renderer reload cannot erase it.
- e2e helpers for voice pairs, peer-role election, and a TURN relay.
- Electron single-instance and dev-client-load decisions move into rules
  files with colocated specs.
This commit is contained in:
2026-08-14 03:19:29 +02:00
parent d71e3a98da
commit e49b3ec112
41 changed files with 35947 additions and 50 deletions
+129
View File
@@ -0,0 +1,129 @@
# 12 — Agent work packets (copy into new chats)
> Each packet is one new chat. Attach `@emergency-fix/00-README.md` plus the listed files.
> Say: **continue this packet; interview before implement; do not expand scope.**
---
## Packet A — Silent foreign auth
**Attach**
- `@emergency-fix/00-README.md`
- `@emergency-fix/04-auth-login-bugs.md`
- `@emergency-fix/11-fix-priority-plan.md` (Wave 1)
- `@agents-docs/user-stories/silent-cross-signal-server-auth.md`
**Goal:** Wave 1 — never show authorize login for normal foreign joins when home session is valid.
**Out of scope:** Voice negotiation, DM canonicalize, server password hashing changes.
**First message expectation:** Short interview (options AD from user story); wait.
---
## Packet B — Presence / identify-join
**Attach**
- `@emergency-fix/00-README.md`
- `@emergency-fix/05-signaling-multi-server.md`
- `@emergency-fix/08-messaging-visibility.md` (membership section)
- `@emergency-fix/11-fix-priority-plan.md` (Wave 2)
**Goal:** Mutual presence + live chat broadcast after connect/reconnect; foreign actor id on join.
**Depends:** Packet A ideally done (or mock credentials present).
**Out of scope:** Soft DC replace, TURN.
---
## Packet C — Outbound call + DM identity
**Attach**
- `@emergency-fix/00-README.md`
- `@emergency-fix/09-identity-cross-signal.md`
- `@emergency-fix/10-code-lies-doc-debt.md` (L2, L3)
- `@emergency-fix/11-fix-priority-plan.md` (Wave 3)
**Goal:** Routable outbound `targetUserId`; unreachable UX; single DM thread across aliases; fix phantom LESSON references when shipping.
**Out of scope:** Auth provision secret (Packet A); full voice ICE redesign.
**Note:** LESSONS claim these fixes already exist — **they do not**. Implement, dont search forever.
---
## Packet D — Voice initiator & routing
**Attach**
- `@emergency-fix/00-README.md`
- `@emergency-fix/06-voice-webrtc-bugs.md`
- `@emergency-fix/03-architecture-map.md`
- `@emergency-fix/11-fix-priority-plan.md` (Wave 4)
**Goal:** Cross-home bidirectional voice; per-signal actor initiator election; reconnect UX; TURN product decision.
**Depends:** A + B strongly; C helpful.
**Out of scope:** Rewriting entire PeerConnectionManager; server relay policy changes unless proven necessary (ask).
---
## Packet E — Data channel recovery
**Attach**
- `@emergency-fix/00-README.md`
- `@emergency-fix/07-data-channel-drops.md`
- `@emergency-fix/10-code-lies-doc-debt.md` (L1)
- `@emergency-fix/11-fix-priority-plan.md` (Wave 5)
**Goal:** Honest recovery (soft replace **or** documented full rebuild + UX + forced resync); docs match code.
**Interview required:** Option A vs B in `07`.
---
## Packet F — Messaging catch-up & attachments
**Attach**
- `@emergency-fix/00-README.md`
- `@emergency-fix/08-messaging-visibility.md`
- `@emergency-fix/11-fix-priority-plan.md` (Wave 6)
- Optional: `agents-docs/features/messaging.md`, `agents-docs/features/attachments.md`
**Goal:** Late-join history; attachment waiting stuck fixed under reorder; README inventory cap corrected.
**Depends:** B + E.
---
## Packet G — Doc debt sweep
**Attach**
- `@emergency-fix/10-code-lies-doc-debt.md`
- `@emergency-fix/11-fix-priority-plan.md` (Wave 7)
**Goal:** Clear remaining L5L7 and any lies left after AF; no behavior changes unless a one-line comment/doc only.
---
## Handoff one-liner templates
After finishing a packet, overwrite `agents-docs/HANDOFF.md` and ask the user to start a new chat with:
```text
Continue from @agents-docs/HANDOFF.md and @emergency-fix/11-fix-priority-plan.md — next unchecked wave only.
```
Or jump packets:
```text
Start @emergency-fix/12-agent-work-packets.md Packet C — interview before implement.
```