Releases: karakeep-app/karakeep
0.30.0
0.30.0 (New year release 🎁)
Welcome to the 0.30.0 release of Karakeep and happy new year! This release comes with "2025 wrapped" (a bit late), PDF archives, new reader settings, avatars, reddit crawling improvements, and more! Huge thanks to our contributors for this release @esimkowitz, @Moondragon85, @rzxczxc, @colado, @Yeraze, @eriktews and everyone who shipped code, triaged bugs, or shared feedback for this release.
If you enjoy using Karakeep, consider supporting the project here ☕️ or via GitHub here.
And in case you missed it, we now have a ☁️ managed offering ☁️ for those who don't want to self-host. We're in public beta now and you can signup here 🎉.
New Features 🚀
- 2025 Wrapped is here to celebrate your year in Karakeep (#2322).
- PDF archives
- Archive bookmarks as PDFs, generated automatically during crawling or on-demand (#2309).
- Set
CRAWLER_STORE_PDF=trueto enable auto PDF archiving.
- Unified reader settings (font, size, etc) across all devices with per-device overrides (#2230). By @esimkowitz!
- Better metadata extraction:
- Upload custom user avatars for more personal profiles (#2296).
- AI Setting customization:
- Others:
- Import libraries from Matter with full export support (#2245). By @Moondragon85
- Bulk remove bookmarks from lists (#2279).
- Add a new rule condition to rule engine: "URL Does Not Contain" (#2280).
- Configure an OpenAI proxy via
OPENAI_PROXY_URL(#2231). By @rzxczxc - Added
is:brokensearch qualifier to show links that failed crawling (#2225). - Edit list now in the mobile app (#2310). By @colado
UX Improvements ✨
- Our docs got a facelift! The docs got some styling, the pages got re-organized and we now have a "Using Karakeep" section that explains some of the core concepts of Karakeep.
- Replace bookmark banners and download attachments directly from the drop down menu (#2328).
- Sidebar scrollbar looks cleaner, and pending list invites show as a badge in the sidebar.
- Bookmark edit dialog now includes notes.
- Bookmark owner avatars now show up in collaborative lists.
- Mobile UI/UX improvements:
- Fixed title on mobile to be at most 2 lines long.
- Mobile settings screens should now feel more native (#2307).
- OLED-friendly colors in the Android app matching the colors of the ios app (#1958).
- Toasts on iOS now appear correctly above the open modals (#2320). By @colado
- Shared lists now appear in a dedicated subsection on mobile.
- Adding a bookmark to a list now shows a spinner during loading (#2283).
- Server version now appears in mobile settings (#2276).
- Fixed the confusing "tick button" beside the server address during login.
Fixes 🔧
- Fixed missing db indicies that was causing slow bookmark queries (#2246, #2287).
- Improved Ollama summaries by using the generate endpoint (#2324). By @eriktews
- Fixed HTML bookmark imports failing on empty folder names (#2300).
- Fixed non-link bookmarks stuck in pending summarization (#1605).
- Improved tagging prompts and error-page detection.
- Reject spoofed content types on file uploads.
- Preserve failure counts when rescheduling rate-limited domains (#2303).
- Fixed duplicate backdrop buttons in reader view (#2234). By @colado
- RSS feed fetching is now spread over the hour (#2227).
- Asset preprocessing worker timeout is now configurable (91784cd).
- Fixed bypassing email verification in apiKey.exchange.
- Added limits on number of rss feeds and webhooks per user configurable by admins.
- Fixed a bug where failed crawling leave bookmarks as pending tagging in the admin dashboard.
For Developers 🛠️
- OpenTelemetry integration with OTLP exporter (#2318, #2321).
- CLI can list users for admins.
- We're now defaulting to Node.js 24 (the current LTS).
- Breaking: In bookmark APIs
includeContentnow defaults tofalse. This change was announced a couple months ago, and is taking effect in this release.
Community Projects 💡
Screenshots 📸
Wrapped 2025
Reader Settings
AI Settings
Upgrading 📦
To upgrade:
- If you're using
KARAKEEP_VERSION=release, rundocker compose pull && docker compose up -d. - If you're pinning it to a specific version, bump the version and then run
docker compose pull && docker compose up -d.
All Commits
- i18n: fix en_US translation - @MohamedBassem in d472a3a
- fix: fix wrapped feature to only show bookmarks in 2025 - @MohamedBassem in 4077e28
- i18n: Sync weblate translations - Weblate in 401ea6a
- chore: drop the experimental tag from the rule engine - @MohamedBassem in bf9d610
- fix: show a toast during banner upload - @MohamedBassem in 9555f40
- fix: don't switch the bookmark back to pending on recrawl - @MohamedBassem in 79400d0
- fix: use the Ollama generate endpoint instead of chat (#2324) - @eriktews in e8c79f2
- feat: add replace banner and attachment download (#2328) - @MohamedBassem in 3d652ee
- feat: Add bulk remove from list (#2279) - @MohamedBassem in 7a76216
- feat: add "URL Does Not Contain" condition to rule engine (#2280) - @MohamedBassem in b20ba9c
- feat: 2025 wrapped (#2322) - @MohamedBassem in a0b4a26
- chore: worker tracing (#2321) - @MohamedBassem in 7ab7db8
- feat(landing): add corporate pricing - @MohamedBassem in d852ee1
- fix(mobile): mobile modal UI issues (#2320) - @colado in a43d375
- ci: fix tests - @MohamedBassem in 9d6b128
- feat: change default for tag style to be title case with spaces - @MohamedBassem in 9098a5a
- fix: more tagging tweaks - @MohamedBassem in c1cbaa8
- build: fix broken CI - @MohamedBassem in a5ce977
- fix: change prompt to better recognize error pages - @MohamedBassem in f5a5c14
- refactor: reduce duplication in compare-models tool - @MohamedBassem in f00287e
- chore: add tracing for email functions - @MohamedBassem in ba8d84a
- feat(mobile): create new list edit screen (#2310) - @colado in 30fa06f
- feat: Add open telemetry (#2318) - @MohamedBassem in 5537fe8
- fix: reset tagging status on crawl failure (#2316) - @MohamedBassem in f7920bd
- feat: add the ability to specify a different changelog version - @MohamedBassem in 1082076
- fix: remove duplicate mobile backdrop button in reader view (#2234) - @esimkowitz in 3f44e31
- fix(landing): fix cloud banner on mobile - @MohamedBassem in 23f2853
- refactor: add suspense boundary in sidebar layout - @MohamedBassem in 3c3d868
- feat(mobile): make the settings menu look more native (#2307) - @MohamedBassem in 6ee48ff
- feat(web): better looking scrollbar in the sidebar - @MohamedBassem in f7523a2
- feat(mobile): use oled friendly colors for android app. fixes #1958 - @MohamedBassem in e800d74
- refactor: migrate toasts to sonner - @MohamedBassem in 173fb99
- feat: add customizable tag styles (#2312) - @MohamedBassem in af3010a
- feat: add Matter import support (#2245) - @Moondragon85 in 93630ce
- feat: support archiving as pdf (#2309) - @MohamedBassem in 267db79
- feat: add OPENAI_PROXY_URL configuration and support for proxy in OpenAI client (#2231) - @rzxczxc in bb6b742
- fix(tests): fix the asset upload tests - @MohamedBassem in e82694d
- fix: reject spoofed content types on uploads - @MohamedBassem in 2dbdf76
- deps: upgrade tesseract to v7 - @MohamedBassem in 347793a
- feat(landing): announce cloud public beta in landing page - @MohamedBassem in c3b2326
- chore: add a tool for comparing perf of different models - @MohamedBassem in 1dfa5d1
- feat: add notes to the bookmark edit dialog - @MohamedBassem in ecb7a71
- fix(restate): change journal retention for services to 3d - @MohamedBassem in 0efffdc
- fix(cli): migrate bookmark source in migration command - @MohamedBassem in 65cfa87
- fix: preserve failure count when rescheduling rate limited domains (#2303) - @MohamedBassem in ddd4b57
- feat: show bookmark owner icon in shared lists (#2277) - @MohamedBassem in ef27670
- fix: make avatars public - @MohamedBassem in f7d3462
- refactor: move assets to their own model (#2301) - @MohamedBassem in 013ca67
- feat: add support for user avatars (#2296) - @MohamedBassem in 314c363
- fix: handle empty folder names in HTML bookmark imports (#2300) - @MohamedBassem in 3408e6e
- feat: add a warning about viewing archives inline. fixes #2286 - @MohamedBassem in e336513
- fix(tests): fix the user setting tests - @MohamedBassem in 258bebe
- feat: Add user settings to disable auto tagging/summarization (#2275) - @MohamedBassem in 0bdba54
- feat(mobile): Convert server add...
0.29.3
Well. Upgrading Nextjs one more time to patch CVE-2025-67779.
0.29.2
Upgrading Nextjs to patch two new vulnerabilities in react CVE-2025-55184 & CVE-2025-55183. This is on top of the critical vulnerability (CVE-2025-66478) that was patched in 0.29.1.
0.29.1
0.29.0
0.29.0
Welcome to the 0.29.0 release of Karakeep! This release ships some of our most awaited features. Collaborative lists, automated bookmark backups, search auto complete, highlighs are getting notes and search, and the mobile app is getting some more love. As usual thanks to @aa-ko, @fivestones, and everyone who shipped code, triaged bugs, or shared feedback for this release.
If you enjoy using Karakeep, consider supporting the project here ☕️ or via GitHub here.
And in case you missed it, we now have a ☁️ managed offering ☁️ for those who don't want to self-host. We're still in private beta (you can signup for access here) and gradually letting more and more users in. We're in public beta now and you can signup here 🎉.
New Features 🚀
- Collaborative lists are here! (#2146, #2152)
- You can now invite collaborators to your lists and manage their access levels between viewers and editors.
- This was the most requested feature on the roadmap, and it's now here!
- Automated bookmark backups you can schedule once and forget (#2182)
- Currently it only captures non-asset bookmarks, but I'm planning to include lists, tags, and other metadata in the future.
- Search gets autocomplete so you can find the right filters and terms faster (#2178)
- Highlights overhaul: notes + search bar on web, plus a dedicated highlights page on mobile (#2154, #2155, #2156, #2157)
- Mobile catches up with smart list creation and an all-tags screen (#2153, #2163)
- Crawler domain rate limiting to avoid getting throttled by external sites (#2115)
- Configure it with
CRAWLER_DOMAIN_RATE_LIMIT_WINDOW_MSandCRAWLER_DOMAIN_RATE_LIMIT_MAX_REQUESTS.
- Configure it with
- Import from MyMind (#2138)
UX Improvements ✨
- Sidebar typography and colors should feel nicer (specially in dark mode).
- Page titles are now correctly displayed in the browser tabs.
- We have a friendlier 404 page for bookmarks/lists that don't exist.
- You can now see stats about the source of your bookmarks in the usage stats page (extension, web app, mobile app, etc).
Fixes 🔧
- Prompts lazily load
js-tiktokenwhich should cut between 70-150MB of karakeep's memory usage (#2176) - The edit dialog wasn't correctly showing the extracted text from assets, this is now fixed (#2181).
- IP validation allowlisting now allows bypassing all domains by setting
CRAWLER_ALLOWED_INTERNAL_HOSTNAMESto.. - Fix a worker crash when hitting invalid URLs with proxy enabled.
For Developers 🛠️
- GET
/api/versionendpoint for getting server version (#2167) - More visibility: HTTP status Prometheus counters, failed_permanent worker metric, and system metrics on web/worker containers (#2117, #2107)
- Documentation updates for
LOG_LEVELand Raycast links (#2166, #1923) by @aa-ko and @fivestones
Screenshots 📸
Collaborative Lists
Automated Backups
Search Autocomplete
Upgrading 📦
To upgrade:
- If you're using
KARAKEEP_VERSION=release, rundocker compose pull && docker compose up -d. - If you're pinning it to a specific version, bump the version and then run
docker compose pull && docker compose up -d.
All Commits
- i18n: fix en_US translation - @MohamedBassem in f01d96f
- i18n: Sync weblate translations - @HosteD Weblate in e1ad2cf
- feat: autocomplete search terms (#2178) - @MohamedBassem in ebafbe5
- build: switch npm to trusted publishing - @MohamedBassem in 335a84b
- feat: Add automated bookmark backup feature (#2182) - @MohamedBassem in 86a4b39
- fix: making serverConfig readonly - @MohamedBassem in e67c33e
- fix: fix react errors in signin and signup forms - @MohamedBassem in 6ab7984
- fix: separate shared lists in the sidebar (#2180) - @MohamedBassem in 2619f4c
- fix: correctly render asset extracted text in the edit bookmark dialog. fixes #2181 - @MohamedBassem in 9ed338f
- fix: lazy load js-tiktoken in prompts module (#2176) - @MohamedBassem in e2877b4
- fix: fix colors in invitation form - @MohamedBassem in a13a227
- fix: hide archived checkbox in shared lists - @MohamedBassem in adde809
- feat: improve font and colors of sidebar items - @MohamedBassem in 5bea5d3
- fix: Propagate group ids in queue calls (#2177) - @MohamedBassem in 6821257
- feat: Introduce groupId in restate queue (#2168) - @MohamedBassem in 5426875
- fix: support invocation cancellation while awaiting sempahore - @MohamedBassem in 38842f7
- docs: Add LOG_LEVEL to configuration documentation (#2166) - @aa-ko in 6912d0d
- docs: fix link to raycast extension (#1923) - @fivestones in 9fedfc1
- tests: Add a test for listing lists - @MohamedBassem in e16ae2a
- feat: add GET /api/version endpoint (#2167) - @MohamedBassem in 472adec
- fix(mcp): propagate parent id to createList call. fixes: #2144 - @MohamedBassem in 0d14130
- feat(mobile): proper handling for shared list permissions (#2165) - @MohamedBassem in c5c71ba
- feat(mobile): Add highlights page to mobile app (#2156) - @MohamedBassem in 8a5a109
- feat: A better looking 404 page - @MohamedBassem in 7f555f5
- fix: hide manage collaborators option for smart lists - @MohamedBassem in 2b38c00
- fix: Hide shared lists where user is a viewer in Manage Lists dialog (#2164) - @MohamedBassem in e4db9bf
- feat(mobile): Add AI summary field to mobile bookmark info (#2157) - @MohamedBassem in 45081dc
- feat(mobile): Add tags screen to mobile app (#2163) - @MohamedBassem in ad66f78
- feat: Add notes feature to highlights (#2154) - @MohamedBassem in de5ebbc
- feat(mobile): Add smart list creation in mobile app (#2153) - @MohamedBassem in 48ab8a1
- feat: Add search bar to highlights page (#2155) - @MohamedBassem in ed6a3bf
- fix: hide collaborator emails from non-owners (#2160) - @MohamedBassem in 8ab5df6
- feat: Add invitation approval for shared lists (#2152) - @MohamedBassem in 5f0934a
- deps: upgrade oxlint - @MohamedBassem in daee8e7
- fix: add a way to allowlist all domains from ip validation - @MohamedBassem in 67b8a3c
- fix: use kbd for editor card - @MohamedBassem in 3345377
- fix: drop journal retention for sempahore and id providers - @MohamedBassem in 1b44eaf
- refactor: remove the PrivacyAware interface - @MohamedBassem in 815e196
- feat: Add collaborative lists (#2146) - @MohamedBassem in 88c73e2
- deps: upgrade hono and playwright - @MohamedBassem in cc8fee0
- deps: Upgrade typescript to 5.9 - @MohamedBassem in 391af8a
- build: Improve docker caching (#2140) - @MohamedBassem in 6cccb9f
- fix: fix hydration error in admin user list - @MohamedBassem in 12d09a7
- feat: import from mymind (#2138) - @MohamedBassem in 0c80f51
- feat: add Prometheus counter for HTTP status codes (#2117) - @MohamedBassem in 4350666
- fix(mobile): upgrade react-native-pdf to v7 to fix page alignment - @MohamedBassem in 4c6ef25
- fix(mobile): fix app memory page size compatibility (#2135) - @MohamedBassem in fbd12ea
- release(mobile): Bump mobile version to 1.8.2 - @MohamedBassem in 76c291a
- fix: remove incorrect array destructuring in mobile search (#2124) - @MohamedBassem in 07390ae
- feat: correct default prom metrics from web and worker containers - @MohamedBassem in c34f70d
- fix: stop retrying indefinitely in restate queues - @MohamedBassem in d4b7b89
- fix: fix crash in crawler on invalid URL in matchesNoProxy - @MohamedBassem in d0f71a4
- feat: add crawler domain rate limiting (#2115) - @MohamedBassem in 4cf0856
- refactor: Allow runner functions to return results to onComplete - @MohamedBassem in b28cd03
- refactor: Extract ratelimiter into separate plugin (#2112) - @MohamedBassem in 0316148
- feat(extension): Add custom header support for extension (#2111) - @MohamedBassem in ec87813
- feat: Add bookmark sources statistics section (#2110) - @MohamedBassem in 725b521
- feat: Add page titles (#2109) - @MohamedBassem in 3083be0
- feat: add failed_permanent metric for worker monitoring (#2107) - @MohamedBassem in 1b8129a
- release(docs): release the 0.28 docs - @MohamedBassem in d9ef832
- release(extension): Release version 1.7.1 - @MohamedBassem in 7339d1d
- release(mobile): Bump mobile version to 1.8.1 - @MohamedBassem in f06b8ea
0.28.0
0.28.0 (20k stars ⭐)
Welcome to the 0.28.0 release of Karakeep! We've have hit 20k stars on Github 🎉 (well 21k because I was too late with the release)! Thanks a lot for your support throughout this journey! This release brings a refreshed import pipeline, uploading custom attachments, revamped tags page, inline checklists, and a bunch of quality-of-life touches across the web app, extension and mobile app. Huge thanks to @BOTkirial, @qixing-jk, @@maya-doshi, @BenjaminMichaelis, @cloudchristoph, @claytono, as usual @xuatz and everyone who shipped code, triaged bugs, or shared feedback for this release.
If you enjoy using Karakeep, consider supporting the project here ☕️ or via GitHub here.
And in case you missed it, we now have a ☁️ managed offering ☁️ for those who don't want to self-host. We're still in private beta (you can signup for access here) and gradually letting more and more users in.
New Features 🚀
- Revamped import experience with progress tracking (#2001)
- Revamped Tags page that adds search and pagination to better serve users with thousands of tags (#1987)
- You can now upload custom attachments to bookmarks (#2100)
- When deleting a list, you can now optionally delete all its children (#1989)
- Server overview highlights service dependency health.
- Inline checklist toggling for text bookmarks (#1933) – @BOTkirial
- With every release, you'll be prompted to view what's new in that release from inside the app.
- You can now pass custom headers from the mobile app to the server (#2103)
- Extension improvements:
- Tab bookmark badge indicator by @qixing-jk shows when a page is already bookmarked (#1745)
- You can now write notes directly after saving a bookmark in the extension (#2104)
UX Improvements ✨
- Grid view controls expose title/tag toggles and image fit options (#1960)
- Bookmark cards can surface saved notes across web and mobile (#2083) – @xuatz
- Manage Lists modal is searchable for faster sorting (#2029)
- The tags page now has a "Create Tag" button (#1942)
- You can now regenerate the API key without having to recreate it.
- New
title:seach qualifier for searching bookmarks by title (#1940)
Fixes 🔧
⚠️ (Potentially breaking change)⚠️ Stricter URL valdaition to protect against SSRF attacks (#2082)- Webhook requests now go through the proxy if there's one configured
- All server-initiated requests (including webhooks) to internal IP addresses are now blocked by default unless explicitly allowed via
CRAWLER_ALLOWED_INTERNAL_HOSTNAMES. If your webhooks are hitting internal services, you'll have to allowlist them viaCRAWLER_ALLOWED_INTERNAL_HOSTNAMES. - Monolith now honors the configured crawler proxy.
- Metascraper logo extraction now respects the crawler proxy.
- Crawler memory footprint shrinks with targeted optimizations (#1748)
- Allow karakeep to use newer openai models that was previously failing because of deprecated max_tokens (#2000) - @BenjaminMichaelis
- You'll need to set
INFERENCE_USE_MAX_COMPLETION_TOKENS=truein your.envfile to use the new models. This is eventually going to become the default.
- You'll need to set
- Admin maintenance jobs respect abort signals to stop gracefully
- Search input no longer crashes on percent signs and also works correctly with IME composition
- Fixed a crash when sharing a list publicly that didn't have any bookmarks (#1990)
- Screenshots are now stored as jpegs instead of pngs to reduce file size
- Fixed a bug that was preventing tag merging (#1938)
- RSS imports can apply feed categories as tags (#2031)
For Developers 🛠️
- Create bookmark API returns 200 instead of 201 when a bookmark already exists
- CLI Improvements:
- New commands to migrate data from one server to another
- New command to dump a full account archive
- A new wipe command to selectively clean up data from the account
Community Projects 💡
Karakeeper
3rd Party iOS/Safari Client - by @simplytoast1
Karakeeper now is providing an alternative iOS native mobile/desktop client for Karakeep beyond its existing functionality of providing a safari extension.
Karakeep Sync
A syncing tool for Karakeep - by @sidoshi
A rust-based syncing tool that syncs: Hacker News upvotes, Reddit saved posts, Github stars and Pinboard bookmarks automatically to Karakeep!
Screenshots 📸
Inline Checklists
Import Sessions
Service Health Indicators
Upgrading 📦
To upgrade:
- If you're using
KARAKEEP_VERSION=release, rundocker compose pull && docker compose up -d. - If you're pinning it to a specific version, bump the version and then run
docker compose pull && docker compose up -d.
All Commits
- fix: standardize US English translations to professional tone - @MohamedBassem in 4f025f5
- i18n: Sync weblate translations - @weblate in 5387c98
- tests: fix crawling and search e2e tests (#2105) - @MohamedBassem in c4bee9f
- feat(extension): Allow writing notes directly in the extension (#2104) - @MohamedBassem in 098e56a
- fix(mobile): fix default address not correctly stored in settings - @MohamedBassem in a220319
- feat(mobile): add custom headers configuration in sign-in screen (#2103) - @MohamedBassem in ec621bf
- tests: Fix failing test - @MohamedBassem in 27ed0a1
- feat: Add what's new modal in the sidebar (#2099) - @MohamedBassem in 474f642
- feat: Add support for user uploaded files (#2100) - @MohamedBassem in 31960fc
- refactor: consolidate multiple karakeep plugins into one package (#2101) - @MohamedBassem in 99413db
- fix: metascraper logo to go through proxy if one configured. fixes #1863 - @MohamedBassem in 737b031
- feat(extension): add tab bookmark badge indicator (#1745) - @qixing-jk in f0b0959
- fix: restore image size in grid layout - @MohamedBassem in 2056582
- deps: Upgrade react-query to 5.90 - @MohamedBassem in 560900b
- feat: Support inline toggling for todos. fixes #1931 (#1933) - @BOTkirial in 393bbd9
- fix: fix monolith to respect crawler proxy - @MohamedBassem in 085c832
- feat(rss): Add import tags from RSS feed categories (#2031) - @MohamedBassem in 5358682
- fix: fix crash in search input when query contains a percent. fixes #1941 - @MohamedBassem in 633686b
- feat: Add view options to show tag/title and control image fit. Fixes #1960 - @MohamedBassem in 34d2b48
- refactor: improve the userLocalSetting server functions - @MohamedBassem in bb00c99
- feat: Make search job timeout configurable - @MohamedBassem in 965c603
- feat: display notes on bookmark card (#2083) - @xuatz in 33f4077
- fix: Stricter SSRF validation (#2082) - @MohamedBassem in b63a49f
- fix: correctly handle composition in search input. fixes #2048 - @MohamedBassem in c6ebceb
- fix: browser service connection check using dns instead. Fixes #2080 - @MohamedBassem in c9c73d4
- fix: More memory optimizations for crawler worker. #1748 - @MohamedBassem in 40d548b
- fix: fix screenshot filepath in crawler - @MohamedBassem in 0704b8b
- docs: Add Azure configuration details for OpenAI-compatible API (#2072) - @cloudchristoph in bd9c933
- fix: Respect abort signal in admin maintenance jobs - @MohamedBassem in 8a330dc
- deps: Upgrade metascraper plugins - @MohamedBassem in e43c7e0
- deps: Upgrade metascraper-readability 5.49.6 - @MohamedBassem in 6d234de
- feat: Allow configuring inline asset size threshold - @MohamedBassem in cf3ffff
- feat: Add admin maintenance job to migrate large inline HTML (#2071) - @MohamedBassem in 2b769cb
- fix(inferance): skip token slicing when content is already witin max length - @MohamedBassem in 1713600
- refactor: generalize tidy assets queue into admin maintenance (#2059) - @MohamedBassem in 6ea5dd1
- fix: update OpenAI API to use max_completion_tokens instead of max_tokens (#2000) - @BenjaminMichaelis in 046c29d
- fix(restate): Fix priority for restate queue - @MohamedBassem in 8c0aae3
- fix(restate): Ensure that the semaphore and idProvider services are ingress private - @MohamedBassem in cdf8121
- feat: Add source field to track bookmark creation sources (#2037) - @MohamedBassem in 2defc24
- feat: support passing multiple proxy values (#2039) - @MohamedBassem in c14b693
- deps: Upgrade oxlint to 1.22 - @MohamedBassem in 88a7ffe
- feat: Add service dependency checks in the server overview page - @MohamedBassem in fda1c85
- fix(web): Add w-full to tags editor to prevent unusable narrow width (#2035) - @MohamedBassem in 7ee9416
- fix(api): Return 200 when bookmark already exists instead of 200 - @MohamedBassem in f2dec26
- tests: Add a test for the GET /bookmarks/bookmarkId/lists api - @MohamedBassem in d578038
- fix(api): Document the API for getting lists of a bookmark. fixes #2030 - @MohamedBassem in 7f138b9
- feat: make list dropdown searchable in Manage Lists modal (#2029) - @MohamedBassem in 87053d2
- fix: fix dev script shebang for better compatibility (#2019) - @maya-doshi in dcddda5
- fix: Correct grammatical errors in ...
0.27.1
This is a hotfix release for 0.27.0.
🐞 Fixes
- fix: Fix ranking of search results. fixes #1922 - @MohamedBassem in 3bae3aa
- fix: fix migration failing when no user settings are set. fixes #1919 (#1920) - @halkeye in 2cb1b28
- fix: fix 5xx on invalid api key - @MohamedBassem in 20f4e47
- fix: migrate systemd config to the new worker path on update. fixes #1889 - @MohamedBassem in e5dea95
0.27.0
0.27.0
Welcome to the 0.27.0 release of Karakeep! This release brings website-aware previews, cookies support, redesigned background jobs page, and a lot of fixes and cleanups that accumulated over the past 1.5 months. Huge thanks to our contributors in this release:
@Ahmed-Abdel-karim, @qixing-jk, @youenchene, @Drashi, @thiswillbeyourgithub, @xuatz, @haappi, @CrazyWolf13, @landonepps, @dvdpearson, @vivienbcr, @yinan-c, @packetmonkey, @liCells and
everyone who reported issues and tested changes!
If you enjoy using Karakeep, consider supporting the project here ☕️ or via GitHub here.
And in case you missed it from the last release, we now have a ☁️ managed offering ☁️ for those who don't want to self-host. We're still in private beta (you can signup for access here) and gradually letting more and more users in.
New Features 🚀
- [Experimental] Karakeep now detects specific websites and renders a customized cards for them. We're starting with 4 special renders (and are accepting contributions for more):
- X (twitter): Now shows a tweet embed by default.
- Amazon: A card that shows the product.
- Youtube: Renders a youtube embed (i.e. a player) by default.
- Tiktok: Renders a tiktok embed (i.e. a player) by default.
- If you want to see more websites supported, don't hesitate to send PRs. This is meant to evolve into karakeep understanding the different bookmark types (e.g. products, articles, etc) and showing more specialized cards for each type.
- Background Jobs page got a complete redesign to better explain the different jobs (#1551)
- Cookie support for crawling login-protected sites (#1664 by @liCells)
- You can now pass a list of cookies for karakeep to use while crawling to access session-protected websites. Checkout the documentation of
BROWSER_COOKIE_PATHhere. - Note: This is an advanced feature. Cookies are extremely sensitive. Make sure you're handling them carefully. Also note that the cookies that you set are going to be shared with all the users in your instance. SingleFile remains the recommended way for accessing login-protected websites.
- You can now pass a list of cookies for karakeep to use while crawling to access session-protected websites. Checkout the documentation of
- GIF asset support (#1876 by @Drashi)
- Updated default chrome container to v124, make sure to update yours as well.
UX Improvements ✨
- Browser Extension:
- Theme selection and theme-adapting icon support (#1894 by @qixing-jk)
- Constrain height of list and tag selectors to prevent viewport overflow (#1895 by @qixing-jk)
- Both will come in the next extension release (aka soon).
- Mobile:
- Render author, publisher, and publish date in bookmark view
- Configurable number of grid columns in the bookmark grid (#1713)
- Show loading indicator while the karakeep export is being generated (#1787/#1870 by @Ahmed-Abdel-karim)
- Hide AI settings tab if inference isn’t configured (#1781)
- Render human tags before AI tags (#1740 by @haappi)
- Preserve selected bookmark preview section in link preview via query params
- Hide bookmark actions from the navbar when no bookmark grid is shown
- Dark mode titles fixed for public lists
- Render AI summary in Markdown (#1869 by @youenchene)
- Bookmark skeleton while search results are loading
Fixes 🔧
- [Security] CSP policies on asset-serving paths
- Speed improvements:
- Avoid prefetching assets and tags which should make the tags page loading smoother
- Fixed a big (accidental) performance bottleneck in the API endpoints caused by API key validation. Re-login in your mobile app (and regenerate your API keys if you use any) for a significantly noticeable speed improvement.
- Queue DB respects configured WAL mode
- This fixes issues of slow imports and frequent locked databases
- Enabling WAL is highly advisable
- fix search query getting rest when bookmark preview is closed
- Handle lists with slashes during imports and truncate long list names for more resilient imports
- Don’t mark inference job as failed when content is missing (#1666)
- fix WebView deceleration rate on iOS (#1835 by @landonepps)
- Fix PDF detection when Content-Type includes charset (#1677)
- Rule engine: deleting an action now doesn't auto-save (#1858)
- Fix feed worker to use proxy when it's configured
- Web UI will poll for longer (incrementally) as bookmarks are being fetched.
- Fixed an issue with using SingleFile with S3 caused by unaccepted chars in filenames (#1765)
- fix admin API route to be under /v1
- fixed assets incorrectly marked as pending summarization
- Add max output tokens env variable to control the max allowed number of tokens returned by the LLM (to control the costs).
For Developers 🛠️
- Prometheus:
- Workers now also export prometheus metrics. You need to enable the metrics endpoint and the port to crawl them.
- Trpc latency was switched to histograms
karakeep_prefix was added to all exported metrics (by @CrazyWolf13), you'll need to update your dashboards.
- Enable/disable specific workers via env variables
- You can now upload video attachments to bookmarks from the API (#1847 by @packetmonkey)
Upgrading 📦
To upgrade:
- If you're using KARAKEEP_VERSION=release, run
docker compose pull && docker compose up -d. - If you're pinning it to a specific version, upgrade the version and then run
docker compose pull && docker compose up -d.
Also upgrade your chrome container to 124 if you have it pinned.
All Commits
- i18n: Sync weblate translations - Weblate in d06c85d
- fix: fix tag flicker caused by tag sorting - @MohamedBassem in d623abd
- chore: Update the agent files - @MohamedBassem in 8e95dae
- feat: Show loading indicator while file is being generated #1787 (#1870) - @Ahmed-Abdel-karim in 9aa609e
- feat: Add cookie support for browser page access - @liCells in c57fd51
- feat(workers): add worker enable/disable lists (#1885) - @MohamedBassem in 492b152
- fix(extension): constrain height to prevent viewport overflow (#1580) (#1895) - @qixing-jk in 4cc8624
- feat(extension): Add theme and dynamic icon support (#1894) - @qixing-jk in 44bc838
- deps: Upgrade the extension deps - @MohamedBassem in 4362663
- fix: fix assets being marked as pending summarization - @MohamedBassem in 14db7ae
- readme: Add floccus support to readme and docs - @MohamedBassem in 67c394e
- docs: readme mentions importers + enhancements (#1448) - @thiswillbeyourgithub in 1976c53
- feat(web): render AI summary in markdown (#1869) - @youenchene in 9dd93f8
- feat: add gif asset type support (#1876) - @Drashi in 0994814
- fix: don't mark inferenace job as failed when there's no content. fixes #1666 - @MohamedBassem in 5f87054
- fix: fix pdf detection when the header contains charset. fix: #1677 - @MohamedBassem in 517e0c1
- fix(web): Fix deleting the action in the rule engine auto saves. fixes #1858 - @MohamedBassem in 03f10c7
- fix: Fix feed worker to fetch feeds with proxy - @MohamedBassem in 03f7cc1
- fix: Change the inferance working logging when disabled to be a debug log level - @MohamedBassem in 767c083
- fix: Dont attempt to fetch rss if the user if out of quota - @MohamedBassem in a0dd73f
- refactor: Extract quota logic into its own class - @MohamedBassem in 3760d23
- fix: Reduce polling interval on meilisearch tasks - @MohamedBassem in fcfe6a5
- fix: Don't enqueue video tasks when video downlaod is disabled - @MohamedBassem in 80a1023
- fix(landing): fixed typo in FAQ (#1893) - @midhun3301 in 473845a
- fix: Incremental polling interval for ongoing crawls - @MohamedBassem in 18c1d15
- refactor: Move highlights object into models - @MohamedBassem in ac4e4fa
- refactor: Move feed object into models - @MohamedBassem in 15efda6
- release(mobile): Bump mobile version to 1.8.0 - @MohamedBassem in ce9a006
- fix(mobile): Use uncontrolled inputs for signin page - @MohamedBassem in c706469
- feat(mobile): Add a default server address during signin - @MohamedBassem in 1a4e88a
- deps: Drop ronionoss icons - @MohamedBassem in e7c9f39
- fix(mobile): Fix text bookmark editor - @MohamedBassem in be7311a
- fix(mobile): Disable the save button when bookmark is being saved - @MohamedBassem in 1e0cce7
- fix(docs): typo: Optaining -> Obtaining in 09-command-line.md (#1850) - @yinan-c in 50d426f
- doc: clarify that groups can't be negated (#1881) - @thiswillbeyourgithub in d455c70
- fix: show login button in the landing page on mobile - @MohamedBassem in 2f6fe4f
- fix: fix long worker log lines when downloading base64 images - @MohamedBassem in f17ca24
- fix: Respect wal mode for the queue db - @MohamedBassem in be2646e
- fix: handle list with slashes in their names and truncate long list names. fixes #1597 - @MohamedBassem in aecbe6a
- fix: fix move the admin route to the /v1 prefix - @MohamedBassem in f196182
- feat: Add a bookmark skeleton for search - @MohamedBassem in f1509fc
- feat(mobile): Retheme the mobile app (#1872) - @MohamedBassem in ed86f7e
- fix(mobile): Fix crash in android webview - @MohamedBassem in ec56ea3
- feat(mobile): Add edit menu item to bookmark card - @MohamedBassem in eb54bf4
- fix...
0.26.0
0.26.0
Welcome to the 0.26.0 release of Karakeep! This release focuses on user management, servers improvements, and lots of fixes. We've a new comprehensive usage stats, reader mode, search history, S3 support, and much more. As always, we have amazing contributors in this release: @xuatz, @Ashok28, @HarryPeach, @mostafa-wahied, @adumat, @alexjsp, @apo-mak, @birnam, @deepanshu2711, @hametovbr, @irobot, @kdwils, @lexafaxine, @maelp, @rodsnts, @sheyabernstein, @simplytoast1, @thiswillbeyourgithub, @vhsdream!
If you enjoy using Karakeep, consider supporting the project here ☕️ or via GitHub here.
Managed Karakeep ☁️
I have some news to share! With Pocket shutting down, I've been thinking about how to make Karakeep more accessible to a wider audience. So I've decided to start the journey of offering a managed karakeep instance to serve those who can't selfhost.
Karakeep wouldn't be where it is today without its amazing self-hosting community, and that will always remain my first priority. This managed offering is just an experiment. If it works, it could help support the development of the project. We're now starting a private beta, and you can join the waitlist here!
New Features 🚀
- User Management & Authentication:
- Added email verification support for new user registrations
- Implemented password reset and forgot password functionality
- Added user invitation system
- Revamped signin/signup pages with better UX
- Added per-user bookmark count / storage quotas
- New delete account feature for users who want to remove their data
- Search History: You'll now get search suggestions from your karakeep search history (#1627 by @lexafaxine)
- File Upload Support: Added markdown file upload support (#1672 by @rodsnts)
- Usage Statistics: New user stats page showing tons of stats about your bookmarks and usage of karakeep (#1523)
- New Reader Mode: A new revamped reader mode with customizable font type and size (got jealous of how that of linkwarden looked!)
- Proxy Support: Added proper proxy support for crawler network requests (#1265)
- Server Improvements:
- S3 Storage Support: Option to store assets in S3-compatible storage (#1703)
- Prometheus Monitoring: We're now exposing a Prometheus endpoint for monitoring stats about the server (#758)
- Rate Limiting: Added optional API rate limiting
- Large HTML content now stored in asset storage (instead of db) for better performance
- Allow enabling WAL mode on the database (opt-in, recommended)
- Allow customizing parallelism for workers (#724)
- Reddit Crawling: Reddit posts will now get a more relevant banner image (#1302 by @birnam)
UX Improvements ✨
- Prioritize crawling user-added links over bulk imports (#1717)
- Mobile app now has user setting for default bookmark view mode (#1723 by @xuatz)
- More lenient JSON parsing for LLM responses (#1267)
- Tweaks to mobile app icon padding with iOS tinted variant (#1620 by @alexjsp)
- Minor styling changes to the "All Tags" page
- Added icons to bookmark preview selectors
- Clicking on search tooltip now opens the search language guide (#1540)
- Added confirmation dialog for user deletion in admin panel (#1649 by @deepanshu2711)
- Added tag clearing functionality to tag list in the mobile app(#1595 by @Ashok28)
- Always visible search bar in the mobile app's tags list (#1596 by @Ashok28)
Fixes 🔧
- Fixed OAuth creation failure due to missing UserSettings table (#1583)
- Fixed webhook not firing on deletion (#1613)
- Normalized leading hashes in tag names (#1351 by @mostafa-wahied)
- Fixed import/export icons being swapped (#1682 by @HarryPeach)
- Disabled metascraper readability plugin that was causing worker stuckness
- Fixed jsdom console logs leaking into worker logs
- Collapsed long runs of repeated whitespaces before tokenization to speed it up (#1622)
- Fixed public image signed tokens for better caching
- Fixed clear parent button in edit list dialog (#1742)
- Fixed running workers in production without tsx for lower resource usage (#1673)
- Fixed get-lists MCP tool (#1697 by @hametovbr)
- Fixed image quality slider in mobile showing excessive decimal places (#1735)
- Fixed mobile app crash when bookmark doesn't have archive or screenshot (#1584)
- Migrated from Puppeteer to Playwright (#1296 by @maelp)
- Video downloader now properly logs yt-dlp errors (#1624 by @irobot)
For Developers 🛠️
- Added Helm chart support (link). (#1350 by @sheyabernstein)
- Build & Deployment:
- A much fancier linux installation script (#1576 by @vhsdream)
- Added start-dev.sh script for easier development (#1628 by @xuatz)
- Upgraded to pnpm@9.15.9 (#1544 thanks to @xuatz)
- Migrated from ESLint to oxlint for faster linting (#1642 by @xuatz)
- We now have a
CLAUDE.mdfile to help the vibe coders out there.
Community Projects 💡
Karakeeper
3rd Party Safari Extension - by @simplytoast1
Karakeep Homedash
by @CodeJawn
Screenshots 📸
Usage Stats
The new Sign In page
Recent Searches
Reader Mode
Upgrading 📦
To upgrade:
- If you're using KARAKEEP_VERSION=release, run
docker compose pull && docker compose up -d. - If you're pinning it to a specific version, upgrade the version and then run
docker compose pull && docker compose up -d.
Note: This release includes database schema changes. The migration will run automatically on startup.
All Commits
- fix(web): Remove horizontal scroll in PWA's header - @MohamedBassem in 202924c
- feat(web): Slightly nicer looking tags page - @MohamedBassem in 61a6ac8
- fix: Run workers in prod without tsx. Fixes #1673 - @MohamedBassem in 2cce45b
- deps: bump s6-overlay version (#1750) - @adumat in 4fe541c
- fix: Fix edit list modal not clearing parent - @MohamedBassem in b992fad
- feat: Add a proper reader mode - @MohamedBassem in 49f38ef
- fix: Increase crawler max worker count in tests - @MohamedBassem in 4a4ff37
- feat: Allow setting browserless crawling per user - @MohamedBassem in 4e9544b
- feat: Allow enabling journaling mode on the db - @MohamedBassem in 64a0d91
- fix(mobile): Fix image quality slider showing lots of decimal places. fixes #1735 - @MohamedBassem in ae1352f
- fix: Rename the proxy settings such that they don't interfer with other requests - @MohamedBassem in 1da8b45
- chore: Move the helm charts to their own repo - @MohamedBassem in f3feb59
- fix(web): Fix the clear parent button in the edit list dialog. Fixes #1742 - @MohamedBassem in 8bd3b58
- feat(mobile): Add user setting for default bookmark view mode (#1723) - @xuatz in fe69ca8
- fix: Clear search history on logout - @MohamedBassem in a362756
- feat: adding search history #1541 (#1627) - @lexafaxine in 39fcda0
- feat: markdown file upload support (#1647) (#1672) - @rodsnts in ecb13ce
- Revert "fix: Fix the types of the bookmark types in the db query" - @MohamedBassem in 0addc7b
- fix: Fix the types of the bookmark types in the db query - @MohamedBassem in 4ba3e80
- feat: Add stripe based subscriptions - @MohamedBassem in d1d5263
- feat: Add delete account support - @MohamedBassem in 845ccf1
- fix: Drop auth failure logger - @MohamedBassem in f8ae986
- feat: Add proper proxy support. fixes #1265 - @MohamedBassem in 360ef9d
- feat(api): Expose the update user API in the openapi specs - @MohamedBassem in 1105b4a
- build: Restrict claude actions invocations - @MohamedBassem in ba7a87f
- fix(web): Fix the alignment in the user options page - @MohamedBassem in 49648c4
- deps: Upgrade typescript to 5.8 - @MohamedBassem in 6b77736
- fix: Add ratelimiting to bookmark recrawl and summarization - @MohamedBassem in 21076b8
- deps: Upgrade drizzle - @MohamedBassem in f4436e1
- fix(web): Fix dark mode in auth pages - @MohamedBassem in 9231119
- fix(tests): Fix missing mock in trpc tests - @MohamedBassem in 8c3bf48
- fix: Prioritize crawling user added links over bulk imports. fixes #1717 - @MohamedBassem in 9fb3ef6
- refactor: Move db interactions into the trpc routes - @MohamedBassem in 8e3013b
- feat: Support forget and reset password - @MohamedBassem in 140311d
- chore: Add claude code github action - @MohamedBassem in 385f9f0
- feat(ui): Revamp the signin/signup page - @MohamedBassem in db9a02b
- feat: Add API ratelimits - @MohamedBassem in 613137f
- feat: Add invite user support - @MohamedBassem in 333d161
- feat: Add support f...
0.25.0
0.25.0
Welcome to the 0.25.0 release of Karakeep! This release addresses a lot of the top most upvoted feature requests. You can now share lists publicly, generate RSS feeds from your lists, reader view & pdf support in the mobile app, bi-directional browser bookmark sync using floccus, maintaining list structure on imports and a lot more. As usual, we have a lot of contributors in this release: @xuatz, @digithree, @thiswillbeyourgithub, @codelove77, @SConaway, @vhsdream, @AdrianAcala, @spasche, @SalGnt, @haappi, @yuikisaito, @jk, @jakeasmith, @Mxrk, @WilliamAGH, and @SteffoSpieler!
If you enjoy using Karakeep, consider supporting the project here ☕️ or via GitHub here.
New Features 🚀
- Public Lists are here: You can now share your curated lists publicly! (#1511). Example list here.
- RSS Feed Generation: Create and share RSS feeds directly for your lists (#1507)
- Overdue Mobile Improvements:
- Added reader mode/screenshot/archive views to bookmark previews on mobile (pending app release) (#1509) - @digithree
- View PDFs directly in the mobile app and share them to karakeep from the share sheet as well (#1519, #1494) - @codelove77
- Import / Export improvements:
- Added NETSCAPE file export format support (#1374) - @yuikisaito
- When importing netscape style bookmarks into karakeep, your lists will be re-created on karakeep. Preserving lists from other sources is planned.
- Preserve archived status when importing from omnivore or pocket (RIP).
- AI Auto-Summarization: Automatic summarization for new bookmarks can be now be enabled with
INFERENCE_ENABLE_AUTO_SUMMARIZATION=true(#1163) - Floccus Integration: Karakeep now supports bi-directional sync with browser bookmarks using Floccus. This will be available in the next Floccus release within a week or two.
UX Improvements ✨
- The user setting page got fully redesigned to look nicer given that we're starting to have more user settings.
- Tab-based layout for bookmark previews on small screens - @thiswillbeyourgithub
- Save pages faster with a dedicated extension shortcut (#1532) - @SConaway
- Configure the default behavior when clicking on a bookmark. Either go to source, or expand the details.
- Restored ability to properly sort by creation date for search pages (#1392) - @xuatz
- You can now decide what you want to do when using the
singlefileextension on an existing bookmark. Check out how to customize it here. - Configure whether you want to see archived bookmarks in lists or tags or not (#1505) - @xuatz
- Added Algolia-based search to docs
- Added "deleted" webhook event (#1464) - @SalGnt
- The
Summarize with AIbutton no longer shows up if you don't have AI configured - You can now disable auto AI tagging if not needed
- Allow enabling/disabling RSS feeds collection
- Added US English to folks who can't stand the British English - @WilliamAGH
- Improved the positioning of the highlights menu on mobile devices - @Mxrk
- Moved delete button in bookmark menu in the app for better ergonomics
Fixes 🐛
- Started using proper tokenizer for content truncation before inference. This should prevent the truncation of the model prompt leading to better accuracy and instruction adherence.
- Preserve unsaved changes during tag modifications while editing bookmarks (#1515) - @AdrianAcala
- Fixed tag drag-and-drop issues on Firefox (#1016) - @haappi
- Added log rotation for linux installations (#1471) - @vhsdream
- You can now run Karakeep container as a non-root user for better security.
For Developers 🛠️
- Added
?sortOrderparameter for resource sorting (#1398) - @xuatz - New endpoint for tag creation
- PUT operations for bookmarks are now idempotent (e.g. adding to list) (#1427) - @xuatz
- Added PATCH method support to CORS headers (#1489) - @spasche
- Documentation:
- Added documentation for the asset upload APIs
- Fixed JSON examples in MCP documentation (#1400, #1419) - @jk, @jakeasmith
- Expanded Meilisearch upgrade guides (#1436) - @thiswillbeyourgithub
Community Projects 💡
- Python-based SDK for Karakeep: karakeep-python-api - @thiswillbeyourgithub
- Freshrss Importer: freshrss-to-karakeep - @thiswillbeyourgithub
Screenshots 📸
The Share List Modal
Tabbed Layout on smaller screens
Reader Mode in the app
Upgrading 📦
To upgrade:
- If you're using KARAKEEP_VERSION=release, run
docker compose pull && docker compose up -d. - If you're pinning it to a specific version, upgrade the version and then run
docker compose pull && docker compose up -d.
All Commits
- release(extension): Bump extension version to 1.2.6 - @MohamedBassem in 5b52066
- release(mobile): Bump mobile version to 1.7.0 - @MohamedBassem in 3c48bb8
- ci: Fix manifest formatting - @MohamedBassem in b93f3a4
- feat(mobile): Add support for viewing PDFs (#1519) - @codelove77 in 0fde108
- fix(mobile): Move the delete button to the end in the bookmark menu - @MohamedBassem in 421e3e8
- feat(mobile): add reader/screenshot/archive view to bookmark preview (#1509) - @digithree in ec31a97
- fix(build): karakeep-linux.sh fix use 'append' instead of 'file' for log (#1471) - @vhsdream in 09e5dd6
- feat(extension): add a keyboard shortcut to save page (#1532) - @SConaway in ee51745
- feat(ui): Improve the look of the public bookmarks page - @MohamedBassem in 3a0f5fa
- fix: Use a new public list metadata endpoint for metadata generation - @MohamedBassem in bc65a73
- docs: Add asset APIs to the openapi spec - @MohamedBassem in a98f023
- fix(web): Smaller card titles in the user info page - @MohamedBassem in 4e481f4
- fix: preserve unsaved title changes when modifying bookmark tags in the edit dialog (#1515) - @AdrianAcala in f53ad0a
- feat(web): Redesign the user settings page - @MohamedBassem in 090c0d1
- readme: Small readme fixes - @MohamedBassem in 39feafe
- fix(web): Drop the experimental icon from rss feeds - @MohamedBassem in bf4cbd1
- feat: Drop corepack dep in prod and allow running as non-root. Fixes #606 - @MohamedBassem in 169e14d
- i18n: Sync weblate translations - 2246083
- Merge remote-tracking branch 'weblate/main' - @MohamedBassem in 7c245aa
- feat: Maintain list structure when importing from netscape. Fixes #538 - @MohamedBassem in 1bae66f
- feat: Allow specifying the overwrite mode for singlefile archives. Fixes #1125 - @MohamedBassem in e59be24
- feat: Add support for public lists (#1511) - @MohamedBassem in ea1d002
- feat: add user customisable default archive display behaviour (#1505) - @xuatz in 3afe1e2
- docs: mention the list of example scripts for the community api (#1484) - @thiswillbeyourgithub in 8784c73
- feat(mobile): Add PDF support to share extension (#1494) - @codelove77 in 5f47340
- feat: Generate RSS feeds from lists (#1507) - @MohamedBassem in 9695bba
- refactor: Move bookmark utils from shared-react to shared - @MohamedBassem in b218118
- docs: Add agolia based search - @MohamedBassem in 3e860b7
- doc: mention meilisearch in the updating section (#1472) - @thiswillbeyourgithub in 7f04bd1
- feat: Allow PATCH method in CORS headers (#1489) - @spasche in 915aeb3
- fix: Fix end icon in smart list input overlapping with text. Fixes #1379 - @MohamedBassem in d903c7f
- fix: Show list options menu on list sidebar hover - @MohamedBassem in a1f7707
- fix: Truncate the RSS feed url - @MohamedBassem in e0ed727
- chore: Add localhost labs to README and landing - @MohamedBassem in e13809f
- fix(landing): Fix the favicon location for the landing page - @MohamedBassem in 96bce30
- feat: Add "deleted" webhook event (#1464) - @SalGnt in 8a927e9
- docs: Update the privacy policy - @MohamedBassem in 37c18b8
- feat: Allow defaulting to reader mode when clicking on bookmarks. Fixes #662 - @MohamedBassem in 0965217
- docs: Update database docs (#1451) - @haappi in 5f3fe5d
- feat: Read the archive status from omnivore and pocket. Fixes #703 - @MohamedBassem in c6d21af
- build: Regen openAPI spec - @MohamedBassem in 6af14e9
- feat: Disable the AI summary button if AI is not configured. Fixes #649 - @MohamedBassem in 8592985
- feat: Add AI auto summarization. Fixes #1163 - @MohamedBassem in 2743d9e
- feat(api): Expose the endpoint to create a new tag - @MohamedBassem in a5ae67c
- fix(web): Switch to a tab view in small screens for bookmark previews - @thiswillbeyourgithub in 053d1a9
- build: Fix format error - @MohamedBassem in 0e734b6
- fix(web): Fix tag drag and drop merging on firefox .Fixes #1016 (#1309) - @haappi in c2e26f9
- refactor: Migrate from NextJs's API routes to Hono based routes for the API (#1432) - @MohamedBassem in 3505cb7
- doc: document how to upgrade meilisearch / migrate meilisearch db (#1436) - @th...



