-
BlindPilot 0.3.14 Stable
released this
2026-08-12 19:32:37 -07:00 | 2 commits to main since this releaseBlindPilot 0.3.14
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.Nothing you can see
This release changes nothing about what BlindPilot does. If 0.3.13 is working, there is
no reason to hurry.A type checker was run over the three modules that ship, and the thirty-two things it
objected to were settled. Most were objects the code passed around without naming,
because they honestly come from more than one place — the worker for whichever backend
you picked, the terminal FreeBuff runs under, which is winpty's on Windows and pexpect's
elsewhere. Each now states what is asked of it, which is both shorter than the comment
explaining it would have been and still true when a fourth backend arrives.Two were worth the trouble on their own. Neither could happen as the code stood; both
depended on an argument the next reader would have had to reconstruct.- The macOS announcement that VoiceOver speaks read six names that exist only on macOS.
Nothing on Windows or Linux reached them, but nothing there said so either. It now
loads them where it uses them, and a failed announcement no longer travels any further
than the announcement. - The sign-in helper killed a process in a handler that could be entered before that
process existed. Only the wait can time out, so it never was — the timeout is now
caught where the process is known to be there.
The upgrade fix from 0.3.13 is unchanged and still the reason to be on a recent version:
running the setup program by hand no longer stops on a file it cannot replace.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The macOS announcement that VoiceOver speaks read six names that exist only on macOS.
-
BlindPilot 0.3.13 Stable
released this
2026-08-12 19:17:10 -07:00 | 2 commits to main since this releaseBlindPilot 0.3.13
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.Upgrading by hand works too
0.3.12 fixed the update that BlindPilot installs itself. Running the setup program by
hand still failed, and it failed in the way that is hardest to argue with: a box saying
one of BlindPilot's own files could not be replaced, access denied, over an application
that was closed.- The two upgrades were never doing the same thing. The updater inside BlindPilot tells
the installer it may close a program outright; run by hand, the installer only asked,
waited half a minute, and gave up. What it was asking was a background program with no
window to close and nobody watching it, which had loaded one of BlindPilot's libraries
back when 0.3.10 leaked them onto its children's PATH. It never answered, and the only
choices left were to abort the upgrade or to try again and abort it later. - The setup program now closes what refuses to close however it was started, so an
upgrade by hand behaves the same as one BlindPilot installs on its own. Nothing it
closes is a bystander: it is holding a file the upgrade is about to replace, and it has
already been asked to let go.
Once 0.3.12 or later is installed, BlindPilot no longer hands its library folder to the
programs it starts, so nothing outside the application should be holding one of these
files in the first place. This is what happens when something still is.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The two upgrades were never doing the same thing. The updater inside BlindPilot tells
-
BlindPilot 0.3.12 Stable
released this
2026-08-12 18:55:04 -07:00 | 4 commits to main since this releaseBlindPilot 0.3.12
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.Updates install again on an installed copy
An update on a copy put there by the installer has been failing since 0.3.10, and all it
left behind was a line saying the installer exited with code 5. That number means the
installation was cancelled — by nobody, since a silent update has nobody at the keyboard.The installer had asked to close the programs holding BlindPilot's files, waited half a
minute, and been refused. It then showed the box that asks whether to abort, retry or
ignore; message boxes are suppressed during a silent update, so the box answered itself
with its default of Abort, and the update was rolled back.- The programs refusing to close were BlindPilot's own doing. The packaged application
put its private library folder on its PATH, every program BlindPilot started inherited
it, and so did everything those started in turn — an agent CLI, the tools it runs, a
terminal left open. Hours after BlindPilot had closed, unrelated programs were still
loading its copy of the Visual C++ runtime and holding it open. That folder is now kept
off the environment handed to child processes, so nothing outside the application loads
out of the install folder in the first place. - The updater's own check for programs still using the folder only asked where each
program was running from. Every program that was actually holding a file was running
from somewhere else entirely, so the check found none of them and declared the folder
free. It now also asks which programs have one of our libraries loaded — what the
installer itself looks at — and closes them before the installer has to. - The installer is now allowed to close what still refuses to close, so one stubborn
program can no longer abort an update. - Every file is confirmed to be openable before the installer starts, which the portable
update already did and the installed one did not.
A failed update says what happened
- An update that fails on an installed copy now reports the reason in words — that files
were in use, that the installer could not start, that the computer needs a restart —
instead of reading out a number, and the installer's own log is kept beside it for a
bug report. - Two BlindPilot windows checking for updates at the same time no longer start two
installers over the same folder, each guaranteeing the other finds files in use. The
second one steps aside and lets the first finish.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The programs refusing to close were BlindPilot's own doing. The packaged application
-
BlindPilot 0.3.11 Stable
released this
2026-08-12 17:56:28 -07:00 | 4 commits to main since this releaseBlindPilot 0.3.11
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.Arrow keys stay in the responses
- Pressing Down on the newest response used to drop focus into the prompt. Nothing on
Windows behaves that way: a list keeps focus at its end, and a screen reader user
expects to hear the last row again rather than find themselves typing. Down on the
last row now stays on the last row, in the list and in the read-only edit field
alike, and Up on the first row stays on the first row. - Tab is the way from the responses to the prompt, and Up from the prompt's first line
is still the way back. The prompt's hint says so.
Reading is no longer interrupted by the answer still arriving
- The responses list is rebuilt whenever new output arrives, and rebuilding a Windows
list clears its selection — so an answer that was still streaming kept throwing you
out of the row you were reading. The row you are on is now kept across every refresh. - A long, chatty job could post thousands of GUI events faster than the list and the
screen reader could consume them, and arrow keys went unanswered while it did.
Backend output is now applied in small batches that yield to keyboard and
accessibility events between them, and the list is redrawn once per batch rather than
once per line of output.
FreeBuff stays on DeepSeek V4 Pro
- FreeBuff renamed the model to "DeepSeek V4 Pro 08/13" in its program but left its
documentation calling it "DeepSeek V4 Pro", and BlindPilot read the two as different
models. Pro therefore vanished from the model list altogether, which disabled both of
the safeguards that kept it selected — so BlindPilot fell back to reading FreeBuff's
own setting, which FreeBuff rewrites to Flash after every turn. Whole conversations
ran on Flash without saying so. - A release date on a model name is now understood as the same model, so Pro is found,
listed first, and chosen. This also settles what the tools were running on: FreeBuff
picks its helper agents to match the model it is on, so a session on Flash announced
a reviewer named for Flash. - Replacing a FreeBuff terminal mid-message now re-applies the chosen model first. The
terminal being replaced is a FreeBuff, and one rewrites that setting as it exits.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Pressing Down on the newest response used to drop focus into the prompt. Nothing on
-
BlindPilot 0.3.10 Stable
released this
2026-08-10 01:32:58 -07:00 | 5 commits to main since this releaseBlindPilot 0.3.10
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.Updates install
- No BlindPilot update has ever installed. The helper that replaces the files was
started detached from any console, and Windows PowerShell responds to that by exiting
without running the script it was given — reporting success as it goes. So every
update downloaded, verified, announced that it was restarting to install, and then
quietly did nothing. That has been true since 0.3.0. - This one has to be installed by hand. The copy you are running now cannot install
it, because installing it is the thing that was broken. Every update after this one
installs on its own.
An update that fails now says so
- An update finishes after BlindPilot has closed, so a failure had nowhere to be
reported and was never seen. The reason is now written down as it happens, and read
out the next time BlindPilot starts, along with where to find the log. - Abandoned downloads are deleted at startup. A failed update left tens of megabytes
behind every time it was tried.
An update no longer has to be lucky
- The contents of the installed folder are replaced rather than the folder renamed, so
a shortcut, a file sync client, or the application's own working directory can no
longer block an update. - BlindPilot waits for everything running out of the installed folder — the agent
command-line tools it started, and FreeBuff's console host — rather than only the one
process that asked for the update, and then checks that each file can actually be
opened before replacing it. - A move that leaves files behind is retried, which is what a virus scanner reading a
freshly written file causes. - If anything goes wrong part way through, the previous version is copied back and its
backup is kept. BlindPilot is restarted either way. - BlindPilot is never restarted with the installed folder as its working directory,
which is what stopped the following update from replacing it.
Included from 0.3.9
Past conversations come back
- Every backend already stored its conversations and could resume one by id, but there
was no way to find one again: a conversation existed only while its tab was open.
File, Recent Conversations (Ctrl+H) now lists them, newest first, each titled by the
message that started it — which is the only thing that tells two of them apart when
they are read out. - Opening one rebuilds it into the same navigable rows a live answer produces, adopts
the backend's own session id so the next message continues it, and names the tab after
its first message. - The list can be filtered as you type, and widened from this folder to every folder, or
from one backend to all three. - The context each CLI writes into its own transcript — plugin listings, environment
blocks, slash-command wrappers — is left out, so a title is what the person typed.
Compacting, and starting over
- File, Compact Conversation (Ctrl+Shift+K) summarises the conversation so far so the
backend has room to keep going. Claude Code takes it as its own command; Codex has a
separate app-server request for it, which BlindPilot now makes. - FreeBuff's command-line interface has no compaction at all. The command is greyed out
for it and says so, rather than failing quietly. - File, Start New Conversation (Ctrl+Shift+N) forgets the current conversation and starts
a fresh one in the same tab. The old one is still there in Recent Conversations. - The FreeBuff slash-command list now matches the commands FreeBuff actually has.
Included from 0.3.8
FreeBuff answers are read as they are written
- FreeBuff does not save its chat file until a reply has finished, so reading from that
file meant waiting out the whole answer in silence and then hearing it at once. The
answer is now read off FreeBuff's own screen, a finished sentence at a time, as it is
written. Anything that scrolled out of view before it could be read is read out from
the saved chat when the turn ends, so a long answer is still heard in full and never
heard twice.
FreeBuff starts answering straight away
- A FreeBuff terminal takes several seconds to reach the point where it can be given a
message, and every message waited for that. One is now started ahead of time — when a
FreeBuff tab opens, and again after each answer for the conversation it belongs to —
so sending a message reaches FreeBuff in well under a second. Only one is ever held,
it is dropped after fifteen minutes unused, and a message that finds none simply
starts its own. - Choosing a FreeBuff model no longer reads its model catalogue out of the hundred and
odd megabytes of installed FreeBuff on the way to sending. The catalogue is remembered
between runs, and is only read again when FreeBuff itself is updated.
Included from 0.3.7
Less of the FreeBuff terminal
- BlindPilot claims its console at startup, hidden and parked off screen, so creating a
terminal has none left to put on screen. A console raised while the terminal is torn
down is moved off screen as well as hidden, rather than only hidden.
Included from 0.3.6
The FreeBuff terminal no longer appears
- Creating a pseudo-terminal attaches a console to BlindPilot itself, and a windowed
application has no way to ask for that console to be hidden. It is now hidden as it
appears, for the whole run and its shutdown, so a FreeBuff turn puts nothing on screen.
Updating works however BlindPilot was installed
- A copy from the setup program now updates by running the new installer silently. The
previous update replaced the program directory outright, which deleted the uninstaller
beside it and left Add or Remove Programs pointing at a file that no longer existed. - An unpacked copy still updates by replacing its own folder, which is right for it.
Desktop shortcut
- The installer offers a desktop shortcut, and remembers the choice on later updates.
- File, Create Desktop Shortcut makes one at any time, which is how an unpacked copy
gets one.
Reasoning lines read as plain text
- Reasoning no longer has "Thinking" in front of it. When it is switched on in Options it
reads as ordinary text.
Included from 0.3.5
FreeBuff works in the installed application
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
missing the console host that runs a process inside one, so nothing started, nothing was
reported, and the turn sat silent. That console host is now included. - This was also a source of stray command windows: with no console host, Windows fell back
to giving the child a real terminal. - A terminal that closes before FreeBuff is ready is now reported as an error instead of
waiting for output that can never arrive.
Reasoning is no longer read out
- The backend's own thinking is left out of the activity by default, so a turn reads as
what it did and what it answered. - Options, "Include the backend's reasoning" turns it back on.
Included from 0.3.4
No console windows
- Claude Code now runs without a terminal window. It was appearing on screen for the
whole turn and taking focus away from the screen reader. - The same applies to every backend helper process: sign-in checks, model and version
queries, and the Codex app server.
Stopping a task
- A Stop button sits next to Steer, enabled only while a task is running, and File, Stop
Task (Ctrl+period) does the same from anywhere in the session. - Stopping keeps whatever the task already produced, records it as that turn's response,
and reports "Stopped" rather than an error.
FreeBuff responses
- A second and later message in a FreeBuff session now shows its own answer. The previous
turn's answer was being narrated again in its place, and the new one never reached the
list or the read-only text field. - FreeBuff answers are narrated once, from its saved chat file, instead of from the file
and the hidden terminal at the same time. - The interruption marker FreeBuff leaves behind when a session closes is no longer read
out as part of the answer. - A finished answer that never arrived as live activity is added to the list on
completion, for every backend.
FreeBuff stays on DeepSeek 4 Pro
- FreeBuff rewrites its own settings to its recommended Flash model once a turn has run,
which silently downgraded every following turn. BlindPilot now keeps its own record of
the selected model and uses that, so Pro remains the default. - A model chosen with /model still overrides it and now survives the same reset.
Included from 0.3.3
Updater reliability
- BlindPilot now forces its main window through the normal shutdown path after an update
is verified, so the installed application releases its files before replacement. - The Windows updater stages a complete new installation, waits for the old process to
exit, swaps directories, and then launches and checks the new version. - If shutdown stalls, the helper uses a bounded forced-close fallback without replacing
files while the old process is still running. - Failed replacement or startup restores and reopens the previous version instead of
leaving a partial installation. - Obsolete files from older PyInstaller builds are removed by the full-directory swap.
- Installer startup failures are now reported through BlindPilot's accessible update
error dialog.
Included from 0.3.2
- Long-running FreeBuff tasks now report agent/tool activity and a progress heartbeat
every 30 seconds instead of appearing frozen. - BlindPilot reads FreeBuff's structured live chat state for accurate reasoning and
response narration, while retaining terminal parsing as a fallback. - FreeBuff completion is detected from its authoritative per-chat log rather than from
ambiguous terminal redraws. - New FreeBuff session IDs are saved immediately, allowing interrupted work to be
resumed. - Ads and terminal tool cards are no longer misidentified as assistant responses.
- Switching from terminal fallback to structured data no longer narrates text twice.
- BlindPilot now navigates FreeBuff's runtime model picker to the requested model instead
of accepting its highlighted Flash recommendation; DeepSeek 4 Pro remains selected.
Included from 0.3.0
- Claude Code, Codex, and FreeBuff backends with matching conversation features.
- Runtime model discovery for every backend; FreeBuff prefers DeepSeek 4 Pro.
- Automatic NVDA reading after submitting a message.
- Silent until the response mode keeps activity quiet until the complete answer is ready.
- Secure GitHub release updater with SHA-256 verification.
- Lazy model discovery avoids the large CPU spike during application startup.
Downloads
- Windows x64 setup:
BlindPilot-Setup-x64.exe - Windows x64:
BlindPilot-Windows-x64.zip - macOS Apple Silicon:
BlindPilot-macOS-arm64.zip - macOS Intel:
BlindPilot-macOS-x64.zip
The macOS builds are ad-hoc signed but not Apple-notarized. On first launch, macOS may
require approval in System Settings under Privacy & Security.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- No BlindPilot update has ever installed. The helper that replaces the files was
-
BlindPilot 0.3.9 Stable
released this
2026-08-10 00:52:16 -07:00 | 9 commits to main since this releaseBlindPilot 0.3.9
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.Past conversations come back
- Every backend already stored its conversations and could resume one by id, but there
was no way to find one again: a conversation existed only while its tab was open.
File, Recent Conversations (Ctrl+H) now lists them, newest first, each titled by the
message that started it — which is the only thing that tells two of them apart when
they are read out. - Opening one rebuilds it into the same navigable rows a live answer produces, adopts
the backend's own session id so the next message continues it, and names the tab after
its first message. - The list can be filtered as you type, and widened from this folder to every folder, or
from one backend to all three. - The context each CLI writes into its own transcript — plugin listings, environment
blocks, slash-command wrappers — is left out, so a title is what the person typed.
Compacting, and starting over
- File, Compact Conversation (Ctrl+Shift+K) summarises the conversation so far so the
backend has room to keep going. Claude Code takes it as its own command; Codex has a
separate app-server request for it, which BlindPilot now makes. - FreeBuff's command-line interface has no compaction at all. The command is greyed out
for it and says so, rather than failing quietly. - File, Start New Conversation (Ctrl+Shift+N) forgets the current conversation and starts
a fresh one in the same tab. The old one is still there in Recent Conversations. - The FreeBuff slash-command list now matches the commands FreeBuff actually has.
Included from 0.3.8
FreeBuff answers are read as they are written
- FreeBuff does not save its chat file until a reply has finished, so reading from that
file meant waiting out the whole answer in silence and then hearing it at once. The
answer is now read off FreeBuff's own screen, a finished sentence at a time, as it is
written. Anything that scrolled out of view before it could be read is read out from
the saved chat when the turn ends, so a long answer is still heard in full and never
heard twice.
FreeBuff starts answering straight away
- A FreeBuff terminal takes several seconds to reach the point where it can be given a
message, and every message waited for that. One is now started ahead of time — when a
FreeBuff tab opens, and again after each answer for the conversation it belongs to —
so sending a message reaches FreeBuff in well under a second. Only one is ever held,
it is dropped after fifteen minutes unused, and a message that finds none simply
starts its own. - Choosing a FreeBuff model no longer reads its model catalogue out of the hundred and
odd megabytes of installed FreeBuff on the way to sending. The catalogue is remembered
between runs, and is only read again when FreeBuff itself is updated.
Included from 0.3.7
Less of the FreeBuff terminal
- BlindPilot claims its console at startup, hidden and parked off screen, so creating a
terminal has none left to put on screen. A console raised while the terminal is torn
down is moved off screen as well as hidden, rather than only hidden.
Included from 0.3.6
The FreeBuff terminal no longer appears
- Creating a pseudo-terminal attaches a console to BlindPilot itself, and a windowed
application has no way to ask for that console to be hidden. It is now hidden as it
appears, for the whole run and its shutdown, so a FreeBuff turn puts nothing on screen.
Updating works however BlindPilot was installed
- A copy from the setup program now updates by running the new installer silently. The
previous update replaced the program directory outright, which deleted the uninstaller
beside it and left Add or Remove Programs pointing at a file that no longer existed. - An unpacked copy still updates by replacing its own folder, which is right for it.
Desktop shortcut
- The installer offers a desktop shortcut, and remembers the choice on later updates.
- File, Create Desktop Shortcut makes one at any time, which is how an unpacked copy
gets one.
Reasoning lines read as plain text
- Reasoning no longer has "Thinking" in front of it. When it is switched on in Options it
reads as ordinary text.
Included from 0.3.5
FreeBuff works in the installed application
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
missing the console host that runs a process inside one, so nothing started, nothing was
reported, and the turn sat silent. That console host is now included. - This was also a source of stray command windows: with no console host, Windows fell back
to giving the child a real terminal. - A terminal that closes before FreeBuff is ready is now reported as an error instead of
waiting for output that can never arrive.
Reasoning is no longer read out
- The backend's own thinking is left out of the activity by default, so a turn reads as
what it did and what it answered. - Options, "Include the backend's reasoning" turns it back on.
Included from 0.3.4
No console windows
- Claude Code now runs without a terminal window. It was appearing on screen for the
whole turn and taking focus away from the screen reader. - The same applies to every backend helper process: sign-in checks, model and version
queries, and the Codex app server.
Stopping a task
- A Stop button sits next to Steer, enabled only while a task is running, and File, Stop
Task (Ctrl+period) does the same from anywhere in the session. - Stopping keeps whatever the task already produced, records it as that turn's response,
and reports "Stopped" rather than an error.
FreeBuff responses
- A second and later message in a FreeBuff session now shows its own answer. The previous
turn's answer was being narrated again in its place, and the new one never reached the
list or the read-only text field. - FreeBuff answers are narrated once, from its saved chat file, instead of from the file
and the hidden terminal at the same time. - The interruption marker FreeBuff leaves behind when a session closes is no longer read
out as part of the answer. - A finished answer that never arrived as live activity is added to the list on
completion, for every backend.
FreeBuff stays on DeepSeek 4 Pro
- FreeBuff rewrites its own settings to its recommended Flash model once a turn has run,
which silently downgraded every following turn. BlindPilot now keeps its own record of
the selected model and uses that, so Pro remains the default. - A model chosen with /model still overrides it and now survives the same reset.
Included from 0.3.3
Updater reliability
- BlindPilot now forces its main window through the normal shutdown path after an update
is verified, so the installed application releases its files before replacement. - The Windows updater stages a complete new installation, waits for the old process to
exit, swaps directories, and then launches and checks the new version. - If shutdown stalls, the helper uses a bounded forced-close fallback without replacing
files while the old process is still running. - Failed replacement or startup restores and reopens the previous version instead of
leaving a partial installation. - Obsolete files from older PyInstaller builds are removed by the full-directory swap.
- Installer startup failures are now reported through BlindPilot's accessible update
error dialog.
Included from 0.3.2
- Long-running FreeBuff tasks now report agent/tool activity and a progress heartbeat
every 30 seconds instead of appearing frozen. - BlindPilot reads FreeBuff's structured live chat state for accurate reasoning and
response narration, while retaining terminal parsing as a fallback. - FreeBuff completion is detected from its authoritative per-chat log rather than from
ambiguous terminal redraws. - New FreeBuff session IDs are saved immediately, allowing interrupted work to be
resumed. - Ads and terminal tool cards are no longer misidentified as assistant responses.
- Switching from terminal fallback to structured data no longer narrates text twice.
- BlindPilot now navigates FreeBuff's runtime model picker to the requested model instead
of accepting its highlighted Flash recommendation; DeepSeek 4 Pro remains selected.
Included from 0.3.0
- Claude Code, Codex, and FreeBuff backends with matching conversation features.
- Runtime model discovery for every backend; FreeBuff prefers DeepSeek 4 Pro.
- Automatic NVDA reading after submitting a message.
- Silent until the response mode keeps activity quiet until the complete answer is ready.
- Secure GitHub release updater with SHA-256 verification.
- Lazy model discovery avoids the large CPU spike during application startup.
Downloads
- Windows x64 setup:
BlindPilot-Setup-x64.exe - Windows x64:
BlindPilot-Windows-x64.zip - macOS Apple Silicon:
BlindPilot-macOS-arm64.zip - macOS Intel:
BlindPilot-macOS-x64.zip
The macOS builds are ad-hoc signed but not Apple-notarized. On first launch, macOS may
require approval in System Settings under Privacy & Security.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Every backend already stored its conversations and could resume one by id, but there
-
BlindPilot 0.3.8 Stable
released this
2026-08-09 18:55:32 -07:00 | 10 commits to main since this releaseBlindPilot 0.3.8
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.FreeBuff answers are read as they are written
- FreeBuff does not save its chat file until a reply has finished, so reading from that
file meant waiting out the whole answer in silence and then hearing it at once. The
answer is now read off FreeBuff's own screen, a finished sentence at a time, as it is
written. Anything that scrolled out of view before it could be read is read out from
the saved chat when the turn ends, so a long answer is still heard in full and never
heard twice.
FreeBuff starts answering straight away
- A FreeBuff terminal takes several seconds to reach the point where it can be given a
message, and every message waited for that. One is now started ahead of time — when a
FreeBuff tab opens, and again after each answer for the conversation it belongs to —
so sending a message reaches FreeBuff in well under a second. Only one is ever held,
it is dropped after fifteen minutes unused, and a message that finds none simply
starts its own. - Choosing a FreeBuff model no longer reads its model catalogue out of the hundred and
odd megabytes of installed FreeBuff on the way to sending. The catalogue is remembered
between runs, and is only read again when FreeBuff itself is updated.
Included from 0.3.7
Less of the FreeBuff terminal
- BlindPilot claims its console at startup, hidden and parked off screen, so creating a
terminal has none left to put on screen. A console raised while the terminal is torn
down is moved off screen as well as hidden, rather than only hidden.
Included from 0.3.6
The FreeBuff terminal no longer appears
- Creating a pseudo-terminal attaches a console to BlindPilot itself, and a windowed
application has no way to ask for that console to be hidden. It is now hidden as it
appears, for the whole run and its shutdown, so a FreeBuff turn puts nothing on screen.
Updating works however BlindPilot was installed
- A copy from the setup program now updates by running the new installer silently. The
previous update replaced the program directory outright, which deleted the uninstaller
beside it and left Add or Remove Programs pointing at a file that no longer existed. - An unpacked copy still updates by replacing its own folder, which is right for it.
Desktop shortcut
- The installer offers a desktop shortcut, and remembers the choice on later updates.
- File, Create Desktop Shortcut makes one at any time, which is how an unpacked copy
gets one.
Reasoning lines read as plain text
- Reasoning no longer has "Thinking" in front of it. When it is switched on in Options it
reads as ordinary text.
Included from 0.3.5
FreeBuff works in the installed application
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
missing the console host that runs a process inside one, so nothing started, nothing was
reported, and the turn sat silent. That console host is now included. - This was also a source of stray command windows: with no console host, Windows fell back
to giving the child a real terminal. - A terminal that closes before FreeBuff is ready is now reported as an error instead of
waiting for output that can never arrive.
Reasoning is no longer read out
- The backend's own thinking is left out of the activity by default, so a turn reads as
what it did and what it answered. - Options, "Include the backend's reasoning" turns it back on.
Included from 0.3.4
No console windows
- Claude Code now runs without a terminal window. It was appearing on screen for the
whole turn and taking focus away from the screen reader. - The same applies to every backend helper process: sign-in checks, model and version
queries, and the Codex app server.
Stopping a task
- A Stop button sits next to Steer, enabled only while a task is running, and File, Stop
Task (Ctrl+period) does the same from anywhere in the session. - Stopping keeps whatever the task already produced, records it as that turn's response,
and reports "Stopped" rather than an error.
FreeBuff responses
- A second and later message in a FreeBuff session now shows its own answer. The previous
turn's answer was being narrated again in its place, and the new one never reached the
list or the read-only text field. - FreeBuff answers are narrated once, from its saved chat file, instead of from the file
and the hidden terminal at the same time. - The interruption marker FreeBuff leaves behind when a session closes is no longer read
out as part of the answer. - A finished answer that never arrived as live activity is added to the list on
completion, for every backend.
FreeBuff stays on DeepSeek 4 Pro
- FreeBuff rewrites its own settings to its recommended Flash model once a turn has run,
which silently downgraded every following turn. BlindPilot now keeps its own record of
the selected model and uses that, so Pro remains the default. - A model chosen with /model still overrides it and now survives the same reset.
Included from 0.3.3
Updater reliability
- BlindPilot now forces its main window through the normal shutdown path after an update
is verified, so the installed application releases its files before replacement. - The Windows updater stages a complete new installation, waits for the old process to
exit, swaps directories, and then launches and checks the new version. - If shutdown stalls, the helper uses a bounded forced-close fallback without replacing
files while the old process is still running. - Failed replacement or startup restores and reopens the previous version instead of
leaving a partial installation. - Obsolete files from older PyInstaller builds are removed by the full-directory swap.
- Installer startup failures are now reported through BlindPilot's accessible update
error dialog.
Included from 0.3.2
- Long-running FreeBuff tasks now report agent/tool activity and a progress heartbeat
every 30 seconds instead of appearing frozen. - BlindPilot reads FreeBuff's structured live chat state for accurate reasoning and
response narration, while retaining terminal parsing as a fallback. - FreeBuff completion is detected from its authoritative per-chat log rather than from
ambiguous terminal redraws. - New FreeBuff session IDs are saved immediately, allowing interrupted work to be
resumed. - Ads and terminal tool cards are no longer misidentified as assistant responses.
- Switching from terminal fallback to structured data no longer narrates text twice.
- BlindPilot now navigates FreeBuff's runtime model picker to the requested model instead
of accepting its highlighted Flash recommendation; DeepSeek 4 Pro remains selected.
Included from 0.3.0
- Claude Code, Codex, and FreeBuff backends with matching conversation features.
- Runtime model discovery for every backend; FreeBuff prefers DeepSeek 4 Pro.
- Automatic NVDA reading after submitting a message.
- Silent until the response mode keeps activity quiet until the complete answer is ready.
- Secure GitHub release updater with SHA-256 verification.
- Lazy model discovery avoids the large CPU spike during application startup.
Downloads
- Windows x64 setup:
BlindPilot-Setup-x64.exe - Windows x64:
BlindPilot-Windows-x64.zip - macOS Apple Silicon:
BlindPilot-macOS-arm64.zip - macOS Intel:
BlindPilot-macOS-x64.zip
The macOS builds are ad-hoc signed but not Apple-notarized. On first launch, macOS may
require approval in System Settings under Privacy & Security.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- FreeBuff does not save its chat file until a reply has finished, so reading from that
-
BlindPilot 0.3.7 Stable
released this
2026-08-09 14:55:01 -07:00 | 11 commits to main since this releaseBlindPilot 0.3.7
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.FreeBuff answers arrive whole
- FreeBuff saves its chat file as the words arrive, and BlindPilot read it on every pass,
so activity rows were cut off mid-sentence. It now waits for the text to settle and
reads out only finished sentences, with whatever is left released when the turn ends.
Less of the FreeBuff terminal
- BlindPilot claims its console at startup, hidden and parked off screen, so creating a
terminal has none left to put on screen. A console raised while the terminal is torn
down is moved off screen as well as hidden, rather than only hidden.
Included from 0.3.6
The FreeBuff terminal no longer appears
- Creating a pseudo-terminal attaches a console to BlindPilot itself, and a windowed
application has no way to ask for that console to be hidden. It is now hidden as it
appears, for the whole run and its shutdown, so a FreeBuff turn puts nothing on screen.
Updating works however BlindPilot was installed
- A copy from the setup program now updates by running the new installer silently. The
previous update replaced the program directory outright, which deleted the uninstaller
beside it and left Add or Remove Programs pointing at a file that no longer existed. - An unpacked copy still updates by replacing its own folder, which is right for it.
Desktop shortcut
- The installer offers a desktop shortcut, and remembers the choice on later updates.
- File, Create Desktop Shortcut makes one at any time, which is how an unpacked copy
gets one.
Reasoning lines read as plain text
- Reasoning no longer has "Thinking" in front of it. When it is switched on in Options it
reads as ordinary text.
Included from 0.3.5
FreeBuff works in the installed application
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
missing the console host that runs a process inside one, so nothing started, nothing was
reported, and the turn sat silent. That console host is now included. - This was also a source of stray command windows: with no console host, Windows fell back
to giving the child a real terminal. - A terminal that closes before FreeBuff is ready is now reported as an error instead of
waiting for output that can never arrive.
Reasoning is no longer read out
- The backend's own thinking is left out of the activity by default, so a turn reads as
what it did and what it answered. - Options, "Include the backend's reasoning" turns it back on.
Included from 0.3.4
No console windows
- Claude Code now runs without a terminal window. It was appearing on screen for the
whole turn and taking focus away from the screen reader. - The same applies to every backend helper process: sign-in checks, model and version
queries, and the Codex app server.
Stopping a task
- A Stop button sits next to Steer, enabled only while a task is running, and File, Stop
Task (Ctrl+period) does the same from anywhere in the session. - Stopping keeps whatever the task already produced, records it as that turn's response,
and reports "Stopped" rather than an error.
FreeBuff responses
- A second and later message in a FreeBuff session now shows its own answer. The previous
turn's answer was being narrated again in its place, and the new one never reached the
list or the read-only text field. - FreeBuff answers are narrated once, from its saved chat file, instead of from the file
and the hidden terminal at the same time. - The interruption marker FreeBuff leaves behind when a session closes is no longer read
out as part of the answer. - A finished answer that never arrived as live activity is added to the list on
completion, for every backend.
FreeBuff stays on DeepSeek 4 Pro
- FreeBuff rewrites its own settings to its recommended Flash model once a turn has run,
which silently downgraded every following turn. BlindPilot now keeps its own record of
the selected model and uses that, so Pro remains the default. - A model chosen with /model still overrides it and now survives the same reset.
Included from 0.3.3
Updater reliability
- BlindPilot now forces its main window through the normal shutdown path after an update
is verified, so the installed application releases its files before replacement. - The Windows updater stages a complete new installation, waits for the old process to
exit, swaps directories, and then launches and checks the new version. - If shutdown stalls, the helper uses a bounded forced-close fallback without replacing
files while the old process is still running. - Failed replacement or startup restores and reopens the previous version instead of
leaving a partial installation. - Obsolete files from older PyInstaller builds are removed by the full-directory swap.
- Installer startup failures are now reported through BlindPilot's accessible update
error dialog.
Included from 0.3.2
- Long-running FreeBuff tasks now report agent/tool activity and a progress heartbeat
every 30 seconds instead of appearing frozen. - BlindPilot reads FreeBuff's structured live chat state for accurate reasoning and
response narration, while retaining terminal parsing as a fallback. - FreeBuff completion is detected from its authoritative per-chat log rather than from
ambiguous terminal redraws. - New FreeBuff session IDs are saved immediately, allowing interrupted work to be
resumed. - Ads and terminal tool cards are no longer misidentified as assistant responses.
- Switching from terminal fallback to structured data no longer narrates text twice.
- BlindPilot now navigates FreeBuff's runtime model picker to the requested model instead
of accepting its highlighted Flash recommendation; DeepSeek 4 Pro remains selected.
Included from 0.3.0
- Claude Code, Codex, and FreeBuff backends with matching conversation features.
- Runtime model discovery for every backend; FreeBuff prefers DeepSeek 4 Pro.
- Automatic NVDA reading after submitting a message.
- Silent until the response mode keeps activity quiet until the complete answer is ready.
- Secure GitHub release updater with SHA-256 verification.
- Lazy model discovery avoids the large CPU spike during application startup.
Downloads
- Windows x64 setup:
BlindPilot-Setup-x64.exe - Windows x64:
BlindPilot-Windows-x64.zip - macOS Apple Silicon:
BlindPilot-macOS-arm64.zip - macOS Intel:
BlindPilot-macOS-x64.zip
The macOS builds are ad-hoc signed but not Apple-notarized. On first launch, macOS may
require approval in System Settings under Privacy & Security.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- FreeBuff saves its chat file as the words arrive, and BlindPilot read it on every pass,
-
BlindPilot 0.3.6 Stable
released this
2026-08-09 14:39:32 -07:00 | 12 commits to main since this releaseBlindPilot 0.3.6
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.The FreeBuff terminal no longer appears
- Creating a pseudo-terminal attaches a console to BlindPilot itself, and a windowed
application has no way to ask for that console to be hidden. It is now hidden as it
appears, for the whole run and its shutdown, so a FreeBuff turn puts nothing on screen.
Updating works however BlindPilot was installed
- A copy from the setup program now updates by running the new installer silently. The
previous update replaced the program directory outright, which deleted the uninstaller
beside it and left Add or Remove Programs pointing at a file that no longer existed. - An unpacked copy still updates by replacing its own folder, which is right for it.
Desktop shortcut
- The installer offers a desktop shortcut, and remembers the choice on later updates.
- File, Create Desktop Shortcut makes one at any time, which is how an unpacked copy
gets one.
Reasoning lines read as plain text
- Reasoning no longer has "Thinking" in front of it. When it is switched on in Options it
reads as ordinary text.
Included from 0.3.5
FreeBuff works in the installed application
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
missing the console host that runs a process inside one, so nothing started, nothing was
reported, and the turn sat silent. That console host is now included. - This was also a source of stray command windows: with no console host, Windows fell back
to giving the child a real terminal. - A terminal that closes before FreeBuff is ready is now reported as an error instead of
waiting for output that can never arrive.
Reasoning is no longer read out
- The backend's own thinking is left out of the activity by default, so a turn reads as
what it did and what it answered. - Options, "Include the backend's reasoning" turns it back on.
Included from 0.3.4
No console windows
- Claude Code now runs without a terminal window. It was appearing on screen for the
whole turn and taking focus away from the screen reader. - The same applies to every backend helper process: sign-in checks, model and version
queries, and the Codex app server.
Stopping a task
- A Stop button sits next to Steer, enabled only while a task is running, and File, Stop
Task (Ctrl+period) does the same from anywhere in the session. - Stopping keeps whatever the task already produced, records it as that turn's response,
and reports "Stopped" rather than an error.
FreeBuff responses
- A second and later message in a FreeBuff session now shows its own answer. The previous
turn's answer was being narrated again in its place, and the new one never reached the
list or the read-only text field. - FreeBuff answers are narrated once, from its saved chat file, instead of from the file
and the hidden terminal at the same time. - The interruption marker FreeBuff leaves behind when a session closes is no longer read
out as part of the answer. - A finished answer that never arrived as live activity is added to the list on
completion, for every backend.
FreeBuff stays on DeepSeek 4 Pro
- FreeBuff rewrites its own settings to its recommended Flash model once a turn has run,
which silently downgraded every following turn. BlindPilot now keeps its own record of
the selected model and uses that, so Pro remains the default. - A model chosen with /model still overrides it and now survives the same reset.
Included from 0.3.3
Updater reliability
- BlindPilot now forces its main window through the normal shutdown path after an update
is verified, so the installed application releases its files before replacement. - The Windows updater stages a complete new installation, waits for the old process to
exit, swaps directories, and then launches and checks the new version. - If shutdown stalls, the helper uses a bounded forced-close fallback without replacing
files while the old process is still running. - Failed replacement or startup restores and reopens the previous version instead of
leaving a partial installation. - Obsolete files from older PyInstaller builds are removed by the full-directory swap.
- Installer startup failures are now reported through BlindPilot's accessible update
error dialog.
Included from 0.3.2
- Long-running FreeBuff tasks now report agent/tool activity and a progress heartbeat
every 30 seconds instead of appearing frozen. - BlindPilot reads FreeBuff's structured live chat state for accurate reasoning and
response narration, while retaining terminal parsing as a fallback. - FreeBuff completion is detected from its authoritative per-chat log rather than from
ambiguous terminal redraws. - New FreeBuff session IDs are saved immediately, allowing interrupted work to be
resumed. - Ads and terminal tool cards are no longer misidentified as assistant responses.
- Switching from terminal fallback to structured data no longer narrates text twice.
- BlindPilot now navigates FreeBuff's runtime model picker to the requested model instead
of accepting its highlighted Flash recommendation; DeepSeek 4 Pro remains selected.
Included from 0.3.0
- Claude Code, Codex, and FreeBuff backends with matching conversation features.
- Runtime model discovery for every backend; FreeBuff prefers DeepSeek 4 Pro.
- Automatic NVDA reading after submitting a message.
- Silent until the response mode keeps activity quiet until the complete answer is ready.
- Secure GitHub release updater with SHA-256 verification.
- Lazy model discovery avoids the large CPU spike during application startup.
Downloads
- Windows x64 setup:
BlindPilot-Setup-x64.exe - Windows x64:
BlindPilot-Windows-x64.zip - macOS Apple Silicon:
BlindPilot-macOS-arm64.zip - macOS Intel:
BlindPilot-macOS-x64.zip
The macOS builds are ad-hoc signed but not Apple-notarized. On first launch, macOS may
require approval in System Settings under Privacy & Security.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Creating a pseudo-terminal attaches a console to BlindPilot itself, and a windowed
-
BlindPilot 0.3.5 Stable
released this
2026-08-09 14:10:30 -07:00 | 13 commits to main since this releaseBlindPilot 0.3.5
BlindPilot is an accessible desktop reader for Claude Code, Codex, and FreeBuff. It is
based on Claude Code Reader and remains available under the MIT License, with credit to
the original project throughout the application and documentation.FreeBuff works in the installed application
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
missing the console host that runs a process inside one, so nothing started, nothing was
reported, and the turn sat silent. That console host is now included. - This was also a source of stray command windows: with no console host, Windows fell back
to giving the child a real terminal. - A terminal that closes before FreeBuff is ready is now reported as an error instead of
waiting for output that can never arrive.
Reasoning is no longer read out
- The backend's own thinking is left out of the activity by default, so a turn reads as
what it did and what it answered. - Options, "Include the backend's reasoning" turns it back on.
Included from 0.3.4
No console windows
- Claude Code now runs without a terminal window. It was appearing on screen for the
whole turn and taking focus away from the screen reader. - The same applies to every backend helper process: sign-in checks, model and version
queries, and the Codex app server.
Stopping a task
- A Stop button sits next to Steer, enabled only while a task is running, and File, Stop
Task (Ctrl+period) does the same from anywhere in the session. - Stopping keeps whatever the task already produced, records it as that turn's response,
and reports "Stopped" rather than an error.
FreeBuff responses
- A second and later message in a FreeBuff session now shows its own answer. The previous
turn's answer was being narrated again in its place, and the new one never reached the
list or the read-only text field. - FreeBuff answers are narrated once, from its saved chat file, instead of from the file
and the hidden terminal at the same time. - The interruption marker FreeBuff leaves behind when a session closes is no longer read
out as part of the answer. - A finished answer that never arrived as live activity is added to the list on
completion, for every backend.
FreeBuff stays on DeepSeek 4 Pro
- FreeBuff rewrites its own settings to its recommended Flash model once a turn has run,
which silently downgraded every following turn. BlindPilot now keeps its own record of
the selected model and uses that, so Pro remains the default. - A model chosen with /model still overrides it and now survives the same reset.
Included from 0.3.3
Updater reliability
- BlindPilot now forces its main window through the normal shutdown path after an update
is verified, so the installed application releases its files before replacement. - The Windows updater stages a complete new installation, waits for the old process to
exit, swaps directories, and then launches and checks the new version. - If shutdown stalls, the helper uses a bounded forced-close fallback without replacing
files while the old process is still running. - Failed replacement or startup restores and reopens the previous version instead of
leaving a partial installation. - Obsolete files from older PyInstaller builds are removed by the full-directory swap.
- Installer startup failures are now reported through BlindPilot's accessible update
error dialog.
Included from 0.3.2
- Long-running FreeBuff tasks now report agent/tool activity and a progress heartbeat
every 30 seconds instead of appearing frozen. - BlindPilot reads FreeBuff's structured live chat state for accurate reasoning and
response narration, while retaining terminal parsing as a fallback. - FreeBuff completion is detected from its authoritative per-chat log rather than from
ambiguous terminal redraws. - New FreeBuff session IDs are saved immediately, allowing interrupted work to be
resumed. - Ads and terminal tool cards are no longer misidentified as assistant responses.
- Switching from terminal fallback to structured data no longer narrates text twice.
- BlindPilot now navigates FreeBuff's runtime model picker to the requested model instead
of accepting its highlighted Flash recommendation; DeepSeek 4 Pro remains selected.
Included from 0.3.0
- Claude Code, Codex, and FreeBuff backends with matching conversation features.
- Runtime model discovery for every backend; FreeBuff prefers DeepSeek 4 Pro.
- Automatic NVDA reading after submitting a message.
- Silent until the response mode keeps activity quiet until the complete answer is ready.
- Secure GitHub release updater with SHA-256 verification.
- Lazy model discovery avoids the large CPU spike during application startup.
Downloads
- Windows x64 setup:
BlindPilot-Setup-x64.exe - Windows x64:
BlindPilot-Windows-x64.zip - macOS Apple Silicon:
BlindPilot-macOS-arm64.zip - macOS Intel:
BlindPilot-macOS-x64.zip
The macOS builds are ad-hoc signed but not Apple-notarized. On first launch, macOS may
require approval in System Settings under Privacy & Security.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- FreeBuff never ran in the packaged build. It needs a pseudo-terminal, and the build was
mirror of
https://github.com/serrebidev/BlindPilot.git
synced 2026-08-13 08:39:13 -07:00