O projeto Fugu está "concluído"?

Com um dos objetivos da equipe do Projeto Fugu sendo possibilitar que os desenvolvedores façam na Web o que os apps específicos da plataforma fazem, a equipe está ocupada adicionando os recursos ausentes que os desenvolvedores da Web necessários para preencher essa lacuna do app. Se você não acreditar em mim, basta consultar a seção "Shipped" (link em inglês) do rastreador da API Fugu. Aqui estão as 55 APIs enviadas, do menos para o mais recente:

Nome da API Enviado em
API Web BluetoothChrome 56
API WebUSBChrome 61
Destino de compartilhamento da WebChrome 71
API Web Share de nível 2Chrome 75
Área de transferência assíncrona: ler e gravar imagensChrome 76
Nível 2 da meta de compartilhamento da WebChrome 76
Insira a dica importanteChrome 77
Expandir cota de armazenamentoChrome 78
Instalar a API de apps relacionados à instalaçãoChrome 80
Sincronização periódica em segundo planoChrome 80
desktop-pwa: suporte para o modo de exibição "minimal-ui"Chrome 80
Codecs de compactaçãoChrome 80
API ContactsChrome 80
API BadgingChrome 81
Permitir que a API Badging seja usada em um service worker via PushChrome 81
API Barcode DetectionChrome 83
API Content IndexingChrome 84
WebOTPChrome 84
API Screen Wake LockChrome 84
API Streams: streams transferíveisChrome 85
Atalhos de appsChrome 85
Acesso ao sistema de arquivosChrome 86
Suporte de texto/html para a API da área de transferência assíncronaChrome 86
Suporte para panorâmica/inclinação para câmeraChrome 87
FUGU Implementar a captura da saída de áudio do sistema e do aplicativo para fones de ouvido e alto-falantes Chrome 88
PointerLock unadjustedMovementChrome 88
Criar um seletor de fotos/vídeos semelhante ao seletor de fotos no AndroidChrome 88
Integração do Web Share (navigator.share) com o Windows 10Chrome 88
NFC na WebChrome 89
WebHID (dispositivo de interface humana)Chrome 89
API Web SerialChrome 89
Compartilhamento na Web no computadorChrome 89
API Handwriting RecognitionChrome 90
Configuração gerenciada para aplicativos da WebChrome 91
Executar o PWA no Login do SOChrome 91
WebCodecsChrome 93
Detecção de inatividadeChrome 94
API EyeDropperChrome 95
Menu de atalho de apps para PWAs no macOS e LinuxChrome 96
Registro do gerenciador de protocolo de URL para PWAs Chrome 96
WebTransportChrome 97
Área de transferência: colar imagens de retina perde os metadados de pHYs.Chrome 98
O PWA precisa ser desinstalado da mesma forma que um app realChrome 99
NFC Web: NDEFReader makeReadOnly()Chrome 100
Posicionamento de janelas multitelasChrome 100
HIDDevice esquecer() (link em inglês)Chrome 100
USBDevice esquecido () (em inglês)Introdução ao Chrome
Comportamento de sameObject USB na WebIntrodução ao Chrome
Sobreposição dos controles de janela para apps da Web para computador instaladosIntrodução ao Chrome
Gerenciamento de arquivosIntrodução ao Chrome
A API chrome.management não pode mais interagir com apps PWAIntrodução ao Chrome
SerialPort remember() (link em inglês)Chrome 103
Acesso a fontes locaisChrome 103
Solicitação do Fugu: atalhos de apps dinâmicos (atalhos v2)Introdução ao Chrome
Formatos personalizados da Web para a API Async ClipboardIntrodução ao Chrome
Até o momento, todas as APIs do Fugu foram enviadas.

É uma lista longa, e temos mais opções para nós. Ainda existem algumas APIs e recursos no teste para desenvolvedores (ou seja, implementadas, mas por trás de uma sinalização de recurso), em que começamos a trabalhar e muitos estão em consideração. Como você pode ver, não é hora de relaxar e dizer que terminamos.

Métodos de arquivos síncronos para o sistema de arquivos particular de origem

Na verdade, em vez de declarar nosso esforço como concluído, estamos apenas começando. Por exemplo, considere o gráfico abaixo que mostra o aumento do uso relativo do método navigator.storage.getDirectory(), usado como ponto de entrada para o sistema de arquivos particular de origem (OPFS, na sigla em inglês). Esse método é usado, por exemplo, para as necessidades de armazenamento de alto desempenho do Photoshop e que a comunidade de armazenamento tem muito interesse desde a descontinuação do Web SQL e até mesmo antes.

Gráfico mostrando o uso relativo crescente do método navigator.storage.getDirectory.

Agora que mais pessoas usam o OPFS, surgiram outros requisitos. Por exemplo, a necessidade de um conjunto totalmente síncrono de métodos de arquivo em um contexto de worker (consulte whatwg/fs#7 para segundo plano). Embora as novas APIs da Web geralmente sejam assíncronas, ter métodos síncronos tornaria muito o trabalho com o OPFS muito mais simples em um contexto do Wasm. Como isso está acontecendo em um worker, a linha de execução principal não pode ser bloqueada.

Melhorias de privacidade para as APIs de hardware

Outro exemplo são as APIs de hardware, que permitem a conexão a dispositivos HID, serial, USB, Bluetooth e NFC. Embora algumas dessas APIs já existam há algum tempo, até recentemente não havia como esquecer um dispositivo ao qual você estava conectado. Agora isso pode acontecer graças aos métodos forget() para algumas APIs. Por exemplo, veja como esquecer um dispositivo serial conectado anteriormente, o que melhora a privacidade da API.

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

Refinamentos para a API Multi-Screen Window Placement

Um exemplo final é a API Multi-Screen Window Placement, em que, com base no feedback do desenvolvedor, os rótulos de tela anteriormente genéricos, como "Internal Display 1", foram substituídos por rótulos mais significativos, como "Built-in Retina Display", para que os usuários possam associá-los mais facilmente às telas da configuração de várias telas.

Conclusões

Como você pode ver apenas nesses três exemplos, o Projeto Fugu está longe de ser concluído. Continue ou comece a usar nossas APIs e envie feedback. Como todas as especificações do Fugu são desenvolvidas abertamente no GitHub, é possível registrar um problema de especificação no repositório correspondente do GitHub ou adicionar suas ideias a um problema já existente. Se você encontrar um bug na implementação do Chrome ou descobrir que a implementação é diferente da especificação, registre um bug em new.crbug.com. Inclua o máximo de detalhes possível e forneça instruções simples para reprodução.

Se você tiver preocupações sobre o suporte a navegadores, muitas APIs Fugu são ótimas para melhorias progressivas. Consulte meu artigo SVGcode: um PWA para converter imagens rasterizadas em gráficos vetoriais SVG para se inspirar. Também não consideramos nosso trabalho feito até que essas APIs sejam interoperáveis, e continuaremos promovendo ainda mais a padronização, os testes e a adoção por outros navegadores.