Bolt 0.1.158
Bolt 0.1.158
Image search returns results again. A change of vision model in 0.1.155 moved
the score range that image matches are measured against, while the relevance
thresholds stayed calibrated for the previous model. Real matches were found
and then discarded before they reached the screen, so image search came back
empty and the launcher went on saying it was still searching. Three separate
thresholds turned out to be holding the old model's numbers, in two different
places, and the first two attempts each left one of them behind. All three are
now corrected against measured scores from the current model, one duplicate
relevance policy is deleted outright so that relevance is decided in one place,
and the thresholds that remain are pinned by tests so they cannot drift back.
Indexing, text recognition and keyword search were unaffected throughout. The
launcher's row of image results is rebuilt around that fix, voice input leaves
Labs and gets a proper home in Settings, and the on-screen ruler gains angle, a
diagonal reading and real-world scale calibration.
New features
Your images now reach the launcher even when the vision model is not there at
all. Reading text out of a screenshot needs no model, no download and no GPU,
and those words are already in the index, but until now the whole row of image
results depended on the vision engine and vanished with it. On a machine where
the vision model is switched off, still downloading, or not available for the
platform, searching for words that are visibly inside your screenshots now
returns them. Where a thumbnail has not decoded yet, each tile says what it is
and why it matched, carrying its filename and either a text or a similarity
chip, and that label steps aside the moment the picture itself arrives.
Voice input now lives at Settings, Desktop App, Voice input, instead of being
hidden behind the Labs unlock. The panel tells you what is actually true on
your machine: whether the platform is supported, whether the model is
present, and whether the microphone is available. Nothing is downloaded until
you switch voice on, the exact size is stated before you click, and you can
switch between the Standard model (about 148 MB) and a higher accuracy model
(about 488 MB), re-verify a downloaded model against its published checksum,
or remove it to reclaim the disk. Downloads resume after an interruption and
can be cancelled. On-device speech to text is available on Apple Silicon Macs
and on Linux.
The on-screen ruler measures more than distance. The two points you already
place now also report the angle between them and the drawn diagonal, with a
live pointer readout and Cmd+C to copy. A new inline Set scale field turns
one known real length into a calibration, which is what finally makes inches,
centimetres, millimetres and points correct: until you set a scale those
units are marked as approximate rather than claiming a precision they do not
have. The ruler toolbar is rebuilt at a fixed width so it no longer reflows
as you change units or modes.
Quick answers in the launcher are richer. A question about a country
statistic is answered from World Bank structured data when both the country
and the indicator are unambiguous, and stays silent otherwise rather than
guessing. When the source contains a leading figure it is shown as a headline
stat above the answer, and the answer pane can now show a corroboration
scorecard and a trend sparkline alongside the sources.
Discover gains two lanes. One query field with In catalog and Everywhere tabs
beneath it, filtering the catalog server side with a real per-category match
count instead of narrowing a preview slice in the browser.
Administrators can connect AWS Bedrock as a model provider from the admin
Add Model form, using either detected server AWS credentials with no secret
stored in Bolt, or manually entered keys. Auto routing gains department, role
and group routing overrides with a live readout of the effective order, plus
a Complexity sensitivity control with three presets.
Improvements
After a change of vision model, Bolt has to re-embed your image library from
scratch. That rebuild now runs at a faster, still bounded pace while a real
backlog exists, so on a consistently busy machine it finishes instead of
parking indefinitely, and the rebuilding indicator clears when the rebuild is
genuinely done rather than staying on afterwards. It also no longer pauses
over images it has already done, which on a large library was the bulk of the
work it was doing. Foreground work still takes priority, and the rebuild now
recognises more of what counts as foreground: opening a preview, scrolling the
thumbnail strip and drawing list icons all push it back, where previously only
typing a search did.
Voice transcription is several times faster on Apple Silicon. The speech engine
was built without GPU support and was asking for every core on the machine, so
a two second phrase could take eight to fifteen seconds. It now runs on the GPU
and asks for a share of the cores rather than all of them, and it records how
long each transcription took so a slow one can be recognised as slow.
Voice input is more honest about what it is doing. The model is warmed when
you enable voice, or at launcher start if voice is already on, so the first
press does not sit behind a long silent load, and a cold load says Preparing
voice rather than showing an unexplained spinner. On macOS, Bolt now opens
the microphone the system considers default instead of the first device that
answers, which is why selecting a different microphone in System Settings
previously changed nothing.
First-run folder setup no longer fails as a whole when one folder cannot be
listed, for example a disconnected network share or an iCloud folder that has
not finished syncing. That folder is skipped and named, with the reason
stated, and the rest of your selection is granted.
Recall is offered more often for catch-up phrasing such as recap my day,
what is new, or catch me up. It still asks for confirmation before it runs.
The browser extension banner now leads with what the extension protects
rather than what it can observe.
Bolt writes far less to its log files. A per-invoke warning that was
producing tens of thousands of lines an hour is bounded, and trace-level
logging is no longer compiled into release builds. Support-level logging is
unchanged.
Security and compliance
Production deployments now connect to PostgreSQL over TLS. A misplaced key in
the shipped production configuration meant the setting was silently ignored
and connections fell back to no transport encryption. The key is corrected,
and an unrecognised key in that section is now a startup error rather than a
silent downgrade. If you run Bolt against your own PostgreSQL, this is the
one item in this release worth reading twice.
Content data-loss-prevention policy can now be aimed at a department, role or
group rather than applying at one strength to everyone, reusing the same
identity dimension that routing overrides and budget quotas already use. An
empty configuration behaves exactly as before, and a principal that cannot be
resolved falls back to the strictest configured level.
The compliance record is more complete. A data-loss-prevention override now
reaches the sealed, exportable audit chain instead of only a metrics table, so
an administrator can hand an auditor evidence rather than a count. Where an
exact-data-match policy fires, the sealed record cites the customer's own
dataset and rule that matched, without ever recording the matched value
itself. Bolt now reports the detection depth the running process actually has,
rather than what its build flags imply, so a build whose classifier model
failed to load no longer reports advanced detection as active.
macOS could keep showing the microphone as in use by Bolt after a transcription
had finished, with nothing recording. The recording indicator is a privacy
promise rather than a cosmetic detail, and an app that still reads as listening
after you let go is indistinguishable from one that is listening. The audio
stream is now stopped explicitly rather than left to be cleaned up, and a press
whose release never arrives can no longer hold the microphone open without a
limit. The same fault had a second effect worth naming: a capture Bolt was
still holding made every later recording come back as pure silence. If that
ever happens again, Bolt now says that it is holding the device itself and that
restarting will clear it, rather than telling you to go check a microphone
permission and an input device that were never the problem.
Two dependency advisories are closed in document and spreadsheet parsing, in
the PDF and Excel extraction paths. Separately, the local plain-HTTP listeners
now refuse HTTP/2, a protocol nothing on the loopback interface asks for,
which puts a known HTTP/2 issue out of reach on that path.
Decoded clipboard images written to a temporary file during indexing are now
created with owner-only permissions rather than inheriting the process umask.
Fixes
Fixed image search returning nothing, described above. It took four corrections
rather than one, because the same miscalibration had been copied into more
places than anyone had counted. The first corrected the thresholds inside the
search engine; the strictness setting called strict survived that one and needed
a second. A third threshold was then found in the launcher itself, dropping
every image result out of Top Matches on its own, and a fourth check alongside
it was carrying an entire second copy of the relevance policy and rejecting
every match unconditionally. That duplicate policy is deleted, because relevance
belongs in one place, and the threshold that does a real job is retuned to the
same number the engine uses so the two cannot drift apart again.
Fixed the launcher's row of image results, which had a set of faults of its own
sitting on top of that one. It could show two rows at the same time with
different counts, keep saying Searching your images over an answer it already
held, go on shimmering after the search that started it had been superseded,
print the previous query's filenames across the tiles of a new search, and leave
behind empty tiles that could never resolve. There is now at most one such row,
it moves through a single sequence of states as a search runs, its header tracks
the search rather than the thumbnails decoding, and it hides itself when a
search genuinely finds nothing instead of presenting an empty row. It also never
appears inside the AI chat composer. Image previews now fall back to a working
local transport when the desktop one returns nothing, and the number of previews
requested at once is bounded to match what the server serves in parallel, so a
wide strip of results is no longer slower than a narrow one.
Fixed a GDPR erasure failure. Deleting a user whose audit rows had already
been sealed for tamper evidence could fail outright, because the sealed rows
correctly refuse modification. Erasure now unlinks those rows instead of
failing, and sealed records remain sealed.
Fixed a chat session that could 404 hundreds of times a day and resurface an
old message. A stale local session id is now evicted instead of being polled
indefinitely.
Fixed a response cache that keyed answers on the organisation's default model
rather than on the model the request actually asked for, so the same question
sent to two different models could be answered from one cached reply. The
response cache is off unless an administrator turns it on, so this reached only
deployments that had enabled it.
Fixed bulleted and numbered lists in Notes rendering without visible markers,
and fixed a stalled save that could leave a note composer impossible to close.
Fixed a source date shown as the previous year when the source cites a year
only, for example a 2025 figure labelled Dec 31, 2024. Fixed a corrupted
Recent entry for a utility command replaying as a duplicated command in the
input.
Fixed voice recording faults reported as unusable transcripts: hold to talk
with Space cancelled itself and typed a space, a recording could be ended by a
transcription that belonged to an earlier press, an interrupted hold had no
release path, and a Cancel button could appear that could not cancel. Near
silent audio is no longer transcribed at all, because the speech model
invents plausible words from silence rather than returning nothing; Bolt now
refuses and names the input device it actually opened. Deleting a voice model
now asks for confirmation, and removing the model voice depends on also turns
voice off.
An OpenAI-compatible request that carries fields Bolt cannot honour, such as
tools, tool_choice, functions or n, is now refused with an error naming the
field instead of being answered with those fields silently dropped.
A chat request that hit a rate-limited model no longer spends twenty to
thirty seconds rediscovering the same limit before falling back; a rate-limit
response now opens the circuit immediately. A scheduled trigger that fails
persistently is now paused after repeated failures with a single summary
warning, instead of retrying every tick indefinitely.
Changes you will notice
If you are upgrading from 0.1.154 or earlier, Bolt re-embeds your image
library once after the update, because the vision model changed. Search works
as it fills in, and progress is shown in Settings. On a large library this can
take a while, and it runs at background priority.
Voice input has moved out of Labs. If you had enabled it there, you will find
it at Settings, Desktop App, Voice input. Labs is now empty and says so.
Upgrading
No action needed. The in-app updater will offer this release automatically.
Bolt keeps getting steadier under the hood so the parts you touch every day
stay out of your way.