Blockchain salia en el lanzador y el dev la manda a la portada en el movil.
Industria se encendia con Empleo y Negocio sin entrada en el menu. El boton de
Telefono de la barra de arriba media 38px y salia en las pruebas de todas las
pantallas.
- Estandar calca los colores de la oficial, medidos con el inspector en su
1.3.5: fondo #121212, texto #ffd700, titulos y etiquetas #ffa300, tarjeta
#1e1e1e sin borde con raya naranja a la izquierda, campos #2a2a2a, barra de
abajo #161616 y aviso #1a1400. Variables nuevas en el tema (--a26-card,
--a26-title, --a26-field, --a26-bar...) con lo de antes como reserva, asi que
las otras paletas no cambian. Los botones siguen siendo los nuestros.
- Las tiras de fichas de la cabecera del dev, las pestañas de tribu y las
etiquetas de las tarjetas van en rejilla de tres columnas o a la linea
siguiente: nada de deslizar de lado.
- Rejillas de tarjetas del dev sin relleno propio.
Lo del dev, tal cual desde el nodejs-project de su APK oficial 1.3.5, mezclado
a tres bandas con la 1.3.3 como base. Lo que no habiamos tocado se coge entero.
Conflictos:
- backend.js: su middleware nuevo de media va delante de nuestro router.
- main_views.js y bookmark_view.js: lo suyo. Su menu de tarjeta (⋯) ya aparta
borrar del pulgar, que era lo que hacia nuestro cambio.
- settings_view.js y tribes_view.js: lo suyo mas nuestra linea de enganche.
La 1.3.5 trae una cabecera de modulo para el movil (apkModbar) que se lleva la
primera caja de fichas, el buscador y los contadores. Con el skin Activista su
CSS (OasisMobile.css) no se carga: se le da estilo en mobile_ux.css, los avisos
suben encima con order y se ajusta la cabecera nueva de las tarjetas. Filtrar
va ahora dentro de la caja de fichas (casilla + etiqueta) para viajar con ella.
Perfiles: Minimo (6 modulos, de serie), Acampada (16), Activista (24, con
tribus, votaciones, campañas, encuestas y tareas) y despues los del dev por
numero de modulos.
- Perfil Activista (acción directa: chats, teléfono, eventos, emergencias,
invitaciones y copia), 6 módulos, de serie. Acampada 16 y los del dev detrás,
ordenados por número de módulos; cada tarjeta dice cuántos y enseña su barra.
El activists del dev se llama Movimiento en el móvil.
- Cada perfil trae su barra de abajo (BARS en fork_workflows.js); al editarla se
guarda para ese perfil (bottomBarBySkin).
- Aviso de bienvenida de la portada: un botón EMPEZAR grande y la X discreta.
Los botones de cada paso de la bienvenida, a todo lo ancho.
- Colores: la paleta de serie, Estándar, son los del dev (negro y oro). El resto:
Plaza, Madrugada, Huerto, Violeta, Hoguera, Fanzine y Pancarta.
- Actividad: las fichas de tipo van plegadas tras un botón Filtrar; por defecto
se ve todo y con filtro el botón dice cuál (enganche en activity_view.js).
Skin: uno solo en el movil, Activista, lo mas simple posible: letra del sistema,
titulos en negrita sin mayusculas, bordes de 1px, sin sombras ni botones que se
hunden; el principal con el color de resalte. Sale de Acampada (themes/Activista.css
y styles/activista.css); fuera Acampada y OasisMobile del selector, la fuente Anton y
las miniaturas. Quien tuviera otro skin pasa a Activista al abrir. Los colores se
aplican siempre; rojo de texto que se lee en las paletas oscuras.
Perfil de uso: Activismo por defecto en la config de serie.
Pub: barra fija encima de la barra de abajo mientras se une y descarga la red, con
la fase, el porcentaje y, si falla, por que (sin red o pub caido, pub sin copia, otro
corte). Se pone al dia sin recargar (public/js/mobile_pub.js y /mobile/pub-status);
sale al tocar unirse y, si no arranca nada, explica las causas habituales. Fuera la
recarga cada 5s de la bienvenida y de Copias en el movil. backend.js pasa
backupModel a fork_routes.js en la linea que lo monta.
Actividad: fichas de filtro en rejilla de tres y botones de cada tarjeta en una fila.
Enlaces web de 24px.
Probado con la APK instalada en el emulador de Android Studio (Pixel 9, Android 16):
- La barra de arriba llevaba 65px de mas y la de abajo 24: el contenedor de la app
del dev ya se aparta de las barras del sistema y nuestro CSS volvia a sumar
safe-area-inset. Ahora --inset-top y --inset-bottom, a 0, en mobile_base.css.
- Borrar en una tarjeta: la barra de confirmar se metia en la fila de botones y
'Si, borrar' salia letra a letra. La fila ya puede saltar de linea.
- Acampada: .time-chip y .pref-pill del dev quedaban en negro sobre gris oscuro, y la
pildora elegida con texto claro sobre el resalte en las paletas oscuras.
- Zonas tactiles a 44px: barra de arriba, fichas, pasos de la bienvenida, aviso de
bienvenida, pie, casillas con su etiqueta, botones del buzon; enlaces en el texto
a 24px.
- Acceso a un bloque de Ajustes: el titulo ya no queda bajo la barra de arriba.
En la guia y en ARQUITECTURA_APK.md: no usar env(safe-area-inset-*), los tamaños
minimos y el fallo del boton atras de la app del dev (la tecla retrocede dos pasos).
Seccion nueva al principio: por que capa encima y no fork, app propia ni reescribir
respuestas; siete reglas; tabla de que va en cada fichero y los pasos para seguir
modificando. En version nueva del dev, repasar la APK con REA. Cifras de lo que
cambiamos del dev rehechas contra la APK 1.3.3 (15 ficheros, 516 lineas).
Se quita wrapUpstream de fork_routes.js: el aviso de seccion apagada en Modulos,
?saved=1 al guardar y la vuelta a Ajustes tras guardar perfil o saludo. Dependian de
las redirecciones del dev y cualquier cambio suyo los rompia sin avisar.
Ajustes: Identidad enseña nombre y avatar y lleva a /profile/edit; Saludo lleva a
/feed/create, las dos pantallas del dev. Modulos guarda con /save-modules y vuelve a
donde decide el dev. mobile_layer.js refresca nombre y avatar al abrir Ajustes en vez
de vigilar los POST.
Arranque, cuando se descomprime nodejs-project.zip (solo si cambia
versionName.versionCode; los configs se conservan), la WebView sin cache y lo que
cambia sobre_oficial.sh. Con los comandos para repetirlo en cada version.
La guia dice que el resto de android/ queda sin tocar. El icono adaptativo pasa a
android/icono/, de donde lo copia sobre_oficial.sh. En la guia, mobile_settings.js,
android/icono y por que la APK lleva una huella del codigo en el versionName.
Arriba de Ajustes, una rejilla con lo que se elige en la bienvenida (identidad,
perfil de uso, portada, comunidad y saludo) y Colores. Cada acceso baja a su
bloque y cada bloque guarda al tocar.
Colores: ocho paletas de un toque y fondo, texto y resalte a mano. Se guardan en
la config (mobileColors) y van en /mobile-colors.css, la ultima hoja (la CSP no
deja estilos en linea). Solo con el aspecto Acampada; elegir colores pasa a el. Si
el texto no se lee sobre el fondo se cambia por negro o blanco y se avisa.
En la bienvenida, Colores es un paso mas, despues del tipo de portada.
Identidad y saludo envian a las rutas del dev de la bienvenida; fork_routes.js
cambia su vuelta a /welcome por la vuelta a Ajustes. Todo en mobile_settings.js;
en las vistas del dev solo hay llamadas a mobile_ui. Miniaturas de los skins
rehechas (salia Karvan).
--a26-on-neon (texto sobre el color de resalte), --a26-tint y --a26-line en vez de
#000, #e5fcff y #ccc fijos. Con los colores de siempre no cambia nada; con un fondo
oscuro o un resalte oscuro el texto sigue leyendose.
El icono es la isla de la app oficial; antes el lanzador la encogia dentro de un
circulo blanco (la oficial solo trae el PNG cuadrado) y el wrapper Gradle usaba un
hexagono amarillo. Ahora capa de fondo y capa delante, en Gradle y en sobre_oficial.sh.
La app oficial solo vuelve a extraer nodejs-project.zip si cambia
versionName.versionCode. Con el mismo commit, o con cambios sin commitear, la APK
nueva arrancaba con el backend anterior. El versionName lleva ahora una huella del
codigo.
Probado en el emulador a 360x540, 412 (Pixel 9), 800dp (tableta) y con la
letra al 130%: sin desbordes. Arreglos:
- en pantallas de 700dp o mas, el contenido y la hoja del menu a 720/640px
centrados; a 800dp todo se estiraba
- con el menu abierto se esconde el boton de No molestar, que se montaba
encima de la X de la hoja
En el emulador, con la hoja abierta, atras cambiaba de pagina. Un script
minimo (public/js/mobile_menu.js, servido desde /js como permite la CSP)
apunta una entrada en el historial al abrirla y la quita al cerrarla; sin
el script el menu funciona igual. El estudio de navegacion recoge lo que
salio en la prueba.
En el emulador la hoja dejaba ver 690px y la rejilla medía 1.200: Tribus
quedaba fuera y hacia falta deslizar. Dentro de la hoja: cinco iconos por
fila y mas pequeños, y los grupos de uno o dos modulos de dos en dos. Ahora
caben los 20 del workflow acampada a 412 y a 360px. Con el menu abierto solo
la pestaña Menu lleva la pastilla.
docs/ESTUDIO_NAVEGACION.md compara cuatro formas de moverse por la app
(lanzador en portada, boton de menu arriba, pestaña Menu abajo, hamburguesa)
y se queda con la pestaña de abajo, el patron Mas de Android y de las apps
grandes: al alcance del pulgar y en todas las pantallas.
- la portada es la actividad; el lanzador ya no se pinta alli
- quinta pestaña fija en la barra de abajo, Menu, que abre desde abajo una
hoja con todos los modulos por secciones; se cierra con la X, tocando fuera
o volviendo a tocar Menu. Sin JS: una casilla y CSS
- textos en los 11 idiomas; caben cinco pestañas a 360px
- capturas, portada y esquema de la interfaz al dia
Comparando con el nodejs-project de la APK oficial (la referencia buena para
el movil, no el git del dev) salia que parte de lo que se saco de backend.js
era codigo de movil del propio dev: apagar los modulos que no van, cortar
rutas, retocar el HTML, las descargas de la copia de seguridad y ocultar
tema y workflow en la bienvenida.
- backend.js vuelve a ser su version de movil mas dos lineas (montar nuestro
router); modules_view.js, su version de movil
- mobile_layer.js se queda con lo nuestro: avatar, filtro y lanzador
- la guia lista las 17 diferencias que quedan con la APK oficial (561 lineas)
y explica que hay que comparar con la APK, no con el git
Silenciar, camara, levantar la mano, salir... quedaban debajo de toda la
ficha de la sala, a 1.100px. Con la sala en directo el panel va primero, los
controles en rejilla de dos y Salir en rojo. Solo CSS.
La app Android de epsylon trae desde la 1.3.x un puente nativo de audio y
camara (.audio_bridge) para el Telefono y las Salas, y no tiene el codigo
publicado. android/scripts/sobre_oficial.sh coge su APK de la misma version,
le cambia el backend por el de la rama (con su node_modules), le pone el
paquete net.laenre.oasis (y los authorities, el permiso propio y las acciones
de llamada) para que conviva con la oficial, y la monta y firma. apktool va
con version y huella fijas.
Probado en el emulador: el Telefono ofrece llamadas y en una sala el
microfono graba y se corta al salir. README, guia, android/README y los
esquemas lo cuentan; el proyecto Gradle propio queda sin uso.
Revisado en el emulador: la APK oficial 1.3.3 del dev pide microfono y camara
y trae un puente nativo (.audio_bridge) que graba, reproduce, saca la camara y
emite. Nuestra app Android no lo tiene, asi que en esta APK el Telefono dice
que no hay llamadas.
- README, guia, android/README y los dos esquemas lo cuentan asi
- SSB_server.js queda identico al de la APK oficial (su version de movil
enchufa ya phone_*_android.js); fuera el enganche duplicado de main.js
- el aviso de bienvenida va encima del lanzador: en el primer arranque
quedaba a 1.300px y no se veia
- capturas de un nodo de prueba con contenido de acampada: lanzador, tribus,
votacion de semaforo, modulos, ajustes, barra, salas y el tema del dev
- portada y esquema de la interfaz al dia; dos esquemas nuevos: como va la
rama encima de Oasis y como funcionan las llamadas
- el README cuenta las novedades de esta version y explica la rama
Arreglos que salieron al hacer las capturas:
- el boton de No molestar del Telefono ocupaba una fila entera arriba de cada
pagina; ahora va en la barra de arriba, junto al avatar
- Ajustes marcaba English aunque el idioma fuera otro (settings_view se queda
con el idioma del arranque): el selector lo lee al pintar
- barras de la votacion juntas y con las etiquetas en el mismo tipo
- Personalizar la barra: una fila por atajo, sin sangria
El dev ya trae Telefono (llamadas uno a uno, buzon de voz) y Salas (hasta 50,
con video, grabacion y emision). La rama quita su modulo propio de salas y
llamadas: modelo, vista, JS de cliente, CSS, rutas, credenciales TURN, pruebas
y textos.
- el router propio pasa a llamarse fork_routes.js, sin Karvan
- el audio, la camara y la emision de Android se enchufan desde main.js con
setAudioFactory/setVideoFactory/setStreamFactory, que exporta el propio dev;
SSB_server.js vuelve a tener su linea original
- Clear-SNH.css y modules_view.js vuelven a ser identicos a los del dev
- el workflow acampada y la config de serie cambian Karvan por Telefono y Salas
- README y guia: las llamadas son las del dev; antes de hacer un modulo propio,
mirar si el dev ya lo tiene
153 selectores de mobile_base.css, hive_acampada.css y Acampada.css que
apuntaban a clases que ya no pinta ninguna vista (287 lineas). Comparadas 14
pantallas pixel a pixel antes y despues: identicas.
De 20 trozos nuestros en backend.js quedan 9 (21 lineas). Pasan a
src/backend/mobile_layer.js, que monta el router propio delante de las rutas
del dev:
- blockexplorer, actualizar con git y presets de modulos, cortados en el movil
- los modulos que no van en el movil, apagados al arrancar y al guardar
- avatar de la barra de arriba, filtro y lanzador
- fotograma en los videos y pestaña actual marcada
- descargas de la copia de seguridad por GET
El cambio de tema del movil lo atiende karvan_routes.js.
- el workflow activists del dev queda como en la 1.3.3 (unos 45 modulos)
- karvan se anade a las listas del dev al arrancar, desde fork_workflows.js
- la config de serie del movil enciende tribus, parlamento, votaciones y
eventos: coincide con acampada y sale marcado en Ajustes
themes/OasisMobile.css es un tema de epsylon que cambia en 21 de cada 39
versiones y nuestra copia diferia en 4.873 lineas. Ahora es identica a la
1.3.3 y nuestra maqueta vive en styles/mobile_base.css, que el movil carga
siempre antes del skin. Con Acampada se ve igual que antes; con OasisMobile,
el tema del dev encima de la maqueta.
GUIA_DE_DESARROLLO.md en la raiz: la regla de oro, el semaforo (rojo:
backend, middleware, modelos, server, CSP, traducciones y hojas del dev;
ambar: una linea de enganche en las vistas del dev; verde: hojas, vistas,
router, workflows y textos propios), como hacer cada tipo de cambio, lo que
hay que comprobar antes de cada commit, como integrar una version nueva del
dev, como probar y la deuda que queda. Enlazada al principio del README.
Todo en mobile_ux.css (mas un SVG propio para las listas vacias), sin tocar
vistas ni backend del dev:
- el boton principal de cada modulo, igual en todos
- listas vacias con icono y recuadro
- el pie abajo en paginas cortas
- buzon: remitente y fecha en una linea; fuera Para, Tasa ECO y Cifrado
- busqueda: el campo primero, los filtros despues
- nodos: acciones en rejilla
- fuera los selectores a clases que no existen
docs/FRONTERA_UPSTREAM.md mide como cambia upstream (39 releases de la 1.0.1 a
la 1.3.3; backend.js en 34, main_views en 31, OasisMobile.css en 21) y fija que
se toca: backend, middleware, modelos, server y traducciones de upstream, no;
vistas de upstream, solo una linea de gancho; hojas, vistas, router y modelos
propios, si.
Fase A, lo del 19/10:
- backend.js, workflows_model.js y modules_view.js vuelven a como estaban
- seccion apagada, /modules/enable y ?saved=1: en el router propio, que envuelve
las redirecciones de upstream en vez de cambiar checkMod
- Modulos del movil en views/mobile_modules_view.js, servida por el router propio
- workflow propio "acampada" registrado desde models/fork_workflows.js en vez de
redefinir "activists"
- votaciones, tribus, ajustes, borrar, pie y bienvenida: la logica en
views/mobile_ui.js; en cada vista de upstream queda la llamada
- la pestaña actual de la barra de abajo lleva la pastilla de color
- en una llamada solo de voz no se ensena el video propio (era un recuadro
gris con el icono de play) y Llamar se atenua mientras dura
- la barra de confirmar borrado con su marco rojo
Lo que salio de recorrer la app como alguien de la acampada:
- borrar (tribus y todo lo que usa renderContentActions) pide un segundo
toque; la X va la ultima de la fila
- Karvan: Llamar empieza solo con voz (si se negaba la camara no arrancaba
nada); botones con icono y nombre; textos traducidos; ayuda para invitar
- votaciones: tipo Si/No, semaforo o termometro (el servidor ya aceptaba
options); resultados en barras; aviso a quien la crea de que no puede votar
- workflow activistas con tribus, parlamento, votaciones y eventos
- seccion apagada: /modules dice cual era y la activa de un toque
- Modulos en el movil: agrupados como el lanzador, interruptores y Guardar fijo
- tribus en filas compactas; secciones de una tribu en tira de fichas + Mas
- lanzador y barra con iconos SVG en vez de letras vai
- Ajustes: idioma y aspecto primero; idiomas de un toque
- aviso de bienvenida solo en la portada y en una linea; Ahora no al final
- pie de una linea con el estado de sincronizacion en claro
- mobile_ux.css para los dos skins: un margen de 14px (eran 74 por lado en
las fichas), Anton solo en titulos y boton principal, buscador en una linea,
la barra de abajo se esconde con el teclado