1660 Commits

Author SHA1 Message Date
Robert Rosca
aa7a81e0ca
feat: add openai service tier configuration option (#2339) 2026-01-03 19:31:41 +00:00
Sweepy
2a6fe6e6fa
fix: stop theme flashes with cloudflare rocket loader (#2340) 2026-01-03 19:22:29 +00:00
Mohamed Bassem
e195f40b14
feat: Add retry buttons for pending bookmarks in admin panel (#2341) 2026-01-03 19:21:49 +00:00
Mohamed Bassem
4c0220f217 fix: drop idProvider from restate hot path 2026-01-03 13:27:59 +00:00
Mohamed Bassem
6fe2063970
fix: Eliminate the O(n2) parsing of the netscape import parsing (#2338)
* fix: Eliminate the O(n2) parsing of the netscape import parsing

* remove unneeded tests
2026-01-03 10:39:45 +00:00
Mohamed Bassem
1af9b9ddf6 chore: add a note about hostname allowlists in the validation error message 2026-01-02 23:50:43 +00:00
Mohamed Bassem
0250d163a4 fix(mobile): fix the connection debug text area android/v1.8.5-0 2026-01-02 22:35:27 +00:00
Mohamed Bassem
0e1d28a595 fix(mobile): fix save button in server-address screen on android 2026-01-02 22:24:52 +00:00
Mohamed Bassem
f69b35f83d fix(docs): remove horizontal scrolling in docs 2026-01-02 19:21:48 +00:00
Mohamed Bassem
016433d482 feat(mobile): use react native sonner 2026-01-01 14:35:04 +00:00
Mohamed Bassem
2b89f1777e release(cli,sdk): release cli and sdk v0.30 cli/v0.30.0 sdk/v0.30.0 2026-01-01 14:18:24 +00:00
Mohamed Bassem
b63f133e48 release(mobile): Bump mobile version to 1.8.4 ios/v1.8.4-0 android/v1.8.4-0 2026-01-01 11:19:34 +00:00
Mohamed Bassem
4b54eeec0e release(docs): release the 0.30 docs 2026-01-01 10:58:22 +00:00
Mohamed Bassem
d472a3a1c4 i18n: fix en_US translation v0.30.0 2026-01-01 10:27:23 +00:00
Mohamed Bassem
4077e2863e fix: fix wrapped feature to only show bookmarks in 2025 2026-01-01 10:18:57 +00:00
Hosted Weblate
401ea6a917
i18n: Sync weblate translations
Co-authored-by: OpenAI <noreply-mt-openai@weblate.org>
Co-authored-by: killallpie <killallpie@inbox.ru>
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/ar/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/cs/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/da/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/de/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/el/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/en_US/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/es/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/fa/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/fi/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/fr/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/ga/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/gl/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/hr/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/hu/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/it/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/ja/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/ko/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/nl/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/pl/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/pt/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/ru/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/sk/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/sl/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/sv/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/tr/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/uk/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/vi/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/karakeep/karakeep/zh_Hant/
Translation: Karakeep/Karakeep
2026-01-01 10:36:42 +01:00
Mohamed Bassem
bf9d6105b8 chore: drop the experimental tag from the rule engine 2026-01-01 08:35:57 +00:00
Mohamed Bassem
9555f409be fix: show a toast during banner upload 2026-01-01 08:22:04 +00:00
Mohamed Bassem
79400d0497 fix: don't switch the bookmark back to pending on recrawl 2026-01-01 08:22:04 +00:00
Erik Tews
e8c79f2944
fix: use the Ollama generate endpoint instead of chat (#2324)
* Use the Ollama generate endpoint instead of chat

Ollama has two API endpoints for text generation. There is a chat endpoint for interactive and interactive chat like generation of text and there is a generate endpoint that is used one one-shot prompts, such as summarization tasks and similar things.

Karakeep used the chat endpoint that resulted in odd summaries. This commit makes karakeep use the generate endpoint instead, which results in better and more compact summaries.

* format
2026-01-01 08:05:51 +00:00
Mohamed Bassem
3d652eee04
feat: add replace banner and attachment download (#2328)
* feat: add replace banner and attachment download

* add pdf preview in mobile app

* fix menu order

* fix comment
2026-01-01 08:01:43 +00:00
Mohamed Bassem
7a76216e5c
feat: Add bulk remove from list (#2279)
* feat: Add bulk remove from list action in list context

- Add "Remove from List" button in bulk actions menu
- Only visible when in a manual list context with editor/owner role
- Includes confirmation dialog before removal
- Uses same concurrency pattern as bulk add (50 concurrent operations)
- Displays success count in toast notification
- Add translation key "actions.remove" for consistency

This complements the existing bulk add to list functionality and allows
users to efficiently remove multiple bookmarks from a list at once.

* fmt

* fix list context

* add remove from list

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-30 11:30:35 +00:00
Mohamed Bassem
b20ba9cfcc
feat: add "URL Does Not Contain" condition to rule engine (#2280)
* feat: add "URL Does Not Contain" condition to rule engine

Add a new condition type `urlDoesNotContain` that allows users to create
rules based on URLs that do NOT contain specific strings. This enables
more flexible rule configurations, such as:

- Automatically adding bookmarks to a "Read Later" list if the URL
  does not contain "reddit.com" or "youtube.com"

Changes:
- Added `urlDoesNotContain` condition type to Zod schema
- Implemented evaluation logic in RuleEngine
- Added UI support in ConditionBuilder component
- Added translation key for new condition type
- Added test coverage for the new condition

Fixes #2259

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Mohamed Bassem <MohamedBassem@users.noreply.github.com>

* fix type link

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Mohamed Bassem <MohamedBassem@users.noreply.github.com>
2025-12-30 11:29:03 +00:00
Mohamed Bassem
a0b4a26ad3
feat: 2025 wrapped (#2322)
* feat: 2025 wrapped

* don't add wrapped for new users
2025-12-30 10:52:50 +00:00
Mohamed Bassem
7ab7db8e48
chore: worker tracing (#2321) 2025-12-30 10:43:08 +00:00
Mohamed Bassem
d852ee1a69 feat(landing): add corporate pricing 2025-12-30 09:41:52 +00:00
sergio
a43d375f55
fix(mobile): mobile modal UI issues (#2320)
* fix(mobile): Make list type selector visible on Android

* fix(mobile): Add native iOS overlay on Toast
2025-12-30 09:07:22 +00:00
Mohamed Bassem
9d6b1282b1 ci: fix tests 2025-12-30 00:20:11 +00:00
Mohamed Bassem
9098a5a65e feat: change default for tag style to be title case with spaces 2025-12-30 00:16:24 +00:00
Mohamed Bassem
c1cbaa8a54 fix: more tagging tweaks 2025-12-29 23:58:37 +00:00
Mohamed Bassem
a5ce977d11 build: fix broken CI 2025-12-29 23:40:22 +00:00
Mohamed Bassem
f5a5c14ecf fix: change prompt to better recognize error pages 2025-12-29 23:38:21 +00:00
Mohamed Bassem
f00287ede0 refactor: reduce duplication in compare-models tool 2025-12-29 23:38:21 +00:00
Mohamed Bassem
ba8d84a555 chore: add tracing for email functions 2025-12-29 23:38:21 +00:00
sergio
30fa06feac
feat(mobile): create new list edit screen (#2310)
* feat(mobile): create new edit screen and path

* refactor(mobile): use correct import for back navigation

* refactor(mobile): remove set state for list type

* feat(mobile): handle loading state

* feat(mobile): add error handling

* feat(mobile): add local validation for empty list name

* refactor(mobile): use correct param name in edit path

* feat(mobile): handle all pending state cases

* refactor(mobile): remove unnecessary return

* refactor(mobile): move type validation to top of the file

* refactor(mobile): revert validation order

* refactor(mobile): clean up submit values

* fix(mobile): fix button views
2025-12-29 21:45:36 +00:00
Mohamed Bassem
5537fe85ed
feat: Add open telemetry (#2318)
* feat: add OpenTelemetry tracing infrastructure

Introduce distributed tracing capabilities using OpenTelemetry:

- Add @opentelemetry packages to shared-server for tracing
- Create tracing utility module with span helpers (withSpan, addSpanEvent, etc.)
- Add tRPC middleware for automatic span creation on API calls
- Initialize tracing in API and workers entry points
- Add demo instrumentation to bookmark creation and crawler worker
- Add configuration options (OTEL_TRACING_ENABLED, OTEL_EXPORTER_OTLP_ENDPOINT, etc.)
- Document tracing configuration in environment variables docs

When enabled, traces are collected for tRPC calls, bookmark creation flow,
and crawler operations, with support for any OTLP-compatible backend (Jaeger, Tempo, etc.)

* refactor: remove tracing from workers for now

Keep tracing infrastructure but remove worker instrumentation:
- Remove tracing initialization from workers entry point
- Remove tracing instrumentation from crawler worker
- Fix formatting in tracing files

The tracing infrastructure remains available for future use.

* add hono and next tracing

* remove extra span logging

* more fixes

* update config

* some fixes

* upgrade packages

* remove unneeded packages

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-29 17:11:16 +00:00
Mohamed Bassem
f7920bdc94
fix: reset tagging status on crawl failure (#2316)
* feat: add the ability to specify a different changelog version

* fix: reset tagging status on crawl failure

* fix missing crawlStatus in loadMulti
2025-12-29 11:26:38 +00:00
Mohamed Bassem
1082076133 feat: add the ability to specify a different changelog version 2025-12-29 11:12:46 +00:00
Evan Simkowitz
3f44e3198c
fix: remove duplicate mobile backdrop button in reader view (#2234) 2025-12-29 10:58:41 +00:00
Mohamed Bassem
23f285300a fix(landing): fix cloud banner on mobile 2025-12-29 09:10:05 +00:00
Mohamed Bassem
3c3d86855c refactor: add suspense boundary in sidebar layout 2025-12-29 08:56:45 +00:00
Mohamed Bassem
6ee48ffb9d
feat(mobile): make the settings menu look more native (#2307)
* feat(mobile): make the settings menu look more native

* more fixes

* review comments
2025-12-29 08:23:36 +00:00
Mohamed Bassem
f7523a210b feat(web): better looking scrollbar in the sidebar 2025-12-28 08:59:37 +00:00
Mohamed Bassem
e800d744b5 feat(mobile): use oled friendly colors for android app. fixes #1958 2025-12-28 08:48:22 +00:00
Mohamed Bassem
173fb99aed refactor: migrate toasts to sonner 2025-12-28 08:32:32 +00:00
Mohamed Bassem
af3010abaa
feat: add customizable tag styles (#2312)
* feat: add customizable tag styles

* add tag lang setting

* ui settings cleanup

* fix migration

* change look of the field

* more fixes

* fix tests
2025-12-27 14:30:11 +00:00
Moondragon85
93630ce88d
feat: add Matter import support (#2245)
* Matter import

* use zod

* fix date parsing

---------

Co-authored-by: Mohamed Bassem <me@mbassem.com>
2025-12-27 11:52:37 +00:00
Mohamed Bassem
267db79129
feat: support archiving as pdf (#2309)
* feat: support archiving as pdf

* add supprot for manually triggering pdf downloads

* fix submenu

* menu cleanup

* fix store pdf
2025-12-27 09:59:39 +00:00
rzxczxc
bb6b742a04
feat: add OPENAI_PROXY_URL configuration and support for proxy in OpenAI client (#2231)
* Add OPENAI_PROXY_URL configuration and support for proxy in OpenAIInferenceClient

* docs: add OPENAI_PROXY_URL configuration for proxy support in OpenAI API requests

* format

---------

Co-authored-by: Mohamed Bassem <me@mbassem.com>
2025-12-27 09:24:52 +00:00
Mohamed Bassem
e82694debf fix(tests): fix the asset upload tests 2025-12-27 00:57:32 +00:00