v0.22.0
karakeep-app/karakeepv0.22.0Feb 2, 2025by MohamedBassem
AI Summary
A lightweight release introducing Webhook support, SingleFile integration, bookmark sorting, and various stability fixes.
Key Highlights
- Webhook Support for bookmark events
- SingleFile Extension Support
- Bookmark Sorting (Newest/Oldest)
- Summarization Prompt Customization
New Features
- Search by bookmark types (is:link, is:text, is:media)
- Smart list dialog query language documentation
- ModifiedAt timestamp tracking and API exposure
- Kubernetes documentation and template improvements
- Fixed mobile image uploads
- Fixed Ubuntu/LXC installation dependency issue
- Fixed background job timeouts causing duplicate archives
- Fixed mobile sign-in page flickering
- Fixed search query parsing for tags starting with 'and'/'or'
- Fixed highlight feature interfering with content copying
- Removed need for `NEXTAUTH_URL_INTERNAL`
- Fixed bulk actions failing with 150+ bookmarks
- URL qualifier now matches asset source URLs
- Firefox user agent for RSS fetcher
- Tags attached by humans hidden from AI tags section
- Increased default max upload size to 50MB
- Added Hungarian translation
Full Release Notes
# 0.22.0 Welcome to the `0.22.0` release of Hoarder! This is a lightweight release given the recent events. This release introduces Webhook support, SingleFile support, bookmark sorting, and a lot of fixes! As usual, welcoming our new contributors @hanguofeng, @dakshpareek, @danielvigaru, @techtrd & @meysam81 (and a lot more translators on weblate)! > If you enjoy using Hoarder, consider supporting the project [here ☕️](https://buymeacoffee.com/mbassem) or via GitHub [here](https://github.com/sponsors/MohamedBassem). # New Features 🚀 * **Webhook support** (by @hanguofeng): Hoarder can now be configured to send webhooks whenever a new bookmark is created/edited. You can use that to trigger further automation/actions in external apps. * **SingleFile Support**: Hoarder now supports being a destination for the [SingleFile](https://chromewebstore.google.com/detail/singlefile/mpiodijhokgodhhofbcjdecpffjipkle?hl=en) extension. This allows you to store content from websites that requires authentication for example which wasn't possible before. Read more about how to configure it [here](https://docs.hoarder.app/next/Guides/singlefile). * This is an experimental feature and is meant to be a stopgap until native support for it in the extension is added. * Currently, screenshotting for websites archived this way is not supported. We're planning to add it in a future release. * **Summarization Prompt Customization**: Similar to the tagging prompts, you can now customize the summarization prompt with your own custom rules in the "AI Settings" page. * **Bookmark Sorting** (by @dakshpareek): You can now sort your bookmark grid by newest/oldest. # UX Improvements ✨ * You can now search by bookmark types with the new search qualifiers `is:link`, `is:text` or `is:media`. * Smart list dialog now contains a link to the query language documentation and also shows the parsed query as you write it. * @danielvigaru fixed the margins of the lists page in the mobile app. # For Developers 🛠️ * Hoarder now tracks bookmark modification times and exposes it in the`modifiedAt` field in the bookmark schema. This can be useful that uses the API for syncing changes. * @techtrd landed a bunch of improvements to the kubernetes documentation and templates! Check it out at [this link](https://docs.hoarder.app/next/Installation/kubernetes). # Fixes 🐛 * Mobile image uploads has been broken for a while (I'm sorry!). This is now fixed and pending google/apple's review for the release (it's a client side bug). * Installing hoarder on ubuntu/LXC containers got broken last week due to one un pinned linter dependency. This is now fixed. * Background job timeouts sometimes used to result into duplicate full page archives (which eats a ton of storage). This should be now fixed. * Mobile app sign in page used to sometimes flicker rapidly if you enter it with the keyboard open (_I hate mobile app development!_). This is now fixed. * Search queries for tags/lists that starts with "and"/"or" (such as #android) where not getting correctly parsed. This is now fixed. * The highlight feature from last release was making it hard to copy content from articles you saved. This is now fixed. * You no longer need to set `NEXTAUTH_URL_INTERNAL` as it's now baked into the docker image. * Doing a bulk action with 150+ bookmarks selected no longer fails. * The `url` qualifier in search now also matches the source URLs of assets (e.g. when you clip a quote from a website using the extension). * RSS fetcher now uses firefox's user agent thanks to @meysam81. * Tags that was attached at least once by humans will no longer show up in the "AI tags" section in the "All Tags" page. * Default max upload size has been increased to 50MB instead of 4MB. * Spanish translation wasn't working, this is fixed now. We've also added Hungarian translation. # Community Projects 💡 *Checkout our community projects page [here](https://docs.hoarder.app/community-projects). We're featuring two community projects in this release:* ### Obsidian Sync Plugin By @jhofker An Obsidian plugin that syncs your Hoarder bookmarks with Obsidian, creating markdown notes for each bookmark in a designated folder. Get it [here](https://github.com/jhofker/obsidian-hoarder/), or install it directly from Obsidian's community plugin store ([link](https://obsidian.md/plugins?id=hoarder-sync)). ### Hoarder's Pipette By @DanSnow A chrome extension that injects hoarder's bookmarks into your search results (inspired by [linkding-injector](https://github.com/fivefold/linkding-injector)). Get it [here](https://dansnow.github.io/hoarder-pipette/guides/installation/). # Screenshots 📸 ### Webhook Settings <img width="982" alt="Screenshot 2025-02-02 at 5 03 26 PM" src="https://github.com/user-attachments/assets/19063d9c-23a8-4536-8db9-f4290542b19b" /> ### Bookmark Sorting <img width="215" alt="Screenshot 2025-02-02 at 5 04 02 PM" src="https://github.com/user-attachments/assets/7cbde5ca-d711-488b-b60c-d717141566e9" /> ### Query Explanation in List Dialogs <img width="597" alt="Screenshot 2025-02-02 at 5 16 23 PM" src="https://github.com/user-attachments/assets/8ab290de-6468-4c8a-bfa7-3a048c9968c8" /> # Upgrading 📦 To upgrade: * If you're using HOARDER_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 * fix: Hide tags that were attached once by humans from AI tags - @MohamedBassem in e03997a * ci: Fix build by regenerating the open API spec - @MohamedBassem in d95cebf * fix: Fix node22 error in worker container. Fixes #962 - @MohamedBassem in c0a4af7 * fix: Dont rearchive singlefile uploads and consider them as archives - @MohamedBassem in 68e27ad * feat: Change default max upload size to 50MB up from 4MB - @MohamedBassem in b59fe2e * docs: Update single file docs - @MohamedBassem in 3cd490e * release(mobile): Bump mobile version to 1.6.8 - @MohamedBassem in 9f11ffb * fix(mobile): Add the email trimming that was removed by mistake - @MohamedBassem in 70e7239 * fix(mobile): Fix flicker on sign in page. Fixes #911 - @MohamedBassem in b643c59 * fix(mobile): margin for "Lists" tab content (#927) - @danielvigaru in 5c14735 * docs: Feature obsidian's plugin and hoarder's pipette in community projects - @MohamedBassem in a8ac16e * feat: Update the last modifiedAt timestamp when tags of the bookmark change - @MohamedBassem in 7d39d69 * feat(api): Expose the modifiedAt date in the bookmarks API - @MohamedBassem in cf85a79 * feat(web): Add the query explainer to the smart list modal - @MohamedBassem in c52a1b4 * fix: Fix search query parsing to allow and/or to be identifiers. Fixes #935 - @MohamedBassem in 1395545 * fix: Fix missing handling for AbortSignal in inference client - @MohamedBassem in a698aea * fix: Abort all IO when workers timeout instead of detaching. Fixes #742 - @MohamedBassem in fd7011a * deps: Upgrade typescript to 5.7 - @MohamedBassem in 0893446 * ci: Remove lint:ws from the github action - @MohamedBassem in ba9f0a2 * feat: Add a new modifiedAt field to bookmarks table. Fixes #952 - @MohamedBassem in ab88f59 * build: Remove sherif from the prod installation path - @MohamedBassem in 76f4e35 * build: Add logs to the linux installation script - @MohamedBassem in 4862bbc * i18n: Fix spanish language code. Fixes #925 - @MohamedBassem in deef30e * build: Fix unsync-similar-dependencies error (#942) - @henrikno in 32d8513 * readme: Add trademark disclaimer - @MohamedBassem in b2c795c * build: Fix CI error because of mismatched cmdk version - @MohamedBassem in de42f01 * docs: Various Kubernetes deployment improvements (#862) - @techtrd in 8a07b62 * feat: Change webhooks to be configurable by users - @MohamedBassem in cddaefd * chore: set firefox user-agent for rss reader (#908) - @meysam81 in 64f24ac * feat(webhook): Implement webhook functionality for bookmark events (#852) - @hanguofeng in b9cce5d * docs: Fix type in intro.md (#901) - @zazathomas in b323573 * fix(mobile): Use external blob encoder to fix mobile image uploads. Fixes #800 - @MohamedBassem in 219e16a * fix: Fix url matcher not matching sourceUrl. Fixes #874 - @MohamedBassem in bbbf335 * fix: Limit concurrency of bulk actions. Fix #773 - @MohamedBassem in 38d403b * feat: Add ability to filter by bookmark type - @MohamedBassem in 9fd26b4 * build: Bake a default NEXTAUTH_URL_INTERNAL in the docker image - @MohamedBassem in c5298cf * feat: Add Bookmark Sorting Feature (#812) - @dakshpareek in b6293d1 * feat: Support customizing the summarization prompt. Fixes #731 - @MohamedBassem in b8bd7d7 * fix: Keep user selection on text highlight - @MohamedBassem in 1ec21b6 * feat: Add support for singlefile extension uploads. #172 - @MohamedBassem in 1050617 * docs: Fix openAI pricing link (#816) - @JackBailey in 107d923 * docs: Fix type in the docs hightly -> highly (#853) - @andygeorge in 869fa46