| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-09-14 | 6.2 kB | |
| v.1.3.0 source code.tar.gz | 2026-09-14 | 28.1 MB | |
| v.1.3.0 source code.zip | 2026-09-14 | 28.4 MB | |
| Totals: 3 Items | 56.5 MB | 3 | |
Highlights
- Web search, and it runs on the phone. A
Webtoggle per chat brings current information into an answer. The search, the page fetch and the reading all happen on the device — nothing is sent to a server of ours. Every answer shows the pages it drew on, each one openable, and the trace can be expanded while the search is still running to see what was searched and what came back. - The model list arrives from a manifest. Models are read from a remote catalog with
DEFAULT_MODELSas the fallback, so the library can grow or drop an entry without shipping a build. Each entry can declare the memory it needs, and the compatibility gate refuses a model this phone cannot hold. - An answer can no longer land under the wrong question. Three places addressed the assistant message by its position in the list. The chat route rebuilds that list from the database when the screen regains focus, so leaving a chat mid-answer and coming back handed the reply to the previous message and failed the turn that asked for it — reported as an answer appearing under an older question while the current one showed "Failed to generate a response". A turn now carries an identity and writes nowhere when its message is gone.
- The input follows the keyboard from its first frame. The lift was released by
keyboardDidShow, which on iOS arrives only once the show animation has finished, so the bar sat at the bottom while the keyboard rose behind it and then jumped the whole distance in one frame.
Fixes
Chat
- An answer the model left inside a
<think>block it never closed is kept instead of being discarded as a failed turn — unless the block holds nothing but a repetition, which still fails. - Sending travels in one motion. The keyboard's close and the message's journey to the top used to run one after the other, with the bubble parked in between; the conversation also blanked for ~200 ms mid-send, measured frame by frame on a Pixel 10.
- Scrolling with the keyboard up no longer dismisses it. Tapping a message still does — a tap and a scroll only separate once the finger has moved.
- The pin floor follows the keyboard rather than ignoring it, and is dropped once a finished answer has outgrown it.
Web search
- The search-model prompt appears on a slow first launch. The wait for the embedding model's status timed out after 8 s, and a still-unknown status was read as "no prompt needed" — leaving the toggle on with no model behind it and nothing on screen.
- That sheet always offers a way out. On a device capable enough for the model to be required,
Cancelwas hidden, the backdrop inert and pan-down disabled. - Web search stays off while an image is attached, as it already did for documents, and says so in its own words rather than claiming documents are active.
Toggles
ThinkandWebstay tappable while a model loads. Both write a chat setting and never needed a loaded model; picking a suggested message starts a load, so from that tap until the load finished the switches did nothing, silently.Thinkingnow reads and behaves likeWebon a model that cannot do it: off when unavailable, explained when you try to enable it, and remembered so returning to a capable model brings it back. Enabling it and then switching models previously left a switch that showed on and could not be turned off.
Security
- Source links are checked for their URL scheme before opening.
SourceRow,WebSearchBlockandDominantSourceBadgehanded a URL straight to the browser; the markdown link handler was already guarded.
Under the hood
- The What's New card reads the installed version from the build instead of a constant, so the number on screen is the build in hand.
- Grounding caveat badges are development-only for now. The caveats are still computed and persisted, so how often each fires can be measured before deciding whether they belong in front of users.
RELEASE.mdis now a general guide to producing a release build rather than a walkthrough of this team's store submissions.- Pod versions carrying the scroll-worklet crash fix were restored after the catalog merge moved them.
What's Changed
- fix(chat): unblock the first document attach, and make sending and opening chats land in one frame by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/289
- fix: settings toggle, citation, model-name and navigation follow-ups after [#289] by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/292
- fix(chat): copy what the bubble shows (#269) + keep a sent message pinned by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/272
- fix(chat): update keyboard-controller past the scroll-worklet crash by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/291
- fix(chat): keep the header mask opaque while a chat reveals by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/295
- fix(models): size the compatibility gate by download size, not parameters by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/294
- Release 1.2.1 by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/293
- feat(web): on-device web search for chat by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/320
- Dynamic model catalog from a remote manifest, DEFAULT_MODELS as fallback only by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/299
- fix(ios): restore the pod versions that carry the scroll-worklet crash fix by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/322
- chore: port cr/phase1-security onto main as a tree copy by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/324
- Pre-release 1.3.0: every fix from the test round by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/334
- chore(release): 1.3.0 by @kfaracik in https://github.com/software-mansion-labs/private-mind/pull/336
Full Changelog: https://github.com/software-mansion-labs/private-mind/compare/1.2.0...1.3.0###