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

Qué te pedimos

Tu APK oficial app Android, puente de audio, node_modules + capa de la rama skins, vistas mobile_*, router propio, textos Oasis hacklab otro paquete, misma red, convive con la oficial
Oasis Mobile · Guía de desarrollo1 / 5

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 CAPA DE LA RAMA Aspecto mobile_base.cssmobile_ux.cssAcampada.css Pantallas mobile_ui.jsmobile_*_view.jshive_views.js Rutas fork_routes.jsmobile_layer.jsfork_workflows.js Textos y APK i18n_fork.js(11 idiomas)sobre_oficial.sh una línea de enganche, solo con OASIS_MOBILE=1 OASIS: TU CÓDIGO, TAL CUAL backend.jsy su middleware modelosqué se publica y se cuenta SSB y servidorphone_module, puente traducciones y temasoasis_*.js, style.css…
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.
Oasis Mobile · Guía de desarrollo2 / 5

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 faltaCómo se ha hechoZona
Votar en semáforo o termómetro, como en asambleaTu servidor ya acepta options; solo se añade el selector en el formularioUna línea
Quien crea una votación no puede votarEs una regla de tu modelo: no se cambia, se explica en pantallaNuestro
Avisar de que una sección está apagada y encenderlaNuestro router mira tu redirección a /modules, sin tocar checkModNuestro
Workflow para acampadasSe registra acampada en tus arrays; activists queda como el tuyoNuestro
Llamadas y salasLas tuyas, con tu puente de audio: la APK se monta sobre la oficialNo se toca
Borrar con confirmaciónFunción en mobile_ui.js, enganchada en renderContentActionsUna línea
Oasis Mobile · Guía de desarrollo3 / 5

Cómo funciona por dentro

Una petición en el móvil

WebViewde tu app Tu middlewarecontexto, idioma,CSP fork_routesrutas propias onext() al tuyo Tus rutasy vistas mobile_uisi la vistalo llama wrapUpstream mira tu respuesta (redirecciones) sin cambiarla Nuestro router va justo delante del tuyo: una sola línea en backend.js lo monta.

Hojas de estilo, en este orden

1 · style.css y mobile.css (tuyas) 2 · mobile_base.css: maqueta de la rama 3 · skin: Acampada.css o tu OasisMobile.css 4 · hive_acampada.css (solo con Acampada) 5 · mobile_ux.css: piezas comunes, la última
  • Con tu skin OasisMobile se ve tu tema tal cual, encima de nuestra maqueta.
  • Colores por variables --ux-*: valen para los dos skins.

La APK, montada sobre la tuya

tu APK oficial de la misma versión se desmonta (apktool, versión fija) backend de la rama + tu node_modules paquete net.laenre.oasis se monta, se alinea y se firma
  • Tu app tal cual: puente de audio, notificaciones, permisos.
  • Se cambian también los authorities, el permiso propio y las acciones de llamada, para no cruzarse con la tuya.
Oasis Mobile · Guía de desarrollo4 / 5

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á ahoraPor qué te puede interesar
Limpiar metadatos de las fotos también en AndroidblobHandler.js (190 líneas)Sin sharp en el móvil, hoy las fotos suben con el GPS dentro
Varias identidades en el mismo móvilssb_config.js (30 líneas)Una persona, varias cuentas, con aviso si dos comparten clave
DNS del sistema primeromain.js (45 líneas)Respeta la VPN y el DNS privado de Android
Selector de idioma con el idioma actualnuestro, en mobile_ui.jssettings_view lee selectedLanguage al cargar y siempre marca English

Para aprobar

Oasis Mobile · Guía de desarrollo · hacklab · gitea.laenre.net/hacklab/OASIS_MOBILE5 / 5