aboutsummaryrefslogtreecommitdiffstats
path: root/apps/cli/commands/lists.ts (unfollow)
Commit message (Collapse)AuthorFilesLines
11 hoursfeat: link to apps and extensions, docs and twitter in profile dropdownMohamed Bassem4-2/+148
11 hoursRevert "refactor: move assetdb to shared-server"Mohamed Bassem23-83/+60
This reverts commit a04d3c35fc9082e529a713605a038d236bb072c7.
11 hoursrefactor: move assetdb to shared-serverMohamed Bassem23-60/+83
11 hourschore: fix claude settings invalid jsonMohamed Bassem1-1/+1
11 hoursfix: dedup list and recent search suggestionsMohamed Bassem1-10/+32
11 hoursfix: Support nested smart lists with cycle detection (#2470)Mohamed Bassem4-27/+512
* fix: Support nested smart lists and prevent infinite loops --------- Co-authored-by: Claude <noreply@anthropic.com>
12 hoursfeat(mobile): Add animated UI feedback to sharing modal (#2427)Mohamed Bassem4-49/+417
* feat(mobile): Add animated UI feedback to sharing modal --------- Co-authored-by: Claude <noreply@anthropic.com>
12 hourschore: add more claude permsMohamed Bassem1-1/+7
12 hoursfeat(mobile): more native screensMohamed Bassem20-409/+575
12 hoursfeat(ai): Support restricting AI tags to a subset of existing tags (#2444)Mohamed Bassem18-18/+3538
* feat(ai): Support restricting AI tags to a subset of existing tags Co-authored-by: Claude <noreply@anthropic.com>
12 hoursfeat(mcp): Support custom configurable HTTP headers (#2436)Chen Ye2-3/+19
* feat(mcp): Support custom configurable HTTP headers * docs(mcp): Add KARAKEEP_CUSTOM_HEADERS documentation * fix(mcp): Prioritize default headers and safely parse custom headers * docs(mcp): Correct capitalization of Cloudflare headers
12 hoursfeat: Added Import for Instapaper (#2434)Daniel Wieser3-1/+83
* Added Instapaper import * Fixes #1444 Added Instapaper import support
13 hoursfeat: Add drag-and-drop support for bookmarks to lists (#2469)Mohamed Bassem5-111/+265
* feat: add drag and drop bookmark cards into sidebar lists Co-authored-by: Claude <noreply@anthropic.com>
15 hoursfeat(crawler): Split bookmark metadata updates into two phases for faster ↵Mohamed Bassem1-22/+32
feedback (#2467) * feat(crawler): write metadata to DB early for faster user feedback Split the single DB transaction in crawlAndParseUrl into two phases: - Phase 1: Write metadata (title, description, favicon, author, etc.) immediately after extraction, before downloading assets - Phase 2: Write content and asset references after all assets are stored (banner image, screenshot, pdf, html content) This gives users near-instant feedback with bookmark metadata while the slower asset downloads and uploads happen in the background. https://claude.ai/code/session_013vKTXDcb5CEve3WMszQJmZ * fix(crawler): move crawledAt to phase 2 DB write crawledAt should only be set once all assets are fully stored, not during the early metadata write. https://claude.ai/code/session_013vKTXDcb5CEve3WMszQJmZ --------- Co-authored-by: Claude <noreply@anthropic.com>
18 hoursfix: correctly sum low pri and normal crawl queue sizeMohamed Bassem2-4/+11
18 hourschore: add pnpm test to the root packageMohamed Bassem2-0/+7
21 hoursfeat: add source filter to query language (#2465)Mohamed Bassem8-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>
23 hoursfix: treat bookmark not found as a no-op in rule engine instead of a failure ↵Mohamed Bassem3-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>
33 hoursfix(extension): dont store tab title when saving links or images. fixes #2462Mohamed Bassem1-1/+5
34 hoursfeat: Add separate queue for import link crawling (#2452)Mohamed Bassem5-36/+70
* feat: add separate queue for import link crawling --------- Co-authored-by: Claude <noreply@anthropic.com>
35 hoursfix: lower the priority of recrawlingMohamed Bassem3-9/+20
35 hoursfeat(metrics): add prometheus metric for bookmark crawl latency (#2461)Mohamed Bassem3-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>
36 hoursfeat(db): add OpenTelemetry instrumentation for database queriesClaude5-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
5 daysfeat(import): new import details page (#2451)Mohamed Bassem5-2/+666
* feat(import): new import details page * fix typecheck * review comments
5 daysfix(ci): fix missing format errorMohamed Bassem1-1/+1
5 daysfeat: add extra instrumentation in the otel traces (#2453)Mohamed Bassem7-31/+231
5 daysfix(import): sanitize error messages to prevent backend detail leakage (#2455)Mohamed Bassem1-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>
5 daysfix(import): skip counting pending items for paushed sessionsMohamedBassem1-7/+16
5 daysfix(import): register improt metrics to the prom registryMohamed Bassem2-1/+9
5 daysfix(import): propagate crawling/tagging failure to import statusMohamed Bassem1-18/+50
5 daysfix: extra logging for the import workerMohamed Bassem1-13/+39
5 daysfix: lower priority of mass admin actionsMohamedBassem1-12/+33
5 daysfix: backfill old sessions and do queue backpressure (#2449)Mohamed Bassem3-22/+118
* fix: backfill old sessions and do queue backpressure * fix typo
5 daysfeat: Import workflow v3 (#2378)Mohamed Bassem22-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
8 daysfeat: Add LLM-based OCR as alternative to Tesseract (#2442)Mohamed Bassem4-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>
8 daysfeat: batch meilisearch requests (#2441)Mohamed Bassem6-20/+226
* feat: batch meilisearch requests * more fixes
8 daysfix(mobile): migrate from RN image to expo-imageMohamed Bassem6-34/+55
8 dayschore: replace dayjs with data-fnsMohamed Bassem7-28/+13
8 daysfix(web): don't bundle tiktoken in client bundlesMohamed Bassem9-85/+144
8 daysfeat(mobile): use native tabs for mobileMohamed Bassem5-90/+62
8 daysfix(mobile): make the subtext in bookmark info page more subtleMohamed Bassem1-3/+3
8 daysfeat(mobile): add signup support to the mobile appMohamed Bassem1-1/+14
8 daysfeat: add support for redirectUrl after signup (#2439)Mohamed Bassem10-21/+215
* feat: add support for redirectUrl after signup * pr review * more fixes * format * another fix
8 daysfix: better looking error message when article content is unavailableMohamed Bassem2-1/+22
8 daysfix(mobile): fix some mobile warning after expo 54 upgradeMohamed Bassem11-30/+50
8 daysrefactor: remove unused trpc files from web and mobileMohamed Bassem76-83/+102
8 daysrefactor: migrate trpc to the new react query integration mode (#2438)Mohamed Bassem112-1871/+2536
* refactor: migrate trpc to the new react query integration mode * more fixes * more migrations * upgrade trpc client
8 daysrefactor: centralize auth imports through new client module (#2437)Mohamed Bassem15-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>
8 dayschore: add an endpoint for propagating client configs to the mobile appMohamed Bassem3-0/+41
8 daysdocs: replace emojis with icon in category namesMohamed Bassem25-21/+298