OASIS_MOBILE/CONTEXT/tareas_usabilidad.txt
SITO a316c0ded1 chore: añade .gitignore (excluye .claude/, .idea/, node_modules, etc)
Excluido .claude (config local de Claude Code) para no subir el
settings.json al repo público. Untracked también .idea, node_modules
y artefactos de build.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 20:45:11 +02:00

211 lines
8 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

===============================================================
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: '<clase-original> 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.