wiki: dos paginas nuevas y portada al dia
Estructura del codigo, con la tabla de ficheros propios y por que cada uno esta donde esta. Si algo va mal: iconos sin fuente, dependencias en src/server, levantar una segunda instancia para probar llamadas, Karvan apagado en modulos, el CSS con comentarios sin cerrar, el tema claro, la llamada que no conecta y el aviso de no publicar desde dos sitios con la misma clave.
parent
3223dbd8f6
commit
9499af74d5
8 changed files with 217 additions and 1 deletions
103
Estructura.md
Normal file
103
Estructura.md
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
# Cómo está organizado el código
|
||||
|
||||
> ⚠ Rama experimental, no oficial. El Oasis oficial es
|
||||
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
|
||||
|
||||
Esta rama tiene que hacer dos cosas a la vez: añadir funciones y **seguir el ritmo de
|
||||
epsylon**, que publica una versión cada pocos días. Lo segundo solo sale bien si el
|
||||
código propio se distingue del suyo y no le estorba.
|
||||
|
||||
---
|
||||
|
||||
## La regla
|
||||
|
||||
**Upstream no usa ni un solo subdirectorio** en `src/views`, `src/backend`,
|
||||
`src/models`, `src/client/assets/styles` ni `src/client/assets/translations`: 66 vistas
|
||||
y 67 modelos, todos planos. La rama sigue esa misma forma, y los mismos nombres:
|
||||
`*_model.js` para modelos, `*_view.js` para vistas, `*_views.js` cuando son varias.
|
||||
|
||||
## Los ficheros propios
|
||||
|
||||
| Fichero | Qué es | A qué se parece en upstream |
|
||||
|---|---|---|
|
||||
| `src/models/karvan_model.js` | Las salas efímeras y su ciclo de vida | `polls_model.js` |
|
||||
| `src/views/karvan_view.js` | La lista de salas y la sala | `chats_view.js` |
|
||||
| `src/backend/karvan_routes.js` | Las rutas del módulo | — (ver abajo) |
|
||||
| `src/client/public/js/karvan.js` | El cliente WebRTC del navegador | `pdf-viewer.js` |
|
||||
| `src/client/assets/styles/karvan.css` | Los estilos del módulo | `highlight.css` |
|
||||
| `src/views/identities_view.js` | El selector de identidades | cualquier `*_view.js` |
|
||||
| `src/backend/accounts.js` | Encontrar y elegir identidades | `nameCache.js` |
|
||||
| `src/backend/turnCredentials.js` | Credenciales efímeras para TURN | `wallet_addresses.js` |
|
||||
| `src/client/assets/translations/i18n_fork.js` | Los textos de la rama | junto a `i18n.js` |
|
||||
| `src/views/hive_views.js` | La interfaz de móvil | `main_views.js` |
|
||||
|
||||
Ese último está aquí **sin dibujar nada**: sus funciones empiezan con
|
||||
`if (process.env.OASIS_MOBILE !== '1') return "";`. Vive en los dos repositorios para
|
||||
que `main_views.js` sea idéntico y las actualizaciones de upstream se apliquen una sola
|
||||
vez. Ver [Diferencias con la versión de móvil](Diferencias).
|
||||
|
||||
## Y lo que se toca de lo suyo
|
||||
|
||||
**Enganches de una línea**, casi siempre:
|
||||
|
||||
```js
|
||||
// main_views.js
|
||||
renderKarvanLink() // calcado de renderPollsLink()
|
||||
```
|
||||
|
||||
## Las tres decisiones que no son obvias
|
||||
|
||||
### Por qué las rutas van aparte
|
||||
|
||||
Upstream mete **625 rutas** en `backend.js`, en una sola cadena. Ese fichero se
|
||||
reescribe en cada versión: `+833/-286` líneas en la 0.9.2, `+266/-31` en la 0.9.1. Una
|
||||
ruta añadida en medio entra en conflicto **cada vez**.
|
||||
|
||||
Las del módulo viven en `karvan_routes.js`, montadas en un router propio que se inserta
|
||||
antes del de upstream: lo que no casa cae a `next()` y sigue su curso. Es la única
|
||||
pieza que no imita a una existente, y por un motivo medible.
|
||||
|
||||
### Por qué las traducciones son un overlay
|
||||
|
||||
Upstream tiene once ficheros `oasis_XX.js` y **los reescribe enteros** en cada versión.
|
||||
`i18n_fork.js` lleva las claves de la rama aparte, y `i18n.js` las mezcla con tres
|
||||
líneas. Dentro va solo lo propio: los nombres de las categorías no están, porque son
|
||||
los de epsylon.
|
||||
|
||||
### Por qué Karvan trae su propia hoja de estilos
|
||||
|
||||
Igual que `highlight.css` en upstream: define la forma —las burbujas, los botones
|
||||
redondos de llamada, la rejilla de vídeo— y no los colores de la interfaz, que los pone
|
||||
el tema. Ver [Temas](Temas).
|
||||
|
||||
---
|
||||
|
||||
## Lo que se ha quitado por sobrar
|
||||
|
||||
| Qué | Por qué sobraba |
|
||||
|---|---|
|
||||
| `views/fork/` y `translations/fork/` | Subdirectorios propios; upstream no tiene ninguno |
|
||||
| Una segunda ruta `/legacy/export` | Copia exacta de la del dev, en otro fichero |
|
||||
| `media-favorites.js` y su JSON | De una versión anterior; nadie lo requería |
|
||||
| El campo `subtopic` en el foro | Resto de unos subtemas propios que se descartaron |
|
||||
|
||||
---
|
||||
|
||||
## Cómo comprobarlo
|
||||
|
||||
Contra un clon de upstream de la misma versión:
|
||||
|
||||
```sh
|
||||
# ficheros propios de la rama
|
||||
for d in src/backend src/models src/views; do
|
||||
diff <(ls ../oasis/$d) <(ls $d) | grep '^>'
|
||||
done
|
||||
|
||||
# subdirectorios que upstream no tiene (no debería salir ninguno)
|
||||
find src/views src/backend src/models -maxdepth 1 -type d | tail -n +2
|
||||
|
||||
# líneas añadidas sobre cada fichero suyo
|
||||
for f in $(git ls-files 'src/**/*.js'); do
|
||||
[ -f ../oasis/$f ] && n=$(diff ../oasis/$f $f | grep -c '^>') && [ $n -gt 0 ] && echo "$n $f"
|
||||
done | sort -rn
|
||||
```
|
||||
4
Home.md
4
Home.md
|
|
@ -27,7 +27,7 @@ Dos cosas, y ninguna cambia la interfaz que ya conoces:
|
|||
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.
|
||||
|
||||

|
||||

|
||||
|
||||
| Página | De qué va |
|
||||
|---|---|
|
||||
|
|
@ -37,6 +37,8 @@ la rejilla de hexágonos, que es de la versión para móvil.
|
|||
| **[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é |
|
||||
| **[Estructura del código](Estructura)** | Dónde vive cada fichero y por qué ahí |
|
||||
| **[Si algo va mal](Problemas)** | Los fallos que han pasado de verdad, y su arreglo |
|
||||
| **[Estado](Roadmap)** | Qué funciona y qué no |
|
||||
|
||||
Todas las capturas de esta wiki están tomadas de esta rama funcionando en un navegador
|
||||
|
|
|
|||
109
Problemas.md
Normal file
109
Problemas.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# Si algo va mal
|
||||
|
||||
> ⚠ Rama experimental, no oficial. El Oasis oficial es
|
||||
> https://github.com/epsylon/oasis · [Volver a la portada](Home)
|
||||
|
||||
Todo lo de esta página ha pasado de verdad durante el desarrollo.
|
||||
|
||||
---
|
||||
|
||||
## Los iconos se ven como cuadros vacíos (□)
|
||||
|
||||

|
||||
|
||||
**No es un fallo de Oasis.** Usa caracteres Unicode poco comunes para los iconos del
|
||||
menú y a tu sistema le falta una fuente que los cubra. En la captura se ven así los del
|
||||
menú lateral, menos el reloj de arena de Karvan.
|
||||
|
||||
```sh
|
||||
sudo apt install fonts-noto-core # Debian, Ubuntu y derivadas
|
||||
```
|
||||
|
||||
No afecta a nada más que a cómo se ve.
|
||||
|
||||
## No arranca: falta hyperaxe o algún módulo
|
||||
|
||||
```
|
||||
Cannot find module '../../server/node_modules/hyperaxe'
|
||||
```
|
||||
|
||||
Faltan las dependencias. Se instalan **dentro de `src/server`**, no en la raíz:
|
||||
|
||||
```sh
|
||||
cd src/server && npm install
|
||||
```
|
||||
|
||||
## Arranca pero el puerto está ocupado
|
||||
|
||||
Si ya tienes un Oasis corriendo, el segundo no puede coger el mismo puerto web ni el de
|
||||
SSB. Para levantar una segunda instancia —útil para probar llamadas entre dos
|
||||
identidades—:
|
||||
|
||||
```sh
|
||||
OASIS_ACCOUNT=pruebas ./oasis.sh gui --host=127.0.0.1 --port=3011 --no-open -- --port=8009
|
||||
```
|
||||
|
||||
Lo que va detrás de `--` se le pasa a la configuración de SSB; ahí es donde se cambia
|
||||
el puerto del protocolo.
|
||||
|
||||
## Karvan no aparece en el menú
|
||||
|
||||
Míralo en `/modules`: está entre **Jobs** y **L.A.R.P.**. Si su casilla está
|
||||
desmarcada, el módulo está apagado y su ruta devuelve un error.
|
||||
|
||||

|
||||
|
||||
## El panel de llamada se ve descuadrado
|
||||
|
||||
Ya no debería. Hubo un fallo real: un comentario sin cerrar en `karvan.css` anulaba
|
||||
todo el bloque de la videollamada, y el resultado eran dos cajas vacías enormes y unos
|
||||
botones cuadrados. Está arreglado.
|
||||
|
||||
Si te pasa algo parecido tras tocar el CSS, comprueba que no has dejado un comentario
|
||||
abierto:
|
||||
|
||||
```sh
|
||||
python3 -c "
|
||||
import re;s=open('src/client/assets/styles/karvan.css').read()
|
||||
st=re.sub(r'/\*.*?\*/','',s,flags=re.S)
|
||||
assert '/*' not in st, 'comentario sin cerrar'
|
||||
assert st.count('{')==st.count('}'), 'llaves descuadradas'
|
||||
print('ok')"
|
||||
```
|
||||
|
||||
## Con el tema claro, las burbujas se ven raras
|
||||
|
||||
**Clear-SNH** usa `!important` en casi todas sus reglas, así que gana sobre cualquier
|
||||
hoja posterior. Por eso ese tema trae su propio bloque para Karvan, que lo traduce a la
|
||||
paleta clara. Si añades un tema con `!important`, tendrás que hacer lo mismo. La lista
|
||||
de clases a cubrir está en [Temas](Temas).
|
||||
|
||||
## La llamada no conecta
|
||||
|
||||
Comprueba, por este orden:
|
||||
|
||||
1. **Que el indicador está en verde.** Si dice *server relay* con el punto gris, los
|
||||
dos navegadores todavía no se han encontrado.
|
||||
2. **Que hay otro participante de verdad.** Con uno solo, se enciende tu cámara y poco
|
||||
más.
|
||||
3. **Si estáis en redes distintas**, hace falta un TURN. De fábrica no hay ninguno —a
|
||||
propósito, para no filtrar la IP a un tercero—. Ver [Llamadas](Llamadas).
|
||||
|
||||
En la misma red local debería conectar sin nada más.
|
||||
|
||||
## Cambié de identidad y sigo viendo la anterior
|
||||
|
||||
El cambio **se aplica al reiniciar**. Cierra Oasis y vuelve a arrancarlo. La variable
|
||||
`OASIS_ACCOUNT` manda sobre lo que diga el selector, así que si arrancas con ella,
|
||||
ignorará tu elección. Ver [Instalar](Instalar).
|
||||
|
||||
## Aviso serio: no publiques desde dos sitios con la misma identidad
|
||||
|
||||
Si el selector marca en rojo **"Comparte clave con otra identidad"**, esas dos carpetas
|
||||
tienen el mismo `secret`.
|
||||
|
||||
Un registro de SSB es una cadena firmada y numerada. Si dos sitios publican el número
|
||||
500 con contenidos distintos, la red ve una bifurcación, deja de replicar el feed y
|
||||
**eso no se arregla**: se pierde la identidad.
|
||||
|
||||
Tener la copia no hace daño. Publicar desde las dos, sí.
|
||||
|
|
@ -15,6 +15,8 @@
|
|||
---
|
||||
|
||||
- [Diferencias con móvil](Diferencias)
|
||||
- [Estructura del código](Estructura)
|
||||
- [Si algo va mal](Problemas)
|
||||
- [Estado](Roadmap)
|
||||
|
||||
---
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 107 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 114 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 113 KiB |
BIN
img/11-portada.png
Normal file
BIN
img/11-portada.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 108 KiB |
Loading…
Add table
Add a link
Reference in a new issue