Repository navigation
Known issues
- The first start needs free disk space. 2.2.0 upgrades your library database on its first start and saves a copy of it first, so it needs free space about the size of
~/.surfsense/surfsense.db. If there isn't enough, SurfSense closes without a message. Free some space and start it again. - Going back to 2.1.0 needs a manual restore. 2.1.0 can't open a database that 2.2.0 has upgraded. Before reinstalling 2.1.0, quit SurfSense and replace
~/.surfsense/surfsense.dbwith the copy saved at the upgrade,~/.surfsense/backups/0023-0027.db. - An interrupted import from the hosted web app can miss chats. If an import stops part-way, importing the same export again doesn't bring in the chats it missed (#1958). Keep your export ZIP, delete the imported workspace, and import the ZIP again.
What's Changed
- fix(export): strip every citation marker form from exported chats by @MohammadHijjawi97 in #2094
- test(license): cover the portal routes, their rate limits and Keygen by @Cedric921 in #2123
- fix(local): keep a model installed when a server still holds its file open by @ybai08 in #2124
- fix(local): announce a finished reply and name the conversation by @Cedric921 in #2131
- fix(local): tell a dead pin and a checksum mismatch apart in installs by @DidusOleh in #2137
- feat(local): give a Studio format's unavailable reason a code to translate by @ybai08 in #2146
- fix(desktop): retry the staging rename while Windows holds the folder by @DevSchretl in #2161
- docs(local): say the bundled embedder is FP16, with its measured size and speed by @ybai08 in #2158
- fix(local): refuse a chat turn whose images outgrow the model's window by @Cedric921 in #2154
- fix(local): revoke the ChatGPT refresh token on sign-out and delete by @Cedric921 in #2156
- test(local): cover how host memory is read from the OS by @Cedric921 in #2157
- feat(local): give install events a code the interface can translate by @ybai08 in #2168
- File agent: folders, PowerPoint and Excel, templates, per-chat folders, inline previews and model capability levels by @MODSetter in #2177
- feat(chat): keep chat and agent replies running in the background by @AnishSarkar22 in #2179
- feat(sources): tidy the sources panel and rebuild its drag and drop by @AnishSarkar22 in #2180
- [Local|Cache] Let the model reuse the start of every prompt by @CREDO23 in #2178
- feat(studio): downloadable Markdown documents and a floating Refine box by @AnishSarkar22 in #2190
- refactor(local): drop the disk-space error wrapper nothing sends a body for by @ybai08 in #2169
- test(local): keep the PDF letters test passing on a computer with no CJK font by @ybai08 in #2186
- fix(local): say the database copy failed when removing its partial file fails too by @ybai08 in #2187
- test(local): upload each file under its own name when its path uses backslashes by @ybai08 in #2188
- fix(agent): commit before a sync waits for its thread's lock by @ybai08 in #2189
- fix(local): offer a new chat when an agent thread's model cannot run it by @Cedric921 in #2175
- feat(local): send a curated chat model's publisher top_p, top_k and min_p by @Cedric921 in #2182
- refactor(local): hold the Studio list in TanStack Query so open artifacts refresh too by @Cedric921 in #2176
- feat(local): call each remote model on its own route, and run the agent on a ChatGPT plan by @AnishSarkar22 in #2192
- feat(local): add Qwen3.8 27B to the curated chat models by @AnishSarkar22 in #2193
- File agent: edit users' files as tracked changes, Office support, PDF tools and data analysis by @MODSetter in #2194
- Resizable sidebars, comments in the Word viewer, and small models reading the ticked file by @MODSetter in #2195
- Smooth streaming: render only the live reply, and stop the code-highlight leak by @MODSetter in #2197
- ci(local): gate build-sdcpp on the staged sd-server generating an image by @ybai08 in #2159
- perf(models): debounce model search and cache Hugging Face results by @Ehaan-Dadarkar in #2198
- feat(local): give a fit badge a code the interface can translate by @ybai08 in #2191
- fix(local): retire the pre-host egress grants in revision 0027 by @8rulerstar in #2061
- test(local): do not count what macOS gives every process as a leak into a script by @ybai08 in #2199
- feat(proxy): add NodeMaven provider by @alkaz-nodemaven in #2196
- Basic (Q&A) and Agentic modes, a 270-model tested list, and the agent in installers by @MODSetter in #2207
- test(local): wait for the error tooltip to close, not for its text to change by @ybai08 in #2201
- docs(local): name the 0027 migration test in data-model.md by @8rulerstar in #2202
- fix(local): offer no thinking switch in an agent thread by @Cedric921 in #2173
- fix(local): revoke the grant a ChatGPT sign-in replaces by @Cedric921 in #2174
- feat(local): give a model that cannot run a code the interface can translate by @ybai08 in #2200
- perf(models): follow-ups to search debounce and cache by @Ehaan-Dadarkar in #2204
- feat(desktop): route main process warnings into the session log by @Ehaan-Dadarkar in #2205
- test(local): find the office pack's staging folder on macOS too by @ybai08 in #2208
- docs(plugins): redesign plugins as MCP servers behind one tool gateway by @AnishSarkar22 in #2206
- feat(chat): simplify the composer's mode menus and hide model capability tags in production by @AnishSarkar22 in #2211
- docs(readme): a shorter README led by the format table, translated into ten languages by @MODSetter in #2212
- [Local|Release] Release desktop 2.2.0 by @MODSetter in #2214
New Contributors
- @DidusOleh made their first contribution in #2137
- @DevSchretl made their first contribution in #2161
- @Ehaan-Dadarkar made their first contribution in #2198
- @alkaz-nodemaven made their first contribution in #2196
Full Changelog: v2.1.0...v2.2.0