diff --git a/GUIA_DE_DESARROLLO.md b/GUIA_DE_DESARROLLO.md index c1af603..67a23e7 100644 --- a/GUIA_DE_DESARROLLO.md +++ b/GUIA_DE_DESARROLLO.md @@ -12,6 +12,63 @@ cambiamos cómo se ve y se usa en el móvil, y lo hacemos en ficheros nuestros. Los números y de dónde salen están en `docs/FRONTERA_UPSTREAM.md`. +## La estrategia: una capa encima + +Lo del dev entra tal cual y lo nuestro va encima, en ficheros nuestros: hojas de +estilo, vistas y un router propio que va delante del suyo. Se eligió así frente a +las otras salidas: + +- Un fork que copie sus vistas y siga por libre se queda viejo en semanas (39 + versiones en siete semanas). +- Una app propia que hable con su backend obliga a rehacer toda la interfaz, y Oasis + no tiene API: devuelve HTML. +- Reescribir su HTML o sus respuestas al vuelo se rompe sin avisar con cualquier + cambio suyo. Se probó y se quitó el 20/10/2026. + +Las reglas de la capa: + +1. Lo del dev no se cambia: ni su código ni lo que contesta (HTML, redirecciones, + cabeceras). Nuestro código no mira sus respuestas. +2. El aspecto, con CSS en nuestras hojas. +3. Otro HTML en una pantalla suya: función en `mobile_ui.js` y una línea en su vista. +4. Una pantalla o una ruta nueva: en `fork_routes.js`; lo que no es nuestro pasa al + dev con `next()`. +5. Si una pantalla del dev ya hace algo (editar el perfil, escribir, guardar los + módulos), se enlaza a ella o se envía a su ruta y se acepta a dónde vuelve. No se + copia su lógica. +6. Se pueden usar sus funciones (`getConfig`, `saveConfig`, leer de sus modelos). + Reescribirlas, no. +7. Si algo no se puede hacer con estas reglas, se le pide al dev. + +Dónde va cada cosa: + +| Quiero... | Va en | +|---|---| +| Cambiar colores, tamaños, márgenes | `styles/mobile_ux.css` (los dos skins) o `hive_acampada.css` (solo Acampada) | +| Cambiar la paleta de Acampada | Variables `--a26-*` de `themes/Acampada.css`; las elegibles, en `mobile_settings.js` | +| Otro HTML en una pantalla del dev | Función en `views/mobile_ui.js` + una línea en su vista | +| Una pantalla nueva | Vista propia en `views/mobile_*.js` + ruta en `fork_routes.js` | +| Algo en Ajustes del móvil | `views/mobile_settings.js` | +| Un texto nuevo | `translations/i18n_fork.js`, en los 11 idiomas | +| Un icono | `views/mobile_icons.js` | +| Un workflow | `models/fork_workflows.js` | +| Algo de la APK | `android/scripts/sobre_oficial.sh` o `android/icono/` | +| Algo que la capa no deja | Pedírselo al dev | + +Cómo seguir modificando, paso a paso: + +1. Arrancar en local (ver «Probar en local») y localizar en el inspector la clase o + la pantalla. +2. Decidir con la tabla dónde va. Si la respuesta es un fichero del dev, parar y + releer las reglas. +3. Hacer el cambio. +4. Pasar «Antes de hacer commit». +5. Commit en castellano y subir la rama `PRUEBAS` a forgejo. +6. Montar la APK con `android/scripts/sobre_oficial.sh` y probarla en el emulador + `Oasis_Pruebas`. +7. Si entra un fichero o un mecanismo nuevo, apuntarlo en esta guía en el mismo commit. + + ## Lo que no se toca - `src/backend/backend.js`. Cambia en 34 de cada 39 versiones. Ni rutas nuevas, ni @@ -140,9 +197,11 @@ router pasa al del dev con `next()`: }) ``` -Retocar lo que contesta el dev. También en `fork_routes.js`, en `wrapUpstream`: deja -que el dev conteste y luego mira la respuesta. Así sabemos a qué sección apagada se -quería entrar (el dev solo manda a `/modules`) o añadimos `?saved=1` al guardar. +Retocar lo que contesta el dev: no se hace (regla 1). Antes había un `wrapUpstream` +que miraba sus redirecciones para el aviso de sección apagada, `?saved=1` al guardar +módulos y la vuelta a Ajustes tras guardar el perfil; se quitó el 20/10/2026 porque +cualquier cambio suyo lo rompía sin avisar. Ahora Ajustes enlaza a `/profile/edit` y +`/feed/create`, y guardar los módulos vuelve a donde decide el dev. Textos. En `i18n_fork.js` y en los 11 idiomas (en, es, fr, eu, de, it, pt, zh, ar, hi, ru). Antes, mirad que la clave no exista ya en `oasis_en.js`, porque si existe la @@ -187,6 +246,10 @@ nombre es el de la ruta: `/tribes` es `tribes`. 4. Se repasan a 412 px las pantallas de la lista de arriba. 5. Se monta la APK sobre la oficial de esa misma versión: `OASIS_VERSION=x.y.z android/scripts/sobre_oficial.sh`. +6. Con REA se mira otra vez cómo extrae y cómo usa la WebView su APK + (`copyNodeProjectIfNeeded`, `configureWebView` y el manifiesto). Si cambia, + `sobre_oficial.sh` puede tener que cambiar. Los comandos, en + `docs/ARQUITECTURA_APK.md`. ## Probar en local @@ -228,14 +291,14 @@ Cómo está hecha la APK del dev por dentro (sacado con REA): `docs/ARQUITECTURA Para el móvil, la referencia es el `nodejs-project` de la APK oficial del dev, no su git: él mete cambios de móvil (en `backend.js`, `SSB_server.js`, `phone_module.js`...) -que solo están en la APK. Comparado con eso, la rama cambia 17 ficheros suyos, 561 -líneas (19/10/2026). Por tamaño: +que solo están en la APK. Comparado con eso, la rama cambia 15 ficheros suyos, 516 +líneas (20/10/2026, contra el `nodejs-project` de la APK 1.3.3). Por tamaño: - `backend/blobHandler.js` (190): limpiar los metadatos de las fotos también en Android. Es una función nuestra metida en su fichero; habría que proponérsela al dev. - `configs/oasis-config.json` (87) y `configs/config-manager.js` (18): la config de serie del móvil (tema Acampada, workflow acampada, barra de abajo). -- `views/main_views.js` (62), `settings_view.js` (34), `welcome_view.js` (11), +- `views/main_views.js` (64), `settings_view.js` (33), `welcome_view.js` (20), `tribes_view.js` (9), `vote_view.js` (7): enganches a `mobile_ui.js` y el orden de carga de las hojas. Es lo que la guía permite, pero hay que revisarlo en cada versión. - `main.js` (45): DNS del sistema primero, para respetar la VPN. diff --git a/docs/FRONTERA_UPSTREAM.md b/docs/FRONTERA_UPSTREAM.md index e8bde8a..21835ed 100644 --- a/docs/FRONTERA_UPSTREAM.md +++ b/docs/FRONTERA_UPSTREAM.md @@ -156,8 +156,8 @@ nada, pero son peso muerto y confunden. | Antes (en ficheros del dev) | Ahora | |---|---| -| `backend.js`: `checkMod` envuelto para recordar la seccion apagada | El router propio mira las redirecciones a `/modules` de vuelta | -| `backend.js`: ruta `POST /modules/enable` y `?saved=1` tras guardar | Router propio | +| `backend.js`: `checkMod` envuelto para recordar la seccion apagada | Quitado el 20/10: no se miran las respuestas del dev | +| `backend.js`: ruta `POST /modules/enable` y `?saved=1` tras guardar | Quitado el 20/10: se guarda con la ruta del dev y vuelve a donde dice el | | `modules_view.js`: vista de Modulos del movil | `views/mobile_modules_view.js`, servida por el router propio | | `workflows_model.js`: cuatro modulos mas en `activists` | Workflow propio `acampada` registrado desde `models/fork_workflows.js` | | `vote_view.js`, `tribes_view.js`, `settings_view.js`, `main_views.js`, `welcome_view.js`: funciones nuevas | Funciones en `views/mobile_ui.js`; en la vista de upstream queda la llamada | diff --git a/docs/guia_pdf/guia.html b/docs/guia_pdf/guia.html index 55db2fc..bfbce40 100644 --- a/docs/guia_pdf/guia.html +++ b/docs/guia_pdf/guia.html @@ -228,8 +228,7 @@ table.tight td { padding: 1.1mm 2mm; } - - wrapUpstream mira tu respuesta (redirecciones) sin cambiarla + Lo que contestan tus rutas no se mira ni se cambia Nuestro router va justo delante del tuyo: una sola línea en backend.js lo monta.