aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* docs: Adding user guidesMohamed Bassem2025-12-1320-11/+154
|
* docs: drop docs for old versionsMohamed Bassem2025-12-13342-22139/+1
|
* docs: restructure the docsMohamed Bassem2025-12-1338-31/+282
|
* docs: restyle the docsMohamed Bassem2025-12-132-66/+788
|
* ci: run CI with node 24Mohamed Bassem2025-12-131-1/+2
|
* deps: Upgrade to nodejs 24Mohamed Bassem2025-12-136-113/+125
|
* fix!: changing default for includeContent to be false in the APIMohamed Bassem2025-12-121-2/+1
|
* deps: Upgrade nextjs to 15.3.8Mohamed Bassem2025-12-122-22/+22
|
* deps: Upgrade nextjs to 15.3.7Mohamed Bassem2025-12-112-22/+22
|
* fix: add more indicies for faster bookmark queries (#2246)Mohamed Bassem2025-12-115-117/+3129
|
* feat: make asset preprocessing worker timeout configurableClaude2025-12-103-1/+4
| | | | | | - 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
* fix: Add cache control header on asset endpointsMohamed Bassem2025-12-101-0/+1
|
* chore: Allowing multi user benchmarks and adding more coverageMohamed Bassem2025-12-093-31/+157
|
* feat(cli): Add ability to list users for the admin in the CLIMohamed Bassem2025-12-082-0/+91
|
* fix: fix correctly accounting for text bookmark in import sessions. #2208Mohamed Bassem2025-12-082-16/+58
|
* fix: check import quota before importing bookmarks (#2232)Mohamed Bassem2025-12-083-3/+54
| | | | | | | | | | | | | | | | | | | | | | | * feat: check import quota before importing bookmarks Add quota validation before bookmark import to prevent users from exceeding their bookmark limits. The implementation includes: - New QuotaService.canImportBookmarks() method to check if user can import N bookmarks - New tRPC checkImportQuota procedure for client-side quota validation - Updated useBookmarkImport hook to parse files and check quota before import - Added error banner in ImportExport component to display quota errors - Optimized file parsing to avoid reading the file twice The quota check displays remaining bookmarks and provides clear error messages when the import would exceed the user's quota. * fix * some fixes --------- Co-authored-by: Claude <noreply@anthropic.com>
* build: fix typecheck error in query explainerMohamed Bassem2025-12-081-0/+10
|
* fix: migrate to metascraper-x from metascraper-twitterMohamed Bassem2025-12-083-297/+16
|
* feat: add is:broken search qualifier for broken links (#2225)Mohamed Bassem2025-12-087-0/+60
| | | | | | | | | | | | | | | | | | | | Add a new search qualifier `is:broken` that allows users to filter bookmarks with broken or failed links. This matches the functionality on the broken links settings page, where a link is considered broken if: - crawlStatus is "failure" - crawlStatusCode is less than 200 - crawlStatusCode is greater than 299 The qualifier supports negation with `-is:broken` to find working links. Changes: - Add brokenLinks matcher type definition - Update search query parser to handle is:broken qualifier - Implement query execution logic for broken links filtering - Add autocomplete support with translations - Add parser tests - Update search query language documentation Co-authored-by: Claude <noreply@anthropic.com>
* feat: spread feed fetch scheduling deterministically over the hour (#2227)Mohamed Bassem2025-12-081-0/+31
| | | | | | | | | | Previously, all RSS feeds were fetched at the top of each hour (minute 0), which could cause load spikes. This change spreads feed fetches evenly throughout the hour using a deterministic hash of the feed ID. Each feed is assigned a target minute (0-59) based on its ID hash, ensuring consistent scheduling across restarts while distributing the load evenly. Co-authored-by: Claude <noreply@anthropic.com>
* fix: better extraction for youtube thumbnails. #2204Mohamed Bassem2025-12-073-18/+241
|
* fix: remove queue triggers outside of updateTags transactionMohamed Bassem2025-12-071-15/+19
|
* chore: add benchmarks (#2229)Mohamed Bassem2025-12-0615-0/+789
| | | | | | | | | * chore: add benchmarks * upgrade deps * fixes * lint
* build: dont update latest tags on releaseMohamed Bassem2025-12-031-8/+19
|
* deps: Upgrade nextjs to 15.3.6Mohamed Bassem2025-12-032-55/+55
|
* feat: add a notification badge for list invitationsMohamed Bassem2025-11-302-0/+27
|
* docs: add karakeep integration for Home Assistant (#2196)Flo2025-11-301-0/+8
| | | | | | | | | | | | | | | | | | | * Update 13-community-projects.md Add Karakeep integration for Home Assistant * Update docs/docs/13-community-projects.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update docs/docs/13-community-projects.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update 13-community-projects.md --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* fix: regen turnstile token on signup resubmissionMohamed Bassem2025-11-301-1/+14
|
* feat(landing): Add more features to the homepageMohamed Bassem2025-11-301-8/+47
|
* ci: run arm docker image builds on arm machinesMohamed Bassem2025-11-301-3/+3
|
* ci: parallelize the docker workflow for platformsMohamed Bassem2025-11-301-23/+112
|
* fix: reenable idempotency key for search indexingMohamed Bassem2025-11-301-2/+1
|
* fix: fix bypass email verification in apiKey.exchangeMohamed Bassem2025-11-302-0/+56
|
* readme: add collaborative lists to the list of featuresMohamed Bassem2025-11-301-0/+1
|
* fix: Add restate queued idempotency (#2169)Mohamed Bassem2025-11-304-5/+65
| | | | | * fix: Add restate queued idempotency * return on failed to acquire
* feat: add support for turnstile on signupMohamed Bassem2025-11-308-0/+165
|
* build: fix npm trusted publishingMohamed Bassem2025-11-293-3/+12
|
* release: cli, mcp and sdkMohamed Bassem2025-11-293-3/+3
|
* release(extension): Release version 1.2.8Mohamed Bassem2025-11-291-1/+1
|
* release(mobile): Bump mobile version to 1.8.3Mohamed Bassem2025-11-291-3/+3
|
* release(docs): release the 0.29 docsMohamed Bassem2025-11-29103-30/+6020
|
* i18n: fix en_US translationMohamed Bassem2025-11-291-57/+57
|
* i18n: Sync weblate translationsHosted Weblate2025-11-2931-62/+3286
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-authored-by: Hosted Weblate <hosted@weblate.org> Co-authored-by: OpenAI <noreply-mt-openai@weblate.org> 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
* feat: autocomplete search terms (#2178)Mohamed Bassem2025-11-294-61/+629
| | | | | | | | | | | | | * refactor(web): split search autocomplete logic * some improvements * restructure the code * fix typesafety * add feed suggestions * fix
* build: switch npm to trusted publishingMohamed Bassem2025-11-294-39/+16
|
* feat: Add automated bookmark backup feature (#2182)Mohamed Bassem2025-11-2932-8/+5697
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: Add automated bookmark backup system Implements a comprehensive automated backup feature for user bookmarks with the following capabilities: Database Schema: - Add backupSettings table to store user backup preferences (enabled, frequency, retention) - Add backups table to track backup records with status and metadata - Add BACKUP asset type for storing compressed backup files - Add migration 0066_add_backup_tables.sql Background Workers: - Implement BackupSchedulingWorker cron job (runs daily at midnight UTC) - Create BackupWorker to process individual backup jobs - Deterministic scheduling spreads backup jobs across 24 hours based on user ID hash - Support for daily and weekly backup frequencies - Automated retention cleanup to delete old backups based on user settings Export & Compression: - Reuse existing export functionality for bookmark data - Compress exports using Node.js built-in zlib (gzip level 9) - Store compressed backups as assets with proper metadata - Track backup size and bookmark count for statistics tRPC API: - backups.getSettings - Retrieve user backup configuration - backups.updateSettings - Update backup preferences - backups.list - List all user backups with metadata - backups.get - Get specific backup details - backups.delete - Delete a backup - backups.download - Download backup file (base64 encoded) - backups.triggerBackup - Manually trigger backup creation UI Components: - BackupSettings component with configuration form - Enable/disable automatic backups toggle - Frequency selection (daily/weekly) - Retention period configuration (1-365 days) - Backup list table with download and delete actions - Manual backup trigger button - Display backup stats (size, bookmark count, status) - Added backups page to settings navigation Technical Details: - Uses Restate queue system for distributed job processing - Implements idempotency keys to prevent duplicate backups - Background worker concurrency: 2 jobs at a time - 10-minute timeout for large backup exports - Proper error handling and logging throughout - Type-safe implementation with Zod schemas * refactor: simplify backup settings and asset handling - Move backup settings from separate table to user table columns - Update BackupSettings model to use static methods with users table - Remove download mutation in favor of direct asset links - Implement proper quota checks using QuotaService.checkStorageQuota - Update UI to use new property names and direct asset downloads - Update shared types to match new schema Key changes: - backupSettingsTable removed, settings now in users table - Backup downloads use direct /api/assets/{id} links - Quota properly validated before creating backup assets - Cleaner separation of concerns in tRPC models * migration * use zip instead of gzip * fix drizzle * fix settings * streaming json * remove more dead code * add e2e tests * return backup * poll for backups * more fixes * more fixes * fix test * fix UI * fix delete asset * fix ui * redirect for backup download * cleanups * fix idempotency * fix tests * add ratelimit * add error handling for background backups * i18n * model changes --------- Co-authored-by: Claude <noreply@anthropic.com>
* fix: making serverConfig readonlyMohamed Bassem2025-11-281-1/+3
|
* fix: fix react errors in signin and signup formsMohamed Bassem2025-11-282-0/+10
|
* fix: separate shared lists in the sidebar (#2180)Mohamed Bassem2025-11-284-31/+237
| | | | | | | * fix: separate shared lists in the sidebar * fix sub * i18n
* fix: correctly render asset extracted text in the edit bookmark dialog. ↵Mohamed Bassem2025-11-281-4/+24
| | | | fixes #2181