# OpenSpeak Changes Index

Index of all proposed changes for OpenSpeak project using OpenSpec format.

## Proposed Changes

### 1. Add Voice Communication System

**Change ID:** `add-voice-communication`
**Status:** Proposed
**Priority:** Critical (MVP)
**Target:** v0.1.0

**What:** Real-time voice packet capture, encoding, transmission, and playback

**Files:**
- `changes/add-voice-communication/proposal.md` - Overview and timeline
- `changes/add-voice-communication/tasks.md` - Implementation tasks
- `changes/add-voice-communication/voice.md` - Detailed requirements with scenarios

**Key Requirements:**
- Audio capture at 48kHz, 16-bit mono, 20ms frames
- Opus encoding at 64kbps (configurable 8-128kbps)
- Server broadcast model to channel members
- <100ms round-trip latency target
- Handles 10+ concurrent speakers
- <5% CPU per stream, <50MB memory

**Dependencies:** Channel Management, Authentication, Presence, Server Core

---

### 2. Add Authentication & Authorization System

**Change ID:** `add-authentication`
**Status:** Proposed
**Priority:** Critical (MVP)
**Target:** v0.1.0

**What:** Admin token-based authentication with permission controls

**Files:**
- `changes/add-authentication/proposal.md` - Overview
- `changes/add-authentication/tasks.md` - Implementation tasks
- `changes/add-authentication/authentication.md` - Requirements with scenarios

**Key Requirements:**
- Admin tokens for MVP phase
- Token validation on all gRPC requests
- Role-based permission model (admin, user)
- Secure token storage and handling
- Future: User accounts with password auth

**Phases:**
1. Admin token authentication (MVP)
2. User account system (future)

---

### 3. Add Channel Management System

**Change ID:** `add-channel-management`
**Status:** Proposed
**Priority:** Critical (MVP)
**Target:** v0.1.0

**What:** Voice channel creation, joining, and management

**Files:**
- `changes/add-channel-management/proposal.md` - Overview
- `changes/add-channel-management/tasks.md` - Implementation tasks
- `changes/add-channel-management/channel.md` - Requirements with scenarios

**Key Requirements:**
- Create channels with unique names
- Public/private access control
- User capacity limits
- Channel member tracking
- Real-time channel event broadcasts
- Join/leave operations

**Capabilities:**
- Create with validation
- Join with permission checks
- Leave with cleanup
- List members with presence
- Enforce capacity limits
- Broadcast events

---

### 4. Add User Presence Tracking

**Change ID:** `add-presence-tracking`
**Status:** Proposed
**Priority:** High (MVP)
**Target:** v0.1.0

**What:** Online status, session management, and real-time presence updates

**Files:**
- `changes/add-presence-tracking/proposal.md` - Overview
- `changes/add-presence-tracking/tasks.md` - Implementation tasks
- `changes/add-presence-tracking/presence.md` - Requirements with scenarios

**Key Requirements:**
- Track user sessions and online status
- Status types: ONLINE, IDLE, OFFLINE (future: DND, AWAY)
- Idle detection after 5 minutes
- Channel membership tracking
- Microphone/speaker mute state tracking
- Real-time event broadcasting

**Capabilities:**
- Session lifecycle management
- Status transitions
- Idle detection and recovery
- Online user list
- Channel member presence
- Mute state tracking

---

## How to Use These Proposals

### For Review
1. Read `proposal.md` for overview and success criteria
2. Review corresponding spec delta (e.g., `voice.md`) for detailed requirements
3. Check `tasks.md` for implementation tasks

### For Implementation
1. Get proposal approved by team
2. Track tasks from `tasks.md` as TODOs
3. Reference spec delta for detailed requirements and scenarios
4. Tests pass when all scenarios pass

### For Validation
```bash
# Validate proposals
openspec validate add-voice-communication --strict
openspec validate add-authentication --strict
openspec validate add-channel-management --strict
openspec validate add-presence-tracking --strict

# Validate all
openspec validate --strict
```

## Dependencies & Order

**Recommended Implementation Order:**

1. **add-authentication** (Foundation - everything needs auth)
   - ├─ Depends on: Server Core (gRPC interceptors)
   - └─ Required by: All other systems

2. **add-channel-management** (Core - where voice happens)
   - ├─ Depends on: Authentication
   - └─ Required by: Voice, Presence

3. **add-presence-tracking** (Supporting - visibility)
   - ├─ Depends on: Authentication, Channel Management
   - └─ Helps: Voice communication coordination

4. **add-voice-communication** (Primary feature)
   - ├─ Depends on: All above + Server Core
   - └─ Brings: Core value to users

## Summary

**Total Proposals:** 4
**Total Tasks:** ~30
**Estimated LOC:** 5,000-10,000
**Target Release:** v0.1.0 (MVP)

These four proposals cover the core functionality needed for OpenSpeak MVP:
- ✅ User authentication and access control
- ✅ Organize users into channels
- ✅ Track who's online and where
- ✅ Real-time voice communication

## Next Steps

1. Review each proposal with team
2. Validate proposals: `openspec validate <change-id>`
3. Get approval for implementation
4. Create branches: `git checkout -b add-<feature>`
5. Track tasks and implement according to spec delta requirements
6. Reference scenarios for test cases
7. Validate implementation against requirements

---

**Note:** All proposals are in Proposed status. Implement in phases:
- Phase 1 (Week 1-2): Authentication foundation
- Phase 2 (Week 2-3): Channels and presence
- Phase 3 (Week 3-4): Voice communication (core feature)
