Skip to content

Changelog

Every release, as it shipped

A minor release changes what Lodestar is. A patch keeps a promise the last one made. Each series opens with the release that named it, and its patches follow.

0.39minor · September 26, 2026

Lodestar begins with the thing you came for

The first launch opens on a welcome with four doors: Write, Switch, Keep and Speak, the same four the website shows. Choose the one you want first, and Lodestar walks you through that one to a real result: a typo fixed where you wrote it, an app reached by the launcher and then by a letter of its own, a copy pasted back from the strip, a sentence spoken into place. The other three wait, and each is brought up once, later, when it would help.

Only one permission is asked for at the start, Accessibility, and the card says what your door needs it for before macOS asks. On an account that is not an administrator, the card says so up front, because turning it on needs an administrator's password, and it can copy a short note for your IT team.

Writing starts on spelling, with nothing to download. Once the first fix is taken, Lodestar offers the closest model your Mac can run, and says what it costs before anything downloads.

Switching teaches the launcher before any letters, because on the first day the launcher already works: type a few letters of an app and it opens filling the screen. Letters come after, suggested from the apps you have open, and kept only if you keep them.

Nothing changes for anyone already using Lodestar.

One patch

  • 0.39.1Feedback now reaches a person›

    Report an Issue sent you to GitHub, where most people have no account and the rest must write in public. In its place is Send Feedback, in the menu under the star: a note written in Lodestar's own window that goes straight to the person who makes it.

    Nothing about you travels with it unless you add it. An email address is there if you would like a reply, and left empty the note arrives all the same. A diagnostic report can go with it, off until you tick it, and you can read the report before you send, because its recent log lines can name windows you had open.

    If the note cannot be sent, it stays in the window and is also put on the clipboard, so nothing you wrote is lost.

0.38minor · September 25, 2026

The clipboard reads what you copied, and finds it faster

A clip that is only a color, a moment, a measurement or a sum now carries a note from Lodestar at the foot of its card, in Lodestar's own serif. The clip itself stays exactly where every card keeps its text, and it is still the only thing that pastes; the note is Lodestar telling you what it is.

A color is shown and named: #FF4F00 is International Orange, #FF0000 is Fire Engine Red, Apple's green is Shamrock Green. The names are the ones more than two hundred thousand people gave colors on their own screens, so a name sits where people put it. Search finds a color by its name, so orange finds the orange you copied as a hex.

A timestamp says how long ago it was, as a person says it: 6 hours ago, yesterday morning, Tuesday afternoon, August 2025. Beneath it is your clock, UTC, and any zones you keep, which you add on the Clipboard page as a city. A zone that would only repeat the value is left out.

A measurement in the other system is read into yours, in the unit you would reach for: 5 km is 3.11 mi, 180 cm is 5′ 11″, 72°F is 22°C. One already in your units is left as it is. Imperial or Metric is the one new setting, under Advanced, and it starts as your region's.

Arithmetic is read as its answer: 1234 * 1.08 is 1,332.72. A phone number, a date, an ID or a range is never mistaken for a sum.

The search itself was the lag you felt while typing into the strip. It had been reading every clip afresh on every key; it now reads each one once, and a keystroke over a full history takes about a millisecond where it took a tenth of a second, finding exactly what it found before.

The editor now works inside the draft too, with ]s and [s to move between marks and z= and zg to fix or keep a word, and it learns which English you write from your Mac.

One patch

  • 0.38.1A new mark›

    The compass rose that stood for Lodestar did its job, and read as a compass: the thing you take a bearing with, not the star you steer by. In its place is a star with depth, twelve points drawn as flat planes of International Orange, each lit only by the way it faces, on a charcoal that carries a little of the orange. It is in the Dock, in Finder, on the disk image, and in the menu bar, where its silhouette stands at rest and knocks out of a disc while a chain is pending, as the rose did.

    The star is defined once and every copy is drawn from that definition, in whatever color it is asked for, so it can follow wherever color on the Mac goes next.

0.37minor · September 25, 2026

The editor: a line under what reads wrong, in everything you write

Lodestar now reads what you type, in any app, and draws one thin line under a word that is misspelled or a phrase that does not scan. Nothing else appears: no badge, no count, no panel beside the text. A field with no lines has been read and is fine. Press lode ⇥ and every mark wears a letter and its fix; the letter applies it, ⇧ and the letter keeps what you wrote, ⌫ takes the last fix back. If your hand is on the mouse, rest the pointer on a mark and it offers the same two answers.

It corrects what you meant to write and never what it thinks you should have meant. Spelling and grammar, never rewording, never tone, never a name, never your lowercase or your casual words, never anything inside code or a link. A word you keep becomes one of your words; a grammar mark you keep is quiet in that sentence and teaches nothing, because the same change is right in one sentence and wrong in the next.

A small language model reads each sentence when you finish it, on this Mac and nowhere else. Choose how much it reads in Settings, on its own page under 0: Spelling needs no model at all, Minimal uses Apple's own, Standard is a 3.6 GB download that holds about 4 GB while you write, and Full, for Macs with 64 GB, reads most precisely. The model loads when you start typing and lets its memory go two minutes after you stop. Your text never leaves the Mac and is never kept.

The editor is off until you turn it on, and when you do, it asks first.

This version needs a Mac with Apple silicon and macOS 14 or later. A Mac that cannot run it stays on 0.36.3, and says so once.

One patch

  • 0.37.1The editor, on every Mac it was meant for›

    0.37.0 started only on macOS 27. One of the libraries under the editor's language model had quietly moved to something only the newest macOS provides, and the build carried it along. On any earlier system the app did not open, and the updater put the previous version back a minute later. This version holds that library where it was, and from now on a release is opened on every macOS it claims, 14 through 26, before it is published at all.

    What 0.37.0 was meant to bring:

    The editor: a line under what reads wrong, in everything you write.

    Lodestar now reads what you type, in any app, and draws one thin line under a word that is misspelled or a phrase that does not scan. Nothing else appears: no badge, no count, no panel beside the text. A field with no lines has been read and is fine. Press lode ⇥ and every mark wears a letter and its fix; the letter applies it, ⇧ and the letter keeps what you wrote, ⌫ takes the last fix back. If your hand is on the mouse, rest the pointer on a mark and it offers the same two answers.

    It corrects what you meant to write and never what it thinks you should have meant. Spelling and grammar, never rewording, never tone, never a name, never your lowercase or your casual words, never anything inside code or a link. A word you keep becomes one of your words; a grammar mark you keep is quiet in that sentence and teaches nothing, because the same change is right in one sentence and wrong in the next.

    A small language model reads each sentence when you finish it, on this Mac and nowhere else. Choose how much it reads in Settings, on its own page under 0: Spelling needs no model at all, Minimal uses Apple's own, Standard is a 3.6 GB download that holds about 4 GB while you write, and Full, for Macs with 64 GB, reads most precisely. The model loads when you start typing and lets its memory go two minutes after you stop. Your text never leaves the Mac and is never kept.

    The editor is off until you turn it on, and when you do, it asks first.

    This version needs a Mac with Apple silicon and macOS 14 or later. A Mac that cannot run it stays on 0.36.3, and says so once.

0.36minor · September 21, 2026

The lode key can be tapped

It was a hold: down, a letter, up, and the lens stood while it was down. Four days of the raw record said what that hold was for. Ninety- four in a hundred covered exactly one key, and a hold that buys one key is a co-contraction bought for nothing — the thumb pressing against the letter for two hundred milliseconds, a hundred and ninety times a day.

So a tap arms the next key instead. Lode down and up with nothing struck inside it, shorter than a peek, and the key that follows within a second is the gesture it would have been under the hold, routed the same way, the phrase ending with the key the way it ends when the thumb lifts. The hold is unchanged and is still how the map appears, which is what gives the two forms their meaning: tap for the gesture the hand owns, hold to see the map. Nothing appears on screen for a tap: nine gestures in ten strike inside three tenths of a second, so a mark would be motion on almost every one, and what bounds a state the eye cannot see is the second the arm lives rather than anything the eye has to find. Escape disarms. A tap followed by nothing expires silently. Tapping twice is still assent to the coach and never leaves a key armed behind it. And the record showed the cost as well as the gain — a short empty press followed by a letter now becomes a gesture rather than that letter, fourteen times in four days — so `lode.tap` is a switch, on by default, and every press that arrives armed is marked in the raw record, where the trade can be read rather than argued.

And the record knows where your keys are.

It kept a finger per press by reading the keycode the way a typing course reads a Mac keyboard. On a split board that puts enter, backspace, space and half the modifiers under the thumbs, every one of those presses was charged to the pinky, and one lode press — three modifier records — was scattered across three digits. The convention was wrong on exactly the boards whose owners care.

Settings has its first page behind a pane for it. Coach → Health → Keyboards opens to one board, chosen at the top, its fourteen keys below with the standard placement labelled as such, and a placement that differs is the only thing ever written: `health.keyboards`, per keyboard and per key, "right thumb". Letters keep their columns on every board that keeps columns and are never on the page. The tap writes the finger under that declaration, and every past row can be read under it again, because the record kept a kind, a modifier bit and a side. The hand column is never touched — it is the split the published index was defined on, and the sides and the pairs come out identical under any map. A changed map is a new era in the ring.

The Health row once called Handedness is now Dominant hand.

3 patches

  • 0.36.3An update that checks the Mac it is going to before it goes›

    The next version of Lodestar will ask more of the Mac it runs on: Apple silicon, and macOS 14 or later. That is what the editor it brings needs, a language model reading your sentences on the Mac's own graphics chip. Until now the updater checked that a new version was signed by us and was the version it claimed to be, and never whether this Mac could open it. An Intel Mac, or one still on macOS 13, would have installed it, failed to start it, rolled it back a minute later, and done the same with every release after.

    This version reads what a new build asks for before it installs it. If this Mac can run it, nothing changes. If it cannot, the update is set aside, Lodestar says once which Mac or which macOS it needs, and this Mac stays on the version that works for it.

  • 0.36.2Breaths offered where they are wanted, and a draft that remembers what it heard›

    The coach had been offering breaths as its default. Ten of its last twelve suggestions were layouts, and not one of the four you accepted was ever brought back. The reason was in what it counted: two apps used one after the other, all day, read as two apps that belong together. They do not. Ghostty and Brave, the pair it pressed hardest, were each pulled into view on its own nearly every time the week after their breath was saved. The hand wanted one window at a time, and the chord already composes the rare pair it wants together.

    So a breath is now offered only for a pair you stand side by side yourself, with a shift summon, a chord or a beside move, about twice a week, and it is priced on those arrangements, because a breath replaces composing, not switching. And an accepted breath is judged the way an address is: by coming back. It holds the coach's one learning slot until you have recalled it a handful of times, at any letter and in any layout that still holds the pair, and one that is never recalled counts against the kind, where the accept alone used to count as a success. When things are already quick, the coach now has less to say, which is right.

    The draft also keeps something it used to throw away. When a draft ends with nothing in it, the record now holds how loud the microphone was: a device delivering nothing at all, a quiet room, or a voice. A draft closed in a second and a draft that waited on a deaf microphone look the same from the outside, and only this can tell them apart.

  • 0.36.1Dictation with the lid closed, and on a headset that was slow once›

    A closed lid switches your Mac's microphone off. Not quietly: every program reading it receives exact zeros, at the full rate, and the draft read those zeros through an evening in clamshell, sixteen sessions with the glyph lit and nothing behind it. It had a test for a microphone that delivers nothing, but the test counted buffers, and the zeros arrived as buffers.

    The engine is now watched for signal. A room never reads below a whisper of noise; a dead input reads nothing at all, and nothing at all for a second and a half, four on a Bluetooth headset whose telephone link takes that long to come up cold, is what the draft acts on. With the lid closed your Mac's microphone is not fallen back to at all: a headset is read when one is connected, and when none is, the register line says the reason in one line rather than listening to silence.

    The headset had its own trouble that evening. Its link came up more slowly than the draft's budget for a start, so each start was retried, and the retry stopped a session whose first sound had not arrived yet and wrote the headset off as deaf. Twice, in ten seconds, after which every session in the process was pinned to the microphone the lid had switched off, whatever the register line was set to. Three things changed. A start that timed out proves nothing about a device; only a whole window of silence with the engine running does. A device you name on the register line is read as named, always. And a device written off is forgiven the moment the set of inputs changes, so a headset that was slow once is not held against it after it reconnects.

    And when the microphone has been open for three seconds and heard nothing, the register line says so: hearing nothing on, and the name. The listening note's silence, for the eye that is on the draft.

0.35minor · September 16, 2026

Lodestar writes itself down

The first audit of the raw record began with a question the data could not answer: the way holds were timed had changed, and nothing in the files said when. So every day file now carries, in its header, the build that wrote it, the record format, the install and the devices that were attached — and opens a fresh segment beside itself the moment any of that would change mid-day, so a header never describes rows it did not see. An era event lands in the record whenever the build, the formats, the input settings, the screens or the keyboard layout differ from the last time they were written down, and the monthly archive keeps the set of builds it saw. A change in the data can now be told from a change in the hand without reading a log.

The record grew, each column with the question it answers. A modifier's own press is recorded — how long ⌘, ⇧, ⌥, ⌃ or fn was held, and how many keys it covered — because a chord's sustained load is what the letters' holds cannot show. The finger, one step finer than the hand, because the finger is the unit a layout is changed in. The time from a key to the backspace that corrects it, because how fast a slip is noticed is a different fact from how often one is made. Beneath the pointer's folded reaches there is now a raw record of the reaches themselves, every report the mouse made on the way to a target, with each press's button, its source — your hand, Lodestar's own pick, or another program — and the device it was on, because a smoothness measure nobody has chosen yet cannot be derived from three band sums, and a pick is a click the hand did not make. The wheel's bursts are split by precise deltas and by momentum, a drag against a flick. And beside every window: what a pixel is on each screen, whether the lid was down, which layout the keys were read through, and the settings that scale a delta into a point. Never which key. Never a position.

Retention is two memories, each bounded by size and each saying why. The behavioral ring — what you did — retires its oldest months once it is over a quarter gigabyte, about two years at today's rate; its pulses and windows leave first, for an archive no bound of the ring's touches. The health record — how your hands did it — has a bound a decade out, declared and measured; Lodestar will say so as it nears it, and it never prunes a baseline on its own. The ring was already kept for a year, not the ninety days the notes once said; age retires nothing now.

The health record is backed up. The data folder used to sit outside Time Machine as a whole, for the right reason — the behavioral record is browser-history-grade. Those files still stay out, one by one. The raw presses, the raw reaches, the archived windows and the monthly rollup go in, because they are the part nothing can recompute, and one disk must not be the only copy of them.

The doctor prints the time to correction, the wheel by what made it, and the clicks that were the tool's and not the hand's.

2 patches

  • 0.35.2Lodestar cannot freeze the way it did›

    Two nights ago the first click after an update deadlocked the mouse tap, the main thread queued behind it, and the system switched the key tap off for not answering. 0.35.1 fixed the lock. This release removes the class of bug and bounds the damage of anything like it.

    No tap callback takes a lock any more. The key tap and the mouse tap copy the few fields they need off the event and hand them to one queue that owns everything else; there is nothing to deadlock on because there is nothing to lock. A thread of its own pings the main thread and, if the answer does not come back inside eight seconds, says so in the log and aborts — a crash launchd recovers from in a second, with a report naming every thread, where a freeze recovers from nothing. And the update watchdog now blesses a new build only when it answers on its control socket, not merely when it holds the pid file: a frozen build is rolled back like one that never started.

    The tests reach the real threads now. The harness runs the real health monitor at a scratch directory in every scenario, a stress test drives both taps at once against a deadline, and `lodestar --self-test` runs that stress on the signed binary itself before it is notarized. The suite also runs five times faster, four minutes to fifty seconds: every scenario's glass stayed in the application's window list after the scenario died, a hundred panels by the end, and every run-loop turn paid for all of them. They are closed now, and a test proves a dead scenario leaves nothing behind. And the ship stops after the build for a hand: one click, one scroll, one keystroke on the bytes that ship.

    And the click door spends its chips where they were always meant to go.

    `lode ;` puts a letter on what typing cannot reach, and it had been deciding that by asking how a target was found rather than what it looks like: anything the accessibility tree could name by role was assumed to carry a word the hand could type. An icon button refutes that. It is a button like any other and there is nothing written on it, so it wore no letter and answered to no search, and the pointer was its only door. A notifications page held a hundred and seven targets and drew a single letter, while two in five of them painted no text at all — the checkboxes down the side, the icons across the header, a done button on every row.

    The question is now asked of the screen. A target keeps the address it always had when a word is painted inside it and wears a letter when none is, read from the same recognized words the typing searches, so the two ways in can never disagree about what is there. A word that merely brushes a target belongs to its neighbour — the caption beside a checkbox is the caption's, not the box's — so most of a word has to sit inside to count as an address. The tree answers before the screen does, so the letters wait for the first words and are then spent once: a letter that moved under a hand already reading it would be worse than no letter at all, and a window with no words coming is not made to wait past four tenths of a second. A browser window that drew one letter now draws forty-seven.

  • 0.35.1Lodestar froze on the first click›

    0.35.0's mouse tap took its lock for the whole of a click, then asked whether the lid was closed under the same lock, which does not re-enter. The tap's thread waited on itself; the next keystroke waited on the tap; the system switched the key tap off for not answering, and the right command key fell through as plain command. If that happened to you: sorry. Quit and relaunch, and this build does not do it.

    The lid now has a lock of its own, a test proves that a click and a scroll both come back on a thread of their own, and the raw stores are placed beside the observations rather than at a fixed path, so that test could not touch a real record.

0.34minor · September 16, 2026

Lodestar keeps the record

Until now the health pulse kept summaries: counts, moments, a histogram of how long keys were held. A summary answers the questions it was built for and no others. Beneath it there is now a raw record: every press, when it went down and when it came up, which hand, what kind of key, and whether a modifier, a lens, or Lodestar itself was involved. Never which key. One file a day, compressed when the day closes, on the order of fifty megabytes a year, in the keys folder beside the rest of your data. Nothing in it is analyzed. It is kept so that a question nobody has asked yet can still be put to this year's typing.

Above the record, ninety-second windows describe the typing habit the way the clinical literature reads it: exact quantiles, the distribution at the edges the published features use, the fluctuation between one press and the next, the rollover when a key goes down before the last one came up, all of it kept for each hand and each direction across the keyboard. Each window also notes the app, the kind of element that had focus, the keyboards attached, the power source and the screens, because a hold time is a mechanical fact and a different keyboard is a different instrument. The pointer's reaches keep their speed profile from the mouse's own counts. The monthly archive keeps each window's spread as a sample, so a month holds the spread of the spread.

Two optional facts about you live under Health in the Coach pane: the year you were born and the hand you write with. Age and side are the first things any reading of the hands is adjusted for. Both stay on the machine, like everything else here.

The design note moved one line. The discipline is not in what the instrument collects but in what it says and what leaves the machine. Nothing leaves. What it says is still nothing: the printout describes, and a description is not a verdict.

Fixed: every hold was timed from the moment the event tap got around to it, on the main thread, so a key released during a window rearrangement was measured tens of milliseconds long. Presses and releases are timed from the event's own stamp now, on the keyboard and the mouse alike.

0.33minor · September 15, 2026

A letter on every tab, two notes in the draft, and a click that means it

First, a fact that is also an apology. Yesterday's 0.32.4 was the previous build under a new label. Xcode 27, which arrived with macOS 27, puts a universal build in a different folder than the one the packaging script had always read, and the script packaged a three-day-old binary without a word. The glass tinted toward the system's ground, which the last note described, arrives now. The label did more than mislead: a Lodestar that believed it was 0.32.3 saw 0.32.4 on offer, installed it, relaunched, and was still 0.32.3, so it installed it again, every three minutes through the night. The packaging script now refuses a binary that does not announce the version it is labelled with, and Lodestar refuses a release that, once applied, did not change it.

lode ⇥ puts a letter on every tab of the window, and the letter switches to it. It is the tab as your Mac names it, so it works the same way in a browser and in a terminal, and a window with no tabs says so. The list of windows the key used to open is one modifier away, on lode ⇧⇥.

A pick is a click. Whatever you pick in the click door, by typing what you see or by a letter on a chip, Lodestar now clicks it the way your hand would, in every app alike. It used to ask the app to press the element for you, and some apps said yes and did nothing; the Share button in Asana was one of them. The cursor ends where the click was.

The draft has two sounds. A note rises when the microphone is live, on the first sound it hears rather than on the engine reporting ready, because a microphone your Mac names can deliver silence. A note falls when the words land. Nothing on cancel. Both are a fifth apart from Lodestar's own alert sound, which ships inside the app and can be chosen in Sound settings. Sounds, in settings, turns the pair off.

In the web bar, a pin before a profile's name says that a pin or a rule chose it. A bare name is Lodestar's guess.

The launcher no longer counts windows beside an app. The number counted everything the tree called a window, pickers and toasts included, and moved while you watched.

And a window that outlives its accessibility handle is found again. Zoom rebuilds its tree during a meeting; the meeting window kept its identity while Lodestar's name for it expired, and for seven minutes nothing could reach it. Now a fresh handle for a known window takes over, and every verb that needs the focused window asks the app afresh when Lodestar's answer has died.

4 patches

  • 0.33.4Lodestar leaves the way it came›

    Until now the only way out was a command typed into a terminal, and dragging the app to the Trash left its login agent behind, asking the system for a binary that was no longer there every ten seconds for as long as the machine lived. Both doors are finished now. Uninstall sits under Quit in the menu and shows the whole plan before it touches anything: the browser role handed back, the permissions returned, the alert sound removed and the alert restored to the Mac's own, the links, the app, the login agent, and last of all the running program. Config, breaths and the clipboard stay unless you ask for them to go, because they are yours and they survive a reinstall. And the Trash is a real door: the login agent now runs through a stub that becomes Lodestar when Lodestar is there, and when it is not, takes itself and the alert sound away and stops. An app merely moved puts both back the next time it starts.

    The alert sound is Lodestar's own, so Lodestar keeps it where Sound settings looks. A copy is placed at every start, and replaced when a release changes it. Whether your Mac's alert uses it stays your choice, made where you make every other one.

    The menu carries verbs now, and only a few: the walk, Settings, updates, an issue, Quit, Uninstall. Editing the config file and opening the log were doors nobody should be asked to open, and routing clicked links was a switch pretending to be a verb, which is what Settings is for.

    Fixed: after every update since Lodestar learned to hand itself back to its supervisor, the short-lived instance the updater started was reading the news of its own update and taking it with it, so the Lodestar that stayed never knew it had updated, and never said so.

  • 0.33.3Every surface the same shade, and a click that is only a click›

    The launcher and the web bar read darker than the draft and the pill. Photographed on one stage they were the same glass; on a desktop they sat over different things, and the pill, being small and mostly edge, ran a few levels lighter than a bar over the same ground. The veil inside the glass now takes nearly all of the backdrop's vote: the bar, the draft and the pill read 25 over charcoal and 29, 29 and 31 over a white page, within a hand of levels of one another anywhere on the screen. A trace of the frost remains at the rim.

    A pick in the click door used to press and release faster than the cursor could get there, so some apps took the press where the pointer had last rested and the release at the target, and dragged a selection between the two. The cursor is now placed first and the press waits for it, so a click is a click.

  • 0.33.2One glass reads the same on every surface›

    The draft looked different from the launcher, and the photographs said it was not: on a flat ground the two measured to the level. The difference was the backdrop. The glass lets a share of what is behind it through, and a small bar sits over one thing while the draft, being large, sits over several, so a bright window behind half of it read as a patch. No tint colour or strength removes that share; every one tried moved the panel darker or lighter as a whole and left the patch alone. What removes it is a veil in the ground's own colour inside the glass, taking most of the backdrop's vote and leaving the frost the rest. The draft now reads the same over a white page as over a dark one, within twelve levels, and so does everything else, because every surface is the one glass.

    Nothing else changed.

  • 0.33.1The glass is charcoal again›

    This morning's release tinted every panel toward black, and every panel arrived a shade darker than it was drawn: grey 6 where the design's charcoal is 26. The material does not blend toward a colour the way a veil does; it multiplies with what is behind it, so aiming at black, or at charcoal itself, both land near black. The tint now aims at a lighter grey chosen by photograph so that the panel lands on its own ground: 25 over charcoal, 65 over a white page at nearly eight to one, and in light mode paper over anything. Reduce Transparency draws an opaque veil in the ground's colour, since a tint cannot be made opaque either.

    Nothing else changed.

0.32minor · September 12, 2026

The draft stops explaining itself, and starts listening better

The draft was the last surface carrying a legend. Three keys sat under your words on every opening, fading on a timer, and they were the three that fit rather than the three that mattered. Now the draft shows nothing and answers `lode ?` with its own keys, the way every bar already does.

Which leaves room to say something worth reading. The keys open with the mode you are in and one plain line about it, and the editor's own panel teaches the grammar rather than listing the alphabet: the verbs stand alone, the group says what follows them, and the wrapping verbs that are not vim at all finally have somewhere to be found. Nobody guesses `sa`.

One undo used to take back a whole dictation. Speech was joining the typing run, and a dictation never leaves insert mode, so the run was the entire session: eighty-seven words on one keystroke. Each thing the recognizer settles is its own step now.

And speaking over a selection replaces it. Select a phrase, say it differently, and the words take its place. One undo brings the selection back exactly as it stood, which is what makes it worth trying.

The microphone can no longer hang. Opening it waits on a queue that CoreAudio can block, and a queue wedged by a device changing hands after a restart never came back: the draft would say it was opening the microphone until it was closed and opened again. Every attempt is bounded now, and the watch that was meant to catch this was waiting eight seconds, which is longer than anyone waits.

The register line found one line, too. Everything on it shared a centre and still looked crooked, for three reasons measurement found and the eye only felt.

4 patches

  • 0.32.4The glass stops changing with the page behind it›

    Every Lodestar surface is Liquid Glass, and glass shows what is behind it. Over a dark window that was fine. Over a white page the dark bar turned to a mid grey and its text thinned to below the floor Lodestar sets for anything read, and the pill, the smallest surface, fared worst. A veil inside the glass had been correcting the tone after the fact. It held the tone. It did not hold the weight.

    macOS 27 added a slider for how clear Liquid Glass should be, and photographing Lodestar at every position of it showed that the clearest setting, which is the default, was the one that read worst. The fix is not the slider. The glass is now tinted toward the system's own ground through the material itself, black on charcoal and white on paper, and the veil is gone. Over a white page the bar sits sixteen levels from its charcoal self and its text reads above twelve to one; the pill goes from three and a half to twelve and a half. The frost and the rim are as they were. The slider is left to you, and at its clearest Lodestar now clears its own floors.

    Nothing else changed.

  • 0.32.3Dictation stops opening a microphone that is not there›

    The input your Mac calls the default is not always a microphone. A dock or a monitor can present one, take the default, and deliver silence, without anyone having chosen it. The draft follows the system, so it opened that silence on every dictation, and kept opening it, until the hardware happened to be unplugged.

    Now a device that delivers nothing twice is set aside and your Mac's own microphone is used instead. Being heard somewhere is better than being silent faithfully.

    The other half is that nothing used to say so. The recognizer's preparation has no time limit of its own, and when the speech stack is stuck it simply never answers, so the draft sat there reporting that the microphone did not start while the thing that would have started it was waiting forever. Every step of opening the microphone now has its own deadline and names itself when it gives up, which is also why you will hear about a real failure in a few seconds rather than after a long silence.

  • 0.32.2The microphone stops going deaf after an update›

    Updating Lodestar has been leaving dictation silent, on and off, since 0.25.0. You would open the draft, speak, and get nothing: no words, no meter, no error. It usually came back after a few minutes, or after quitting and reopening, which is why it read as flakiness rather than as a bug with a shape.

    It has a shape. An audio engine can start, report that it is running, and deliver no sound at all, and nothing about it looks wrong from the outside: the same microphone, the same format, no error. The minute after an update is when one gets built that way. And because keeping a warm engine is worth a second of startup, that deaf one was kept and restarted for every draft that followed.

    Now it is watched instead of trusted. An engine that claims to be running and delivers nothing for a second and a half is rebuilt on the spot, in the middle of the session, so you lose a moment rather than the sentence. A session that hears nothing at all is not allowed to hand its engine on to the next one.

    This is also most of the reason three in ten dictations used to settle no words.

  • 0.32.1Dictation and the hand, in the order they happened›

    The recognizer runs a few seconds behind your voice, so typing while words are still being worked out is the ordinary case, not an edge one. Three things were wrong with it.

    Taking a word off something you had just said brought the whole thing back. The words would go, correctly, and then the recognizer would finish and paste the entire utterance in again on top of the edit. For an unbroken dictation that is the whole session. A result whose words you have already edited is now discarded, which is what it always claimed to do.

    Words spoken before you started typing could land after what you typed. The reservation that keeps the order only existed once the recognizer had shown something, and it shows late. Now a key pressed while the microphone is hearing your voice reserves the place too, so what is still being worked out goes in ahead of what you typed. Speak, type while it catches up, speak again: it comes out in that order.

    And a typed word ran into the spoken one before it. Say a sentence, type the next word, and you would get `columnand`. Typing now joins by the same rule speech has always used, which also keeps punctuation attached and does not double a space you typed yourself.

    Also: the keys behind `lode ?` no longer come back on their own. A draft closed with them open used to reopen showing them.

0.31minor · September 11, 2026

One door to the keys, and everything that spoke joins the voice

lode ? is the one chord that shows the keys of wherever you are: the whole system at idle, a lens's keys inside the lens, a bar's inside the bar, the settings window's over it. A plain question mark opens nothing any more, so it is only ever a character. The launcher, Ask and the commands bar carry no legend now, and no guide carries an instruction line: the keys live in one place, and that place is complete.

The keys are not a sheet beside the thing they belong to. A bar grows to hold them beneath its rows, in its own glass, and the pill grows around its row, which stays put as the foot of the card. It is the one motion in Lodestar: three tenths of a second on the system's own curve, no overshoot, the glass leading and the keys fading in a beat behind its edge. Reduce Motion shows the result in place.

Everything that spoke now speaks in the voice. A launch that takes time stands as the pill in an opening mode, and only after a third of a second, so a running app's summon never shows it. The meeting is a sentence: begins in four minutes, begins in 45 seconds, is beginning, began three minutes ago, with Join and Dismiss on the two chords every ask answers to. The boot ask for Accessibility is the same card with no keys, because until the grant lands no key reaches Lodestar. The walk's eight lessons say what each is for in a sentence and draw the keys they teach as rows beneath, in a new order that ends on the sheet, with the clipboard just before it. The chain guide's header is the chain so far drawn as the keys it is, led by the wind when the chain is a breath, and a breath's rows are its apps and nothing else. The last text on the glass that trailed off is gone.

2 patches

  • 0.31.2The pulse learns shape›

    A mean and a standard deviation describe a bell and nothing else, and the interesting part of a motor measurement is in its tail. The health pulse keeps shape now, under the line it has always been under: what that line forbids is key identity, and a shape is not an identity.

    Hold time goes in beside the counts, press to release. It is the one keyboard measurement with a clinical literature behind it, and it asks for nothing the line forbids, because how long a press lasted is not which key it was. A press the system repeated is never timed, for the same reason its keydowns were never counted.

    The pauses stop being thrown away. A gap past the motor ceiling used to be dropped so that thinking time could not contaminate a motor number, and now it is kept beside it instead. The old numbers mean exactly what they always meant. The tail is simply no longer lost.

    Bouts are the unit the hands actually work in. A bout ends when the hands stop for longer than ten minutes, and every pulse now records where in its bout it sat. Whether the hands drift as a bout runs on is worked out when you read it, each bout measured against itself first, so a long day cannot pass itself off as a slow hour. The answer comes with its own error, and where the error swallows the effect the printout says flat rather than dressing up nothing as something.

    The day's shape is read with the measures the sleep literature settled on for exactly this kind of record, and the day begins at four in the morning, or an evening that runs past midnight is cut in half and counted as two.

    `lodestar observations` shows all of it. None of it is judged: a rhythm is described, and what you want your rhythm to be is yours.

  • 0.31.1The pill comes back to its own size›

    The pill grew around its row to hold a lens's keys and then, when the keys went, kept the width it had grown to: the departing columns were still asking the glass to be wide enough for them while they faded. Their edges come off before the glass shrinks, so the pill returns to the row's own width and height, and a test holds it there.

0.30minor · September 11, 2026

A placeholder is the interface asking, not the hand answering

Mono is the hand's face, reserved for what a person typed. The empty launcher, Ask, commands bar, clipboard search and settings fields were showing their invitations in it too. Every placeholder now wears the interface's sans at the field's size and the quiet tone, set through one door in the theme, and the drift guard refuses a bare placeholder from here on.

22 patches

  • 0.30.33A card's header is one line›

    The clipboard card's key, its count, its source and the source's icon were each placed from the card's top on their own arithmetic, and the icon sat four points below the rest. The four now share the key's midline, which is what makes a header read as a line and not as three things near the top.

  • 0.30.32The strip and the settings window speak the language›

    Three faces, one per speaker, and a face is never borrowed: the interface in the system's sans, the hand in mono, Lodestar in New York. The launcher, Ask, the commands bar, the strip's search and the settings fields are mono now, so what you typed is told from what the app says at a glance. One ladder for rounding, each rung the one above over phi squared, and every corner in the app sits on a rung.

    The clipboard's addresses are drawn as the keys they are: the same cap on every card and every pin that the guides and the sheet draw. A card's header is the pill's trailing wing. The settings window's pane numbers and row letters are the same caps, its headers speak in the body voice rather than in capitals, its choices are named as names, and its legend is gone: a plain question mark shows the window's keys on the sheet, as it does inside the strip and inside every lens, and escape takes the sheet down before it closes anything.

  • 0.30.31Lodestar has a voice, and the coach speaks in it›

    The coach's chip used to put its offer on a key row and its answers in a footer. Now it speaks: the offer as a sentence in the serif, Slack could be one key away, with the keymap drawn as the keys it is beneath it and the measurements beside them in the interface's face. Forty-one searches, about ninety seconds a week, about an hour a year: the same number twice, once as measured and once at a scale a person can feel. The two answers are named as the verbs they are, Accept and Decline. A decline is answered in the same voice, once, and then the glass is clear; the offer sleeps a season.

    The voice is New York, the system's own serif, and it is reserved for sentences Lodestar says when it asks, teaches or reflects. It never says I. It says you. It names Lodestar only where Lodestar is the subject, so an update on its way says so and the start of a session says only that it is ready when you are, with the way in drawn as the keys it is. A fact stays in the interface's face, so the two speakers are never confused, and no title ends with a period.

    Every flash is now one family with the pill. The glyph a flash opened with named its kind; the kind draws as a symbol in the pill's own configuration, and the line opens with a capital: refused, needs you, the clipboard, opening, done, the layout. Breaths wear wind, because a breath is taken and released, not filed. A breath saved says so in a sentence, with the windows it holds and the apps it brings back named the way a sentence names them.

  • 0.30.30Lodestar 0.30.30›

    Three small things from the first day: a flash the width of its words, one ready instead of two, and a green check on every push.

    A one-line flash, the copied receipt among them, kept the guide's minimum width and left empty glass to the right of short words. A flash is now exactly as wide as what it says.

    After an update the relaunched Lodestar said ready, handed itself back to launchd, and launchd's own instance said ready again. The relay now holds its tongue: only the instance that stays announces itself.

    One image-door test read a display's size instead of the door's rule, and failed on the continuous-integration runner's small screen after every push. It zooms further in before it measures, so the picture's edge is never what it measures.

  • 0.30.29The pill fits what has been said›

    The typing state reserved a slot ahead of the letters so the outline would hold still keystroke to keystroke, and with a short search that left a gap between the letters and the app's icon that read as something missing. The slot is gone: the pill is exactly as wide as its glyphs, the letters and their caret.

  • 0.30.28Lodestar 0.30.28›

    A pick is seen where it is made, the anchor rides ahead of the far end, and the design language is held by a test.

    When a capital narrows the chips, the chips now say so: the letters already typed wear the accent on every chip they can still complete, and the chips they can no longer reach are gone. The reference is on the glass, where the eye is when it picks, and never in the pill.

    In select, once the start anchor lands, the anchored word rides ahead of the far end's search between the pill's wings, with a quiet dot between the word already taken and the letters being typed. The stage that a sentence used to announce is legible from the word itself.

    The pill can be dragged by its glass, the way the coach's chip can, and comes back where it was left for the rest of the session, kept on the screen. The sheet that ? opens is built on the pill's own proportions and voices: its insets, its gaps, headers in the body voice and never in caps.

    And the design language is now guarded the way the accent has been: a corner radius, a type size or a symbol configuration written into a surface as a number fails the build with the file named. Every one of them lives in the theme, and the last stray few were brought home.

  • 0.30.27Three corrections to the pill, from the first day with it›

    The pill shows only what is being searched for. A capital is a pick, not a search, and it belongs on the chips it narrows, not in the text between the wings; it no longer appears there.

    The sheet inside a lens answers a plain question mark. Holding the mode key for it was one key too many, and a search was never made of a question mark, so the lens gives that character to the sheet. Escape still takes the sheet down with the lens up, and lode ? still works.

    The typed text stands upright. The italic was tried on the glass and did not look right, so the hand's words are set apart by size and weight alone.

  • 0.30.26Every lens wears one pill, and the sheet knows which lens is up›

    Scroll, its aim band, click and select each had a band of their own, in its own shape, saying its own things. Now there is one object: a pill on the glass, floating where the guide has always stood, that every lens shares. Its left wing is the mode, a symbol and a word; its right wing is the app, a name and its icon, told from the mode by tone alone. Between them is what you have said. Nothing, while you have said nothing. A still hairline caret when the lens is listening for your typing, so the band says whether letters would land without carrying an instruction. And the letters themselves, in italic, the moment you have typed or aimed at anything, at which point both wings fold to their glyphs and the symbol and the icon stay exactly where they were. Nothing moves and nothing animates, because a mode indicator's one job is to be true the instant the mode is true.

    The pill carries no instruction, not even esc. The keys a lens owns are on the sheet: lode ? inside scroll, the aim band, click or select shows every key that lens answers to, and esc takes the sheet down with the lens still up. Outside a lens, lode ? is the whole system as before.

    Every dimension of the pill is its height over a power of φ, so one number sets the object and the next surface inherits it. The scroll guide's rows and their fade are gone with the band they stood on; the sheet is where the map lives now, one key away, for as long as anyone wants it.

  • 0.30.25The scroll guide is a band, and the map waits for a hesitation›

    Scroll mode used to open a six-row panel over the pane being read, every time, including the thousandth. Now its resting state is one line along the bottom edge, in the same place and the same shape as select's band: the mode, the app, and the word the aim landed on, with the keys named quietly after them. The two lenses are siblings, and now they look it; opening the aim is the band changing its verb rather than one panel giving way to another.

    The map of keys still exists, above the band, but it waits. The same fade the bars' footers earn governs it, on the scroll verb's own count: a new hand gets the rows at once, a hand that has used the mode thirty times gets them two seconds after it hesitates, and a hand that knows its keys never reads them at all. An escape with nothing done in the mode is the stumble that brings the rows straight back for an hour. A map that always paints always gets read, and reading is reconstruction, not recall.

    The rows themselves read plainer: one separator where there were three widths of dot, and the aim row says what it does in the voice of the others.

  • 0.30.24The wheel is aimed by a word, and the lens ends when the hand leaves the keys›

    Scroll mode always scrolled the same spot. Entering it put the pointer at the window's center, and a wheel event goes to whatever sits under the pointer, so the sidebar, the thread pane, the table header that scrolls sideways were all out of reach. The obvious fix was to find the panes, and it was tried and measured dead: a browser names none of them, not by role, not by scrollbar, not by any flag on any container, and it clips the geometry that might have given them away. Probing the pixels finds them, at the price of a second of visible twitching per point, and still misses a pane that is already at its end.

    So the panes are not found. Inside scroll mode, `/` opens the same band as `lode /`: type a few characters of a word you can see in the pane you want, and the pick lands the pointer on that word and does nothing else. No press, no focus, no copy. The wheel that follows goes to whatever scrolls under it, and the app decides what that is, because that is the question a wheel event has always asked. A word is the one address every pane already paints, in a web view, an Electron app or a native window alike, so the aim needs no discovery, no history and no cooperation from the toolkit. Uniqueness commits, so `/thr` lands on the one word that starts that way without a capital, and the letters you were still spelling are absorbed rather than read as scroll keys. The read covers the whole display, so the word may be in the window beside the one you are in, and that window scrolls without taking focus, which the trackpad cannot do without a click. Tab's pane cycle is gone; the record showed it had never fired, and the measurement showed why.

    The lens now ends the moment the hand reaches for the pointer. A click, or a swipe of your own, closes scroll mode the way a click closes the clipboard strip, because a mode left up under a hand that had moved on would swallow the typing after the click. Lodestar's own scrolling is told apart from yours, so the mode can never end itself.

    `0` and `$` jump to the left and right edges, the other axis of `gg` and `G`, for the boards and the wide tables the aim can now reach. And every session leaves one record: how long, which keys, whether the aim was used, and how the mode was left, so the lens is judged by its use and not by its share of all scrolling, which the trackpad will always own.

  • 0.30.23Lodestar 0.30.23›

    The click door presses what the accessibility tree could not name, and spends its letters where typing cannot reach.

    A web page is not made of buttons. It is made of divs that press, images that open menus, rows that pick a channel, and the tree has no name for any of them, so the door's list of roles walked past them all: in one Brave window it named seventy-three pressables and missed ninety-one more, in Slack it missed the channel list entire. Now anything small enough to be a control rather than a card is asked the only question that matters, which is whether it presses at all. Only the innermost press counts, because the tree presses all the way up, and a chip on the card wrapping the row wrapping the button would put one letter over a whole region.

    A chip is not free. It is a word the eye must find and the hand must spell, and the door already owns a better address for most of a window: the text painted on it. So while a harvest fits in single letters everything wears one, which is the small window's whole experience, a dialog's three buttons each on one keystroke. Past that the letters go only to what paints no word — the presses the tree found by action alone, and the input boxes whose text is yours to write. A Brave window that drew seventy-three two-letter chips now draws ten single-letter ones, and the sixty-five that carry a name are reached by typing the name.

    The labels are three rows in one fixed order, read from the live layout so a chip always names the key that types it: the home row, then the top row, then the bottom. The hand never leaves home while a home key is unspent, and past it reaching up beats reaching down, ten keys to seven, on the row the fingers already travel for e, r, t, i, o and u. Twenty-six letters mean twenty-six targets answer on one keystroke where nine made every one of them two. The order never varies, because a chip that moved rows between windows would be a fresh decision every time.

  • 0.30.22The coach stops offering a breath you already have, and a breath used now leaves a trace›

    A saved breath that holds both apps of a pair answers the finding. The coach reads every saved layout, not just its letters, and a pair it already holds is tested but never offered, whichever letter it lives at and whichever order the switches ran. The letter is the hand's to choose; the combination is what the coach cares about, and a combination that exists has nothing left to say but "use it".

    A pair is named in one order. The ledger once keyed a breath by whichever direction dominated the fortnight, so a breath accepted as one app and another could return a week later as the other and the one, a brand-new finding with the same two windows. Now both directions are one entry.

    Restoring a breath is recorded, and the record names every app in the layout it brought back. Before this a breath left no mark in the log at all: the coach could offer one, watch it be accepted, and never learn whether it was used. The use travels with the apps rather than the letter, so rebinding a breath to a new key keeps its history.

  • 0.30.21The mirror learns to price the pointer, dictation, and what was left undone›

    The mouse now measures its own reach, not just counts it. From the tap's motion the instrument reads the parts a click has always been assumed to cost: the homing off the keys, the travel, the settle onto the target, the press, and the trip back to the keys, with the path the pointer drew against the straight line it needed. Positions never leave the tap's thread; only seconds and distance do. The overhead's pointing line reads as measured once most of a window's clicks were timed, and the older trip flag gives way to the reach that began after a keystroke, read from motion instead of inferred from order.

    Dictation joins the scorecard it was missing from. Every spoken draft's open time is priced against the words it kept at a natural speaking rate, so a draft that landed nothing is dictation's overhead the way the backspace loop is typing's. Beside the pointing pool stands a new abandonment view: each surface's share of openings that ended in nothing, and the seconds they cost, gathered from the giving-up every surface already logged and summed at last in one place. The draft's fixed cost is split by whether the speech model was warm, so the value of keeping it warm is a number rather than a guess.

    A held key is no longer read as typing. Autorepeat keydowns, which the system emits every thirty milliseconds while a key is down, now mark the minute present and count as neither keystrokes nor rhythm, so an evening with a key held reads as presence and not as a hand typing faster than any hand can.

  • 0.30.20The door answers the home row, and the row is whole›

    Inside the image door, h j k l slide the picture and shift slides it three times as far, scroll mode's own stride; plus and minus zoom about the center of what is shown, and = reads as plus without the shift. And the strip's recents now run the whole home row, semicolon included, ten labels of which a display shows as many as it has room for at a readable card: a MacBook shows the six it always did, a wide display the rest.

  • 0.30.19The door takes focus, and gives it back›

    A pinch reaches the active application and nowhere else, not the window under the pointer and not a watcher outside it, so a door that stayed behind another app zoomed for nobody, twice. The image door is now the one surface in Lodestar that takes focus. The strip and the draft never do, because what they do lands in the app behind them; the door's result lands nowhere but the picture, so taking focus costs the hand nothing. The app it took focus from is remembered and gets it back the moment the door closes.

  • 0.30.18The pinch arrives›

    The image door zoomed for nobody: macOS sends a pinch to the active application, and Lodestar is never active, so the gesture went to whatever app stood in front and the door never saw it. It listens now the way the strip listens for a click, through a watcher live only while the door stands, and zooms about the point under the pointer. Two fingers tapped twice go to one point per pixel from the fitted size, and back to fitted from anywhere else.

  • 0.30.17The image door fills the display, and the name is yours to edit›

    An image opened above the strip yesterday, and the strip was only in the way of the picture: an image being looked at lands nowhere, unlike a text card being edited. So E on an image card now opens it across the whole display, the strip gone beneath it until escape brings it back. It opens fitted, the whole picture first, and from there the trackpad does what it does to any image: a pinch zooms about the pointer, two fingers pan, and a picture smaller than its frame stays centered at every size. No slider and no buttons. And the save band opens with its offered name as text rather than as a placeholder, the caret at its end, so a name is edited rather than retyped; command delete clears it for one of your own.

  • 0.30.16An image opens large, and is saved by name›

    An image card in the clipboard strip had one verb, and it wrote a stamped file to Downloads without asking. Now E on the card opens the image above the strip, the way a text card opens in the draft: the card lit beneath, the pin column aside, the image as large as the display allows without inventing a pixel. Escape or return steps back. S, on the card or inside its door, turns the strip's band into a name for the file, typed the way the search is and never key. The band offers a name before anything is typed, where the image came from and when, so return alone is enough; a slash in the name is a subfolder, a leading slash or tilde is a path of its own, and .jpg or .tiff chooses the format. The folder is clipboard.save-to, Downloads unless you say otherwise, in Settings under Clipboard.

  • 0.30.15The first weeks are a curriculum›

    The walk taught seven gestures in a minute, and a hand that has seen seven owns none of them. It now teaches three and stops: the key, the launcher, a few letters. Everything else arrives later, on the same card, one lesson at a time, on a calendar the hand sets. Hints on the second day, Ask on the fourth, then the clipboard, the cheat sheet, the draft, select, commands, and scroll, each only if the gesture has never once fired, each proved by doing it once. A lesson rides the same quiet the coach's chip does and yields to any suggestion with evidence behind it. Lode delete means later; a lesson returns once, days on, then parks for good. A gesture the hand found on its own is never taught.

  • 0.30.14The slide is seen›

    A switch in Settings began to slide and was never seen sliding: a write re-reads the config and rebuilds the pane, and a rebuilt switch arrived already at rest before the eye caught the first frame. Each switch now survives the rebuild, kept by its config path, and only its state is told; the slide a press started keeps running through it.

  • 0.30.13The switch slides›

    The settings' switches, Lodestar's own since 0.30.12, arrived in place without moving. The knob now crosses the track and the track's colour crosses with it, in a fifth of a second; when a person has asked the system for less motion, both simply arrive, as before.

    The accent menu's swatch stood hard against its name and read as a bullet. The dot now carries clear room after it.

  • 0.30.12The switches wear the accent›

    macOS's switch takes its tint from the system accent and offers no way to say otherwise, so a person who chose International Orange saw the settings' switches in the Mac's colour. The settings' switches are now Lodestar's own control: the same gesture, click or space or a screen reader's press, drawn by the theme. And the accent's menu wears a swatch of each colour beside its name, so the two are compared by eye where they are chosen. Only the menus' highlight and the focus rings on text fields keep the system's tint.