Commit Graph

13 Commits

Author SHA1 Message Date
685692dee1 Add topics endpoint and refactor to topic-based discovery
- Add GET /topics endpoint with pagination and peer counts
- Refactor offers to support multiple topics per offer
- Add stateless authentication with AES-256-GCM
- Add bloom filter support for peer exclusion
- Update database schema for topic-based discovery
- Add comprehensive API documentation to README

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 18:31:17 +01:00
377d12b820 Add /leave endpoint to end sessions
- Add POST /leave endpoint that deletes offers by code
- Allows either peer to end the session
- Returns success confirmation

This enables proper session cleanup when either peer
wants to explicitly end the connection.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 00:05:30 +01:00
8a94b661a8 Remove origin-based session bucketing
- Remove origin column from offers table
- Remove getOrigin() function and X-Rondevu-Global header support
- Simplify all storage methods to use only offer code
- Add migration 0003_remove_origin.sql
- Update error messages to remove "origin mismatch" wording

This simplifies the system by removing origin-based isolation.
All offers are now identified solely by their unique code/ID.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 23:59:03 +01:00
28ef5eb1d1 Simplify API: remove topics, rename session→offer
- Remove topic-based grouping and discovery
- Rename sessions to offers for clarity
- Simplify to just POST /offer, POST /answer, POST /poll
- Add version to health endpoint
- Update database schema (sessions→offers table)
- Reduce offer timeout to 1 minute
- Server version: 0.0.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 23:17:38 +01:00
84c60320fa Add proper error handling for session ID clashes
Return 409 Conflict status when user-provided connection ID already exists, instead of generic 500 error.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-12 22:42:43 +01:00
bc147f4527 Fix TypeScript error: use cleanupExpiredSessions() method
- Replace direct db access with the public cleanupExpiredSessions() method
- This fixes the TS2341 error about private property access
- Also improves logging to show count of deleted sessions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:46:35 +01:00
8cb56142cd Fix Cloudflare Worker compatibility for version endpoint
- Add version parameter to AppConfig interface
- Pass version from environment config instead of using process.env
- Update worker.ts to pass VERSION environment variable
- Update wrangler.toml with VERSION variable
- Update deploy script to automatically set VERSION to git commit hash

This fixes the 'process is not defined' error in Cloudflare Workers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:45:41 +01:00
d4aefb93b0 Move / endpoint to /topics and add version endpoint
- Move GET / to GET /topics for listing topics
- Add new GET / endpoint that returns server version (git commit hash)
- Update build.js to inject git commit hash as RONDEVU_VERSION
- Update API documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:34:54 +01:00
f9aa4b486d Add support for global origin via X-Rondevu-Global header
- Add getOrigin() helper function to check for X-Rondevu-Global header
- When X-Rondevu-Global: true, use https://ronde.vu as origin for session isolation
- Update all endpoints to use getOrigin() instead of reading Origin header directly
- Add X-Rondevu-Global to CORS allowed headers
- This enables browser clients to connect to global sessions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 23:50:47 +01:00
5d8a432de0 Add scheduled handler for cron-based session cleanup
- Implements scheduled() function to handle cron triggers
- Cleans up expired sessions every 5 minutes
- Fixes 'Handler does not export a scheduled() function' error
- Deletes sessions where expires_at < current timestamp
2025-11-07 23:00:58 +01:00
02d460fa7e Replace KV storage with D1, add peer_id field, simplify README
Storage changes:
- Remove KV storage adapter
- Add D1 storage adapter for Cloudflare Workers
- Update schema to use peer_id instead of info field
- Add database migrations for D1

Documentation:
- Simplify README to be more concise
- Update deployment instructions for D1
- Add D1_SETUP.md explaining migration from KV
- Update DEPLOYMENT.md with D1 setup steps

API changes:
- Replace info field with peerId in session creation
- Update all storage interfaces and implementations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 21:21:13 +01:00
d993d6dbfc Fix CORS configuration for Cloudflare Workers
Fixed CORS issue where 'Access-Control-Allow-Origin' header was missing.

The problem was that using `origin: '*'` with `credentials: true` is not
allowed by browsers. Changed to use a dynamic origin function that returns
the actual requesting origin, which is compatible with credentials mode.

Changes:
- Use dynamic origin function instead of static array
- Return requesting origin for wildcard (*) configuration
- Added 'Origin' to allowHeaders list
- Maintains compatibility with specific origin restrictions

This fixes CORS errors in browser-based clients.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 15:10:41 +01:00
82c0e8b065 Initial commit: Rondevu signaling server
Open signaling and tracking server for peer discovery in distributed P2P applications.

Features:
- REST API for WebRTC peer discovery and signaling
- Origin-based session isolation
- Multiple storage backends (SQLite, in-memory, Cloudflare KV)
- Docker and Cloudflare Workers deployment support
- Automatic session cleanup and expiration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-02 14:32:25 +01:00