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