wiki: al mismo nivel que la de movil, con capturas propias

Tenia cinco paginas de texto y una sola captura. Ahora cada apartado tiene la
suya, tomadas de esta rama corriendo en un navegador real.

- Karvan: el recorrido entero, del menu lateral a la sala con mensajes.
- Chats (nueva): la respuesta citada, y como esta hecha sin JavaScript.
- Temas (nueva): el modulo con los cuatro temas, y por que Clear-SNH necesita
  su propio bloque.
- Diferencias (nueva): que cambia respecto a la version de movil y por que.
- Instalar: multicuenta con OASIS_ACCOUNT, y el aviso de las fuentes que
  faltan cuando los iconos salen como cuadros.
- Estado: lo probado y lo no probado, separado.
- Barra lateral de navegacion.
SITO 2026-08-19 10:32:48 +02:00
parent 8990bfb26c
commit 23383ffd42
18 changed files with 389 additions and 37 deletions

64
Chats.md Normal file

@ -0,0 +1,64 @@
# Chats
> ⚠ Rama experimental, no oficial. El Oasis oficial es
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
Los chats de Oasis son **salas cifradas que sí se guardan**: cada mensaje se publica
firmado en tu registro SSB y se replica a quien te siga. Son lo contrario de
[Karvan](Karvan), que no guarda nada.
Esta rama no cambia cómo funcionan. Le añade una cosa: **responder citando** un
mensaje anterior.
---
## La pantalla
![Chat en el escritorio](img/04-chat.png)
En escritorio el chat se abre en dos columnas: a la izquierda la ficha de la sala
—imagen, estado **OPEN**, etiqueta **E2E**, participantes, etiquetas—, y a la derecha
el hilo de mensajes con el formulario debajo.
Arriba, los filtros de siempre: ALL, MINE, RECENT, FAVORITES, OPEN, CLOSED y
**Create Chat**.
---
## Responder citando
![Respuesta con cita](img/05-chat-respuesta.png)
Cada burbuja tiene una **flecha ↩**. Al pulsarla, el formulario de abajo se prepara
para responder a ese mensaje: aparece una cita con el autor y el principio del texto,
y una **✕** para cancelar.
Al enviar, la respuesta sale con la cita dentro —la barra amarilla de la última
burbuja de la captura—, así que se ve a qué contesta sin tener que buscarlo.
### Cómo está hecho
Sin JavaScript en el cliente, como el resto de Oasis:
1. El botón ↩ es un enlace a `?replyTo=<id>#chat-compose`.
2. El backend lee ese parámetro y se lo pasa a la vista.
3. La vista pinta la cita sobre el formulario y añade un campo oculto `replyTo`.
4. Al enviar, el identificador viaja con el mensaje y **se guarda dentro de él**.
5. Al pintar el hilo, la vista arma un índice de mensajes por identificador y resuelve
cada cita contra él.
Si el mensaje citado ya no está —se borró, o es más viejo que lo que se carga—, la
burbuja sale sin cita en lugar de romperse.
---
## Cuándo usar cada cosa
| | Chats | [Karvan](Karvan) |
|---|---|---|
| Dónde viven los mensajes | En tu registro SSB, en disco | Solo en memoria |
| Cuánto duran | Para siempre | Hasta que vence la sala |
| Se replican a la red | Sí | No |
| Quién puede entrar | Miembros del chat | Quien tenga el enlace |
| Llamadas | No | Sí |
| Sirve para | Lo que quieres conservar | Lo que no |

65
Diferencias.md Normal file

@ -0,0 +1,65 @@
# Diferencias con la versión de móvil
> ⚠ Rama experimental, no oficial. El Oasis oficial es
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
Hay dos repositorios hermanos:
| | |
|---|---|
| **OASIS_LINUX** (este) | Oasis de escritorio + Karvan + respuesta citada |
| **[OASIS_MOBILE](https://gitea.laenre.net/hacklab/OASIS_MOBILE)** | Lo mismo, más una interfaz propia para Android y su envoltorio |
Las funciones son las mismas. Lo que cambia es cómo se llega a ellas.
---
## La navegación
| | Escritorio | Móvil |
|---|---|---|
| Menú | Dos columnas laterales, agrupadas por temas | Panal de hexágonos en el inicio |
| Acceso rápido | No hay | Barra inferior con cuatro módulos a elegir |
| Filtros | No hay | Personal / Community, reducen el panal a la mitad |
| Nombres de las categorías | Los de epsylon: Community, Library, Multiverse | Los de la rama: Network, Media, Fediverse |
Esa última fila es una decisión, no un descuido. La versión de móvil viene de antes y
sus nombres estaban ya en uso; la de escritorio se mantiene pegada a upstream para que
cada versión nueva de epsylon se integre sin conflictos.
## Las llamadas
En el escritorio **los permisos los pide el navegador**, que es como funciona la web
desde siempre: pulsas Call y Firefox o Chromium preguntan por la cámara.
En Android hace falta que la aplicación declare los permisos al compilar **y** que su
envoltorio implemente `WebChromeClient.onPermissionRequest`. La APK oficial no hace
ninguna de las dos cosas, y por eso la rama de móvil trae su propio proyecto Gradle.
Está contado en
[su wiki](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Llamadas).
En resumen: **en escritorio las llamadas no necesitaban desbloquear nada**.
## El código
El módulo Karvan es **el mismo fichero por fichero** en los dos repositorios: modelo,
vista, rutas, cliente WebRTC y estilos. Se decidió duplicar y adaptar en vez de
extraer un paquete común, porque un paquete compartido obligaría a versionar y
publicar por separado algo que todavía cambia cada semana.
Lo que sí difiere:
- `src/views/fork/hive_nav.js` —el panal, la topbar y la barra inferior— existe en los
dos, pero sus funciones empiezan con `if (process.env.OASIS_MOBILE !== '1') return "";`,
así que en escritorio no dibujan nada. Está en ambos para que `main_views.js` sea
idéntico y las actualizaciones de upstream se apliquen una sola vez.
- El fichero de traducciones de la rama, `i18n_fork.js`, tiene en móvil las claves de
la interfaz propia; en escritorio solo las del módulo Karvan.
- `android/` solo existe en el repositorio de móvil.
## Qué se comparte de verdad
Una sala de Karvan creada en el móvil **se puede abrir en el ordenador** si los dos
nodos se replican: la invitación viaja como mensaje privado de SSB y el nodo que la
recibe adopta la sala. Ese es el puente entre los dos, y es también la parte que deja
de ser efímera —el mensaje privado queda en el registro para siempre—.

47
Home.md

@ -19,44 +19,51 @@ Versión base: **Oasis 0.9.5**. Rama: `PRUEBAS`.
## Qué añade respecto al oficial
Una sola cosa, pero grande: **Karvan**, un módulo de salas efímeras con llamadas.
Dos cosas, y ninguna cambia la interfaz que ya conoces:
![Oasis de escritorio con el menú lateral](img/01-escritorio-menu.png)
- **[Karvan](Karvan)**, un módulo de salas efímeras con llamadas de audio y vídeo.
- **Responder citando** en los [chats](Chats) de Oasis.
El resto es Oasis 0.9.5 tal cual. La interfaz es la del proyecto original: el menú
lateral por grupos, no la rejilla de hexágonos, que es de la versión para móvil.
El resto es Oasis 0.9.5 tal cual: el menú lateral por grupos del proyecto original, no
la rejilla de hexágonos, que es de la versión para móvil.
| | |
![Oasis de escritorio](img/08-portada.png)
| Página | De qué va |
|---|---|
| **[Karvan](Karvan)** | Salas que viven solo en memoria y se autodestruyen |
| **[Llamadas](Llamadas)** | Audio y vídeo sobre WebRTC, sin servidores de terceros |
| **[Instalar](Instalar)** | Igual que el oficial |
| **[Instalar](Instalar)** | Puesta en marcha, TURN y avisos antes de tocar tu `~/.ssb` |
| **[Karvan](Karvan)** | Salas efímeras: crearlas, entrar, invitar, qué protege y qué no |
| **[Llamadas](Llamadas)** | WebRTC sin servidores de terceros, y cómo montar un TURN propio |
| **[Chats](Chats)** | Los chats cifrados, con respuesta citada |
| **[Temas](Temas)** | Cómo se ve el módulo con los cuatro temas |
| **[Diferencias con la versión de móvil](Diferencias)** | Qué cambia y por qué |
| **[Estado](Roadmap)** | Qué funciona y qué no |
Todas las capturas de esta wiki están tomadas de esta rama funcionando en un navegador
real. Lo que se ve es lo que sale.
---
## Instalación
## Karvan, de un vistazo
Exactamente igual que el Oasis oficial:
![Sala de Karvan](img/02-karvan-sala.png)
```sh
cd src/server && npm install
cd ../.. && ./oasis.sh
```
Karvan aparece en el menú lateral, en el grupo de comunicación, junto a los chats. Se
puede apagar desde `/modules` como cualquier otro módulo.
Una sala efímera: el tiempo que le queda arriba a la derecha, los botones de llamada,
y los mensajes, que **solo viven en la memoria del proceso**. Al vencer el plazo
desaparece todo. Explicado en detalle en **[Karvan](Karvan)**.
---
## Relación con la versión para móvil
Hay un repositorio hermano, **OASIS_MOBILE**, con la versión de Android: misma base y
mismo módulo Karvan, pero con una interfaz distinta pensada para el pulgar.
Hay un repositorio hermano,
**[OASIS_MOBILE](https://gitea.laenre.net/hacklab/OASIS_MOBILE)**, con la versión de
Android: misma base y mismo módulo Karvan, pero con una interfaz distinta pensada para
el pulgar.
El código de Karvan es el mismo en ambos. Lo que cambia es el enganche: aquí un enlace
en el menú lateral siguiendo el patrón del proyecto original, allí una rejilla de
hexágonos.
hexágonos. Está desarrollado en **[Diferencias](Diferencias)**.
---

@ -13,9 +13,49 @@ cd ../.. && ./oasis.sh
Abre `http://localhost:3000`.
Al arrancar verás en el terminal el resumen de siempre y, al final,
`Modules loaded: [ 999 ]`. Eso significa que el backend está en pie.
## Activar Karvan
Viene activado. Si no lo ves en el menú lateral, míralo en `/modules`.
Viene activado. Si no lo ves en el menú lateral, míralo en `/modules`: aparece entre
Jobs y L.A.R.P.
![Karvan en la pantalla de módulos](img/07-modules.png)
## Varias identidades en el mismo equipo
Esta rama admite más de una cuenta. La variable `OASIS_ACCOUNT` decide **dónde vive
todo**: el `secret`, la base de datos y los blobs.
```sh
./oasis.sh # la de siempre, en ~/.ssb
OASIS_ACCOUNT=pruebas ./oasis.sh # otra identidad, en ~/.pruebas
```
El nombre se valida (letras, números, guion y guion bajo, hasta 32 caracteres) porque
acaba formando rutas de fichero y hay operaciones destructivas —el modo pánico borra
el directorio de la cuenta— que no deben poder apuntar fuera de sitio.
Sirve para probar esta rama **sin tocar tu identidad real**, que es lo recomendable:
```sh
OASIS_ACCOUNT=pruebas ./oasis.sh gui --host=127.0.0.1 --port=3010
```
> Todavía **no hay selector en la interfaz**: se elige al arrancar. Ver
> [Estado](Roadmap).
## Si los iconos se ven como cuadros
Oasis usa caracteres Unicode poco comunes para los iconos del menú. Si te salen como
□, tu sistema no tiene una fuente que los cubra:
```sh
sudo apt install fonts-noto-core # Debian, Ubuntu y derivadas
```
No es un fallo de Oasis y no afecta a nada más que a cómo se ve.
## Configurar un TURN

@ -6,16 +6,74 @@
Salas de chat que **viven solo en memoria** y se destruyen solas. Nada se escribe en
disco ni en el registro de SSB.
---
## Cómo funciona
## Recorrido completo, paso a paso
Al crear una sala eliges cuánto vive. A partir de ahí:
### 1. Encontrar Karvan
- **Se autodestruye por inactividad** (30 minutos por defecto) y **por tiempo
absoluto** (2 horas), lo que ocurra antes. El plazo absoluto no se renueva con la
actividad: la sala muere igual.
- Al vencer, **se borra todo**: mensajes, señales y la lista de miembros.
- Si reinicias Oasis, las salas desaparecen. Es lo correcto: solo existían en memoria.
![Menú lateral con Karvan](img/03-menu-lateral.png)
Karvan está en el menú lateral derecho, dentro de **Community**, al final de la lista,
detrás de Chats. Es un enlace normal del menú, hecho con el mismo patrón que los
demás.
> Si los iconos del menú se ven como cuadros vacíos (□), no es un fallo de Oasis: le
> falta a tu sistema una fuente con cobertura Unicode amplia. En Debian y derivadas se
> arregla con `apt install fonts-noto-core`.
### 2. Crear una sala
![Karvan · Ephemeral rooms](img/01-karvan-lista.png)
La pantalla tiene dos partes. Arriba el formulario: un **nombre opcional** y **cuánto
vive** —30 minutos, 2 horas u 8 horas—, con el botón **Create ephemeral room**.
Debajo, **Active rooms**: las salas que existen ahora mismo en este nodo, con su
número de mensajes y lo que les queda de vida.
Sin nombre, la sala se llama por su identificador. El nombre no es una credencial: no
sirve para entrar, solo para reconocerla en la lista.
### 3. Dentro de la sala
![Sala con mensajes](img/02-karvan-sala.png)
De arriba abajo:
- ** Rooms** vuelve a la lista, el nombre de la sala en el centro, y a la derecha el
tiempo que le queda. Ese contador baja siempre; no se renueva porque haya
conversación.
- **server relay** con un punto gris: por dónde van los mensajes ahora mismo. Gris es
a través del servidor; se pone verde cuando hay canal directo entre navegadores.
- Los **botones de llamada**: 📞 Call, micrófono, cámara y colgar. Ver
**[Llamadas](Llamadas)**.
- Los **mensajes**, y más abajo el campo para escribir y el de invitar por `@feed-id`.
### 4. Invitar a alguien
Dos formas:
**Pasar el enlace** — el identificador de la sala son 72 bits al azar y es la única
credencial que existe.
**Invitar por identidad** — se pega el `@feed-id` de un contacto y Oasis le manda un
**mensaje privado de SSB** con el enlace dentro, sin publicarlo en ningún sitio.
---
## Cuánto vive una sala
Dos relojes corren a la vez, y se destruye con el que llegue antes:
| | |
|---|---|
| **Por inactividad** | 30 minutos sin actividad. Este sí se reinicia con cada mensaje |
| **Por tiempo absoluto** | El que elegiste al crearla. **No** se reinicia nunca |
| **Tope duro** | 24 horas, aunque se pida más |
Al vencer, **se borra todo**: mensajes, señales y la lista de miembros. Si reinicias
Oasis, las salas desaparecen: es lo correcto, solo existían en memoria.
## Quién puede entrar

@ -7,13 +7,35 @@ Dentro de una sala de [Karvan](Karvan) hay un botón de llamada. El audio y el v
van **directamente entre los participantes** por WebRTC, cifrados de extremo a extremo
por el propio protocolo.
## Los botones
![Panel de llamada dentro de una sala](img/02-karvan-sala.png)
Están dentro de la sala, encima de los mensajes, y son cuatro:
| | |
|---|---|
| **📞 Call** | Inicia la llamada. Es el que dispara la petición de permisos |
| **🎤** | Silencia y devuelve el micrófono sin colgar |
| **🎥** | Apaga y enciende la cámara sin colgar |
| **⛔** | Cuelga y devuelve la sala a su estado inicial |
Mientras hay llamada, los tres primeros se ponen encendidos y debajo aparece el estado
(`mic ON · cam ON`). El vídeo propio y el de los demás salen encima de la barra, en
una rejilla que se adapta al número de participantes.
Los mensajes de la sala siguen funcionando durante la llamada: no hay que elegir entre
hablar y escribir.
## Permisos de cámara y micrófono
En escritorio los pide el navegador directamente, la primera vez que inicias una
llamada. No hay nada especial que configurar.
En la versión de Android hizo falta un envoltorio propio para poder concederlos; aquí
no aplica.
En la versión de Android hizo falta un envoltorio propio para poder concederlos,
porque la APK oficial ni declara los permisos ni implementa el método que se los
concede al contenido web. Aquí no aplica: eso lo resuelve el navegador. Ver
[Diferencias](Diferencias).
## Sin servidores de terceros

@ -3,22 +3,41 @@
> ⚠ Rama experimental, no oficial. El Oasis oficial es
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
Sin fechas: esto se hace cuando se puede.
## Hecho
- Base **Oasis 0.9.5**, al día con el proyecto oficial.
- **[Karvan](Karvan)** con su enlace en el menú lateral, siguiendo el mismo patrón que
el resto de módulos.
- Estilos del módulo en su propia hoja, para que se vea igual con cualquier tema.
el resto de módulos, y su fila en `/modules` en orden alfabético.
- Estilos del módulo en su propia hoja, cargada después del tema, **probada con los
cuatro temas**. Ver [Temas](Temas).
- **Responder citando** en los [chats](Chats), sin JavaScript en el cliente.
- **Sin STUN de terceros**, con configuración para TURN propio.
- **Multicuenta en el arranque**: `OASIS_ACCOUNT=<nombre>` levanta una identidad
separada en `~/.<nombre>`, con su propio `secret`, su base de datos y sus blobs.
## En curso
- **Selector de identidad en la interfaz.** La base está —el arranque ya soporta
varias cuentas— pero falta la pantalla para cambiar de una a otra, que además tiene
que reiniciar el proceso.
- Poner en marcha un TURN en un pub, para las llamadas fuera de la red local.
## Sin empezar
- Poner en marcha un TURN en un pub.
- Varias identidades en el mismo equipo con cambio desde la interfaz.
- Empaquetado `.deb` de esta rama.
- Automatizar la construcción cuando el proyecto oficial publica una versión.
## Probado y no probado
**Probado**: arranque con cuenta aislada, crear salas, mensajes, respuesta citada,
`/modules`, los cuatro temas, y el panel de llamada en su sitio.
**No probado**: una llamada real entre dos equipos distintos con TURN de por medio.
Lo que está verificado es que el panel se dibuja bien y que el navegador pide los
permisos; la negociación entre dos nodos separados por NAT está pendiente.
## Diferencias con la versión para móvil
La versión de Android lleva además una interfaz propia (hexágonos, barra de accesos
rápidos) y algunos módulos recortados por peso. Aquí no: la interfaz es la del
proyecto original y están todos los módulos.
Están en su propia página: **[Diferencias](Diferencias)**.

55
Temas.md Normal file

@ -0,0 +1,55 @@
# Temas
> ⚠ Rama experimental, no oficial. El Oasis oficial es
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
Oasis trae cuatro temas y se cambian en **Settings**. Karvan funciona con los cuatro.
![Karvan con los cuatro temas](img/06-temas.png)
De izquierda a derecha y de arriba abajo: **Dark-SNH** (el de fábrica), **Clear-SNH**,
**Matrix-SNH** y **Purple-SNH**. La misma sala, el mismo módulo.
---
## Por qué Karvan tiene su propia hoja de estilos
El módulo trae `karvan.css`, aparte de los temas. Es el mismo patrón que usa
`highlight.css` en el proyecto original: una hoja que no pertenece a ningún tema
concreto porque define **la forma** —las burbujas, los botones redondos de llamada, la
rejilla de vídeo— y no los colores de la interfaz.
Se carga después del tema, así que la forma del módulo se mantiene con cualquiera de
los cuatro.
## La excepción: el tema claro
**Clear-SNH** usa `!important` en casi todas sus reglas, así que gana siempre sobre
cualquier hoja posterior. Es una decisión del tema, no un fallo, y no tiene sentido
pelearse con ella a base de más `!important`.
La solución es la que ya usa Oasis: **que el tema pinte el módulo**. Clear-SNH lleva
al final un bloque que traduce Karvan a su paleta clara —burbujas color crema, texto
oscuro, títulos naranja—, igual que hace con el resto de la interfaz.
Sin ese bloque, las burbujas salían negras sobre fondo blanco y el texto secundario en
amarillo pálido, ilegible. Se ve la diferencia comparando la captura de arriba a la
derecha con cualquier versión anterior.
---
## Si añades un tema
Basta con copiar uno de los cuatro y cambiarle los colores: Karvan no necesita nada
más, porque su forma viene de `karvan.css`.
Solo si tu tema usa `!important` —como Clear-SNH— tendrás que añadirle un bloque
propio para el módulo. La lista de clases que conviene cubrir:
```
.karvan-back .karvan-room-title .kr-title títulos y navegación
.karvan-sub .karvan-expire .karvan-live .kr-meta textos secundarios
.karvan-room-item cada sala de la lista
.karvan-msg .karvan-msg-self las burbujas
.km-from .km-text autor y texto del mensaje
```

22
_Sidebar.md Normal file

@ -0,0 +1,22 @@
### Oasis Linux · rama `PRUEBAS`
**⚠ No es Oasis oficial**
[El oficial es este](https://github.com/epsylon/oasis)
---
- [Portada](Home)
- [Instalar](Instalar)
- [Karvan · salas efímeras](Karvan)
- [Llamadas](Llamadas)
- [Chats](Chats)
- [Temas](Temas)
---
- [Diferencias con móvil](Diferencias)
- [Estado](Roadmap)
---
[Versión de Android](https://gitea.laenre.net/hacklab/OASIS_MOBILE)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

BIN
img/01-karvan-lista.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
img/02-karvan-sala.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
img/03-menu-lateral.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
img/04-chat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

BIN
img/05-chat-respuesta.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

BIN
img/06-temas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
img/07-modules.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
img/08-portada.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB