Changelog

What shipped, and when

Dhito is currently on 0.4.30, released . The app updates itself, so you do not have to do anything with this page — it is here so you can see what changed and how often it changes.

Releases that only touched signing, packaging or the build pipeline are folded into the entry beside them. If you install from the terminal, the Homebrew cask tracks the same releases.

0.4.30

File tools built into search, chat with any file, your notes in the index, and one button to buy

  • Added

    File tools: about forty verbs that act on the file you just found — convert, compress, resize, strip EXIF, merge and split PDFs, watermark, extract text, CSV/Excel/JSON conversion, Markdown and Word conversion, SVG rendering, checksums, zip and unzip. Reach them from a result’s right-click menu, from the selection bar after picking several files, or from the new 🧰 Tools tab beside PRO/LITE. Everything runs on your Mac; nothing is uploaded.

  • Added

    A tool never overwrites your file. Every run writes a new one beside it — photo.jpg becomes photo-compressed.jpg — and the result appears as a row at the top of your results, so you can run the next tool on it straight away. Bulk runs show one progress row with a cancel, and a run that fails on two of nine files says which two and keeps the other seven.

  • Added

    Typing a verb into ordinary search now offers the tool. "merge pdf", "compress", "heic to jpg" and the like surface matching tools above your file results, and the Tools tab shows a count when something matches.

  • Added

    Answer rows: type a sum, a unit or cooking conversion, a time zone, a date, sha256 or md5 of some text, uuid, a password or passphrase, base64, a hex colour, a QR code or barcode, or lorem ipsum, and the answer appears above your results before the search has even finished. ⌘C copies it. Everything except the currency row is computed on your Mac.

  • Added

    A 💬 button at the top of the window starts a chat on any file you pick, without searching for it first — ⌘⇧C does the same. Until now chat could only be reached from a search result, which meant hunting for a file you could already name.

  • Added

    Recents. The Tools tab remembers the last few files you chatted with and the last few a tool ran on, so re-running a conversion or picking up a chat is one click. Paths only — never anything about what was inside a file — and they live on this Mac.

  • Added

    Drag files onto the Dhito window, or press ⌘V with files on your clipboard, and they become tool inputs — no search, no picker. ⌘T toggles the Tools tab. Nothing runs on its own: the verb list narrows to what fits, and a tool is pre-selected only when exactly one applies.

  • Added

    Tools can now be found by describing what you want rather than naming it. "make this smaller", "get rid of the location data" and "put these together" reach Compress, Strip metadata and Merge without matching a synonym. A verb you name outright still always comes first.

  • Added

    Currency conversion in the answer rows — "40 usd in inr", "25 eur to gbp". Exchange rates are the one thing Dhito cannot work out on its own, so it downloads a rate table once a day and converts from that copy for the rest of the day. The download carries nothing with it and is not tied to any file or anything you typed. Offline, conversions keep working from the last table fetched, and every row states the date its rate is from.

  • Added

    More answer rows: aspect ratios ("1920x1080", "1920 at 16:9"), shoe size conversions ("us 10 in uk", "cm 26.3 in us"), and "uuid v7" alongside the existing "uuid" — v7 sorts by creation time, which is the reason to want one.

  • Added

    Notes are searchable alongside your files. Apple Notes are read from the local Notes database once you tick the box in Settings → Personal data (macOS asks for Full Disk Access at that moment, which is the only reason the tick exists). Obsidian vaults are found automatically, and any folder of Markdown notes can be added by hand — that route needs no permission at all.

  • Added

    A 🗒️ Notes filter pill next to Apps and Snaps. Notes are ranked by the same model as your documents, so they interleave with files rather than being pinned above them.

  • Changed

    One button to pay. Subscribe, Lifetime Access and Restore Purchase have collapsed into a single Get Dhito, which asks for your email first and works out from the answer whether you already own Dhito — in which case it moves your licence to this Mac — or need to choose a plan. You no longer have to know which of those categories you are in before you have used the app.

  • Changed

    The app no longer quotes a price anywhere in its own screens, and the trial-ended screen is now "Your access has ended" rather than "Subscription Required" — it is also where a lapsed subscriber and a deactivated Mac land, and naming it after the monthly plan was telling most of those people the wrong thing.

  • Fixed

    A routine licence check could close the checkout window on top of a trial user who had not bought anything yet, sometimes before the browser had even opened — which made buying and restoring impossible for exactly the people the window exists for. The window now closes only when the purchase actually lands, or when a verification you submitted comes back successful.

  • Fixed

    Being rate-limited during checkout no longer drops you back onto a plan list as though no purchase was found, and a rate limit that arrives while you are typing a verification code no longer throws the code away.

  • Changed

    Turning a notes source off deletes those notes from the index rather than just hiding them, and removing an Obsidian vault keeps it removed instead of having it re-added on the next scan.

0.4.29

A faster, more accurate search

  • Changed

    Search is roughly twice as fast: median query time dropped from about 1.3 seconds to about 0.56 seconds, with results identical to before. Long documents also rank better — a file that only matches in one paragraph out of a hundred no longer loses to a short file that matches weakly throughout.

  • Changed

    Images are matched by a second, vision-specific model as well as the text one, so a photo can be found by what is in it rather than only by what was written about it.

  • Fixed

    Match scores were not the values they claimed to be, which left every weaker match tied at exactly zero and unable to be ordered against the others.

  • Fixed

    Year queries now filter by the right period, and several filters — including some file-type and date narrowing — had branches that could never run and so quietly did nothing.

0.4.28

Apps in your search results, a menu on every result, and a global hotkey

  • Added

    Applications now show up in search alongside your files. They are matched both by name and by what they are for, so "messaging app" finds WhatsApp and Telegram even though neither has that word anywhere in its name.

  • Added

    A right-click menu on every result: open, open with, reveal in Finder, share, and copy. Selecting several results at once adds a bar for copying all their paths or names in one action.

  • Added

    A customisable global hotkey (Alt+Space by default) summons Dhito from any app. Set it from Settings; the app tells you plainly if the combination you pick is already claimed by something else.

  • Changed

    The billing section in Settings now shows buttons for your actual plan instead of a generic "Manage Subscription". A trial user sees Subscribe and Lifetime Access; a one-time purchaser is no longer sent into a subscription portal they do not have.

0.4.27

A one-time licence alongside the subscription

  • Added

    A one-time purchase option next to the subscription, offered on first run, on the trial-ended screen and in Settings. Price and availability are controlled remotely, so either can change without shipping a new build.

  • Fixed

    The free-trial email prompt had never actually appeared while testing locally, because its state updates were reaching a component instance React had already discarded on mount.

  • Fixed

    The offline grace period after a licence check was 48 hours in practice rather than the intended 15 days, because the app was reading a field the server response never contained.

0.4.26

A cleaner handoff during auto-update

  • Fixed

    Auto-update could leave the app reporting that it had "been moved or deleted" after installing a new version. The backend now shuts down before the update replaces the app bundle instead of after, so it is never left running against files that have just been swapped out from under it.

0.4.25

A smaller download

  • Changed

    The app download shrank from roughly 575 MB to 350 MB: unused bundled packages were dropped, debug symbols were stripped from the bundled libraries, and the disk image switched to LZMA compression. No behaviour changed.

0.4.24

Binary files indexed correctly, and image matches that show their real score

  • Fixed

    RAW camera files, PSD, TIFF, BMP, ICO and AVIF images were being read as plain text instead of sent to the image pipeline, so they were indexed as garbled noise rather than searchable content. Existing indexes are cleaned up automatically on upgrade, and the affected files are picked back up on the next index run.

  • Fixed

    A strong match on an image's caption or OCR text could display as a 0% score. The reranker was scoring machine-written captions the way it scores prose and replacing the retrieval score outright; it now blends with the retrieval score instead.

0.4.23

Guided folder setup, and searches that stop when you do

  • Added

    First-run guidance for choosing which folders to index. Pointing the index at Documents and Downloads rather than the whole home directory is the single biggest factor in how long the first pass takes, and the app now says so instead of leaving you to work it out.

  • Fixed

    A search that had already been superseded by newer keystrokes kept running to completion. Queries you have moved on from are now abandoned, which cuts the work done while you are still typing.

0.4.22

Homebrew install, and a release pipeline that fails loudly

  • Added

    Installation via Homebrew: brew tap dhito-app/tap, then brew install --cask dhito. The cask pins the SHA-256 of the notarised DMG, so the checksum is verified before anything is mounted.

  • Changed

    Release metadata now states the Apple Silicon requirement explicitly, so Homebrew stops with a clear message on unsupported hardware rather than installing something that cannot run.

  • Fixed

    The release build now fails if anything unexpected has been bundled into the app, or if the configured version has drifted from the tag. Both had previously been possible to ship without noticing.

0.4.21

Trial email prompt, and a privacy policy that matches the app

  • Added

    Free-trial users are asked for an email address from day 10. It is a prompt, not a wall — the trial keeps working whether or not you answer it.

  • Fixed

    The privacy policy described a blocking email requirement the app does not have. Corrected to match the behaviour that actually ships, along with the support contact address.

0.4.19 – 0.4.20

Large text libraries, and the update flow

  • Fixed

    Indexing a folder holding very large numbers of plain-text files could stall. Text extraction is now batched so the pass completes on libraries in the tens of thousands of files.

  • Fixed

    Several version-upgrade paths (0.4.15 through 0.4.18) that could leave the app restarting into the wrong state, or reporting a stale subscription status after returning from the billing portal.

0.4.14

Memory released during indexing

  • Fixed

    Model memory was not being freed between indexing batches, so a long first pass grew its footprint until the machine started swapping. Buffers are now released as each batch completes.

0.4.13

Model loading on a clean install

  • Fixed

    On some machines the bundled inference libraries could not locate their own resources after installation, leaving indexing unable to start. The bundle layout was corrected.

0.4.8 – 0.4.12

Long videos, large files, and chat across every supported type

  • Fixed

    Chatting with a long video or a very large document could hang. Transcript and document context are now chunked before they reach the local model.

  • Fixed

    Indexing long video files could stall part-way through and leave the file permanently unsearchable.

  • Fixed

    Files the indexer could not read were retried on every pass instead of being recorded as skipped, so each rescan repeated work that had already failed.

  • Fixed

    A code-signing fault in the build pipeline that produced installs macOS reported as damaged (0.4.9 through 0.4.11).

0.4.6 – 0.4.7

Vision model resilience and faster first captions

  • Fixed

    The vision model could fail to initialise in half precision on some GPUs. It now falls back rather than leaving images unindexed.

  • Changed

    Detailed captioning and object detection are primed on the GPU at startup, so the first images to be indexed no longer pay the warm-up cost.

0.4.4 – 0.4.5

Diagnostics you can send, and an update that relaunches

  • Added

    Optional diagnostic log submission, so a reproducible failure can be reported without reconstructing it by hand. It is opt-in and carries no file contents.

  • Fixed

    Auto-update could install a new version but fail to relaunch into it.

  • Fixed

    A local LLM chat that hung with no error, and a keychain timeout that could block licence checks on a slow first unlock.

Releases before 0.4.4 predate this page. They covered the first public builds of the indexer and the on-device model pipeline, and the notes for them were never written up in a form worth publishing.