Le projet Fugu est-il « terminé » ?

L'un des objectifs de l'équipe Project Fugu étant de permettre aux développeurs de faire tout ce que peuvent faire sur le Web les applications spécifiques à une plate-forme, l'équipe s'est efforcée d'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é" de l'outil de suivi de l'API Fugu. Voici les 55 API expédié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 d'API 2 Web ShareChrome 75
Presse-papiers asynchrone: lire et écrire des imagesChrome 76
Cible de partage Web (niveau 2)Chrome 76
Saisir l'indice cléChrome 77
Augmenter le quota de stockageChrome 78
API "Get Installer Reference Apps"Chrome 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 de badge à partir d'un service worker via le mode 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
text/html Prise en charge de l'API du presse-papiers asynchroneChrome 86
Compatibilité avec la fonctionnalité de panoramique et d'inclinaison pour l'appareil photoChrome 87
FUGU Implémentez la capture de la sortie audio du système et de l'application sur les casques et les enceintes. Chrome 88
PointerLock unadjustedMovementChrome 88
Créer un sélecteur de photos/vidéos semblable au sélecteur de photos sur AndroidChrome 88
Intégration de Web Share (navigator.share) à Windows 10Chrome 88
Web NFCChrome 89
WebHID (Human Interface Device)Chrome 89
API Web SerialChrome 89
Partage Web sur le bureauChrome 89
API de reconnaissance de l'écriture manuscriteChrome 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 des raccourcis d'application pour les PWA sous macOS et LinuxChrome 96
Enregistrement du gestionnaire de protocole d'URL pour les PWA Chrome 96
WebTransportChrome 97
Presse-papiers: lorsque vous collez des images rétiniennes, les métadonnées pHY sont perdues.Chrome 98
Les PWA devraient pouvoir être désinstallées de la même manière qu'une "vraie application"Chrome 99
NFC Web: NDEFReader makeReadOnly()Chrome 100
Positionnement des fenêtres multi-écranChrome 100
HIDDevice remember()Chrome 100
oubli de périphérique USB()Chrome 101
Comportement SameObject sur le WebChrome 101
Superposition des commandes de fenêtre pour les applications Web de bureau installéesChrome 102
Gestion des fichiersChrome 102
L'API chrome.management ne peut plus interagir avec les applications PWAChrome 102
SerialPort oublié()Chrome 103
Accès local aux policesChrome 103
Requête Fugu: Raccourcis d'application dynamiques (raccourcis v2)Chrome 104
Formats Web personnalisés pour l'API Async ClipboardChrome 104
Toutes les API Fugu ont été expédiées pour le moment.

La liste est longue, et il y en a encore plus à ce sujet. Il existe encore quelques API et fonctionnalités en cours d'évaluation 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 d'autres en cours de réflexion. Comme vous pouvez le voir, il n'est pas temps de se détendre pour dire que nous avons terminé.

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

Bien au contraire, plutôt que de déclarer nos efforts comme terminés, nous ne faisons que commencer. Prenons l'exemple du graphique ci-dessous qui montre la croissance relative de l'utilisation qui monte en flèche de la méthode navigator.storage.getDirectory(), utilisée comme point d'entrée du système de fichiers privé (OPFS) d'origine. Cette méthode est utilisée, par exemple, pour les besoins de stockage hautes performances de Photoshop, qui suscite un intérêt fortement intéressé par la communauté du stockage depuis l'abandon de Web SQL, et même avant.

Graphique illustrant l'explosion de l'utilisation de la méthode navigator.storage.getDirectory

Maintenant que davantage de personnes utilisent le service OPFS, des exigences supplémentaires sont apparues. Par exemple, la nécessité d'un ensemble entièrement synchrone de méthodes de fichier dans un contexte de nœud de calcul (consultez whatwg/fs#7 pour en savoir plus). Bien que les nouvelles API Web soient généralement asynchrones, l'utilisation de méthodes synchrones rendrait l'utilisation de l'OPFS beaucoup plus simple dans un contexte Wasm. Comme cela se produit dans un nœud de calcul, le thread principal ne peut pas être bloqué.

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

Les API matérielles vous permettent également de vous connecter à des appareils HID, serial, USB, Bluetooth et NFC. Bien que certaines de ces API existent depuis un certain temps, jusqu'à récemment, il n'y avait aucun moyen d'oublier un appareil auquel vous vous étiez connecté auparavant. Cela est désormais possible grâce aux méthodes forget() pour certaines API. Par exemple, voici comment supprimer 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ù, suite aux 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 significatifs comme "Built-in Retina Display" afin que les utilisateurs puissent les associer plus facilement aux écrans de leur configuration multi-écran.

Conclusions

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

Si la compatibilité des navigateurs vous préoccupe, de nombreuses API Fugu permettent d'effectuer d'importantes améliorations progressives. Consultez mon article SVGcode: une PWA pour convertir des images matricielles en images vectorielles SVG pour en savoir plus. De plus, nous ne considérons pas notre travail comme terminé tant que ces API ne sont pas interopérables, et nous continuerons à tout mettre en œuvre pour standardiser, tester et adopter d'autres navigateurs.