Drop files onto pages, dictate without your voice leaving the Mac, and controllers that rumble
Drag a file from Finder or Explorer onto a page and the page gets it, as a web app expects: the drop zone receives the file, a file input under the pointer takes it, and the page can hold on to exactly that file (and nothing else) to read it again later. Pages can turn what you say into text with speech recognition; where the reference browser sends your voice to a server to be transcribed, Floati transcribes it on the Mac itself, with the system's on-device recognizer, and refuses a language the Mac cannot recognise rather than send it anywhere. Game controllers now rumble when a game asks (Windows). Along the way the drag data API every editor and uploader uses, DataTransfer, arrives in full, and a file input's files can be set by a page. Measured against the reference browser, the Web APIs surface goes from 73.9 to 74.6 percent.
Drop files onto a page




Floati had no way to drop a file from your computer onto a page: uploaders, photo editors and chat apps that say “drop files here” got nothing. Now the page under the pointer gets the standard drag events (dragenter, dragover, and drop once it accepts the drag), marked as yours, with the files in event.dataTransfer: their names, types and bytes. A page that does not handle drops leaves them to a file input under the pointer, which takes the files and tells the page (input and change), and the page is never navigated away to the file. A page can also ask a dropped item for a file handle (getAsFileSystemHandle) to read that file again later: it reaches exactly the file you dropped, read-only, never its folder. Folders are skipped, and a drop is limited to 32 files and 200 MB.
The drag data API, in full
DataTransfer, its item list and items, and FileList were missing, so every page that builds one (to fill a file input, to test a drop, or to copy rich text in an editor) threw. They now work as the reference's: setData / getData with the text and url shorthands (url reads the first link of a uri-list), items.add for strings and files with the same duplicate rule, remove and clear, types with Files when a file is present, getAsString and getAsFile, and drop and copy effects that only change during a real drag. A file input's files can now be read as a real FileList and set from a DataTransfer, which is how many sites attach a pasted or generated file.
Dictation that stays on your Mac




SpeechRecognition (also under its prefixed name) lets a page turn speech into text: a dictation button, a voice search, a voice note. In the reference browser the audio goes to a server to be transcribed. In Floati it never leaves the computer: on a Mac the system's speech recognizer runs with on-device recognition required, so a language the Mac cannot recognise locally is refused (language-not-supported) rather than quietly sent off. Listening asks for the microphone through Floati's permission prompt, and the page gets the reference's events in order (start, audio, sound and speech start and end, results, end), interim results when it asks for them, and final ones with a confidence. On Windows the page is told the service is not available for now, instead of its audio going anywhere.
Controllers that rumble
A game's vibrationActuator.playEffect now reaches the controller's motors on Windows (XInput): the strong and weak motors at the strength the game asks for, for its duration, after its start delay. A newer effect or reset() stops the one playing, and the promises answer as the reference's do (complete, preempted). On a Mac the effect completes for the game but the motors are not driven yet.
What changed 6 changes
Try it in your browser
Each check runs live in the browser you are reading with. Nothing is sent anywhere.