Skip to content

GreySpace v2.1.3

Choose a tag to compare

@MCV27 MCV27 released this 04 Jun 22:32

v2.1.3 — Transfert web incassable : reprise sur coupure + intégrité

  • Reprise automatique sur coupure (navigateur → PC) : un upload web interrompu (Wi-Fi coupé) reprend au dernier octet reçu côté PC au lieu de repartir de zéro. Le client interroge GET /upload-offset, calcule le chunk de reprise (floor(received/CHUNK_SIZE)) et continue ; gestion du 409 (re-synchronisation) et bouton « Reprendre » tant que la sélection est en mémoire.
  • Écriture serveur reprise-sûre (idempotente) : _handleUploadChunk append au bon offset, ignore un chunk déjà reçu, renvoie 409 sur trou, et soigne un chunk partiel (torn write) par troncature+ré-écriture. Aucune corruption à la reprise.
  • Intégrité fin de fichier : validation de la taille au dernier chunk (422 + pas de signalement onFileReceived si mismatch).
  • Reprise scopée à la session : un 1er envoi écrase proprement un fichier homonyme périmé (chunk 0) ; seuls les transferts qu'on a nous-mêmes commencés reprennent (clé = identité du fichier) → jamais de mélange d'octets entre deux fichiers de même nom.
  • Watchdog upload 30 s : une requête d'upload figée libère la socket et nettoie l'UI de réception (distinct du ping web 8 s).
  • Galerie iOS robuste : sélection de dizaines/centaines de vidéos sans freeze (icône statique au lieu de génération de vignette vidéo qui saturait Safari), miniatures images en lazy-load, retry chunk ×3 avec backoff, Wake Lock pendant l'envoi, statut par fichier (✓/✗ + raison), skip explicite des fichiers iCloud non téléchargés.
  • Tests : suite E2E test/integration/http_upload_resume_test.dart (reprise bytewise identique, idempotence, 409, 422, torn-write).

Téléchargements : macOS (.dmg) et Android (.apk) disponibles ci-dessous. La build Windows suivra (ajoutée à cette même release).