@danieltmn/openbridge 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ Todos los cambios relevantes de OpenBridge. Formato basado en
4
4
  [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/) y
5
5
  [Versionado Semantico](https://semver.org/lang/es/).
6
6
 
7
+ ## [0.5.1] - 2026-09-14
8
+
9
+ ### Corregido
10
+
11
+ - `openbridge join` normaliza la URL del hub a `/api.php` (antes, pasar la base
12
+ o `/chat.php` apuntaba a `/` y el puente se quedaba sin trabajo).
13
+
7
14
  ## [0.5.0] - 2026-09-14
8
15
 
9
16
  ### Agregado
package/README.md CHANGED
@@ -133,7 +133,8 @@ Ejemplo concreto:
133
133
  3. En la **PC 2** (remota):
134
134
  ```bash
135
135
  openbridge join https://tu-url-publica --token <bridgeToken> --id pc2 --name "PC 2"
136
- # guarda la config y arranca el puente; con --no-start solo guarda
136
+ # acepta la base, /chat.php o /api.php; se normaliza a /api.php
137
+ # con --no-start solo guarda la config
137
138
  ```
138
139
  (equivale a `openbridge bridge --api … --token … --id … --name …`, pero
139
140
  persiste la config para no repetir flags)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danieltmn/openbridge",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Tu opencode en el celular, sin hosting: corre la app, el puente y un tunel publico desde tu PC.",
5
5
  "type": "commonjs",
6
6
  "author": "tamnora",
package/src/cli.js CHANGED
@@ -624,17 +624,28 @@ async function cmdBridge(argv) {
624
624
  // join: esta PC se suma como puente de un hub (otra PC con `openbridge server`).
625
625
  // Guarda la URL/token/identidad en config.json y arranca el puente.
626
626
  // ---------------------------------------------------------------------------
627
+ // Normaliza la URL del hub a su endpoint de API: acepta la base, /chat.php o
628
+ // /api.php y devuelve siempre algo terminado en /api.php (lo que espera el
629
+ // puente). Sin esto, un `join https://host` apuntaba a / y no al API.
630
+ function hubApiUrl(raw) {
631
+ let u = String(raw || '').trim().replace(/\/+$/, '');
632
+ u = u.replace(/\/chat\.php$/i, '');
633
+ if (!/\/api\.php$/i.test(u)) u += '/api.php';
634
+ return u;
635
+ }
636
+
627
637
  async function cmdJoin(argv) {
628
638
  const { flags, _ } = parseArgs(argv);
629
639
  const url = String(_[0] || flags.api || '').trim();
630
640
  if (!url || !/^https?:\/\//i.test(url)) {
631
641
  console.error('Uso: openbridge join <url-del-hub> [--token <t>] [--id <pc>] [--name "<nombre>"] [--no-start]');
632
642
  console.error('Ej.: openbridge join https://mi-pc.trycloudflare.com --token <t> --id pc2 --name "PC oficina"');
643
+ console.error('(acepta la base, /chat.php o /api.php; se normaliza a /api.php)');
633
644
  return 1;
634
645
  }
635
646
  paths.ensureDirs();
636
647
  const cfg = config.readBridge();
637
- cfg.apiUrl = url.replace(/\/+$/, '');
648
+ cfg.apiUrl = hubApiUrl(url);
638
649
  if (typeof flags.token === 'string') cfg.apiToken = flags.token;
639
650
  if (typeof flags.id === 'string') cfg.bridgeId = sanitizeId(flags.id);
640
651
  else if (!cfg.bridgeId) cfg.bridgeId = sanitizeId(os.hostname());