rcgit

/ karakeep
follow (on) | order: default date topo
Age Commit message Author Files +/-
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
feat: Add automated bookmark backup feature (#2182)
* 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>
Mohamed Bassem 32 -8/+5697
deps: Upgrade expo & nextjs to react 19 (#1565)
* Attempt to upgrade expo 53
* Attempt upgrade nextjs
* Fix a bunch of peer deps
* upgrade some docs deps
* fix typecheck
* update the shadcn calendar component
* more fixes
* more fixes
* revert ollama upgrade
* update react version to use carets
* remove react-select from landing
* fix the typescript error caused by customFetch
* upgrade the new grid user setting to nextjs 15
* mobile: enable react canary to support react 19.1
* upgrade react native menu
* fix navigation context error
Mohamed Bassem 29 -3336/+2403
feat: Hide AI settings tab if inference is not configured. #1781 Mohamed Bassem 2 -22/+21
feat: Add stripe based subscriptions Mohamed Bassem 18 -60/+4351
fix: Fix i18n in the new stats page Mohamed Bassem 3 -37/+108
feat: Add new user stats page. Fixes #1523 Mohamed Bassem 6 -1/+1102
feat: Allow defaulting to reader mode when clicking on bookmarks. Fixes #662 Mohamed Bassem 16 -34/+2341
feat: Implement generic rule engine (#1318)
* Add schema for the new rule engine
* Add rule engine backend logic
* Implement the worker logic and event firing
* Implement the UI changesfor the rule engine
* Ensure that when a referenced list or tag are deleted, the corresponding event/action is
* Dont show smart lists in rule engine events
* Add privacy validations for attached tag and list ids
* Move the rules logic into a models
Mohamed Bassem 42 -40/+5787
feat: Add a setting page to manage assets. Fixes #730 Mohamed Bassem 16 -347/+630
feat: Change webhooks to be configurable by users Mohamed Bassem 23 -28/+4272
refactor: Refactor sidebar into a shared component Mohamed Bassem 15 -372/+276
ui: Redesign the settings page and move it to its own layout Mohamed Bassem 32 -1163/+1263
feature(web): Introduce a new sticky navbar. Fixes 520 (#515)
* ui: add global header
* fix: design fixes
* fix: tests
* fix navbar background, hide y scrollbar and change sidebar footer to show version
---------
Co-authored-by: MohamedBassem <me@mbassem.com>
Md Saban 13 -151/+180
feature(web): Async validate JWT account and sign out the user if they no… MohamedBassem 3 -2/+39
ui(web): Show bookmark URL when maximizing a bookmark MohamedBassem 9 -23/+82
feature(web): Allow uploading directly into lists/tags. Fixes #69 MohamedBassem 19 -144/+258
fix(web): Consistent spacing in the content container in all pages. Fixes #40 MohamedBassem 19 -77/+60
feature(web): Add dark mode support MohamedBassem 31 -39/+138
ui(web): Show an overlay when dragging is active MohamedBassem 3 -19/+41
fix(web): Only show demo mode banner in demo mode MohamedBassem 1 -1/+3
feature(web): Add support for demo mode MohamedBassem 13 -19/+89
Feature: Add support for uploading images and automatically inferring their…
* feature: Experimental support for asset uploads
* feature(web): Add new bookmark type asset
* feature: Add support for automatically tagging images
* fix: Add support for image assets in preview page
* use next Image for fetching the images
* Fix auth and error codes in the route handlers
* Add support for image uploads on mobile
* Fix typing of upload requests
* Remove the ugly dragging box
* Bump mobile version to 1.3
* Change the editor card placeholder to mention uploading images
* Fix a typo
* Change ios icon for photo library
* Silence typescript error
Mohamed Bassem 31 -79/+2736
lint: Lint and format the entire repo with the new configs MohamedBassem 122 -411/+424
structure: Create apps dir and copy tooling dir from t3-turbo repo MohamedBassem 396 -9511/+10350
refactor: Move all components to the top level directory MohamedBassem 70 -2430/+2430
fix: Fix the double scrolling on mobile MohamedBassem 1 -2/+2
feature: Introduce a separate sidebar for the mobile MohamedBassem 5 -5/+64
feature: Add login page and logout button MohamedBassem 9 -59/+111
[ui] Make the bookmarks section scrollable MohamedBassem 2 -2/+2
[ui] Adding the favourites and archive pages MohamedBassem 12 -62/+160
[chore] Linting and formating tweaking MohamedBassem 24 -67/+157
[refactor] Move the different packages to the package subdir MohamedBassem 128 -2716/+2713
[feature] Introduce a sidebar MohamedBassem 11 -176/+251