| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| latest-linux.yml | 2026-10-04 | 715 Bytes | |
| latest-mac.yml | 2026-10-04 | 828 Bytes | |
| latest.yml | 2026-10-04 | 363 Bytes | |
| stable-mac.yml | 2026-10-04 | 487 Bytes | |
| SurfSense-arm64.zip | 2026-10-04 | 1.2 GB | |
| SurfSense-arm64.zip.blockmap | 2026-10-04 | 1.3 MB | |
| SurfSense-arm64.dmg | 2026-10-04 | 1.3 GB | |
| SurfSense-arm64.dmg.blockmap | 2026-10-04 | 1.3 MB | |
| stable.yml | 2026-10-04 | 336 Bytes | |
| stable-linux.yml | 2026-10-04 | 505 Bytes | |
| SurfSense-Setup.exe | 2026-10-04 | 1.1 GB | |
| SurfSense-Setup.exe.blockmap | 2026-10-04 | 1.2 MB | |
| SurfSense.deb | 2026-10-04 | 1.2 GB | |
| SurfSense.AppImage | 2026-10-04 | 1.4 GB | |
| README.md | 2026-10-04 | 16.9 kB | |
| v2.1.0 source code.tar.gz | 2026-10-04 | 263.0 MB | |
| v2.1.0 source code.zip | 2026-10-04 | 266.8 MB | |
| Totals: 17 Items | 6.8 GB | 1 | |
What's Changed
- feat(web,local): add wordmark, Windows overlay scrollbars, and marketing site polish by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/1935
- fix(local): delete an artifact's files when it is deleted as a document by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/1934
- fix(indexing): keep a table's last row when it ends the document by @MohammadHijjawi97 in https://github.com/MODSetter/SurfSense/pull/1936
- fix(export): number nested BlockNote lists on their own by @MohammadHijjawi97 in https://github.com/MODSetter/SurfSense/pull/1937
- feat(local): connect to Anthropic directly with just an API key by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/1933
- docs(architecture): delete Known gaps that v2.0.3 closed by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2014
- docs(documents): record that deleting an artifact document removes its files by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2015
- fix(local): don't offer Retry for model_cannot_run / context_too_long chat errors by @biggdawg320 in https://github.com/MODSetter/SurfSense/pull/2016
- docs(local): propose sending images to vision models in chat by @vintcessun in https://github.com/MODSetter/SurfSense/pull/2031
- [Docs|Plugins] Plan the plugin lifecycle by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2043
- [Docs|Plugins] Release plugins with the app by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2048
- fix(license): answer 503 before Keygen when SMTP config is invalid by @mehul2409 in https://github.com/MODSetter/SurfSense/pull/2047
- feat(local): read one document with its body by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2045
- fix(local): open the issue dialog from About's Report an issue by @MannXo in https://github.com/MODSetter/SurfSense/pull/2026
- fix(local): withdraw a host's egress grant when its last connection is deleted by @8rulerstar in https://github.com/MODSetter/SurfSense/pull/2027
- fix(release): refuse to publish a prerelease desktop version by @MannXo in https://github.com/MODSetter/SurfSense/pull/2025
- fix(local): read a stored license issued ahead of the clock as clock_untrusted by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2019
- fix(local-catalog): log why a broken manifest falls back to empty by @GhostCoder6969 in https://github.com/MODSetter/SurfSense/pull/2017
- fix(models): explain searched build fit failures by @fukalous in https://github.com/MODSetter/SurfSense/pull/2042
- fix(studio): trust the server format catalog by @fukalous in https://github.com/MODSetter/SurfSense/pull/2038
- fix(local): stop a cancelled podcast or office job at the next boundary by @vintcessun in https://github.com/MODSetter/SurfSense/pull/2030
- feat(local): pass a JSON schema from run_model, starting with the quiz by @vintcessun in https://github.com/MODSetter/SurfSense/pull/2032
- fix(studio): translate unavailable reasons as sentences by @fukalous in https://github.com/MODSetter/SurfSense/pull/2036
- fix(local): discard a chat turn that ends with no answer text by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2037
- fix(chat): send no citation rules when retrieval finds nothing by @MONISMALIK1 in https://github.com/MODSetter/SurfSense/pull/2028
- fix(local): read the size in a Featherless-shaped listing row's id by @jamalkamaladdin in https://github.com/MODSetter/SurfSense/pull/2029
- fix(sunset): gate the web redirect on DEPLOYMENT_MODE by @MannXo in https://github.com/MODSetter/SurfSense/pull/2023
- fix(sunset): pause hosted recurring user work by @sb123sb123 in https://github.com/MODSetter/SurfSense/pull/2020
- ci(web): run the surfsense_web unit tests on pull requests by @MannXo in https://github.com/MODSetter/SurfSense/pull/2024
- fix(sunset): include sunset_url in the 410 export-only body by @MannXo in https://github.com/MODSetter/SurfSense/pull/2022
- test(sunset): cover hosted account purge guards by @fukalous in https://github.com/MODSetter/SurfSense/pull/2040
- fix(local): inspect llama.cpp model size at selection by @fukalous in https://github.com/MODSetter/SurfSense/pull/2034
- test(local): run the frontend tests in UTC by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2050
- fix(local): lint formatMessage values that are not written as a literal by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2054
- fix(ui): connect tooltip descriptions to screen readers with role and aria-describedby by @AdamMagued in https://github.com/MODSetter/SurfSense/pull/2018
- fix(local): link license settings to the trial and pricing pages by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2052
- fix(local): keep a model the manifest cannot call out of the pickers and the selection by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2059
- fix(local): give a loopback connection's unknown model the compact prompt by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2051
- fix(local): refuse a curated install that will not fit before any bytes move by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2056
- fix(local): record an install file by file, so a cut-off one is never called installed by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2058
- fix(local): say once on the chat model screen that the runtime is down by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2057
- feat(local): render the thinking trace as markdown by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2049
- test(local): cover a chat reply the client hangs up on by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2041
- fix(local): cap a chat question at its share of the window by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2053
- feat(local): send images to vision chat models, keep upload filenames, drop sources into the panel by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2060
- [Plugins|Manifest] Validate manifest.json by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2069
- [Plugins|Manifest] Accept the stamped version, explain name rules by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2070
- [Plugins|SDK] Add the plugin SDK by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2073
- [Plugins|CLI] Design the author commands by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2075
- [Plugins|SDK] Test the SDK against the real app by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2076
- [Plugins|CLI] Add the author commands by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2079
- [Local|Sources] Reload Sources on document events by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2081
- feat(local): voice podcasts with server audio models by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2083
- [Plugins|Runtime] Run a plugin in its own process by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2082
- [Plugins|Runtime] Stop a run the plugin does not end by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2084
- refactor(local): name the curated fit refusal in llama.cpp's check by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2071
- feat(local): constrain the flashcards reply with a JSON schema by @vintcessun in https://github.com/MODSetter/SurfSense/pull/2074
- feat(local): ground a large Studio selection on every document, by prompt where it has one by @vintcessun in https://github.com/MODSetter/SurfSense/pull/2078
- fix(chat): preserve pre-stream error details by @fukalous in https://github.com/MODSetter/SurfSense/pull/2035
- fix(chat): shield disconnect cleanup by @fukalous in https://github.com/MODSetter/SurfSense/pull/2062
- fix(local-models): refuse gated repo installs by @fukalous in https://github.com/MODSetter/SurfSense/pull/2063
- fix(local-models): skip unchanged preset writes by @fukalous in https://github.com/MODSetter/SurfSense/pull/2064
- fix(desktop): report sidecar crashes by @fukalous in https://github.com/MODSetter/SurfSense/pull/2065
- fix(local-models): explain unpaired projectors by @fukalous in https://github.com/MODSetter/SurfSense/pull/2066
- fix(local-models): reconcile copied gguf files by @fukalous in https://github.com/MODSetter/SurfSense/pull/2067
- fix(local): ask before fetching an image URL from a host the endpoint names by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2072
- docs(proposals): preview source files in the desktop app by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2088
- ci(coderabbit): review pull requests against dev automatically by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2091
- feat(local): show live CPU, RAM and GPU usage above Studio by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2092
- fix(desktop): recommend the Vulkan loader in the Linux deb by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2090
- fix(local): send a curated chat model's publisher temperature by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2085
- fix(license): let support correct a trial's address by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2086
- fix(license): suspend only the license a fully refunded charge paid for by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2087
- fix(license): refuse trial emails on the disposable-email-domains list by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2095
- fix(local): parse images offline, cut OCR errors and speed up Docling by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2096
- docs(proposals): GPU for the document parser by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2097
- fix(export): give each exported document its own path by @MohammadHijjawi97 in https://github.com/MODSetter/SurfSense/pull/2093
- docs(proposals): run the desktop stack in Docker, with CPU and CUDA images by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2098
- docs(proposals): order the Docker work as fourteen runnable steps by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2099
- fix(mcp): bump anyio, cryptography and pyjwt for security advisories by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2115
- fix(sandbox): bump fast-uri, js-yaml and undici in the remotion lockfile by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2116
- fix(whatsapp-bridge): bump sharp, protobufjs, qs and body-parser by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2117
- fix(local): patch pdfjs-dist, undici, urllib3 and other dependency advisories by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2118
- fix(web): patch next, pdfjs-dist and vulnerable transitive dependencies by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2119
- fix(backend): patch dependency advisories with lock bumps and floor raises by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2120
- fix(backend): lift the starlette and pyarrow caps, move transformers to 5 by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2121
- feat(local-backend): read CORS origins from SURFSENSE_LOCAL_CORS_ORIGINS by @qwist1233-cpu in https://github.com/MODSetter/SurfSense/pull/2122
- fix(plugins): stop failing runs queued in the worker's first second by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2129
- feat(desktop): preview PDF sources in-app by @kaaloo in https://github.com/MODSetter/SurfSense/pull/2128
- feat(local): move resource usage into Settings › Resources by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2130
- [Docs|Agent] Settle how opencode runs inside SurfSense by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2133
- [Agent|opencode] Let the agent answer a chat thread by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2135
- docs(sunset): say in both runbooks that the flag needs DEPLOYMENT_MODE=cloud by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2125
- perf(local): reload the Studio list on workspace events instead of polling every 1.5s by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2126
- fix(local): say whether the chosen image model's server is running by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2127
- feat(local): fall back to VITE_API_BASE for the API base by @MannXo in https://github.com/MODSetter/SurfSense/pull/2134
- docs(license): say Keygen ignores the case of metadata keys by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2139
- docs(local): record that the workspace stream leaks a listener per retry by @MODSetter in https://github.com/MODSetter/SurfSense/pull/2140
- fix(workspaces): clean up abort listener on retry timer and return early when aborted by @DYNOSuprovo in https://github.com/MODSetter/SurfSense/pull/2142
- fix(web): state the 18 October 2026 deletion date on /sunset by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2138
- feat(local): show how far the model has read a long prompt by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2144
- feat(local): choose the embedding model in onboarding by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2136
- [Agent|Engine] Give the agent only to models that can call tools by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2150
- feat(local): use a ChatGPT Plus or Pro plan as a chat model by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2151
- [Agent|Engine] Let the developer switch try models newer than the catalog by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2153
- [Agent|Tools] Give the agent SurfSense's search and Studio by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2152
- fix(local): keep a rename or note edit made while a document ingests by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2148
- feat(local): write notes and rename sources from the sources panel by @Cedric921 in https://github.com/MODSetter/SurfSense/pull/2132
- fix(local): stop Chromium's spellchecker from downloading dictionaries by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2145
- feat(local): add a switch to turn thinking off for chat answers by @ybai08 in https://github.com/MODSetter/SurfSense/pull/2143
- feat(local): source preview in the sidebar, grouped settings, Report issue tab, composer add menu by @AnishSarkar22 in https://github.com/MODSetter/SurfSense/pull/2160
- [Agent|Release] Keep opencode off until a model passes the agent test by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2163
- [Web|Lint] Format the files Biome flags on dev by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2165
- [CI|Node] Build the website and the installers on Node 24 by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2162
- [Local|Release] Set the desktop version to 2.1.0 by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2164
- [CI|Release] Run the artifact actions on Node 24 by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2166
- [Local|Release] Release desktop 2.1.0 by @CREDO23 in https://github.com/MODSetter/SurfSense/pull/2167
New Contributors
- @Cedric921 made their first contribution in https://github.com/MODSetter/SurfSense/pull/1934
- @MohammadHijjawi97 made their first contribution in https://github.com/MODSetter/SurfSense/pull/1936
- @biggdawg320 made their first contribution in https://github.com/MODSetter/SurfSense/pull/2016
- @vintcessun made their first contribution in https://github.com/MODSetter/SurfSense/pull/2031
- @mehul2409 made their first contribution in https://github.com/MODSetter/SurfSense/pull/2047
- @ybai08 made their first contribution in https://github.com/MODSetter/SurfSense/pull/2045
- @MannXo made their first contribution in https://github.com/MODSetter/SurfSense/pull/2026
- @8rulerstar made their first contribution in https://github.com/MODSetter/SurfSense/pull/2027
- @GhostCoder6969 made their first contribution in https://github.com/MODSetter/SurfSense/pull/2017
- @fukalous made their first contribution in https://github.com/MODSetter/SurfSense/pull/2042
- @MONISMALIK1 made their first contribution in https://github.com/MODSetter/SurfSense/pull/2028
- @jamalkamaladdin made their first contribution in https://github.com/MODSetter/SurfSense/pull/2029
- @sb123sb123 made their first contribution in https://github.com/MODSetter/SurfSense/pull/2020
- @AdamMagued made their first contribution in https://github.com/MODSetter/SurfSense/pull/2018
- @qwist1233-cpu made their first contribution in https://github.com/MODSetter/SurfSense/pull/2122
- @kaaloo made their first contribution in https://github.com/MODSetter/SurfSense/pull/2128
- @DYNOSuprovo made their first contribution in https://github.com/MODSetter/SurfSense/pull/2142
Full Changelog: https://github.com/MODSetter/SurfSense/compare/v2.0.3...v2.1.0