Il Progetto Fugu è "fatto"?

Uno degli obiettivi del team di Project Fugu è consentire agli sviluppatori di fare sul web tutto ciò che possono fare le app specifiche della piattaforma, pertanto il team è stato impegnato ad aggiungere le funzionalità mancanti di cui gli sviluppatori web avevano bisogno per colmare questa lacuna. Se non mi credi, dai un'occhiata alla sezione "Spedito" del tracker dell'API Fugu. Ecco le 55 API caricate, in ordine dal più recente al meno recente:

Nome API Spedito in
API Web BluetoothChrome 56
API WebUSBChrome 61
Web Share TargetChrome 71
Livello 2 dell'API Web ShareChrome 75
Appunti asincroni: lettura e scrittura di immaginiChrome 76
Livello 2 del target di condivisione webChrome 76
Inserisci un suggerimento per la chiaveChrome 77
Aumentare la quota di archiviazioneChrome 78
API Get Installed Related AppsChrome 80
Sincronizzazione periodica in backgroundChrome 80
desktop-pwas: supporta la modalità di visualizzazione "minimal-ui"Chrome 80
Codec di compressioneChrome 80
API ContactsChrome 80
API BadgingChrome 81
Consentire l'utilizzo dell'API Badging da un service worker tramite pushChrome 81
API di rilevamento dei codici a barreChrome 83
API Content IndexingChrome 84
WebOTPChrome 84
API Screen Wake LockChrome 84
API Streams: stream trasferibiliChrome 85
Scorciatoie per le appChrome 85
Accesso al file systemChrome 86
Supporto di text/html per l'API Async ClipboardChrome 86
Supporto della panoramica/inclinazione per la videocameraChrome 87
FUGU Implementazione dell'acquisizione dell'output audio di sistema e dell'applicazione su cuffie e altoparlanti Chrome 88
PointerLock unadjustedMovementChrome 88
Creare un selettore di foto/video simile al selettore di foto su AndroidChrome 88
Integrazione di Condivisione web (navigator.share) con Windows 10Chrome 88
NFC webChrome 89
WebHID (Human Interface Device)Chrome 89
API Web SerialChrome 89
Condivisione web su computerChrome 89
API di riconoscimento della scrittura a mano liberaChrome 90
Configurazione gestita per le applicazioni webChrome 91
Eseguire la PWA su OS LoginChrome 91
WebCodecsChrome 93
Rilevamento inattivitàChrome 94
API EyeDropperChrome 95
Menu Scorciatoia app per le PWA su macOS e LinuxChrome 96
Registrazione del gestore di protocollo URL per le PWA Chrome 96
WebTransportChrome 97
Appositamente per te: se incolli immagini con retina, i metadati pHYs vengono persi.Chrome 98
La PWA deve essere disinstallabile come una "app reale"Chrome 99
NFC web: NDEFReader.makeReadOnly()Chrome 100
Posizionamento della finestra su più schermiChrome 100
HIDDevice forget()Chrome 100
USBDevice forget()Guida introduttiva a Chrome
Comportamento di sameObject in Web USBGuida introduttiva a Chrome
Overlay dei controlli della finestra per le app web desktop installateChrome 102
Gestione dei fileChrome 102
L'API chrome.management non può più interagire con le app PWAChrome 102
SerialPort forget()Chrome 103
Accesso ai caratteri localiChrome 103
Richiesta Fugu: scorciatoie per app dinamiche (v2)Chrome 104
Formati personalizzati web per l'API Async ClipboardChrome 104
Tutte le API Fugu rilasciate finora.

È un elenco lungo e abbiamo ancora molto da fare. Esistono ancora alcune API e funzionalità attualmente in prova dagli sviluppatori (ovvero implementate, ma dietro un flag di funzionalità), alcune su cui abbiamo iniziato a lavorare e molte in fase di valutazione. Come vedi, non è il momento di rilassarsi e dire che abbiamo finito.

Metodi di file sincroni per il file system privato dell'origine

Al contrario, anziché dichiarare il nostro impegno come completato, stiamo solo iniziando. Ad esempio, considera il grafico seguente che mostra la crescita esponenziale dell'utilizzo relativo del metodo navigator.storage.getDirectory(), utilizzato come punto di contatto per il file system privato di origine (OPFS). Questo metodo viene utilizzato, ad esempio, per le esigenze di archiviazione ad alte prestazioni di Photoshop e suscita un grande interesse nella community di archiviazione dall'inizio del ritiro di Web SQL e anche prima.

Grafico che mostra l'aumento vertiginoso dell'utilizzo relativo del metodo navigator.storage.getDirectory.

Ora che un numero maggiore di utenti utilizza l'OPFS, sono emersi requisiti aggiuntivi. Ad esempio, la necessità di un insieme di metodi di file completamente sincroni in un contesto di worker (consulta whatwg/fs#7 per informazioni di sfondo). Sebbene le nuove API web siano generalmente asincrone, disporre di metodi sincroni semplifica notevolmente il lavoro con l'OPFS in un contesto Wasm e, poiché ciò avviene in un worker, il thread principale non può essere bloccato.

Miglioramenti alla privacy per le API hardware

Un altro esempio sono le API hardware che ti consentono di connetterti a dispositivi HID, seriali, USB, Bluetooth e NFC. Anche se alcune di queste API sono disponibili da un po' di tempo, fino a poco tempo fa non era possibile dimenticare un dispositivo a cui avevi collegato in precedenza. Ora è possibile grazie ai metodi forget() per alcune API. Ad esempio, ecco come eliminare un dispositivo seriale connesso in precedenza, il che migliora la privacy dell'API.

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

Perfezionamenti per l'API Multi-Screen Window Placement

Un ultimo esempio è l'API Multi-Screen Window Placement, in cui, in base al feedback degli sviluppatori, le etichette delle schermate precedentemente generiche come "Internal Display 1" sono state sostituite con etichette più significative come "Built-in Retina Display", in modo che gli utenti possano associarle più facilmente alle schermate della configurazione multischermo.

Conclusioni

Come puoi vedere solo da questi tre esempi, il progetto Fugu è ben lungi dall'essere completato. Continua o inizia a utilizzare le nostre API e invia un feedback. Poiché tutte le specifiche di Fugu vengono sviluppate in modo aperto su GitHub, puoi segnalare un problema relativo alle specifiche nel repository GitHub corrispondente o aggiungere il tuo parere a un problema esistente. Se trovi un bug nell'implementazione di Chrome o scopri che l'implementazione è diversa dalla specifica, segnala un bug all'indirizzo new.crbug.com. Assicurati di includere il maggior numero possibile di dettagli e fornisci istruzioni semplici per la riproduzione.

Inoltre, se hai dubbi sul supporto del browser, molte API Fugu consentono miglioramenti progressivi. Per trovare ispirazione, consulta il mio articolo SVGcode: una PWA per convertire le immagini raster in grafica vettoriale SVG. Inoltre, non consideriamo il nostro lavoro concluso finché queste API non saranno interoperabili e continueremo a spingere per un'ulteriore standardizzazione, test e adozione da parte di altri browser.