Ist das Projekt Fugu fertig?

Eines der Ziele des Project Fugu-Teams besteht darin, Entwicklern die Möglichkeit zu geben, im Web alles zu tun, was mit platformspezifischen Apps möglich ist. Das Team hat daher eifrig daran gearbeitet, fehlende Funktionen hinzuzufügen, die Webentwickler benötigen, um diese Lücke zu schließen. Wenn Sie mir nicht glauben, sehen Sie sich einfach den Bereich Versandt im Fugu API-Tracker an. Hier sind die 55 versendeten APIs in der Reihenfolge vom am wenigsten zum am häufigsten versendeten:

API-Name Versendet in
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
Ziel für die WebweitergabeChrome 71
Web Share API Level 2Chrome 75
Asynchrone Zwischenablage: Bilder lesen und schreibenChrome 76
Web Share Target Level 2Chrome 76
Eingabehilfe für Schlüssel eingebenChrome 77
Speicherkontingent erhöhenChrome 78
API „Get Installed Related Apps“Chrome 80
Regelmäßige HintergrundsynchronisierungChrome 80
desktop-pwas: Support für den Anzeigemodus „minimal-ui“Chrome 80
Komprimierungs-CodecsChrome 80
Contacts APIChrome 80
Badging APIChrome 81
Die Badging API kann jetzt über Push von einem Service Worker verwendet werdenChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: Übertragbare StreamsChrome 85
App-VerknüpfungenChrome 85
DateisystemzugriffChrome 86
Unterstützung von „text/html“ für die asynchrone Zwischenablage-APIChrome 86
Unterstützung für Schwenken/Neigen der KameraChrome 87
FUGU: Audioausgabe von System und Anwendungen auf Kopfhörer und Lautsprecher aufzeichnen Chrome 88
PointerLock unadjustedMovementChrome 88
Eine Foto-/Videoauswahl ähnlich der Bildauswahl auf Android-Geräten erstellenChrome 88
Integration von Web Share (navigator.share) in Windows 10Chrome 88
Web-NFCChrome 89
WebHID (Human Interface Device)Chrome 89
Web Serial APIChrome 89
Webfreigabe auf dem ComputerChrome 89
Handschrifterkennung APIChrome 90
Verwaltete Konfiguration für WebanwendungenChrome 91
PWA bei OS Login ausführenChrome 91
WebCodecsChrome 93
InaktivitätserkennungChrome 94
EyeDropper APIChrome 95
App-Verknüpfungsmenü für PWAs unter macOS und LinuxChrome 96
Registrierung der URL-Protokoll-Handler für PWAs Chrome 96
WebTransportChrome 97
Zwischenablage: Beim Einfügen von Retina-Bildern gehen die pHYs-Metadaten verloren.Chrome 98
PWAs sollten genauso deinstalliert werden können wie „echte Apps“Chrome 99
Web NFC: NDEFReader makeReadOnly()Chrome 100
Window Placement API (Stabile Version) für mehrere BildschirmeChrome 100
HIDDevice forget()Chrome 100
USBDevice forget()Chrome – Erste Schritte
Web USB sameObject-VerhaltenChrome – Erste Schritte
Fenstersteuerungs-Overlay für installierte Desktop-Web-AppsChrome 102
DateiverwaltungChrome 102
Die chrome.management API kann nicht mehr mit PWA-Apps interagierenChrome 102
SerialPort forget()Chrome 103
Zugriff auf lokal gespeicherte SchriftartenChrome 103
Fugu-Anfrage: Dynamische App-Verknüpfungen (Verknüpfungen v2)Chrome 104
Benutzerdefinierte Webformate für die Async Clipboard APIChrome 104
Alle bisher veröffentlichten Fugu APIs.

Die Liste ist lang und wir haben noch viel vor. Es gibt noch einige APIs und Funktionen, die sich derzeit in der Testphase für Entwickler befinden (d. h. sie sind implementiert, aber durch eine Feature-Flag geschützt). Einige davon sind bereits in der Entwicklung, und viele werden derzeit geprüft. Wie Sie sehen, ist es noch nicht an der Zeit, sich zurückzulehnen und zu sagen, dass wir fertig sind.

Synchrone Dateimethoden für das private Dateisystem des Ursprungs

Ganz im Gegenteil: Anstatt unsere Bemühungen als abgeschlossen zu erklären, stehen wir erst am Anfang. Im folgenden Diagramm ist beispielsweise das sehr starke relative Nutzungswachstum der Methode navigator.storage.getDirectory() zu sehen, die als Einstiegspunkt in das Origin Private File System (OPFS) verwendet wird. Diese Methode wird beispielsweise für die Anforderungen an den Hochleistungsspeicher von Photoshop verwendet und ist seit der Einstellung von Web SQL und sogar davor für die Speicher-Community von großem Interesse.

Diagramm zur rasanten Steigerung der relativen Nutzung der Methode „navigator.storage.getDirectory“

Da immer mehr Nutzer die OPFS nutzen, sind zusätzliche Anforderungen entstanden. Beispielsweise ist für einen Worker-Kontext ein vollständig synchroner Satz von Dateimethoden erforderlich (whatwg/fs#7). Neue Web-APIs sind zwar in der Regel asynchron, aber synchrone Methoden würden die Arbeit mit der OPFS in einem Wasm-Kontext viel einfacher machen. Da dies in einem Worker geschieht, kann der Hauptthread nicht blockiert werden.

Datenschutzverbesserungen für die Hardware-APIs

Ein weiteres Beispiel sind die Hardware-APIs, mit denen Sie eine Verbindung zu HID-, seriellen, USB-, Bluetooth- und NFC-Geräten herstellen können. Einige dieser APIs gibt es schon länger, aber bis vor Kurzem gab es keine Möglichkeit, ein Gerät zu entfernen, mit dem Sie zuvor eine Verbindung hergestellt hatten. Dank der forget()-Methoden ist das jetzt für einige APIs möglich. So können Sie beispielsweise ein zuvor verbundenes serielles Gerät entfernen, um die Datensicherheit der API zu verbessern.

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

Verbesserungen an der Window Placement API für mehrere Bildschirme

Ein letztes Beispiel ist die Window Placement API (Stabile Version) für mehrere Bildschirme. Auf Grundlage von Entwicklerfeedback wurden die zuvor generischen Bildschirmlabels wie "Internal Display 1" durch aussagekräftigere Labels wie "Built-in Retina Display" ersetzt, damit Nutzer diese Labels leichter mit den Bildschirmen ihrer Multi-Screen-Umgebung verknüpfen können.

Schlussfolgerungen

Wie Sie an diesen drei Beispielen sehen können, ist Project Fugu noch lange nicht fertig. Verwenden Sie unsere APIs weiter oder beginnen Sie damit und senden Sie uns Feedback. Da alle Fugu-Spezifikationen offen auf GitHub entwickelt werden, können Sie ein Problem mit der Spezifikation im entsprechenden GitHub-Repository melden oder Ihre Meinung zu einem vorhandenen Problem hinzufügen. Wenn Sie einen Fehler in der Chrome-Implementierung finden oder feststellen, dass die Implementierung von der Spezifikation abweicht, melden Sie den Fehler unter new.crbug.com. Geben Sie dabei so viele Details wie möglich an und machen Sie eine einfache Anleitung zur Reproduktion.

Und wenn Sie Bedenken hinsichtlich der Browserunterstützung haben, bieten viele Fugu APIs hervorragende progressive Verbesserungen. Weitere Informationen finden Sie in meinem Artikel SVGcode: eine PWA zum Konvertieren von Rasterbildern in SVG-Vektorgrafiken. Wir sind erst zufrieden, wenn diese APIs interoperabel sind. Wir werden daher auch weiterhin für eine weitere Standardisierung, Tests und die Einführung in anderen Browsern werben.