Cesium : Nouvelle version 1.4.17 et 1.5.x (en test)

@kimamila Vive le cache !!

Ca augmente grandement l’expérience utilisateur, c’est génial bravo.

Bon je comprends le soucis qui pourraient intervenir suite aux fork je vois que ce sont des adaptations à faire, mais c’est super. L’app fait beaucoup plus fluide dans son ensemble en 1.4.18 qu’en 1.3.11

Je ne sais pas si c’est une régression, mais lorsqu’on tente un virement directement en cliquant assez vite sur les boutons depuis l’annuaire, le destinataire ne se charge jamais.

Il faut cliquer sur le bouton « FAIRE UN VIREMENT » n’importe quand avant le début de l’animation d’affichage des éléments de la page pour produire le bug.

Fermer et ouvrir de nouveau le popup de virement affiche directement le bon destinataire sans problème.

Cela se produit à tous les coups au premier chargement d’un profile lors de la session.

1 Like

Ah oui je vois. C’est que l’identité n’est pas encore chargée, mais je devrais pouvoir corriger simplement. Peux tu faire un ticket stp ?

1 Like
1 Like

Je crois que le cache empêche également la liste des blocs de se rafraîchir. Pour reproduire :

  • choisir « network »

  • regarder les blocs actuels

  • laisser passer 30 min/1h

  • observer que la liste des noeuds s’est mise à jour, mais pas la liste des blocs.

  • redémarrer Cesium pour avoir une liste des blocs à jour.

Pour le coup ce n’est pas un bug de cesium mais un mauvais paramétrage du serveur exposant BMA.
La liste des blocks se met a jours via un websocket BMA sous le subpath /ws.

Or, Duniter est rarement exposé directement, beaucoup d’utilisateurs ont un reverse proxy style Apache/nginx. Et par défaut, le subpath /ws n’est pas configuré ou mal configuré.
Du coup soit le websocket ne s’initie pas soit il expire a cause d’un timeout trop court (typiquement il ne se passe rien entre 2 blocs, ce qui peut être très long).

EDIT: Sur mon cesium desktop basé sur g1.librelois.fr, la liste des blocs reste bien a jours :slight_smile:

EDIT2: je n’ai pas accès a mon serveur la au taff, je peut vous donner la conf nginx qui vas bien ce soir si vous voulez :slight_smile:

2 Likes

Sur quel noeud Duniter as tu testé ?

sur g1.presles.fr. Mais l’explication de Elois me semble correcte, vu que le temps entre deux blocs est particulièrement long aujourd’hui.

@bpresles il doit y avoir un souci avec ta conf réseau, si tu utilise nginx, voici le bloc a rajouter a la conf de ton vhost BMA afin que les websocket BMA restent ouvert :

upstream g1-bma-ws {
    server 127.0.0.1:10902;
}

server {

        ...

        # BMA WS
        location /ws {
                proxy_pass http://g1-bma-ws;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 1200s;
        }
}

La ligne importante c’est le timeout, perso je l’ai réglé à 20min :slight_smile:

1 Like

@elois Je n’ai pas du tout de /ws configuré dans mon NGINX.

J’ai mis des timeout de 1200s sur mon location / (qui pointe sur 10901 (BMA)) et /ws2p (qui pointe sur 20901 (WS2P)).

Et ça semble marcher…

J’ai corrigé cela en v1.5.1, livré l’instant : ouf !

3 Likes

Pour info, je livre maintenant un fichier checksum sha256 (contenant le sha256 du ZIP et du APK Android. Les autres fichiers n’y sont pas encore).
Ca va permettre d’ajouter un niveau de sécurité sur les livrables.

Par la suite, je verrai pour signer ce fichier .sha256 avec la clef Duniter Cesium. Ainsi, pour pourrait avoir des mises à jour automatique qui vérifie l’intégrité des livrables. Par exemple pour une mise à jour directement depuis Cesium desktop.
@cgeek tu n’avais dis que c’était possible je crois, en nodeJS ? Le truc que je maitrise pas, c’est la gestion des droits d’accès dans de tels scripts… Cesium desktop étant installé dans /opt en root sous Debian, j’aurais du mal à y rajouter des fichiers, non ? Une idée ?

@jytou peux tu tenter un build windose ? @bpresles pour la pomme ?
Si ca passe, je crois qu’on tiens une version stable :slight_smile: ouf !

Je viens de déployer la v1.5.2 sur g1-test.duniter.fr (G1-Test) et sur g1.le-sou.org (sur la G1)
Si voius voulez voir la nouvelle vue réseau pour les noeud Cesium+, il faut passer en mode expert, puis dans la vue réseau, cliquer sur le bouton "Cesium+ en haut.
image

Attention : cette vue est en encore instable, en particulier car elle dépends de la version des pods Cesium, qui sont en cours de mise à jour, vers cesium-plus-pod v1.5.0
Attention 2 : il faut désactiver les bulles d’aide (dans les paramètres) sinon une autre page s’ouvre de manière intempestive… je vais corriger ca

3 Likes

Je crois que tu as changé des choses dans la manière de faire les build et je ne sais plus comment la faire, en fait. Car là je ne vois pas de tags utilisables sur clients / Cesium-grp / cesium-desktop · GitLab qui est le repo sur lequel je me basais avant.

@bpresles ce que tu ne sais pas, oui ce n’est peut être pas assez clair dans la doc. C’est qu’il y aussi des websocket derrière l’api BMA. Si dans ton cas bma est sous la location / alors il faut que tu configure /ws :slight_smile:

Tu peut tester si ton websocket BMA fonctionne bien avec la commande silkaj diffi :

silkaj -p g1.presles.fr diffi

Laisse un terminal ouvert avec cette commande et repasse 30min plus tard, les infos ce sont elles bien mises a jours avec les nouveaux blocs reçus ?

Bon j’ai réussi à builder, cela n’a pas été une mince affaire, il a fallut que je reparte de zéro (clone propre). Et a noter que le build (en tous cas iOS, avec « ionic cordova prepare ios ») n’est pas complet si on ne fait pas un build web avant (il manque des fichiers dans www/dist/dist_js (es et map notamment)).

L’upload est en cours pour la 1.4.20 que je vais mettre d’abord sur TestFlight, pour valider avant mise en ligne publique sur l’AppStore.

Lien de la version 1.4.20 pour macOS: https://www.cloud-libre.eu/index.php/s/eWZrKJyr9DiBy5H

1 Like

Merci !
Si ca peut te rassurer, j’ai vraiment du bosser comme un dingue pour en arriver à cette refonte de la gestion des dépendances… Il m’a fallu faire des diff de chacune des librairies, pour etre sur d’avoir la même version, puis les upgrader une à une, et vérifier le cas échéant les régression, etc. J’ai refait entièrement le build gulp, quelques hooks, etc.

Maintenant, tout devrait etre plus propre, et surtout beaucoup plus rapide à compiler. Le JS optimisé devrait etre aussi etre plus compact, etc.

Bref, je crois qu’il fallait en passer par là, car Cesium2 et l’API GVA ont du mal à sortir de terre… Difficile pour moi d’avancer sur GVA sans savoir comment @cgeek veut coder les accès à la BDD dédiée. (mais j’ai confiance qu’il va nous faire un beau truc !).Cesium V1 a encore de beaux jours devant lui, et cette version 1.5 est une 1ere remise au propre :slight_smile:
Je penses qu’on pourrait aussi améliorer la gestion du code, notamment avec ce refactoring :

  • mettre les controller (js) et les templates (HTML) ensemble, par écran ou composant. J’avais suivi des préconisations de Ionic mais à l’usage c’est très pénible qu’ils soient séparé.
  • mettre les plugins/* et le coeur de Cesium au même niveau
  • Pourquoi pas essayer de passer en typescript. J’ai trouvé un app starter qui fait ca, tout en restant en Ionic V1 et AngularJS. Ca permettrait de pouvoir plus facilement récupérer du code dans Cesium2… Mais c’est un travail qui me semble énorme. @cgeek si tu as des idées la dessus… vis à vis de ton expérience sur Duniter.
4 Likes

Le lien pour la version TestFlight iOS: https://testflight.apple.com/join/YjRAHFqt

1 Like

@kimamila : Merci pour tout le travail effectué sur Césium. Ça reste pour beaucoup le premier contact avec la monnaie libre donc ce que tu fais à un gros impact. :slight_smile:

@elois : Il y a une doc pour mettre duniter correctement derrière un proxy nginx / apache / haproxy / autre ? Je me souviens pas d’avoir vu passer l’histoire de « /ws » pour les websockets…