bambouville

mosh

Mosh garde une session en vie quand le réseau ne coopère pas : passez du Wi-Fi à la cellulaire, refermez le capot, sortez de portée — reconnectez-vous et la session est toujours là. Tessera y ajoute ce qu'aucun autre client mosh sur iOS ne propose : un véritable historique.

Mosh nécessite mosh-server installé sur l'hôte, et les ports UDP 60000–61000 ouverts par défaut. Choisissez-le hôte par hôte dans le réglage de transport de l'éditeur d'hôtes.

Itinérance

Une session mosh est liée à votre identité, pas à votre chemin réseau. Tessera reste attaché lors des bascules Wi-Fi ↔ cellulaire, des changements d'adresse et des veilles/réveils — la session reprend simplement là où les paquets s'étaient arrêtés. Via un VPN ou un tailnet, cela fonctionne de la même façon ; mosh a seulement besoin d'UDP pour atteindre le serveur.

Véritable historique

Mosh d'origine n'a pas d'historique — par conception, il ne synchronise que l'écran visible, donc tout ce qui défile hors champ n'est jamais transmis. Tous les autres clients mosh sur iOS héritent de cette limite et vous renvoient au mode copie de tmux.

Tessera synthétise l'historique à la place. Dans une session mosh adossée à tmux, le terminal circule en UDP pendant qu'un second canal SSH secondaire dialogue avec tmux ; remonter tire l'historique réel par ce canal et l'affiche sur place — consultable avec rechercher dans le terminal, sélectionnable, intact.

Une session mosh dans Tessera remontée dans un long git log, avec les messages de commit et les diffstats entièrement affichés, l'invite du shell visible en dessous.
Une session mosh remontée loin dans un git log — un historique que mosh d'origine aurait jeté.

Son comportement pendant que vous lisez :

  • Remonter révèle l'historique figé sur place — la nouvelle sortie ne vous ramène pas brutalement en bas.
  • Revenir en bas (ou taper au clavier) referme la surcouche sur l'écran en direct, à jour.
  • Un geste rapide continue sur sa lancée : la première page se charge instantanément et le reste de l'historique arrive en flux derrière elle, jusqu'à la profondeur conservée par le serveur.

Ce qu'il lui faut

  • Un mode de lancement tmux. La synthèse de l'historique fonctionne avec les sessions tmux automatique et tmux nommé (tmux automatique est le réglage par défaut). Un hôte mosh lancé avec une commande personnalisée n'a aucun tmux à interroger : il défile donc comme mosh d'origine.
  • L'historique du serveur. La profondeur est bornée par le history-limit de tmux sur le serveur — Tessera ne peut montrer que ce que tmux a conservé.
  • L'écran principal. Les programmes plein écran comme vim, less et htop gèrent eux-mêmes le défilement ; Tessera leur transmet votre défilement comme une saisie, comme le fait tout terminal.

Mosh et tout le reste

Le canal SSH secondaire qui va chercher l'historique transporte aussi les fenêtres et volets tmux et la redirection de ports des hôtes mosh, et le panneau des fichiers ouvre son propre pont SSH — les transferts de fichiers et les tunnels fonctionnent donc de façon identique en mosh et en SSH simple.

Une réserve : l'UDP de mosh ne peut pas traverser un hôte de rebond SSH. Sur un hôte en chaîne de rebonds, Tessera tente d'abord mosh et bascule sur SSH si le serveur est injoignable en UDP. Une cible joignable en UDP par ailleurs — via un VPN ou un tailnet, par exemple — continue de fonctionner en mosh.