Oasis Mobile
Guía de desarrollo de la rama del hacklab
Propuesta para epsylon · base Oasis 1.3.3 · rama PRUEBAS · 19 de octubre de 2026
39
versiones de Oasis entre la 1.0.1 y la 1.3.3
17
ficheros tuyos que la rama cambia, frente a tu APK oficial
2
líneas nuestras en backend.js
0
cambios en modelos, middleware o traducciones
Qué es esta rama
- Una forma de usar Oasis en el móvil pensada para una acampada: tribus como comisiones, votaciones de asamblea, salas de voz.
- No es otro Oasis. Es tu APK oficial con una capa encima: skins, unas pocas vistas, un router propio y textos.
- Se instala junto a la oficial con otro paquete (
net.laenre.oasis) y habla con la misma red.
Qué te pedimos
- Que revises si la frontera que proponemos (página 3) te parece bien: qué es tuyo y no tocamos, y qué es nuestro.
- Que nos digas si alguno de los puntos de la página 5 te interesa para Oasis, para dejar de llevarlo nosotros.
La regla
Oasis lo cambias tú. Nosotros cambiamos cómo se ve y se usa en el móvil, y lo hacemos en ficheros nuestros.
La rama son cuatro piezas propias encima de tu código. Lo único que entra en tus ficheros son líneas de enganche.
Por qué así
- Sacas versión casi cada día y cada una llega en un solo commit: no se pueden coger cambios sueltos.
backend.js cambió en 34 de 39 versiones, main_views.js en 31, las traducciones en 31.
- Cada línea nuestra en esos ficheros sería un conflicto en la siguiente integración.
- Si tocáramos un modelo, nuestro móvil contaría distinto que tu escritorio (votos, tribus, gobierno).
Cómo se mide
- La referencia para el móvil es el
nodejs-project de tu APK oficial, no tu git: ahí van tus cambios de móvil.
- Hoy la rama cambia 17 ficheros tuyos y 561 líneas; en
backend.js, 2.
- En cada versión tuya se repite la comparación y se revisa si ha desaparecido alguna clase CSS de la que tiramos.
Qué se toca y qué no
Tres zonas. La de en medio es la única que entra en tus ficheros, y solo con una línea.
No se toca
backend.js, rutas y cadena de middleware
- Modelos de
src/models: lo que se publica en el log y cómo se cuenta
src/server: arranque de SSB, dependencias, phone_module
request_guards.js y la CSP: nada en línea
- Traducciones
oasis_*.js
style.css, mobile.css y los temas, también OasisMobile.css
Una línea
- Tus vistas:
main_views.js, tribes_view.js, vote_view.js, settings_view.js, welcome_view.js
- La lógica va en
mobile_ui.js; en tu vista, una llamada
- Siempre detrás de
OASIS_MOBILE === '1': en escritorio todo queda como lo dejas
- Si reescribes la vista, se vuelve a poner la línea
Nuestro
- Hojas:
mobile_base.css, mobile_ux.css, Acampada.css
- Vistas:
mobile_ui.js, mobile_modules_view.js, hive_views.js, mobile_icons.js
- Router:
fork_routes.js y mobile_layer.js
- Workflows:
fork_workflows.js
- Textos:
i18n_fork.js
- APK:
sobre_oficial.sh
Ejemplos concretos
| Lo que hacía falta | Cómo se ha hecho | Zona |
| Votar en semáforo o termómetro, como en asamblea | Tu servidor ya acepta options; solo se añade el selector en el formulario | Una línea |
| Quien crea una votación no puede votar | Es una regla de tu modelo: no se cambia, se explica en pantalla | Nuestro |
| Avisar de que una sección está apagada y encenderla | Nuestro router mira tu redirección a /modules, sin tocar checkMod | Nuestro |
| Workflow para acampadas | Se registra acampada en tus arrays; activists queda como el tuyo | Nuestro |
| Llamadas y salas | Las tuyas, con tu puente de audio: la APK se monta sobre la oficial | No se toca |
| Borrar con confirmación | Función en mobile_ui.js, enganchada en renderContentActions | Una línea |
Cómo seguimos
Antes de cada commit
- Nada de la zona roja en el diff; en tus vistas, solo líneas de enganche.
node --check y el servidor local responde en las pantallas principales.
- Visto a 360 y 412 px, en tableta, con la letra al 130 % y en un WebView viejo.
- Textos nuevos en los 11 idiomas, en
i18n_fork.js.
- Nada en línea: la CSP lo bloquea.
Cuando sacas versión
- Se coge la tuya tal cual; para el móvil, la de tu APK.
- Se vuelven a poner los enganches en tus vistas.
- Se repite la medición y se revisan las clases CSS.
- Se monta la APK sobre tu oficial de esa versión.
Navegación en el móvil
- Al abrir se ve la actividad, no un menú.
- Abajo, cuatro atajos que elige cada cual y una pestaña Menú que abre todos los módulos desde abajo.
- Probado en el emulador: dos toques a cualquier módulo desde cualquier pantalla.
Probado
- Android 16 (APK real): 412 y 360 dp, tableta de 800 dp, letra al 130 %, gestos y tres botones.
- Motores viejos: WebView 69 (Android 9) y 83 (Android 11), con alternativas donde falta
:has, gap o inset.
- Llamadas: en una sala el micrófono graba y se corta al salir.
Lo que podría pasar a Oasis
Cosas que hoy llevamos en tus ficheros y que nos gustaría que fueran tuyas, para dejar de mantenerlas aparte:
| Qué | Dónde está ahora | Por qué te puede interesar |
| Limpiar metadatos de las fotos también en Android | blobHandler.js (190 líneas) | Sin sharp en el móvil, hoy las fotos suben con el GPS dentro |
| Varias identidades en el mismo móvil | ssb_config.js (30 líneas) | Una persona, varias cuentas, con aviso si dos comparten clave |
| DNS del sistema primero | main.js (45 líneas) | Respeta la VPN y el DNS privado de Android |
| Selector de idioma con el idioma actual | nuestro, en mobile_ui.js | settings_view lee selectedLanguage al cargar y siempre marca English |
Para aprobar
- ¿Te parece bien la frontera de la página 3?
- ¿Te parece bien que la APK de la rama se monte sobre tu oficial, con otro paquete?
- ¿Quieres alguno de los cuatro puntos de arriba en Oasis?