Le projet Fugu est-il « terminé » ?

L'un des objectifs de l'équipe du projet Fugu est de permettre aux développeurs de faire tout ce que les applications spécifiques à une plate-forme peuvent faire sur le Web. L'équipe a donc été occupée à ajouter les fonctionnalités manquantes dont les développeurs Web avaient besoin pour combler cette lacune. Si vous ne me croyez pas, consultez simplement la section "Expédié" du traceur de l'API Fugu. Voici les 55 API publiées, de la plus ancienne à la plus récente:

Nom de l'API Expédié en
API Web BluetoothChrome 56
API WebUSBChrome 61
Cible de partage WebChrome 71
Niveau 2 de l'API Web ShareChrome 75
Presse-papiers asynchrone: lire et écrire des imagesChrome 76
Niveau 2 de la cible de partage sur le WebChrome 76
Saisir un indice de cléChrome 77
Augmenter le quota de stockageChrome 78
API Get Installed Related AppsChrome 80
Synchronisation périodique en arrière-planChrome 80
desktop-pwas: prise en charge du mode d'affichage "minimal-ui"Chrome 80
Codecs de compressionChrome 80
API ContactsChrome 80
API BadgingChrome 81
Autoriser l'utilisation de l'API Badging à partir d'un service worker via PushChrome 81
API Barcode DetectionChrome 83
API Content IndexingChrome 84
WebOTPChrome 84
API Screen Wake LockChrome 84
API Streams: flux transférablesChrome 85
Raccourcis d'applicationChrome 85
Accès au système de fichiersChrome 86
Compatibilité avec le format text/html pour l'API de presse-papiers asynchroneChrome 86
Compatibilité avec la fonctionnalité Panoramique/Inclinaison pour l'appareil photoChrome 87
FUGU Implémenter la capture de la sortie audio du système et de l'application sur les casques et les haut-parleurs Chrome 88
PointerLock unadjustedMovementChrome 88
Créer un sélecteur de photos/vidéos semblable au sélecteur de photos d'AndroidChrome 88
Intégration de la fonctionnalité Partager sur le Web (navigator.share) à Windows 10Chrome 88
NFC WebChrome 89
WebHID (Human Interface Device)Chrome 89
API Web SerialChrome 89
Partage Web sur ordinateurChrome 89
API Handwriting RecognitionChrome 90
Configuration gérée pour les applications WebChrome 91
Exécuter une PWA sur OS LoginChrome 91
WebCodecsChrome 93
Détection d'inactivitéChrome 94
API EyeDropperChrome 95
Menu de raccourcis d'application pour les PWA sur macOS et LinuxChrome 96
Enregistrement du gestionnaire de protocoles d'URL pour les PWA Chrome 96
WebTransportChrome 97
Presse-papiers: le collage d'images Retina entraîne la perte des métadonnées pHYs.Chrome 98
Les PWA doivent pouvoir être désinstallées de la même manière qu'une "vraie application".Chrome 99
NFC Web: makeReadOnly() de NDEFReaderChrome 100
Multi-Screen Window PlacementChrome 100
forget() de HIDDeviceChrome 100
USBDevice forget()Chrome 101
Comportement de sameObject dans Web USBChrome 101
Superposition des commandes de fenêtre pour les applications Web pour ordinateur installéesChrome 102
Gestion des fichiersChrome 102
L'API chrome.management ne peut plus interagir avec les applications PWAChrome 102
forget() de SerialPortChrome 103
Accès aux polices localesChrome 103
Demande Fugu: raccourcis d'application dynamiques (Raccourcis v2)Chrome 104
Formats Web personnalisés pour l'API Async ClipboardChrome 104
Toutes les API Fugu publiées à ce jour.

La liste est longue, et nous avons d'autres projets en cours. Certaines API et fonctionnalités sont toujours en test pour les développeurs (c'est-à-dire implémentées, mais derrière un flag de fonctionnalité), d'autres sur lesquelles nous avons commencé à travailler et de nombreuses en cours d'examen. Comme vous pouvez le constater, il n'est pas encore temps de se reposer et de dire que nous avons terminé.

Méthodes de fichiers synchrones pour le système de fichiers privé de l'origine

Bien au contraire, plutôt que de déclarer notre effort comme terminé, nous ne faisons que commencer. Par exemple, le graphique ci-dessous montre une croissance exponentielle de l'utilisation relative de la méthode navigator.storage.getDirectory(), utilisée comme point d'entrée du système de fichiers privé d'origine (OPFS). Cette méthode est utilisée, par exemple, pour les besoins de stockage hautes performances de Photoshop, qui intéressent vivement la communauté du stockage depuis le début de l'abandon de Web SQL et même avant.

Graphique montrant l'utilisation relative en plein essor de la méthode navigator.storage.getDirectory.

Maintenant que davantage de personnes utilisent l'OPFS, des exigences supplémentaires ont vu le jour. Par exemple, la nécessité d'un ensemble de méthodes de fichiers entièrement synchrones dans un contexte de nœud de calcul (voir whatwg/fs#7 pour en savoir plus). Bien que les nouvelles API Web soient généralement asynchrones, la présence de méthodes synchrones simplifierait grandement l'utilisation de l'OPFS dans un contexte Wasm. Étant donné que cela se produit dans un worker, le thread principal ne peut pas être bloqué.

Améliorations de la confidentialité pour les API matérielles

Autre exemple : les API matérielles qui vous permettent de vous connecter à des appareils HID, série, USB, Bluetooth et NFC. Bien que certaines de ces API existent depuis un certain temps, il n'était jusqu'à récemment pas possible d'oublier un appareil auquel vous aviez déjà été connecté. C'est désormais possible grâce aux méthodes forget() pour certaines des API. Par exemple, voici comment oublier un appareil série précédemment connecté, ce qui améliore la confidentialité de l'API.

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

Améliorations apportées à l'API Multi-Screen Window Placement

Un dernier exemple est l'API Multi-Screen Window Placement, où, sur la base des commentaires des développeurs, les libellés d'écran génériques tels que "Internal Display 1" ont été remplacés par des libellés plus pertinents tels que "Built-in Retina Display" afin que les utilisateurs puissent associer plus facilement ces libellés aux écrans de leur configuration multi-écran.

Conclusions

Comme vous pouvez le constater avec ces trois exemples, le projet Fugu est loin d'être terminé. Continuez à utiliser nos API ou commencez à les utiliser, et envoyez-nous vos commentaires. Étant donné que toutes les spécifications Fugu sont développées en public sur GitHub, vous pouvez signaler un problème de spécification dans le dépôt GitHub correspondant ou ajouter vos commentaires à un problème existant. Si vous trouvez un bug dans l'implémentation de Chrome ou si vous découvrez que l'implémentation est différente de la spécification, signalez-le sur new.crbug.com. Veillez à inclure autant de détails que possible et à fournir des instructions simples pour reproduire le problème.

Si vous vous préoccupez de la compatibilité avec les navigateurs, de nombreuses API Fugu offrent d'excellentes améliorations progressives. Consultez mon article SVGcode: une PWA pour convertir des images matricielles en graphiques vectoriels SVG pour vous inspirer. Nous ne considérons pas notre travail terminé tant que ces API ne sont pas interopérables. Nous allons continuer à encourager la normalisation, les tests et l'adoption par d'autres navigateurs.