v0.20.0
karakeep-app/karakeepv0.20.0Dec 22, 2024by MohamedBassem
AI Summary
This release focuses on internationalization, a new markdown editor, mobile app enhancements, and a minimal installation option.
Key Highlights
- Internationalization (i18n) Support
- New WYSIWYG Markdown Editor
- Mobile App Improvements
- Broken Link Management
- Minimal Installation (Chrome optional)
New Features
- UI Languages: English, German, French, Swedish, Simplified/Traditional Chinese
- WYSIWYG markdown preview for notes
- Mobile tag management
- New "Info" page for editing title/tags/lists
- Native-like mobile UI elements
- Broken link status code storage
- Chrome as optional dependency
- Debian/Ubuntu one-click installation script
- Proxmox LXC container script
- PikaPods hosting option
- Tag placeholders ($tags, $aiTags, $userTags) in AI prompts
- Community projects documentation page
- Raycast and Alfred workflows
- Admin warnings for misconfigurations
- Trimmed email whitespace on signin
- Worker reliability improvements (bundled pnpm, adblock timeout, screenshot timeout)
Full Release Notes
Welcome to the `0.20.0` release of Hoarder! This release adds internationalization support, new markdown editor, mobile app improvements, broken link management and more! As usual, we're welcoming our new contributors: @Tukks, @vhsdream, @sweepies, @PeterDaveHello, @wuast94 and @eltociear! > If you're enjoying Hoarder, you can consider supporting it [here ☕️](https://buymeacoffee.com/mbassem) or via github [here](https://github.com/sponsors/MohamedBassem). # New Features * **Hoarder's UI now comes in multiple languages**! * You can change the language of the UI now to English, German, French, Swedish, Simplified and Traditional Chinese. * If you want to see your language there or want to improve some existing translation, you can do that via weblate [here](https://hosted.weblate.org/engage/hoarder/). * **New experimental WYSIWYG markdown editor** for notes by @Tukks! * You'll now get a preview of the notes you're writing as you're writing them! * **A bunch of mobile app improvements**: * You can now manage tags from the app. Super overdue, I know. * We have a new cleaner "info" page with the ability to edit title/tags/lists all in one page. * The mobile app now looks *slightly* more native. We've got rid of the dedicated search tag, switched to native modals, and used native page headers when possible. * Note: The apps are yet to be approved by apple & google. * **Broken Link management**: * Hoarder now stores the status codes it got when crawling websites which will allow you to identify and decide what to do about broken links. * This is now mainly useful for people doing large imports into hoarder, but in the future, we'll use the same mechanism to support automatic link liveness healthchecks. * **Chrome as an optional dependency (aka minimal installation)**: * Chrome is no longer a hard dependency. This is useful for people running hoarder in resource constrained environments. * If you don't specify a `BROWSER_WEB_URL`, hoarder will fallback to a plain HTTP requests to the websites you add instead of crawling them with chrome. * Without chrome, you'll lose the ability to get screenshots from the websites you crawl, and websites that heavily rely on javascript won't work properly. * With chrome and meilisearch being optional dependencies, you can now get a single-container minimal installation of hoarder by sacrificing some of the features. * **New installation methods**: * Debian / Ubuntu one click installation script ([docs](https://docs.hoarder.app/next/Installation/debuntu)) by @vhsdream * If you're a proxmox user, you can also get a one click LXC container running hoarder using [proxmox's helper scripts](https://community-scripts.github.io/ProxmoxVE/scripts?id=hoarder) again thanks to @vhsdream. * PikaPod ([docs](https://docs.hoarder.app/next/Installation/pikapods)) are now offering paid hoarder hosting (~$3/month) for the less tech savvy folks out there. Disclaimer: they're sharing some of their revenue from Hoarder with us. * **Tags placeholder in AI prompt customization:** * You can use the placeholders `$tags`, `$aiTags`, `$userTags` in the prompt. These placeholders will be replaced with all tags, ai generated tags or human created tags when automatic tagging is performed thanks to @kamtschatka. * With that, you can use this to instruct the LLM to only use existing tags (instead of coming up with new ones). Be careful though if you have a lot of tags as it might increase the cost of the tagging significantly. * This mechanism is just a temporary solution. We're working on a mechanism to support this natively, in a much cheaper way. * **New community projects documentation page** ([here](https://docs.hoarder.app/next/community-projects)): * With the release of the REST API in the last version, we started seeing some community projects pop up. So we're starting a new documentation page to list them out for visibility. * Hoarder now has a **[raycast extension](https://www.raycast.com/luolei/hoarder)** and an **[alfred workflow](https://www.alfredforum.com/topic/22528-hoarder-workflow-for-self-hosted-bookmark-management/)** thanks to @foru17 and @yinan-c. Go install them now! * If you develop a new extension for hoarder, let us know as we'd love to feature it in that page! * Others: * We've added the ability to show admin warnings in the admin panels for misconfigurations or future migrations. # UX Improvements * We're now trimming email addresses out of whitespaces during signin thanks to @sweepies! # Fixes * AI summarization sometimes included the LLM's response to the prompt (e.g. "Ok, I'll summarize ..."). We're now instructing the model to only respond with the summary. * Fix broken homepage when hitting a bookmark with an invalid image URL. * Multiple worker reliability improvements specially in countries with restricted internet. * The worker container doesn't need to download pnpm on startup anymore as it's now bundled in the container. * The crawler's adblock list download now has a timeout and can be completely bypassed with `CRAWLER_ENABLE_ADBLOCKER=false`. * The worker was sometimes hanging in the screenshot call. This now has a timeout as well. # Screenshots ## The new Markdown Editor <img width="710" alt="Screenshot 2024-12-22 at 12 59 10 PM" src="https://github.com/user-attachments/assets/9eadef85-679c-4c21-b2f6-432f75d7056d" /> ## Broken Link Management <img width="978" alt="Screenshot 2024-12-22 at 1 04 43 PM" src="https://github.com/user-attachments/assets/3cadceb4-deb3-4588-af7a-5b2617ba5266" /> ## Mobile App Improvements New options at the bottom of the bookmark preview page <img src="https://github.com/user-attachments/assets/a192f806-0431-4390-afc9-641bbfb90967" width="300px" alt="3EA11BCA-C06A-4681-AC44-D87DB9BC8954"> Tag Management <img src="https://github.com/user-attachments/assets/a6cdf234-ff11-4e91-ba85-8850f2cd12a8" width="300px" alt="9A4562B4-9429-41CA-AFCC-0A45941D3ACF"> The new info page <img src="https://github.com/user-attachments/assets/56b52981-e556-49fa-9db5-b3445984cd76" width="300px" alt="E679CFD4-7EEB-4910-8FD6-B1EC92090D81"> ## Admin Notices <img width="251" alt="Screenshot 2024-12-22 at 12 57 10 PM" src="https://github.com/user-attachments/assets/943ae106-8eec-4f29-a145-766531ef9d19" /> <img width="979" alt="Screenshot 2024-12-22 at 12 57 20 PM" src="https://github.com/user-attachments/assets/a73f734c-9501-4d7c-b01b-02d5df1c7cdb" /> ## Raycast extension and Alfred workflows > *Those screenshots are from the authors of the extensions.* [Raycast extension](https://www.raycast.com/luolei/hoarder) by @foru17  [Alfred workflow](https://www.alfredforum.com/topic/22528-hoarder-workflow-for-self-hosted-bookmark-management/) by @yinan-c  # 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 * i18n: Enable the Swedish translation - @MohamedBassem in e3b8cda * i18n: Merge translations from weblate - @MohamedBassem in ab1f49b * feature: Add an admin notice about the usage of the legacy container images - @MohamedBassem in 4bfb3b4 * release(mobile): Bump mobile version to 1.6.7-4 - @MohamedBassem in 2245887 * deps: Upgrade nextjs to 14.2.15 - @MohamedBassem in 7c05bc8 * deps: Upgrade prettier to 3.4.2 - @MohamedBassem in 1aa7639 * docs: Add the community projects page to docs - @MohamedBassem in 973d552 * feature: WYSIWYG markdown for notes. Fixes #701 (#715) - @Tukks in 40c5262 * Translated using Weblate (German) - @murray3k in 14f8937 * Translated using Weblate (Dutch) - Guido (via weblate) in 17fdd93 * Added translation using Weblate (Dutch) - Guido (via weblate) in 25ebd8e * Translated using Weblate (Swedish) - Marcus skoding (via weblate) in 20968ec * Added translation using Weblate (Swedish) - Marcus skoding (via weblate) in 883087b * fix: trim whitespace from email on signin page (#714) - @sweepies in 16f2ce3 * fix(mobile): useLayoutEffect for navigator changes - @MohamedBassem in 6fba9d1 * ui(mobile): Use native search bar for manage tags page - @MohamedBassem in deadcb9 * fix(mobule): Fix keyboard issues in the info screen - @MohamedBassem in 6055f50 * ui(mobile): Make page titles more native - @MohamedBassem in f4b2bac * feature: Store crawling status code and allow users to find broken links. Fixes #169 - @MohamedBassem in 705d539 * docs: Add Linux install script and documentation (#707) - @vhsdream in a7b1386 * feature(workers): Allow running hoarder without chrome as a hard dependency. Fixes #650 - @MohamedBassem in 1810100 * fix(mobile): Use keyboard avoiding view in the info page - @MohamedBassem in 5a49691 * fix(extension): Fix dev build. Fixes #670 - @MohamedBassem in 1a2b600 * fix: Instruct the model to only respond with the summary when summarizing content - @MohamedBassem in b9f1a59 * fix(workers): Add spaces in tag placeholders for better tokenization - @MohamedBassem in 036554a * feature: Add support for tag placeholders in custom prompts. #111 (#612) - @kamtschatka in fdf28ae * release(mobile): Bump mobile version to 1.6.7-2 - @MohamedBassem in 82af305 * docs: Fix docs build - @MohamedBassem in 6392cca * deps(mobile): Upgrade to Expo 52 (#692) - @MohamedBassem in fd4a996 * release(mobile): Bump mobile version to 1.6.7-1 - @MohamedBassem in d32457e * feature(mobile): Add support for creating tags from the manage tags page - @MohamedBassem in 2e5cd59 * fix(mobile): Dont dismiss keyboard on tag selection - @MohamedBassem in dd80f91 * release(mobile): Bump mobile version to 1.6.7 - @MohamedBassem in bf80fa2 * feat(mobile): Add support for managing tags from mobile - @MohamedBassem in 2745330 * feat(mobile): Allow editing titles and a cleaner info page - @MohamedBassem in fbb2644 * ui(mobile): Replace bottom sheet with native screens (#690) - @MohamedBassem in 5522e20 * readme: Add weblate translations to readme - @MohamedBassem in 4bb7487 * ui(mobile): Remove the dedicated search page and add a search bar in home - @MohamedBassem in cc84e01 * docs: Add pikapods.com as installation option (#676) - @m3nu in df19d39 * i18n: Add zh-TW Traditional Chinese locale (#689) - @PeterDaveHello in dcba3c4 * fix(workers): Set a timeout on the screenshot call and completely skip it if screenshotting is disabled - @MohamedBassem in 6ccdbe5 * fix(workers): Don't block connection to chrome when failing to download adblock list. #674 - @MohamedBassem in 378ad9b * chore(workers): Add extra logging for browser connection errors - @MohamedBassem in 393d097 * readme: Add github sponsor - @MohamedBassem in 5533632 * docker: Preinstall pnpm for the worker job to prevent downloading it on startup. #666 - @MohamedBassem in ae78ef5 * fix: Fix homepage not loading when hitting adding invalid URL during crawling. Fixes #626 - @MohamedBassem in dd20fb7 * feature: Allow setting bookmark metadata during creation - @MohamedBassem in 82cd3bb * docs: fix typo in inference.ts (#640) - @eltociear in 64e759a * translations: Add german, french and chinese LLM translations - @MohamedBassem in 0d6af2f * feature: Add i18n support. Fixes #57 (#635) - @MohamedBassem in 4354ee7 * docker: Upgrade meilisearch to v1.11.1 (#629) - @wuast94 in 9f2c7be * fix: Fix SummarizeWithAI button to use an ActionButton - @MohamedBassem in d73f001 * docs: Release the 0.19 docs - @MohamedBassem in bff02d6 * readme: Add RSS, REST API and video archival to README - @MohamedBassem in 6ccaec9