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 202924c9
- feat(web): Slightly nicer looking tags page - @MohamedBassem in 61a6ac83
- fix: Run workers in prod without tsx. Fixes #1673 - @MohamedBassem in 2cce45b7
- deps: bump s6-overlay version (#1750) - @adumat in 4fe541c4
- fix: Fix edit list modal not clearing parent - @MohamedBassem in b992fadd
- feat: Add a proper reader mode - @MohamedBassem in 49f38efd
- fix: Increase crawler max worker count in tests - @MohamedBassem in 4a4ff37b
- feat: Allow setting browserless crawling per user - @MohamedBassem in 4e9544b0
- feat: Allow enabling journaling mode on the db - @MohamedBassem in 64a0d918
- fix(mobile): Fix image quality slider showing lots of decimal places. fixes #1735 - @MohamedBassem in ae1352f3
- fix: Rename the proxy settings such that they don't interfer with other requests - @MohamedBassem in 1da8b458
- chore: Move the helm charts to their own repo - @MohamedBassem in f3feb599
- fix(web): Fix the clear parent button in the edit list dialog. Fixes #1742 - @MohamedBassem in 8bd3b586
- feat(mobile): Add user setting for default bookmark view mode (#1723) - @xuatz in fe69ca8c
- fix: Clear search history on logout - @MohamedBassem in a3627569
- feat: adding search history #1541 (#1627) - @lexafaxine in 39fcda01
- feat: markdown file upload support (#1647) (#1672) - @rodsnts in ecb13cec
- Revert "fix: Fix the types of the bookmark types in the db query" - @MohamedBassem in 0addc7bc
- fix: Fix the types of the bookmark types in the db query - @MohamedBassem in 4ba3e804
- feat: Add stripe based subscriptions - @MohamedBassem in d1d52634
- feat: Add delete account support - @MohamedBassem in 845ccf1a
- fix: Drop auth failure logger - @MohamedBassem in f8ae9866
- feat: Add proper proxy support. fixes #1265 - @MohamedBassem in 360ef9db
- feat(api): Expose the update user API in the openapi specs - @MohamedBassem in 1105b4a4
- build: Restrict claude actions invocations - @MohamedBassem in ba7a87fe
- fix(web): Fix the alignment in the user options page - @MohamedBassem in 49648c4c
- deps: Upgrade typescript to 5.8 - @MohamedBassem in 6b77736b
- fix: Add ratelimiting to bookmark recrawl and summarization - @MohamedBassem in 21076b83
- deps: Upgrade drizzle - @MohamedBassem in f4436e19
- fix(web): Fix dark mode in auth pages - @MohamedBassem in 92311191
- fix(tests): Fix missing mock in trpc tests - @MohamedBassem in 8c3bf481
- fix: Prioritize crawling user added links over bulk imports. fixes #1717 - @MohamedBassem in 9fb3ef6f
