rcgit

/ karakeep
follow (on) | order: default date topo
Age Commit message Author Files +/-
fix(ui): fix the colors of buttons in the settings page Mohamed Bassem 8 -12/+10
feat: add checkUrl endpoint to replace searchBookmarks for URL existence checks
Introduces a dedicated `checkUrl` tRPC endpoint that directly queries the
database for URL existence instead of going through the full search pipeline.
The endpoint uses the same LIKE matching semantics as the `url:` search
qualifier, then normalizes URLs (stripping hash fragments and trailing slashes)
for exact comparison server-side. This replaces the browser extension's
previous approach of calling searchBookmarks with `url:` and filtering
client-side.
Mohamed Bassem 6 -23/+231
fix(restate): call onError on rpc failures Mohamed Bassem 4 -29/+45
chore: upgrade react-slot to fix type error Mohamed Bassem 5 -53/+255
feat: add synchronized reading progress for bookmarks (#2302)
* feat: add synchronized reading progress for bookmarks
Track and restore reading position in reader mode across web and mobile.
Uses text character offsets (matching the highlights pattern) to find
the first visible paragraph and scroll back to it on return.
- Add readingProgressOffset field to bookmarkLinks table
- Add updateReadingProgress tRPC mutation
- Create shared useReadingProgress hook with auto-save on unload
- Integrate in web full-screen reader (/reader/[bookmarkId])
- Integrate in mobile reader mode via WebView injectedJavaScript
- Only tracks progress for bookmark owners
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* it works
* align mobile functions
* fmt
* use generator for webview js fns, remove empty index.ts
* revert comments
* move shared fns into core
* address pr review
* watch core too
* address some pr comments
* fix race condition and jump when scrolling
* fix dead code and error handling, simplify some duplicate logic
* move reading progress to separate table
* remove arbitrary >100 char threshold for updates to progress
* only allow reading progress for link bookmarks, error on others
* add tests
* add tests for shared access reading progress
* simplify reading-progress hooks, visibility checks, remove char threshold on mobile
* remove unnecessary restoration lock
* remove unnecessary exports from reading-progress-core
* move position restoration to onload, more deterministic
* cleanup effects
* Update packages/shared-react/hooks/reading-progress.ts
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* fix function signatures in generated js comment
* remove verbose comments
* add percentage progress fallback
* address comments
* some code dedupe and simplification
* missed one
* Remove lastKnownPositionRef
* remove unnecessary reading-progress-core test
* update savePosition comment
* drop the esbuild generated code
* re-add the db migrations
* wire the mobile dom with the reading progress
* banner for reading progress instead of hiding content
* dedup code from reader view and preview page
* more simplifications
* add a sticky progress bar tracker at the top
* more code simplification
* rename test
* extract reading progress into its own handler
* more polish
* fix scroll behavior of full page bookmark preview
* more polish
* fix pnpm-lock
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Mohamed Bassem <me@mbassem.com>
Evan Simkowitz 20 -57/+4769
feat(mobile): Add highlights support for the mobile app (#2494) Mohamed Bassem 21 -634/+911
fix: dont trigger background jobs if bookmark doesn't change on updateTags call Mohamed Bassem 2 -30/+113
build: fix tests Mohamed Bassem 1 -3/+0
feat(cloud): switch to managed payments Mohamed Bassem 5 -39/+45
feat: add ways to link ToS and privacy policy Mohamed Bassem 4 -1/+53
feat: add OAuth auto-redirect functionality (#2483)
* feat: add OAuth auto-redirect functionality
Add OAUTH_AUTO_REDIRECT environment variable to automatically redirect
users to the OAuth provider when both password authentication is disabled
and an OAuth provider is configured.
Changes:
- Add OAUTH_AUTO_REDIRECT config in packages/shared/config.ts
- Create OAuthAutoRedirect component for client-side redirect logic
- Update SignInForm to include auto-redirect functionality
- Add oauthAutoRedirect to client config context
- Document new environment variable in configuration docs
This improves user experience by eliminating unnecessary clicks when
OAuth is the only available authentication method.
Fixes #1189
Co-authored-by: Mohamed Bassem <MohamedBassem@users.noreply.github.com>
* review comments
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Mohamed Bassem <MohamedBassem@users.noreply.github.com>
Mohamed Bassem 5 -0/+56
feat: export lists in backups and exports (#2484)
* feat(mobile): make the bookmark edit UIs look more native
* fix: dont invalidate getBookmark query on bookmark deletion
* feat: add list definitions and memberships to JSON export and backup
Include list definitions (name, icon, type, hierarchy) and per-bookmark
list memberships in both the JSON export endpoint and backup worker output.
The parser is updated to convert list data back into folder paths on import.
Streaming memory bounds are preserved by fetching memberships per batch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* more fixes
* more fixes
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Mohamed Bassem 10 -135/+823
feat(workers): extract html parsing into a subprocess (#2485)
* feat(mobile): make the bookmark edit UIs look more native
* fix: dont invalidate getBookmark query on bookmark deletion
* feat: run metascraper & readability parsing in a subprocess
Extract HTML parsing (metascraper metadata extraction + readability
content extraction) into a separate Node.js subprocess. This prevents
OOM crashes in the parser from killing the entire worker process.
The subprocess communicates via JSON over stdin/stdout, and all log
output is redirected to stderr. Two new config vars control the
subprocess heap size (CRAWLER_PARSE_MAX_OLD_SPACE_SIZE_MB, default
512MB) and timeout (CRAWLER_PARSE_TIMEOUT_SEC, default 60s).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix format
* some fixes
* some fixes
* some fixes
* last fix
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Mohamed Bassem 7 -139/+313
fix: dont invalidate getBookmark query on bookmark deletion Mohamed Bassem 2 -2/+2
Revert "refactor: move assetdb to shared-server"
This reverts commit a04d3c35fc9082e529a713605a038d236bb072c7.
Mohamed Bassem 24 -833/+810
refactor: move assetdb to shared-server Mohamed Bassem 24 -810/+833
fix: Support nested smart lists with cycle detection (#2470)
* fix: Support nested smart lists and prevent infinite loops
---------
Co-authored-by: Claude <noreply@anthropic.com>
Mohamed Bassem 4 -27/+512
feat(ai): Support restricting AI tags to a subset of existing tags (#2444)
* feat(ai): Support restricting AI tags to a subset of existing tags
Co-authored-by: Claude <noreply@anthropic.com>
Mohamed Bassem 18 -18/+3538
feat: Added Import for Instapaper (#2434)
* Added Instapaper import
* Fixes #1444 Added Instapaper import support
Daniel Wieser 3 -1/+83
fix: correctly sum low pri and normal crawl queue size Mohamed Bassem 2 -4/+11
feat: add source filter to query language (#2465)
* 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>
Mohamed Bassem 8 -4/+154
fix: treat bookmark not found as a no-op in rule engine instead of a failure…
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>
Mohamed Bassem 3 -15/+24
feat: Add separate queue for import link crawling (#2452)
* feat: add separate queue for import link crawling
---------
Co-authored-by: Claude <noreply@anthropic.com>
Mohamed Bassem 5 -36/+70
fix: lower the priority of recrawling Mohamed Bassem 3 -9/+20
feat(db): add OpenTelemetry instrumentation for database queries
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
Claude 5 -3/+83
feat: add extra instrumentation in the otel traces (#2453) Mohamed Bassem 7 -31/+231
fix: lower priority of mass admin actions MohamedBassem 1 -12/+33
fix: backfill old sessions and do queue backpressure (#2449)
* fix: backfill old sessions and do queue backpressure
* fix typo
Mohamed Bassem 3 -22/+118
feat: Import workflow v3 (#2378)
* 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
Mohamed Bassem 22 -483/+8300
feat: Add LLM-based OCR as alternative to Tesseract (#2442)
* 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>
Mohamed Bassem 4 -10/+78
feat: batch meilisearch requests (#2441)
* feat: batch meilisearch requests
* more fixes
Mohamed Bassem 6 -20/+226
fix(web): don't bundle tiktoken in client bundles Mohamed Bassem 9 -85/+144
feat: add support for redirectUrl after signup (#2439)
* feat: add support for redirectUrl after signup
* pr review
* more fixes
* format
* another fix
Mohamed Bassem 10 -21/+215
refactor: migrate trpc to the new react query integration mode (#2438)
* refactor: migrate trpc to the new react query integration mode
* more fixes
* more migrations
* upgrade trpc client
Mohamed Bassem 112 -1871/+2536
chore: add an endpoint for propagating client configs to the mobile app Mohamed Bassem 3 -0/+41
refactor: lazy init background queues Mohamed Bassem 5 -58/+155
fix: use user's preferred language for manual summarization (#2429) Mohamed Bassem 1 -1/+9
feat(search): add tag: alias for # and ! alias for negation (#2425)
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>
Mohamed Bassem 3 -6/+151
feat: disable karakeep 2025 wrapped Mohamed Bassem 4 -56/+11
feat: Add attachedBy field to update tags endpoint (#2281)
* 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>
Mohamed Bassem 5 -13/+198
feat: track api key usage dates Mohamed Bassem 9 -20/+3078
feat(rules): add "Title Contains" condition to Rule Engine (#1670) (#2354)
* feat(rules): add "Title Contains" condition to Rule Engine (#1670)
* feat(rules): hide title conditions for bookmark created trigger
* fix typecheck
Andrii Mokhovyk 6 -1/+133
deps: upgrade react to 19.2.1 Mohamed Bassem 7 -1172/+1229
feat: privacy-respecting bookmark debugger admin tool (#2373)
* fix: parallelize queue enqueues in bookmark routes
* fix: guard meilisearch client init with mutex
* feat: add bookmark debugging admin tool
* more fixes
* more fixes
* more fixes
Mohamed Bassem 9 -18/+1304
fix: depri mass admin actions Mohamed Bassem 1 -10/+31
fix: harden the restate implementation (#2370)
* fix: parallelize queue enqueues in bookmark routes
* fix: guard meilisearch client init with mutex
* fix: fix propagation of last error in restate
* fix: don't fail invocations when the job fails
* fix: add a timeout around the worker runner logic
* fix: add leases to handle dangling semaphores
* feat: separate dispatchers and runners
* add a test
* fix silent promise failure
Mohamed Bassem 8 -211/+611
fix: fix propagation of last error in restate Mohamed Bassem 1 -0/+1
fix: guard meilisearch client init with mutex Mohamed Bassem 1 -0/+12
fix: parallelize queue enqueues in bookmark routes Mohamed Bassem 1 -35/+42
feat: add openai service tier configuration option (#2339) Robert Rosca 5 -0/+13
feat: Add retry buttons for pending bookmarks in admin panel (#2341) Mohamed Bassem 3 -2/+33
fix: drop idProvider from restate hot path Mohamed Bassem 1 -2/+1
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
Mohamed Bassem 2 -34/+351
release(cli,sdk): release cli and sdk v0.30 Mohamed Bassem 3 -5/+15
fix: fix wrapped feature to only show bookmarks in 2025 Mohamed Bassem 1 -1/+11
fix: don't switch the bookmark back to pending on recrawl Mohamed Bassem 1 -7/+0
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
Erik Tews 1 -5/+4
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>
Mohamed Bassem 5 -0/+51
feat: 2025 wrapped (#2322)
* feat: 2025 wrapped
* don't add wrapped for new users
Mohamed Bassem 13 -31/+1107
ci: fix tests Mohamed Bassem 1 -1/+1
feat: change default for tag style to be title case with spaces Mohamed Bassem 4 -1/+3030
fix: more tagging tweaks Mohamed Bassem 1 -4/+3
fix: change prompt to better recognize error pages Mohamed Bassem 1 -3/+6
refactor: reduce duplication in compare-models tool Mohamed Bassem 10 -196/+316
chore: add tracing for email functions Mohamed Bassem 1 -124/+118
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>
Mohamed Bassem 12 -51/+687
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
Mohamed Bassem 8 -18/+3094
feat: add the ability to specify a different changelog version Mohamed Bassem 3 -19/+44
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
Mohamed Bassem 18 -136/+3895
feat: add Matter import support (#2245)
* Matter import
* use zod
* fix date parsing
---------
Co-authored-by: Mohamed Bassem <me@mbassem.com>
Moondragon85 34 -0/+99
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
Mohamed Bassem 16 -33/+290
feat: add OPENAI_PROXY_URL configuration and support for proxy in OpenAI client…
* 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>
rzxczxc 3 -0/+13
fix(tests): fix the asset upload tests Mohamed Bassem 4 -21/+58
fix: reject spoofed content types on uploads Mohamed Bassem 3 -1/+73
fix(restate): change journal retention for services to 3d Mohamed Bassem 1 -0/+3
fix: preserve failure count when rescheduling rate limited domains (#2303)
* fix: preserve retry count when rate-limited jobs are rescheduled
Previously, when a domain was rate-limited in the crawler worker,
the job would be re-enqueued as a new job, which reset the failure
count. This meant rate-limited jobs could retry indefinitely without
respecting the max retry limit.
This commit introduces a RateLimitRetryError exception that signals
the queue system to retry the job after a delay without counting it
as a failed attempt. The job is retried within the same invocation,
preserving the original retry count.
Changes:
- Add RateLimitRetryError class to shared/queueing.ts
- Update crawler worker to throw RateLimitRetryError instead of re-enqueuing
- Update Restate queue service to handle RateLimitRetryError with delay
- Update Liteque queue wrapper to handle RateLimitRetryError with delay
This ensures that rate-limited jobs respect the configured retry limits
while still allowing for delayed retries when domains are rate-limited.
* refactor: use liteque's native RetryAfterError for rate limiting
Instead of manually handling retries in a while loop, translate
RateLimitRetryError to liteque's native RetryAfterError. This is
cleaner and lets liteque handle the retry logic using its built-in
mechanism.
* test: add tests for RateLimitRetryError handling in restate queue
Added comprehensive tests to verify that:
1. RateLimitRetryError delays retry appropriately
2. Rate-limited retries don't count against the retry limit
3. Jobs can be rate-limited more times than the retry limit
4. Regular errors still respect the retry limit
These tests ensure the queue correctly handles rate limiting
without exhausting retry attempts.
* lint & format
* fix: prevent onError callback for RateLimitRetryError
Fixed two issues with RateLimitRetryError handling in restate queue:
1. RateLimitRetryError now doesn't trigger the onError callback since
   it's not a real error - it's an expected rate limiting behavior
2. Check for RateLimitRetryError in runWorkerLogic before calling onError,
   ensuring the instanceof check works correctly before the error gets
   further wrapped by restate
Updated tests to verify onError is not called for rate limit retries.
* fix: catch RateLimitRetryError before ctx.run wraps it
Changed approach to use a discriminated union instead of throwing
and catching RateLimitRetryError. Now we catch the error inside the
ctx.run callback before it gets wrapped by restate's TerminalError,
and return a RunResult type that indicates success, rate limit, or error.
This fixes the issue where instanceof checks would fail because
ctx.run wraps all errors in TerminalError.
* more fixes
* rename error name
---------
Co-authored-by: Claude <noreply@anthropic.com>
Mohamed Bassem 5 -48/+184
feat: show bookmark owner icon in shared lists (#2277)
* feat: Add owner icon to bookmarks in shared lists
Display a small icon showing the bookmark owner's name and email on hover when viewing bookmarks from other users in shared lists. The icon appears in the top-right corner of bookmark cards across all layout types (grid, list, compact).
Changes:
- Add user field to ZBookmark type to include owner name and email
- Update bookmark queries to fetch user information via join
- Create BookmarkOwnerIcon component with tooltip showing owner details
- Integrate owner indicator into BookmarkLayoutAdaptingCard for all layouts
- Only show icon for bookmarks not owned by current user
* use icons in more places
* remove tooltip providers
* fix non list context
---------
Co-authored-by: Claude <noreply@anthropic.com>
Mohamed Bassem 8 -46/+171
fix: make avatars public Mohamed Bassem 1 -0/+5
refactor: move assets to their own model (#2301)
* refactor: move assets to their own model
* move asset privacy checks to the model
Mohamed Bassem 4 -196/+274
feat: add support for user avatars (#2296)
* feat: add support for user avatars
* more fixes
* more fixes
* more fixes
* more fixes
Mohamed Bassem 20 -5/+610
fix: handle empty folder names in HTML bookmark imports (#2300)
When importing bookmarks from an HTML file, empty H3 tags (folder names)
are now replaced with "Unnamed" to prevent import failures.
Fixes #2299
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Mohamed Bassem <MohamedBassem@users.noreply.github.com>
Mohamed Bassem 2 -1/+85
fix(tests): fix the user setting tests Mohamed Bassem 1 -0/+12
feat: Add user settings to disable auto tagging/summarization (#2275)
* feat: Add per-user settings to disable auto-tagging and auto-summarization
This commit adds user-level controls for AI features when they are enabled
on the server. Users can now toggle auto-tagging and auto-summarization
on/off from the AI Settings page.
Changes:
- Added autoTaggingEnabled and autoSummarizationEnabled fields to user table
- Updated user settings schemas and API endpoints to handle new fields
- Modified inference workers to check user preferences before processing
- Added toggle switches to AI Settings page (only visible when server has features enabled)
- Generated database migration for new fields
- Exposed enableAutoTagging and enableAutoSummarization in client config
The settings default to null (use server default). When explicitly set to false,
the user's bookmarks will skip the respective AI processing.
* revert migration
* i18n
---------
Co-authored-by: Claude <noreply@anthropic.com>
Mohamed Bassem 13 -1/+3178
fix: check quota usage instead bookmark transaction Mohamed Bassem 2 -126/+133
fix: optimize tagging db queries (#2287)
* fix: optimize tagging db queries
* review
* parallel queries
* refactoring
Mohamed Bassem 7 -105/+3230
feat(restate): Add a var to control whether to expose core services or not Mohamed Bassem 2 -2/+11
feat: add more restate semaphore controls Mohamed Bassem 1 -57/+97
fix: only trigger search autocomplete on first search char Mohamed Bassem 2 -2/+9
Revert "fix: fix restate service to return control to restate service on…
This reverts commit 6db14ac492cd5d9e26d0d986513771f14faa7fd0.
Mohamed Bassem 2 -21/+1
feat: Add unified reader settings with local overrides (#2230)
* Add initial impl
* fix some format inconsistencies, add indicator in user settings when local is out of sync
* Fix sliders in user settings, unify constants and formatting
* address CodeRabbit suggestions
* add mobile implementation
* address coderabbit nitpicks
* fix responsiveness of the reader settings popover
* Move more of the web UI strings to i18n
* update translations for more coverage
* remove duplicate logic/definitions
* fix android font family
* add shared reading setting hook between web and mobile
* unify reader settings context for both web and mobile
* remove unused export
* address coderabbit suggestions
* fix tests
Evan Simkowitz 30 -199/+4866
fix: fix restate service to return control to restate service on timeout Mohamed Bassem 2 -1/+21
fix: non-link bookmarks where stuck in pending summarization. Fixes #1605 Mohamed Bassem 4 -0/+2959
fix: move trpc error logging inside the dev check Mohamed Bassem 1 -1/+1
feat: Add limits on number of rss feeds and webhooks per user Mohamed Bassem 6 -4/+218
fix!: changing default for includeContent to be false in the API Mohamed Bassem 1 -2/+1
fix: add more indicies for faster bookmark queries (#2246) Mohamed Bassem 5 -117/+3129
feat: make asset preprocessing worker timeout configurable
- Added ASSET_PREPROCESSING_JOB_TIMEOUT_SEC environment variable with default of 60 seconds (increased from hardcoded 30 seconds)
- Updated worker to use the configurable timeout from serverConfig
- Added documentation for the new configuration option
Claude 3 -1/+4
fix: Add cache control header on asset endpoints Mohamed Bassem 1 -0/+1
chore: Allowing multi user benchmarks and adding more coverage Mohamed Bassem 3 -31/+157
fix: fix correctly accounting for text bookmark in import sessions. #2208 Mohamed Bassem 2 -16/+58
prevnext