The demo now uses npm link to use the local client development version
instead of the published package from npm registry.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Completely rewrite App.jsx as focused chat application
- Add contact management with localStorage persistence
- Add online status detection (checks every 10s for chat.rondevu@1.0.0 service)
- Implement pooled chat service (poolSize: 10) for multiple simultaneous connections
- Add real-time P2P messaging with unique connection IDs
- Add message history per contact with auto-scrolling
- Implement identification handshake protocol for connection tracking
- Apply dark theme (#1a1a1a background, #2a2a2a cards, #4a9eff accents)
- Remove all emojis from UI elements
- Update client dependency to ^0.8.0
- Add connection status indicators
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changed discover page to fetch and display real topics from the API:
- Added fetchTopics() to call client.offers.getTopics()
- Display actual topic names and active peer counts
- Added loading, error, and empty states
- Added refresh button to reload topics
- Improved UX with better error handling
Updated to @xtr-dev/rondevu-client@0.7.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed answerer authorization for ICE candidates:
- Answer is now sent to server BEFORE setLocalDescription
- This ensures answererPeerId is registered before ICE candidates arrive
- Fixes 403 Forbidden errors when answerer sends candidates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Critical fix for ICE candidate timing bug:
- ICE handler now set up BEFORE setLocalDescription
- Ensures all ICE candidates are captured and sent to server
- Fixes connection failures where peers received 0 candidates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated to latest client version with:
- addEventListener/removeEventListener instead of .on* properties
- Extracted duplicate ICE handler code to base PeerState class
- Proper event listener cleanup to prevent memory leaks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Includes proper trickle ICE support:
- Offers/answers sent immediately (no waiting for ICE)
- Answering state now takes ~50-200ms instead of 15+ seconds
- ICE candidates trickle in as they're discovered
- Faster connection establishment
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixes timeout issue where answerer would fail when ICE gathering
took close to the timeout duration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Critical bug fix: ICE candidates were being missed on first poll,
causing connections to fail. Updated to v0.4.1 which fixes this.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace manual RTCPeerConnection handling with RondevuConnection class
- Add react-hot-toast for better UX (replace browser alerts)
- Add TURN server configuration (relay1.expressturn.com:3480)
- Update README to reflect current demo structure
- Link local client library for latest features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove topic selection and peer discovery UI
- Remove MethodSelector and TopicsList components
- Simplify ConnectionForm to just take a connection ID
- Update to use @xtr-dev/rondevu-client@0.3.2
- Demo version: 0.3.2
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated from 0.1.1 to 0.3.1 to support rdv.api property
- Fixes "t.api is undefined" error in TopicsList component
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update @xtr-dev/rondevu-client dependency to ^0.1.0
- New version supports global option for connect() method
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update @xtr-dev/rondevu-client dependency to ^0.0.5
- New version includes default baseUrl and origin override support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add file sharing with chunked transfer over data channel
- Display file messages with download button
- Add QR code generation for connection sharing
- Add QR scanner for easy connection joining
- Update UI with file button and scan option
- Add responsive CSS styling for new features
Changed @xtr-dev/rondevu-client from "file:../client" to "^0.0.3"
to fix deployment build error.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Step-based flow: Choose action → Choose method → Enter details → Chat
- Modern design with clean header and footer
- GitHub links with icons to client and server repos
- Footer link to ronde.vu
- Three connection methods: Topic, Peer ID, Connection ID
- Real WebRTC peer-to-peer chat
- Mobile-responsive design
- Collapsible activity log
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>