=============================================================== TAREAS DE USABILIDAD — Oasis Mobile Creado: 2026-05-09 =============================================================== Lista de mejoras pendientes de UX/usabilidad en la app móvil. Estado actual y especificacion de cada tarea. =============================================================== TAREA 1 — PAGINADOR MÓVIL EN TODAS LAS BARRAS DE FILTROS =============================================================== OBJETIVO -------- Aplicar el mismo paginador CSS-only (.actpager) que ya está en activity/agenda/trending/etc al resto de submenús con filtros. El paginador muestra 2 botones por página con flechas ‹ › que permiten navegar 2 en 2. Sin scroll del dedo, sin JS, sin problemas de CSP ni caché. POR QUÉ ------- Actualmente las vistas sin paginador tienen los botones en flex-wrap (multilinea), ocupando muchas filas y obligando al usuario a hacer scroll vertical para ver toda la pantalla. Con el paginador queda compacto: 1 fila + flechas. CÓMO IMPLEMENTAR (patrón replicable) ------------------------------------ Para cada vista: 1. Importar el helper: const { renderMobilePager } = require('./mobile_pager') 2. Construir el array de items: const items = FILTERS.map(f => ({ type: f, label: i18n[`${prefijo}Filter${capitalize(f)}`] || f.toUpperCase() })) 3. Generar el paginador: const mobilePager = renderMobilePager({ items, idPrefix: 'XXp', // único en la página (3-4 letras) formAction: '/ruta', currentFilter: filter, pageSize: 2 }) 4. Insertar el paginador ANTES del contenedor desktop: mobilePager, div({ class: ' actpager-desktop-only' }, ...filtros originales ) 5. La regla CSS .actpager-desktop-only { display: none } en mobile.css ya oculta el contenedor desktop en móvil. ARCHIVOS DE REFERENCIA ---------------------- src/views/mobile_pager.js <- helper renderMobilePager src/views/activity_view.js <- ejemplo más completo (36 filtros) src/views/banking_views.js <- ejemplo con extraHidden / search src/client/assets/styles/mobile.css <- reglas del paginador =============================================================== INVENTARIO COMPLETO DE SUBMENÚS =============================================================== YA TIENEN PAGINADOR (8 vistas) ------------------------------ Submenú Ruta Filtros Páginas ------------------------------------------------- activity /activity 36 18 agenda /agenda 13 7 trending /trending 13 7 blockexplorer /blockexplorer ~31 16 banking /banking 10 5 inhabitants /inhabitants 9 5 calendars /calendars 6 3 logs /logs 5 3 PENDIENTES DE PAGINADOR (24 vistas) ----------------------------------- Prioridad ALTA (>=8 filtros): market /market ~12 filters transfer /transfers ~10 filters image /images ~8 filters event /events ~8 filters tribes /tribes 8 tribe-mode-buttons opinions /opinions 8 mode-buttons Prioridad MEDIA (5-7 filtros): audio /audios ~6 filters video /videos ~6 filters document /docs ~6 filters bookmark /bookmarks ~6 filters torrents /torrents ~6 filters task /tasks ~6 filters favorites /favorites ~6 filters maps /maps 6 filters vote /votations 5 filters pads /pads 5 tribe-mode-buttons jobs /jobs 5 filters projects /projects 5 filters reports /reports 5 filters forum /forum 5+ filter-group + mode-buttons-cols Prioridad BAJA (4 filtros): chats /chats 4 tribe-mode-buttons shops /shops 4 tribe-mode-buttons games /games 4 filter-group feed /feed 4 mode-buttons-row NO NECESITAN PAGINADOR (caben en una fila) ------------------------------------------ modules /modules 4 presets (minimal/social/economy/full) stats /stats 3 modos tags /tags 3 parliament /parliament 1 courts /courts 2 SIN FILTROS / CASOS ESPECIALES ------------------------------ peers, wallet, AI, invites, settings, search, pixelia, legacy, cipher, pm, cv =============================================================== PATRONES ESPECIALES A TENER EN CUENTA =============================================================== 1. tribe-mode-buttons (chats/pads/shops/tribes) Tienen un botón "Create" al final del array. Hay que decidir si meterlo en el paginador o dejarlo fuera. Recomendación: dejar el Create FUERA, antes o despues del paginador, como botón propio destacado. 2. mode-buttons-cols / filter-group (forum) Tiene múltiples columnas con filtros agrupados. Aplanar todo en un solo array para el paginador. 3. Filtros con parámetros extra (sort, q, etc) Algunos forms inyectan hidden inputs (sort, page, etc). Usar `extraHidden: { sort, q }` en renderMobilePager. Ya lo soporta el helper, ver banking_views.js como ejemplo. 4. Vistas con filter-btn en otras secciones filter-btn se usa también para botones "View details", "Visit", etc. Importante NO tocar esos. Solo modificar la barra de filtros principal del listado. =============================================================== TAREA 2 — REVISAR mode-buttons-cols Y mode-buttons-row =============================================================== En vistas como forum, feed y blockchain hay clases mode-buttons-cols y mode-buttons-row que en móvil hacen flex-wrap (multilinea) por la regla en mobile.css. Decidir si: a) Aplicar paginador y dejar la versión desktop intacta b) Solo aplicar flex-wrap (lo actual) c) Otro layout específico =============================================================== TAREA 3 — UNIFORMAR EL HEADER MÓVIL EN VISTAS DE DETALLE =============================================================== Cuando entras al detalle (ej: /tribe/X, /event/Y), el header puede comportarse distinto. Revisar que el hamburger nav y quicklinks siempre se muestren correctamente. =============================================================== TAREA 4 — REVISAR FORMULARIOS LARGOS EN MÓVIL =============================================================== Vistas con formularios largos (create tribe, edit profile, etc): - tribes_view (create/edit form) - cv_view - settings_view Verificar que los inputs se vean bien en móvil, sin overflow. =============================================================== TAREA 5 — CONSIDERAR DESACTIVAR PAGINADOR EN TABLET =============================================================== El media query actual es @media (max-width: 768px). En tablets estrechas en vertical (orientación portrait) puede ser que caben más botones. Considerar punto de quiebre 600px y dejar el desktop layout >600px. =============================================================== NOTA SOBRE PRIORIZACIÓN =============================================================== El usuario quiere uniformidad pero hay que sopesar: - Vistas con 4 botones: el flex-wrap actual ya queda en una sola fila normalmente. Poner paginador NO mejora mucho (4 botones quedan en 2 páginas de 2). - Vistas con 5-7 botones: ahora ocupan 2-3 filas en móvil. El paginador las compacta a 1 fila. - Vistas con 8+ botones: claramente necesitan paginador. Decisión recomendada: empezar por prioridad ALTA (6 vistas) y MEDIA (14 vistas) — 20 vistas en total. La prioridad BAJA (4 vistas con 4 botones cada una) se puede dejar para más adelante.