What’s new in Legato

Release notes for each version, newest first. This page is written by hand and is in English only.

Version 0.3.94

Released

The first sentence the browser says on a page was never heard by anyone, and it is heard now. Plus three doors that were ajar, and LinkedIn treated like any other site.

Fixed

Every page speaks its first sentence again

A screen reader announces only CHANGES to a region it is already watching. Ours was created with its text already inside it, so the very first thing Legato said on a page was skipped, every time, on every site.

  • The region is created empty at load and speaks from the first sentence on.
  • At document start the page can have no document element yet, so the first attempt silently did nothing. It now retries on readystatechange and DOMContentLoaded.

Continuous reading no longer says "end of page" in the middle of an article

It walked a snapshot taken once, while a live page keeps drawing itself. It asks the page again now, both when it starts and before it announces the end.

A hand-made dropdown keeps a living name and says what it is

We used to write into it the name read at the moment we parsed the page, and an aria-label overrides the element's own text for good: you picked Germany and the reader went on saying "choose a country" for the rest of that page's life. That is worse than not repairing it at all, because the author's text was working.

  • The name is read from the content now and follows your choice.
  • Beside it you hear that this is a dropdown list, through aria-roledescription, which replaces the spoken ROLE and leaves the name alone.

Smaller fixes you will notice

  • A repair no longer hands the keyboard focus into something hidden from the reader.
  • With no local helper the browser no longer blames the site: it says the names were left unread, rather than that the page is bad.
  • A remembered name no longer lands on a neighbouring control when the site swaps them.
  • LinkedIn works like any other site. Until now nothing worked there at all: no repair, no form summary, no plain-words retelling, no picture description. That was our own caution pointed the wrong way, on the network where work is found.

Three doors that were ajar

Found by a ten-person review of the previous build. None of them was ever used against anyone, and all three are shut, each with an instrument proven able to fail.

  • A local file in somebody else's folder named "ui" could pose as one of our own pages and reach the system clipboard. The real directory is known only to the main process, and it is now asked, rather than the folder's name being trusted.
  • An open page could speak in the browser's voice: announce "page repaired" where nothing was done, and ask for the file panel to open. The channel name no longer leaks, and the file panel additionally waits for a real key press.
  • A voice package arrived without a signature, and inside it is a model the browser then runs. All 49 packages now carry a sha256 that is checked before unpacking, and the download refuses anything but https, redirects included.

Version 0.3.93

Released

A sign-in form built out of a table is no longer silent: the caption beside a field now reaches the screen reader in three more layouts.

Fixed

The caption beside a field reaches the screen reader

The browser names a field from the caption written beside it. It looked for that caption only inside the field's own cell, and only to the left of the field. In a table the caption always lives in another cell. A blind tester sent us a site where the whole sign-in form came out nameless.

  • The caption in the cell to the LEFT: «username:» with the box next to it. This is the commonest table form there is. Hacker News signs people in with it.
  • The caption in the row ABOVE, whether the table has one column or two. In a two-column table the caption is the cell in the same position of the row above.
  • The text to the RIGHT of a tick box: «Remember Me». Nothing had ever looked there, because a text field is captioned on its left and a tick box on its right.
  • The name is the author's own words, not a guess, and the rule speaks only where there was no name at all, so it can never overwrite a name the site gave.
  • This matters most on a computer with no helper model: a rule costs nothing and answers exactly, while before the field went off to the model or stayed silent.

Version 0.3.92

Released

A site that reads badly can now be handed to us: a new menu item opens a short form, we take the site apart by hand, and it then reads properly for everyone.

New and better

This site reads badly

The browser repairs pages by itself while you read, but it does that by guessing, on the spot. Some sites are built so that guessing is impossible.

  • A new item in the menu, and in the page menu: «This site reads badly». It opens a short form (which site, what goes wrong, how deep to look) with the address of the page you were on already filled in.
  • We take the site apart by hand, once. The rules go into the shared memory, so the site then reads properly for everyone who comes to it, not only for you.
  • That matters most to people who did not take the helper: the rules weigh bytes, need no spare memory, and work on the weakest machine.

What we can and cannot do, said on the form itself

  • We only reach pages that are visible without signing in. We do not go behind your password and do not want to.
  • Taking a site apart takes a day or two, sometimes longer. Leave an email if you want to hear when it is done; without one we still do the work.
  • What reaches us is the address and your own words. Your words are seen by us and nobody else: never in the shared memory, never to other people, never into the model. The rules are made by our own crawl.
  • Five requests a day per installation, so one bad evening cannot queue thirty crawls.

The signals sound different

All sixteen were built from sine waves. Clear enough, but they sound like an instrument panel, and a person hears them hundreds of times a day.

  • They are recordings now: one wood for all of them, so they still sound like a family rather than a pile of unrelated objects.
  • The vocabulary has not changed. Meaning is still carried by the direction («done» rises, «did not work» falls gently), so there is almost nothing to relearn.
  • If something does not register: settings, page repair, the sound map. Every signal is named in words there and plays on a button.
  • The landing plays the very same files, taken from the browser at build time. A person who learns the sounds on the site meets exactly those sounds after installing.

The browser tells you what an update brought

  • After an update it opens the «What’s new» tab by itself: once per version, never again, and never on a first run.
  • It is a tab, not a window: it does not trap the keyboard and can be closed at once. The menu brings it back any time.
  • It carries buttons that lead straight to what it talks about, so «the sound map is in the settings» is one keypress instead of four.
  • Switched off together with the rest of the update talk, for anyone who has already said they do not want to hear about it.

Fixed

The start page is less empty

  • The gaps between the blocks were sized for a page with nothing on it, and 84 points were reserved under the pin area for a case that does not happen while you are simply reading.
  • Dragging a tab there still works: that zone opens up to the full width by itself when a tab appears over the page, so the space never needed reserving.

Version 0.3.91

Released

The helper that names unlabelled buttons finally reaches the machine it was written for. It is offered on the first run, sized to your computer, switchable and removable. On Windows it now starts at all.

New and better

Which one you get, and what it costs

The size is picked by the memory your computer has, because running out of it is not slowness: it takes the browser down with every tab.

  • The better helper names about 7 of the 10 hardest cases; the lighter one about 6. Measured on 200 deliberately hard ones. The easy cases are already solved by the rules, so this number is about the remainder, not about the web.
  • Four gigabytes, or under two for the lighter one. Fifteen to twenty minutes on a usual connection, and the browser keeps working while it comes.
  • Saying no is a full answer. Everything else in the browser works without it, and you can fetch it later from the settings.
  • Nothing about the pages you open is sent anywhere for it, and it works with no internet at all.

Changing your mind about the helper

The choice the machine makes for you is no longer a sentence.

  • The settings list both helpers: take the better one instead of the lighter one, go back to the lighter one, or remove either and get the disk space back.
  • A helper you download starts working straight away rather than at the next launch.
  • Remove the one in use and the browser says so out loud, then carries on repairing pages from its rules.

Fixed

The helper never reached anyone

When a site leaves a button or a field with no name, a small language model living on your computer works out what that control is for.

  • It was never in the package, there was no button to fetch it, and nothing in the code ever downloaded it. On every machine that job simply went undone.
  • Nobody could see it. The rules and the icon dictionary carry on repairing the page either way, and a missing model looks exactly like a model that stayed silent.
  • The browser now offers it on the first run and fetches it if you say yes.

On Windows it would not have started

The part that runs the model is built with Microsoft’s compiler and needs Microsoft’s runtime libraries, which a clean Windows does not have.

  • The error says the module could not be found. That is not true: the file is there, what it depends on is not. That is why this went unnoticed until it was run on a clean machine.
  • Those four libraries now travel inside the package, 765 kilobytes. Nothing has to be installed by hand.
  • Proved on a stand with the Microsoft runtime deliberately removed: same code, model loads in seven seconds.

The shelf of unfinished pages

  • It grew past the panel it lives in. It keeps three lines now.
  • There was no way to take a line off it. Each line has a cross that forgets that page for good.

Version 0.3.90

Released

A security release. The engine brought up to date, extension packages checked by signature, secrets no longer written to disk in the clear, and a word when the page you are sending out is only yours.

New and better

A page that is only yours

Ask for a picture to be described, or for the page in simpler words, while you are in your mail or your bank, and the contents of that page leave this computer. You asked for it, but you may not have known what exactly was going.

  • The browser now tells you, inside the sentence it already speaks: “This page is private, and it is leaving your computer. Rewriting the page, a moment.”
  • Once per site and never again. It is a statement, not a question: nothing is blocked and there is no button to find.
  • It speaks only when the site itself has sent a stranger away to sign in. On an ordinary page it says nothing, and if it cannot check, it stays quiet rather than guess.

Fixed

The engine underneath

Legato is built on the same engine as Chrome, and that engine gets security fixes every few weeks.

  • This build moves from 43.4.0 to 43.7.2: five releases we had not shipped, all of them security fixes and nothing else.
  • Nothing changes on screen. It matters because a published fix also describes the hole it closes, and the builds that get attacked are the ones that did not take it.

Extensions installed from the store

A downloaded package was checked against one thing: the name written inside it. That name is plain text, put there by whoever built the package.

  • So the only thing standing between you and somebody else’s code was the connection to Google. A company proxy, or an infected machine, sits inside that connection.
  • The signature is now checked the way Chrome checks it: it covers the header and the archive together, and only a key whose fingerprint IS the extension’s id counts. Neither the archive nor the key can be swapped.
  • The check runs before a single byte is written to disk: an unpacked folder is already code we would be asked to load.

Your passkeys and your saved routes

Both were written to disk as plain text whenever the system keystore is unavailable (the normal state on Linux without a keyring), while our own words said the file was encrypted.

  • Passkey keys are not written at all now. They live for the session, and a plain file left by an earlier build is removed.
  • A route keeps the path (the pages and the fields) and no longer keeps what you typed. It asks you again the first time you run it, the way a route shared by another person always did.
  • Files written before this release are still read, so nobody loses the routes they have.

The browser’s own doors

Our pages reach the browser through twenty-six bridges: the voice, the clipboard, files.

  • Four of them recognised our pages by a fragment of the address, so any local file sitting in a folder called ui went through.
  • Behind one of those was writing to the system clipboard, so a copied card number could have been replaced. They go by name now.

Version 0.3.89

Released

The hole you could hear every time a looping background came round, and forty animals that spoke as rarely as four.

Fixed

The seam in the loops

Looping backgrounds (rain, wind, a brook) had a hole at the seam: the sound dropped almost to nothing and came back. The cure was making it.

  • A layer played as two voices that crossed over by volume. Two independent voices add up by POWER, not by amplitude, so half of one plus half of the other is three decibels quieter than one whole. The crossfade WAS the hole, once every cycle.
  • The tail of each recording is now mixed into its own beginning once, the buffer closes on itself, and the loop joins sample by sample. One voice instead of two, and no timer that can drift when the machine is busy.
  • Measured on a steady signal so the recording’s own breathing could not confuse it: the old way dipped 3.2 decibels in the middle of the overlap, the new one stays within 0.4.

Choosing more animals did not make them speak more often

The pause between rare voices shortened only for one or two of them. From four on it stopped changing, so forty chosen animals sounded exactly as rare as four. The set stopped answering what you picked.

  • The pause is now divided by the square root of how many voices you chose. A full set speaks about four times as often as before.
  • A single bird keeps its own pace: one voice on a pause built for forty is silence, and in that silence you cannot tell whether the checkbox did anything.

Version 0.3.88

Released

The thirty steps you walk every month, walked for you, and a browser that stopped telling sighted people their screen reader was on.

New and better

Routines

Paying a utility bill, ordering the same groceries, sending a meter reading: thirty or forty steps walked by touch every single time, because the layout cannot be seen and a screen reader remembers nothing between visits. Walk that path once with the recording on, give it a name, and from then on the browser leads.

  • It opens the pages, presses what you pressed and fills what you filled.
  • It is a guide, not an autopilot: it knows the way, not the decisions. It stops wherever you are needed (a password, a sum, a code from a text message) and it never presses what cannot be undone.
  • Passwords are not stored at all. The browser stands on the field, says that your password goes here, and waits.
  • A routine can be saved to a file and handed to somebody else. The file holds the path and nothing you typed into it.
  • Record with Shift+Cmd+M, walk one with Shift+Cmd+U, or use the Accessibility menu. On Windows and Linux, Ctrl instead of Cmd.

When a site is redrawn

Sites get rebuilt. “Pay” becomes “Go to payment”, and a routine recorded in March stops in April. A sighted person spends half a second on this, because they can see it is the same button under a new name.

  • The browser can now name the closest thing it found and ask whether to use it. It asks; you decide.
  • It never presses on its own, and the refusal to press anything irreversible still stands.
  • What leaves your machine is the names and roles of the controls on that page: never a value you typed, and never the address.
  • The new name is used for that one walk and is not written into the routine.

Fixed

The browser said a screen reader was running when it was not

It asked a flag that only means somebody requested the accessibility tree (a debugger or an automation tool will do), and once raised, that flag never went back down. A sighted person was told their screen reader was on, and given a key to switch off something that was not there.

  • The system itself is now asked: VoiceOver on macOS, NVDA, JAWS and Narrator on Windows, Orca on Linux.
  • A magnifier does not count as a screen reader.

The wind stopped blowing in your ear

Four of the background recordings were made again: a brook, heavy rain and both winds. The old wind was not louder than the rain; it was HISSIER, and a broad hiss is heard as something right next to your ear however far you turn it down.

  • Above four kilohertz the leafy wind now sits eleven decibels further below the body of the sound than it did, and the bare wind eleven and a half. That is the difference between weather outside and somebody breathing on you.
  • Rare voices no longer arrive on a regular beat. An even interval is worked out by the ear after three repeats, and from then on you are waiting for the next one. That is your attention, taken.
  • The same recording now plays at a slightly different pitch and volume each time, so the third cuckoo stops giving away that it is one file.
  • One voice at a time, never two at once, and never the same one twice running while there is another to choose.
  • Birds sometimes answer each other a few seconds later. Only birds: a dog doing the same thing sounds like one dog barking twice, and the yard shrinks.
  • Choose fewer animals and they speak more often, so a single bird is not one call an hour.

Good to know

Routines used to be called routes

The old name pulled the mind towards maps and directions, and this is about paying bills. Nothing you recorded is lost: only the word changed, in all twenty-five languages.

Version 0.3.87

Released

A card number that was read out loud and written down, a slider that said nothing while you moved it, and a set of sounds you can put together to read to.

New and better

Atmosphere

A new page under Accessibility → Fun. Eighty-three recordings that play quietly while you read and go quiet while the browser speaks: rain, a brook, wind, crickets, an owl somewhere far off, a farmyard, faraway places. Nothing here is needed to use the browser; it is there because reading all day is easier in a place you would choose to be.

  • Press a sound and it plays once, close and clear, then joins your set. That single playback is also how a child can learn what a cow, a lion or a cuckoo sounds like.
  • Backgrounds run continuously and are stitched so the loop cannot be heard. Rare voices (an owl, a fox, a cuckoo) speak once every minute and a half to five minutes, never while the browser is speaking. A looped owl becomes an alarm clock within a minute; that is why they are not looped.
  • “Match the time of day” builds a set from your clock and keeps following it: dawn birds in the morning, crickets and an owl at night. We never ask where you are, because the clock already knows your time zone. Touch any sound yourself and the following stops, and the browser says so.
  • “At random” draws from a calm list only. A lion is a fine recording and stays a button; it has no place in a set you switch on to fall asleep to.
  • Six melodies, each made up as it goes, so none repeats and none ends: pentatonic, Indian raga, handpan, Japanese, choral and singing bowls. One at a time: two modes at once are not richer, they are out of tune.
  • Your own sets can be saved by name and taken back whole.
  • Everything is named in words, in all twenty-five languages, and every button says whether it is on. The set keeps playing on any page and survives closing the tab you built it in.

The page’s headings, and what you did not finish

  • A list of the headings on the page, opened as its own window, with the level of each. You pick one and land on it. Until now the only way through a long page was to walk it.
  • The start page now shows what you began reading and did not finish, with where you stopped. Finished reading is not listed.

Fixed

A card number was read out loud

Typing a card number into a checkout form, you heard it back, and it was written into the browser’s own notes about that form. Only fields the site marks as passwords were hidden, and card fields are not marked that way.

  • Card number, expiry and security code are now recognised by the field name, its id, and the autofill hint the site gives the browser. They are announced as “filled” or “empty” and never by their content.
  • The same masking applies to what the browser stores about the form, so a number typed yesterday is not in the file today.

A slider said nothing while you moved it

Volume, speech rate, zoom. Dragging one with the mouse, you heard the value only after letting go: the one moment when it is no longer useful.

  • A slider now names its value while you drag: the value you grabbed it at, values along the way, and where it stopped. Not more often than twice a second, so the numbers stay apart.
  • Arrow keys behaved correctly before and still do.

Good to know

Windows

The direct download for Windows is not signed yet, because the certificate is still being obtained. SmartScreen will show a blue screen where the button that runs the installer is hidden behind “More info”.

  • If you use Windows, install from the Microsoft Store instead: Microsoft signs that package itself, so there is no blue screen. The Store version of this release is in certification and follows within days.

Version 0.3.85

Released

Two switches that did not silence what they named, sounds arriving from tabs you were not in, and a way to ask which words you have given a site.

New and better

The words you gave a site

You can give someone else’s button a name of your own (“call this the cart”), and that word then takes you there. There was no way to ask what you had named. If you forgot the word, the browser answered “nothing here is called the cart”.

  • Two new items in the accessibility menu: your words on this site, and forget one of them.
  • When “go to” misses, it reads back your own dictionary instead of the page’s names.

Start of day, and drafts that survive

  • Four notes play on the first launch of each calendar day, not on every launch. Nothing plays when you leave.
  • An unfinished postcard used to live only as long as the tab. It now waits on this computer, says so when you come back, and has an “Erase the draft” button beside it.

Fixed

Switches that did not work

Two settings did not silence what they named. You turned one off, heard the same phrase again, and had no way of telling whether you had pressed the right thing.

  • “Announce repair status out loud” silenced five neighbouring announcements but not the one named under it. The phrase was built in one place and spoken in another, and the second place never checked the setting.
  • The tick that steps you through your own page menu ignored the sound switch, so sound stayed on in a library, an open-plan office or beside a sleeping child. Buttons whose purpose is to play a sound still ignore the switch, which is deliberate; everything that answers an event now checks it.

Silence where you asked for it

  • Control stops the browser. It cut off what was being said, but a second and a half later anything a live region had queued was spoken anyway: “12 results found”, a line from a chat. The queue is cleared now.
  • Sounds no longer arrive from a tab you are not in. The repair pass skips background tabs, but a pass started by the page growing did not, so a messenger in a second tab chimed on every incoming message.
  • The page title in “Loaded: …” is cut to sixty characters at a word boundary. The front page of a news site can carry a hundred and twenty.
  • “You stopped in the middle of this page” offered itself after twelve hundred characters, so it fired on your own mail and your own forum several times a day. It now needs a long read and a position below the first screen.

How the voice sounds

  • The pieces a phrase is built from each carried their own silence at the ends, so the seam between them wandered and speech went in jerks. The seam is trimmed; the edges of the phrase are not.
  • A phrase spoken into silence takes a fifth of a second first, which separates “let me say” from “I am interrupting”. Running through with Tab is not slower.
  • Brief answers now exist for browse mode and for the four edges you hit walking a page by headings. The reminder about Shift moved out of the middle level, which by our own definition does not prompt keys.

Version 0.3.84

Released

You can copy a chosen piece of a page and hear what was copied. Also a fault that made the down arrow move you up on pages that grow while you read them.

New and better

Copying a piece of a page

There were three ways and each had a problem. A text cursor: that key is taken here by browse mode. Your screen reader’s own markers: those belong to it, not to the browser. Select all and copy: that takes the menu, the footer and the cookie notice as well. And none of them told you what had been copied.

  • The key is the copy shortcut you already use. It answers only when nothing is selected; if you have selected something, the page copies it as usual.
  • Draw a frame with the mouse around a piece and copy: you get what you circled. The block is worked out from what fell inside the frame, so you do not have to hit the edges of a paragraph.
  • Or press S to mark the start, walk to the end, and copy: you get everything in between.
  • Or copy where you stand, and you get that one thing.

It says what it copied

A short piece is read back in full. A long one is read back by its first words and its last, which answers both whether it is the right piece and whether it is too much.

  • While a start is marked, every step you take makes a quiet click. It means the mark is alive and the step counted. Silence means there is no mark.
  • Shift and S says what you have collected so far without copying it and without losing the mark.

Fixed

The browse cursor moved you backwards

It was in 0.3.82 and 0.3.83, both released on 7 September. If a page added anything above where you were standing (a banner, a “show more”, a feed loading, a menu opening), pressing the down arrow moved you up, and the further the page had grown the further back it threw you. The step was counted against the old list of stops while the list itself had already been rebuilt. The rebuilding was added on 5 September to fix a different fault: the list used to be a snapshot taken when you entered browse mode. The arithmetic was left on the old numbering, so the fault is exactly as old as that repair. Both arrows, the wheel, Home and End all had it.

Version 0.3.83

Released

The ring menu blocked quitting the browser, and on the light theme it covered the whole window.

New and better

What’s New, in the Help menu

This page, and the menu item that opens it. It sits after “Check for updates”, and it opens at your version rather than the top of the page.

Fixed

The browser would not quit while the ring menu was open

Press the right button, get the ring, then try to quit: nothing happened, and the menu did not close either. The ring lives in a frameless window of its own which takes the keyboard, and menu shortcuts were not reaching past it. Escape worked, because the menu handles that itself; Command-Q did not, because that belongs to the application menu.

  • Command-Q now quits while any of our own windows is open: the ring, the menu card, the tour, the account card, the extensions card. All five had the same hole.
  • It quits the ordinary way, so the session, history and downloads are written to disk as on a normal quit.
  • Closing the window takes the ring down with it, and anything waiting on the menu for an answer gets its refusal. A site that had asked to share your screen used to wait forever.

On the light theme the ring covered the whole browser

The ring is drawn on a sheet the size of the browser window, and that sheet is meant to be transparent, with only the circles visible. On the light theme it was painted solid: no toolbar, no tab strip, no page. The dark theme was not affected.

The backdrop under the ring is denser

The disc behind the circles was tinted with the theme’s own background colour, which on a dark page meant dark over dark. It is darkened with black now, which works on any page, and the page still shows through it.

Version 0.3.82

Released

The mouse became a second way to read a page: a signal at the edges of the window, a ring menu on the right button, the wheel walking the page instead of scrolling it, and the pointer naming what it rests on.

New and better

Edges of the page

The pointer gave no information about where it was. When it reaches the edge of the page you now hear a short knock, and an orange border appears around the page. The sound is non-visual feedback; the border is visual feedback.

  • The edge is the last three pixels, and the signal clears only when you move four times that distance away, so it does not repeat constantly.

The ring menu on the right button

Press the right button anywhere on a page and a ring of circles opens in the middle of the window. It opens in the middle rather than at the pointer, because the pointer position is not known to someone who cannot see it.

  • What is in it: describe this image, read this block, the page at a glance, what this form wants, read the form as it will be sent, check the form, read the table, read on from where I stopped, where is the pointer, where am I, what was repaired here.
  • The wheel turns the ring, one item per click.
  • The left button presses whatever is selected, wherever the pointer is, so you do not have to aim at a circle.
  • Hold the right button and turn the wheel to move the selected item around the ring; release it and the browser says the new position.
  • Only the item you moved is remembered; the rest are ordered by the browser, so new items can still be added.
  • Every item also has a key, and they are all in the accessibility menu.

What the wheel does on the page

  • Turn the wheel and you move to the next thing; the browser names it.
  • Turn it sideways, or hold Shift and turn, to change what it steps by: everything, headings, links, regions, form fields.
  • The two side buttons jump between regions.
  • Hold the left button and draw a frame, and the walk stays inside what you drew.

The pointer says what it is on

Rest the pointer on something and the browser reads it. It speaks only after you stop moving, about a fifth of a second, so crossing the page is quiet. When you move into a new region it names the region.

Devices

  • Trackpad, trackball and ordinary mouse are handled the same way.
  • A wheel step setting with three sizes, because a trackpad sends many small movements and a mouse wheel sends single clicks.

Fixed

  • A tab opened before you switched the voice on stayed deaf to the keyboard.
  • Our own word “Button” was read by the Russian voice and came out as “baton”. Our own words now go to the voice of their own language.
  • When your screen reader went away, reading stopped and nothing said so.
  • Reading mode took the keyboard whenever you chose anything.
  • On five first-run screens the lists swallowed Enter and Escape.
  • On Windows the key grabbing now steps aside for the system.
  • Describing an image works on pictures the page draws itself, where it used to be silent.
  • “Read this block” reads the section under the pointer instead of the whole page.
  • Asking for a table where there is none is said out loud instead of one beep.

Good to know

How to turn it on

Settings, then the reading section. Both switches are off by default, so a mouse nobody is touching cannot move your reading. Both belong to Legato’s own voice: they appear when the browser is reading with its own speech, not with your screen reader.

  • “Mouse wheel walks the page”: the wheel and the side buttons.
  • “Say what the pointer is on”: reading the element under the pointer.
  • The ring follows the first switch. With both switches off the right button opens the same commands as a plain list you walk with the arrow keys.
  • A third switch brings back the normal Chrome menu on the right button.

Windows

The Windows installer is not signed yet. SmartScreen shows a blue screen and hides the run button behind “More info”. The Microsoft Store version is signed by Microsoft and does not do this. The Mac build is signed and notarised.

Version 0.3.81

Released

The first build with mouse navigation. It arrived here in rough form and was finished in 0.3.82, where it is described.

Fixed

  • One reading mode was called by two different names in two places, so there was no way to tell it was the same thing.
  • The address bar refused to shrink below a fixed width, which on a narrow window pushed the menu off the edge of the screen.
  • A sentence that had a clause added to it came back from translation with the clause missing, in three languages.
  • Some spoken lines had grown a third longer than they are allowed to be, and nothing reported it.
  • The mouse settings appeared even when the reading is done by your own screen reader, where they do nothing.
  • Opening a page could hang forever, with no error and nothing on screen.

Version 0.3.80

Released

How much the browser tells you is now a setting, and it stopped reporting repairs it had not made.

New and better

How much should it tell you

A question during first run, and a setting you can change later: brief, normal or detailed. Each choice is read out as the sentence you would actually hear.

Fixed

  • The browser announced how many things it had put in order on a page even when it had looked at nothing.
  • A repair notice pushed the page title out of the way, so you heard what was mended instead of where you were.
  • The address bar showed the address of a frame embedded in the page rather than the page itself.
  • A German voice read out a file name because German happened to be first in the list.
  • A Portuguese page was read with Russian sounds: the voice was picked by the letters, not by the language.
  • On a first visit a dialogue about the cloud opened by itself on the very first page.
  • The browser said “not sent” on every new page, answering a question nobody had asked.
  • Chinese voices weighed 325 megabytes and spoke seven times slower than the system one. They are gone; the system voice reads Chinese.

Version 0.3.71

Released

Speech stopped talking over itself, and languages with no voice of ours are read by the system voice.

Fixed

  • The browser interrupted itself: one action now produces one thought, and it is allowed to finish.
  • The system voice did not work in the product at all, and three languages in the list stayed silent.
  • On Windows the speech never reported that it had finished, which would eventually lock a screen reader up.

Version 0.3.70

Released

Every language the browser speaks now has a voice, including the ones we have none of our own for.

New and better

Voices

  • Languages we have no voice for are read by the voice built into your system, instead of silence.
  • Four languages gained something they did not have: a woman, a man, or their own variety of the language.
  • Arabic got a voice we are allowed to ship, and for the first time a female one.

Fixed

  • The Chinese voice was silent for everyone who installed it.
  • You could download the Arabic voice, open an Arabic page and hear nothing at all.

Version 0.3.69

Released

One fix, about the certificate warning screen.

Fixed

  • When a site had a broken certificate you landed on the warning screen with no way of knowing there was a way out of it.

Version 0.3.68

Released

Arabic: the twenty-fifth language, and the first one read from right to left.

New and better

Arabic

Both the browser and its voice. Right-to-left reading was checked by looking at it rather than reasoning about it, which found three faults, none of them actually about Arabic.

Fixed

  • A deafblind person was told “page repaired” and then not given the page.
  • On a broken certificate the warning opened by itself while you were already typing your password.
  • A face description ended up attached to somebody else’s picture.
  • On a Mac there was no way to switch reading mode on at all.
  • Updating on Windows no longer requires guessing what to do.
  • When a page changed, the browser re-checked every repair it had already made, on every changed piece.

Version 0.3.67

Released

One fix: pages froze for seven seconds at a time.

Fixed

  • Pages froze for seven seconds at a time.

Version 0.3.66

Released

A Help menu, and a version number the browser can say out loud.

New and better

What is new

  • A Help menu, with the version number spoken rather than only shown.
  • Uploading a file worked again on sites that remove their own file field from the page.

Version 0.3.65

Released

Thirteen places where the browser said nothing and should have said something.

Fixed

  • Entering the toolbar told you where you had arrived only about half the time.
  • The name of a region went missing whenever the machine was busy: the voice was treated as free while it was still thinking.
  • The window that finishes speaking a region’s name was shorter than the name.
  • The ring menu could only be opened with the mouse, never from the keyboard.
  • The entertainment shelf opens with one keystroke: three items called “Entertainment” in a row are indistinguishable by ear.
  • On Windows the menu measured itself with the wrong font, so words did not fit in the window.
  • Pressing the usual key to leave a screen did nothing, on all four screens that ask you to choose something.
  • First run opened the wrong door three times out of five, and the window would not answer “where am I”.
  • Going through the introduction a second time silenced the voice you had come for, and lost the fifth step.
  • A screen reader was handed a bare word, “collapsed”, with nothing to say what was collapsed.
  • English was offered in two American voices only, while half the people who use this are British.
  • The explanation of why a button cannot be used cut off the answer to “where am I”.
  • A window called itself “site”. It now has a name, in twenty-four languages.

Version 0.3.64

Released

The largest release so far, two hundred and forty-nine changes: a shelf of games with backgammon playable by ear, a family tree, and routes.

New and better

Entertainment, and backgammon playable without sight

A shelf in the panel, opened by one keystroke, with what is finished on it: postcards and backgammon. The board is built to be heard rather than read out by a screen reader on top of a visual board.

  • You hear where a checker will land using both dice, not one; a move with both dice is one keypress; there is an undo button and a bear-off that happens by itself.
  • Changing sides is a sound. A refused move explains itself instead of beeping. “Hit” does not drown in the list.
  • You can resign, and the score is read off the board.
  • Play over the network: a call sign is required, the join code is dictated character by character, and you can knock on the board.
  • Windows and Mac played a full game against each other, and three faults turned up that are invisible when both sides are one machine.
  • The counting sentence learned number agreement, so it stopped being wrong in Russian.
  • The blocking rule in long backgammon worked backwards: a wall shutting in all fifteen could be built.
  • The button that leaves a game agreed to leave and left you at the same board.
  • A button under focus would not press with Enter, so the way into a game was closed to the keyboard.

Family tree

It lives in the browser now: the tree is walked with the keys, and the panel says where in it you are. The tour explains what GEDCOM is and what “markup” means rather than assuming.

Routes

A path through a site, recorded once and replayed. Without sight, getting back to the same place is work repeated every time.

  • A list you walk with the arrows, and a file you can hand to someone else.
  • It remembers what you typed into it, except the things that must never be remembered.
  • It lives in a column beside the page, so the whole thing happens in one tab, and the button that opens it doubles as the recording state.

For low vision

  • Large interface text, as a switch. Data tables under magnification stopped dragging the page sideways.
  • A “set this up for low vision” button, for people whose first run is already behind them.
  • Our own interface was set smaller than Chrome’s around it: 42 places under 12 pixels, and a single focus ring.
  • The site settings button now sits in the address bar, which is where sites tell you to press.

For deaf and deafblind people

Two hundred and seventy-one phrases were spoken and never written anywhere a deaf person could read them. Four of the repairs the browser can make were not offered to people with low vision at all.

Keys and what they are called

  • “Go to…” answers from where you are standing, instead of from the top of the page.
  • Entering reading mode used to read out twenty-five shortcuts before letting you read anything.
  • Tab was read as a glyph and ran into the word before it: “Steuerung⇥”.
  • Option was called Alt.
  • The address bar read out the path to its own page, parameters and all.

Fixed

  • In Google Meet the camera and microphone were being blocked by us, not by the person.
  • Escape killed the camera permanently: the refusal was recorded and never lifted.
  • The browser answered “no” on your behalf after thirty seconds. The camera question existed only as a sound, and silence counted as a refusal.
  • Deleting was silent, so people deleted a second time.
  • A site could take the focus in the same instant: 14 of 56 stops were empty, and no setting of ours moved that.
  • The screen went dark and nothing said so.
  • The menu announced itself twice, and the position always lost.
  • A Ukrainian passage on a Russian page was read with a Russian voice.
  • The routes page was mute to the browser’s own voice, and the site settings card was mute as well and missing from the tour.
  • Punctuation was taken from the code rather than from the language, so Hungarian read a bracket out loud.
  • The tour named buttons that do not exist: about 805 quotations across 23 languages.
  • Jargon nobody had explained is now either plain words or explained where you first meet it.

Good to know

Windows

A blind tester on Windows sent a report and it is in this release: the browser re-opens its own pages, windows have names, and the question about sight has a third answer. Alt-D opens the address bar.

Version 0.3.60

Released

The update checker had been asking an address that did not exist since the day it shipped, so no update ever reached anyone. This is the release where that was fixed.

New and better

Updates that arrive

The checker has been in the browser since 0.3.20. The address it asked answered 404 every time, and a failed check says nothing by design, because a dead server and hotel wifi look the same from here. The server half is written now. A release also switches the update channel to itself; otherwise the next one only reaches the download page.

Captchas

  • A captcha you have met before is recognised from the second visit instead of being described in full every day.
  • hCaptcha: the accessibility door is open now.

Our own windows instead of the system’s

  • The page, address and screen-sharing menus moved into windows of our own, so there are no system pop-ups left and a screen reader can read them. Checked with a screen reader, not assumed.
  • Choosing a file is our own screen now, not the system panel: the system one had its main sentence killed by the screen reader, and on Windows the picture in a postcard came out a blank sheet.
  • The first-run wizard used to let you wander into the toolbar of a browser that had not started working yet.
  • The Continue button on the voice screen said nothing when pressed.

Also

  • “Out loud”: you can hear where a page is silent because its author gave nothing a name.
  • Jumping between elements was read by the letter rather than by the key, so on a Russian keyboard layout every one of them was silent.
  • A “what changed” page of its own, walkable by headings.
  • The Czech voice was chosen by a Czech speaker: Kasandra, beside Jirka, who was trained on top of English.
  • A Russian postcard turned English after a language switch.

Version 0.3.59

Released

Postcards: a format built and read inside the browser by ear. And the Cloudflare wall that used to stop the browser dead.

New and better

Postcards

Its own tab, where you build one and where the ones sent to you are read. Mood, characters, stickers, magnets, and a throw of the dice if you would rather not choose.

  • It travels as text, not as a page: a .qcard file.
  • 21 207 pictures drawn in code, every one with a description.
  • “Build it for me” assembles one with a throw instead of a walk through the shelves.
  • It sounds, and it speaks every language whose dictionary was ready, Kazakh included.
  • A sixteen-step tour, with the builder open while it is being explained.

Fixed

The Cloudflare wall

Sites behind Cloudflare sat on “Just a moment” forever. The browser was announcing itself under a name no site has ever heard of, and stripping that name lost us every Cloudflare site at once. It now reports itself correctly, sees the checkbox, says so, and takes you to it.

Fixed

  • The browser buttons are read as one group, the way Safari does it: fourteen stops became six.
  • A link from an email opens in Legato: the system asks for one handler and we can be it.
  • A lifetime licence did not activate at all, and a hundred-year one was read out as a date.
  • The browser said “focus is being held” after you had already got out.
  • The introduction window let you out into a browser that did not exist yet.
  • The top-up button showed ${price} instead of a price.
  • Sound stopped stacking up into a jangle.
  • F7 from inside somebody else’s embedded frame reads the page from the start instead of answering “end of page”.

Version 0.3.58

Released

A rebuild. Nothing in the browser itself changed between this and 0.3.57: it is listed so the history has no holes in it.

Version 0.3.57

Released

The settings page had been dead in its entirety, and the browser can now say when a button’s name is its own guess rather than the page’s word.

New and better

Where a name comes from

When a page never named a button, the browser invents a name. That is what it is for, and it must not be mistaken for the page’s own word. One key now separates the two.

  • It says so by itself on names where being wrong would be dangerous, and on every name if you ask it to.
  • It stays quiet when it recognised the harmless half of a dangerous button.

The paid part got cheaper to use

  • A picture’s cache entry is keyed on its description rather than on a name, and 99% of already-paid work had been thrown away because of that.
  • The shape of a form can be worked out ahead of time and handed to you free, instead of spending your monthly allowance on it.

Fixed

  • The settings page was dead in its entirety, every control of it, because of two clashing lines of code.
  • The screen-curtain button had no name in the markup: there was a gap between two naming passes.
  • “Turn everything off” now turns everything off, and Legato’s consents stopped erasing one another.
  • A keyboard shortcut is named by the key that exists on your keyboard: the Command symbol is spelled out in words, per platform, in 24 languages.
  • The consent window names what it sends (the crop of the screen and the site’s name) in all 24 languages.

Version 0.3.55

Released

First run was tested with a real screen reader for the first time, and the download button started handing over a file that opens.

Fixed

  • First run, tested with real VoiceOver rather than with VoiceOver switched on next to a sighted person: four places where a blind person was left without an answer.
  • The download button handed over a package that does not open. It hands over a disk image now, and its size and checksum are written by the build itself rather than typed by hand.
  • The first-run screens showed the path to a file in the address bar.
  • The very first screen is drawn by the system, not by us, and it is now part of what gets checked.

Version 0.3.54

Released

A description of a picture becomes its caption, and is then given to everyone else free.

New and better

What changed

  • When the AI describes an image, that description is kept as the picture’s caption and handed to the next person free, with nothing stored about who asked.
  • Tables, tiles and “name this place” now follow the reading cursor, like everything else.
  • The version number moved out of the corner of the toolbar and into settings.

Version 0.3.53

Released

One fix: the form check and the form summary were looking at two different forms.

Fixed

  • The form check and the form summary were looking at two different forms, so the check could pass a form the summary had described.

Version 0.3.52

Released

The first release that reached anyone. Everything below this line is the browser before it had users.

New and better

What was in it

  • Mac downloads as two buttons, because it is two files: one per processor, and the wrong one will not start at all.
  • Describing an image follows the reading cursor rather than picking the biggest picture on the page.
  • Drawings that the page draws itself are read again, instead of being skipped in silence.
  • The browser stopped crashing on a site that redirects to itself.

Before 0.3.52

Nothing. 0.3.52 is the first build that was published, on 19 August 2026. Before it the browser had no users to have release notes for. The entries from 0.3.82 down were written as the work was done; the ones below that were reconstructed afterwards from the record of what went into each PUBLISHED build, which is why they name a fault rather than explain it. A version that was built and never handed to anyone is not listed: 0.3.56, 0.3.61, 0.3.62, 0.3.63 and 0.3.72 exist in the code and reached nobody, so they are not part of what you have.

Back to Legato