6 Commits

Author SHA1 Message Date
b5cdc1ef14 Bump to 0.5.4: Fix service discovery parameter bug 2025-12-14 22:02:33 +01:00
8752cd9751 Fix service discovery bug: Use parsed.serviceName instead of parsed.service
Bug: getService() was accessing parsed.service (undefined) instead of
parsed.serviceName, causing D1_TYPE_ERROR in service discovery.

This affected both random discovery (line 263) and paginated discovery
(line 218) when clients requested services without specifying username.

The parseServiceFqn() function returns { serviceName, version, username },
not { service, version, username }.

Fixes: D1_TYPE_ERROR: Type 'undefined' not supported for value 'undefined'
when discovering services like 'test-chat:1.0.0' (without @username)
2025-12-14 22:02:22 +01:00
76539c4b65 Update README: Add v0.5.3 changelog
- Document fix for storage method calls
- Explain replacement of non-existent storage.getServicesByName()
- Note compatibility with Storage interface specification

Fixes customer-reported error: "storage.getServicesByName is not a function"
2025-12-14 18:27:31 +01:00
d486283c01 Bump version to 0.5.3
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-14 17:02:49 +01:00
100a86e3ce Fix storage.getServicesByName() calls - use correct storage methods
Replace non-existent getServicesByName() with:
- discoverServices() for paginated mode
- getRandomService() for random mode

Fixes "storage.getServicesByName is not a function" error.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-14 17:02:11 +01:00
Bas
1d9ba69a5f Merge pull request #2 from xtr-dev/add-claude-github-actions-1765706441212
Add Claude Code GitHub Workflow
2025-12-14 11:01:13 +01:00
4 changed files with 13 additions and 8 deletions

View File

@@ -254,6 +254,13 @@ All authenticated operations require Ed25519 signatures:
See [ADVANCED.md](./ADVANCED.md#security) for detailed security documentation. See [ADVANCED.md](./ADVANCED.md#security) for detailed security documentation.
## Changelog
### v0.5.3 (Latest)
- Fix RPC method calls using non-existent storage methods
- Replace `storage.getServicesByName()` with `storage.discoverServices()` and `storage.getRandomService()`
- Ensures compatibility with Storage interface specification
## License ## License
MIT MIT

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "@xtr-dev/rondevu-server", "name": "@xtr-dev/rondevu-server",
"version": "0.5.2", "version": "0.5.4",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@xtr-dev/rondevu-server", "name": "@xtr-dev/rondevu-server",
"version": "0.5.2", "version": "0.5.4",
"dependencies": { "dependencies": {
"@hono/node-server": "^1.19.6", "@hono/node-server": "^1.19.6",
"@noble/ed25519": "^3.0.0", "@noble/ed25519": "^3.0.0",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@xtr-dev/rondevu-server", "name": "@xtr-dev/rondevu-server",
"version": "0.5.2", "version": "0.5.4",
"description": "DNS-like WebRTC signaling server with username claiming and service discovery", "description": "DNS-like WebRTC signaling server with username claiming and service discovery",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {

View File

@@ -215,7 +215,7 @@ const handlers: Record<string, RpcHandler> = {
const pageLimit = Math.min(Math.max(1, limit), MAX_PAGE_SIZE); const pageLimit = Math.min(Math.max(1, limit), MAX_PAGE_SIZE);
const pageOffset = Math.max(0, offset || 0); const pageOffset = Math.max(0, offset || 0);
const allServices = await storage.getServicesByName(parsed.service, parsed.version); const allServices = await storage.discoverServices(parsed.serviceName, parsed.version, 1000, 0);
const compatibleServices = filterCompatibleServices(allServices); const compatibleServices = filterCompatibleServices(allServices);
// Get unique services per username with available offers // Get unique services per username with available offers
@@ -260,14 +260,12 @@ const handlers: Record<string, RpcHandler> = {
} }
// Mode 3: Random discovery without username // Mode 3: Random discovery without username
const allServices = await storage.getServicesByName(parsed.service, parsed.version); const randomService = await storage.getRandomService(parsed.serviceName, parsed.version);
const compatibleServices = filterCompatibleServices(allServices);
if (compatibleServices.length === 0) { if (!randomService) {
throw new Error('No services found'); throw new Error('No services found');
} }
const randomService = compatibleServices[Math.floor(Math.random() * compatibleServices.length)];
const availableOffer = await findAvailableOffer(randomService); const availableOffer = await findAvailableOffer(randomService);
if (!availableOffer) { if (!availableOffer) {