aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* chore: add pnpm test to the root packageMohamed Bassem11 days2-0/+7
|
* feat: add source filter to query language (#2465)Mohamed Bassem11 days8-4/+154
| | | | | | | | | | | * feat: add source filter to query language Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * autocomplete source --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix: treat bookmark not found as a no-op in rule engine instead of a failure ↵Mohamed Bassem11 days3-15/+24
| | | | | | | | | | | (#2464) When a bookmark is deleted before the rule engine worker processes its event, the worker would throw an error, triggering failure metrics, error logging, and retries. This changes both the worker and RuleEngine.forBookmark to gracefully skip processing with an info log instead. Co-authored-by: Claude <noreply@anthropic.com>
* fix(extension): dont store tab title when saving links or images. fixes #2462Mohamed Bassem12 days1-1/+5
|
* feat: Add separate queue for import link crawling (#2452)Mohamed Bassem12 days5-36/+70
| | | | | | | * feat: add separate queue for import link crawling --------- Co-authored-by: Claude <noreply@anthropic.com>
* fix: lower the priority of recrawlingMohamed Bassem12 days3-9/+20
|
* feat(metrics): add prometheus metric for bookmark crawl latency (#2461)Mohamed Bassem12 days3-2/+28
| | | | | | | | | | Track the time from bookmark creation to crawl completion as a histogram (karakeep_bookmark_crawl_latency_seconds). This measures the end-to-end latency users experience when adding bookmarks via extension, web, etc. Excludes recrawls (crawledAt already set) and imports (low priority jobs). https://claude.ai/code/session_019jTGGXGWzK9C5aTznQhdgz Co-authored-by: Claude <noreply@anthropic.com>
* feat(db): add OpenTelemetry instrumentation for database queriesClaude12 days5-3/+83
| | | | | | | | | Instruments the better-sqlite3 driver so that every prepared statement execution (run/get/all) produces an OTel span with db.system, db.statement, and db.operation attributes. The instrumentation is a no-op when no TracerProvider is registered (i.e. tracing is disabled). https://claude.ai/code/session_01JZut7LqeHPUKAFbFLfVP8F
* feat(import): new import details page (#2451)Mohamed Bassem2026-02-045-2/+666
| | | | | | | * feat(import): new import details page * fix typecheck * review comments
* fix(ci): fix missing format errorMohamed Bassem2026-02-041-1/+1
|
* feat: add extra instrumentation in the otel traces (#2453)Mohamed Bassem2026-02-047-31/+231
|
* fix(import): sanitize error messages to prevent backend detail leakage (#2455)Mohamed Bassem2026-02-041-1/+26
| | | | | | | | | | | | | | | | | | The catch block in processOneBookmark was storing raw error strings via String(error) in the resultReason field, which is exposed to users through the getImportSessionResults tRPC route. This could leak internal details like database constraint errors, file paths, stack traces, or connection strings. Replace String(error) with getSafeErrorMessage() that only allows through: - TRPCError client errors (designed to be user-facing) - Known safe validation messages from the import worker - A generic fallback for all other errors The full error is still logged server-side for debugging. https://claude.ai/code/session_01F1NHE9dqio5LJ177vmSCvt Co-authored-by: Claude <noreply@anthropic.com>
* fix(import): skip counting pending items for paushed sessionsMohamedBassem2026-02-041-7/+16
|
* fix(import): register improt metrics to the prom registryMohamed Bassem2026-02-042-1/+9
|
* fix(import): propagate crawling/tagging failure to import statusMohamed Bassem2026-02-041-18/+50
|
* fix: extra logging for the import workerMohamed Bassem2026-02-041-13/+39
|
* fix: lower priority of mass admin actionsMohamedBassem2026-02-041-12/+33
|
* fix: backfill old sessions and do queue backpressure (#2449)Mohamed Bassem2026-02-043-22/+118
| | | | | * fix: backfill old sessions and do queue backpressure * fix typo
* feat: Import workflow v3 (#2378)Mohamed Bassem2026-02-0422-483/+8300
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: import workflow v3 * batch stage * revert migration * cleanups * pr comments * move to models * add allowed workers * e2e tests * import list ids * add missing indicies * merge test * more fixes * add resume/pause to UI * fix ui states * fix tests * simplify progress tracking * remove backpressure * fix list imports * fix race on claiming bookmarks * remove the codex file
* feat: Add LLM-based OCR as alternative to Tesseract (#2442)Mohamed Bassem2026-02-014-10/+78
| | | | | | | | | | | | | | | | | | | | | | | | | * feat(ocr): add LLM-based OCR support alongside Tesseract Add support for using configured LLM inference providers (OpenAI or Ollama) for OCR text extraction from images as an alternative to Tesseract. Changes: - Add OCR_USE_LLM environment variable flag (default: false) - Add buildOCRPrompt function for LLM-based text extraction - Add readImageTextWithLLM function in asset preprocessing worker - Update extractAndSaveImageText to route between Tesseract and LLM OCR - Update documentation with the new configuration option When OCR_USE_LLM is enabled, the system uses the configured inference model to extract text from images. If no inference provider is configured, it falls back to Tesseract. https://claude.ai/code/session_01Y7h7kDAmqXKXEWDmWbVkDs * format --------- Co-authored-by: Claude <noreply@anthropic.com>
* feat: batch meilisearch requests (#2441)Mohamed Bassem2026-02-016-20/+226
| | | | | * feat: batch meilisearch requests * more fixes
* fix(mobile): migrate from RN image to expo-imageMohamed Bassem2026-02-016-34/+55
|
* chore: replace dayjs with data-fnsMohamed Bassem2026-02-017-28/+13
|
* fix(web): don't bundle tiktoken in client bundlesMohamed Bassem2026-02-019-85/+144
|
* feat(mobile): use native tabs for mobileMohamed Bassem2026-02-015-90/+62
|
* fix(mobile): make the subtext in bookmark info page more subtleMohamed Bassem2026-02-011-3/+3
|
* feat(mobile): add signup support to the mobile appMohamed Bassem2026-02-011-1/+14
|
* feat: add support for redirectUrl after signup (#2439)Mohamed Bassem2026-02-0110-21/+215
| | | | | | | | | | | * feat: add support for redirectUrl after signup * pr review * more fixes * format * another fix
* fix: better looking error message when article content is unavailableMohamed Bassem2026-02-012-1/+22
|
* fix(mobile): fix some mobile warning after expo 54 upgradeMohamed Bassem2026-02-0111-30/+50
|
* refactor: remove unused trpc files from web and mobileMohamed Bassem2026-02-0176-83/+102
|
* refactor: migrate trpc to the new react query integration mode (#2438)Mohamed Bassem2026-02-01112-1871/+2536
| | | | | | | | | * refactor: migrate trpc to the new react query integration mode * more fixes * more migrations * upgrade trpc client
* refactor: centralize auth imports through new client module (#2437)Mohamed Bassem2026-02-0115-15/+25
| | | | | | | | | | | | | | | * refactor(web): centralize next-auth client-side utilities Create lib/auth/client.ts to re-export all next-auth/react APIs (useSession, signIn, signOut, SessionProvider) from a single location. This prepares for future auth provider replacement by isolating the next-auth dependency. https://claude.ai/code/session_01RLLL6SquzmegG6wKHdT3Fm * format --------- Co-authored-by: Claude <noreply@anthropic.com>
* chore: add an endpoint for propagating client configs to the mobile appMohamed Bassem2026-02-013-0/+41
|
* docs: replace emojis with icon in category namesMohamed Bassem2026-02-0125-21/+298
|
* feat(mobile): show num bookmarks in the all lists viewMohamed Bassem2026-02-011-4/+30
|
* fix(mobile): fix mobile list stylingMohamed Bassem2026-02-014-12/+12
|
* refactor: lazy init background queuesMohamed Bassem2026-02-015-58/+155
|
* fix: use user's preferred language for manual summarization (#2429)Mohamed Bassem2026-01-281-1/+9
|
* feat(cli): Add bookmark search command (#2426)Mohamed Bassem2026-01-262-12/+88
| | | | | | | | | | | | | | | | | | | | | | * feat(cli): Add search subcommand to bookmarks Add a new search subcommand that uses the searchBookmarks API endpoint. The command supports: - Full-text search with advanced query matchers (tag:, is:, list:, etc.) - Pagination with --all flag to fetch all results - Sorting by relevance, ascending, or descending order - Optional full content inclusion with --include-content - Configurable result limit per page Example usage: bookmarks search "is:fav tag:important" bookmarks search "kotlin" --sort-order desc --limit 20 bookmarks search "title:api" --include-content --all * fixes + format --------- Co-authored-by: Claude <noreply@anthropic.com>
* feat(search): add tag: alias for # and ! alias for negation (#2425)Mohamed Bassem2026-01-263-6/+151
| | | | | | | | Add `tag:` as an alternative syntax to `#` for tag search queries, and `!` as an alternative to `-` for negating qualifiers. This provides more intuitive syntax options for users who prefer text-based qualifiers over special characters. Co-authored-by: Claude <noreply@anthropic.com>
* fix(ui): Improve visual consistency in all lists and highlights pageMohamed Bassem2026-01-195-21/+29
|
* feat: disable karakeep 2025 wrappedMohamed Bassem2026-01-194-56/+11
|
* feat(extension): autofocus on note open (#2366)Snoww2026-01-191-0/+1
| | | * Autofocus on note open
* feat: Add attachedBy field to update tags endpoint (#2281)Mohamed Bassem2026-01-185-13/+198
| | | | | | | | | | | | | | | | | | | | | | * feat: Add attachedBy field to updateTags endpoint This change allows callers to specify the attachedBy field when updating tags on a bookmark. The field defaults to "human" if not provided, maintaining backward compatibility with existing code. Changes: - Added attachedBy field to zManipulatedTagSchema with default "human" - Updated updateTags endpoint to use the specified attachedBy value - Created mapping logic to correctly assign attachedBy to each tag * fix(cli): migrate bookmark source in migration command * fix * reduce queries --------- Co-authored-by: Claude <noreply@anthropic.com>
* docker: add USE_JEMALLOC env var and disable it by defaultMohamed Bassem2026-01-183-3/+9
|
* ux(mobile): align all lists in the all lists tabMohamed Bassem2026-01-181-19/+34
|
* docker: switch to jemallocMohamed Bassem2026-01-184-0/+12
|
* docs: enhance OLLAMA_KEEP_ALIVE variable description (#2410)ampersandru2026-01-182-2/+2
| | | | | | | | | * Enhance OLLAMA_KEEP_ALIVE variable description Expanded the explanation for OLLAMA_KEEP_ALIVE variable to include examples for better clarity. Added examples of -1m for indefinite, 0 for instant. * Enhance OLLAMA_KEEP_ALIVE variable description Updated the description of the OLLAMA_KEEP_ALIVE variable to include examples for better clarity.
* fix(docker): fix x86 docker build failureMohamed Bassem2026-01-181-3/+3
|