aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app (follow)
Commit message (Collapse)AuthorAgeFilesLines
* feat: Add bookmark sources statistics section (#2110)Mohamed Bassem2025-11-091-0/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: add bookmark sources statistics to usage stats page Add a new section to the usage statistics page that displays stats about bookmark sources (mobile, extension, web, API, CLI, etc). Changes: - Add bookmarksBySource field to user stats response schema - Implement backend query to fetch bookmarks grouped by source - Add new "Bookmark Sources" card to stats page UI - Add helper function to format source names for display * refactor: use stricter enum type for bookmark sources in stats API Replace generic string type with zBookmarkSourceSchema enum for better type safety and autocomplete. This ensures the API contract matches the database schema definition. Changes: - Import and use zBookmarkSourceSchema in user stats response - Define BookmarkSource type alias in frontend - Update formatSourceName to use stricter type and return non-nullable - Remove fallback case since all enum values are now handled * refactor: use shared BookmarkSource type and add i18n support - Replace local BookmarkSource type with canonical type from shared package using z.infer<typeof zBookmarkSourceSchema> - Add translation support for "Bookmark Sources" title and empty state - Add bookmark_sources.title and bookmark_sources.empty keys to English locale file This ensures type consistency across the codebase and prepares for future localization of the bookmark sources feature. * fix icons --------- Co-authored-by: Claude <noreply@anthropic.com>
* feat: Add page titles (#2109)Mohamed Bassem2025-11-0920-0/+247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: add Next.js metadata titles to dynamic and settings pages Add page titles using Next.js metadata API for better SEO and user experience: - List pages: Show list name in format "<name> | Karakeep" - Tag pages: Show tag name in format "<name> | Karakeep" - Admin pages: Add titles for overview, users, and background jobs pages - Settings pages: Add titles for all settings pages (API keys, AI, feeds, import, info, webhooks, subscription, rules, stats, assets, broken links) For client components (rules, stats, assets, broken-links), created layout.tsx files to export metadata since metadata can only be exported from server components. * feat: add Next.js metadata titles to dashboard pages Add page titles using Next.js metadata API to archive, favourites, highlights, and all tags pages: - Archive page: Show "Archive | Karakeep" - Favourites page: Show "Favourites | Karakeep" - Highlights page: Show "Highlights | Karakeep" - All Tags page: Show "All Tags | Karakeep" Improves SEO and user experience across all dashboard browsing pages. * refactor: use i18n translations for dashboard page titles Convert hardcoded page titles to use translations via generateMetadata: - Archive page: Uses common.archive translation - Favourites page: Uses lists.favourites translation - Highlights page: Uses common.highlights translation - All Tags page: Uses tags.all_tags translation Improves localization support across dashboard pages. * feat: add i18n translations to admin and settings page titles Convert hardcoded page titles to use translations via generateMetadata: - Admin Overview: Uses admin.admin_settings translation - AI Settings: Uses settings.ai.ai_settings translation - API Keys: Uses settings.api_keys.api_keys translation - Feed Settings: Uses settings.feeds.rss_subscriptions translation - Import/Export: Uses settings.import.import_export translation - Account Info: Uses settings.info.user_info translation - Subscription: Uses settings.subscription.subscription translation - Webhooks: Uses settings.webhooks.webhooks translation Improves localization support across admin and settings pages. * revert accidental commit * more translations * more fixes --------- Co-authored-by: Claude <noreply@anthropic.com>
* feat: Add service dependency checks in the server overview pageMohamed Bassem2025-10-121-5/+6
|
* feat: Revamp import experience (#2001)Mohamed Bassem2025-10-041-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * WIP: import v2 * remove new session button * don't redirect after import * store and lint to root list * models + tests * redesign the progress * simplify the import session for ow * drop status from session schema * split the import session page * i18n * fix test * remove pagination * fix some colors in darkmode * one last fix * add privacy filter * privacy check * fix interactivity of import progress * fix test
* feat: Add tag search and pagination (#1987)Mohamed Bassem2025-09-281-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: Add tag search and use in the homepage * use paginated query in the all tags view * wire the load more buttons * add skeleton to all tags page * fix attachedby aggregation * fix loading states * fix hasNextPage * use action buttons for load more buttons * migrate the tags auto complete to the search api * Migrate the tags editor to the new search API * Replace tag merging dialog with tag auto completion * Merge both search and list APIs * fix tags.list * add some tests for the endpoint * add relevance based sorting * change cursor * update the REST API * fix review comments * more fixes * fix lockfile * i18n * fix visible tags
* fix(web): Handle user deletion more gracefullyMohamed Bassem2025-09-141-4/+22
|
* feat: A better looking catch all error boundaryMohamed Bassem2025-09-141-2/+39
|
* fix: handle list with slashes in their names and truncate long list names. ↵Mohamed Bassem2025-08-301-4/+4
| | | | fixes #1597
* feat: Add a bookmark skeleton for searchMohamed Bassem2025-08-271-2/+2
|
* fix: fix nextjs warning about dialog without title in bookmark previewMohamedBassem2025-08-241-1/+12
|
* fix(web): fix query getting rest when bookmark preview is closed. fixes #1521MohamedBassem2025-08-241-0/+8
|
* feat: A redesigned background jobs page. #1551MohamedBassem2025-08-211-6/+1
|
* Revert "deps: Upgrade nextjs to 15.5"MohamedBassem2025-08-201-25/+0
| | | | This reverts commit be420c9aebb0f2d343a0c94327fddc089f56d402.
* deps: Upgrade nextjs to 15.5MohamedBassem2025-08-201-0/+25
|
* fix(web): Suppress hydration warning on root htmlMohamedBassem2025-08-201-1/+5
|
* deps: Upgrade expo & nextjs to react 19 (#1565)Mohamed Bassem2025-08-208-37/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* fix: renamed export filename to karakeep (#1829)David Pearson2025-08-201-1/+1
|
* refactor: Extract meilisearch as a pluginMohamedBassem2025-07-272-2/+6
|
* fix: Avoid prefetching assets and tags in the link component. Fixes #1759Mohamed Bassem2025-07-261-0/+2
|
* feat: Hide AI settings tab if inference is not configured. #1781Mohamed Bassem2025-07-261-19/+19
|
* feat(web): Slightly nicer looking tags pageMohamed Bassem2025-07-191-11/+1
|
* feat: Add a proper reader modeMohamed Bassem2025-07-192-5/+313
|
* fix: Clear search history on logoutMohamed Bassem2025-07-141-0/+8
|
* feat: Add stripe based subscriptionsMohamed Bassem2025-07-132-57/+93
|
* feat: Add delete account supportMohamed Bassem2025-07-131-0/+2
|
* fix(web): Fix dark mode in auth pagesMohamed Bassem2025-07-126-10/+10
|
* feat: Support forget and reset passwordMohamed Bassem2025-07-122-0/+58
|
* feat(ui): Revamp the signin/signup pageMohamed Bassem2025-07-122-6/+27
|
* feat: Add invite user supportMohamed Bassem2025-07-104-4/+41
|
* feat: Add support for email verificationMohamed Bassem2025-07-102-0/+280
|
* feat: Add a logout pageMohamed Bassem2025-07-071-0/+18
|
* feat: Add a new timezone user settingMohamed Bassem2025-07-061-0/+16
|
* fix: Fix i18n in the new stats pageMohamed Bassem2025-07-062-36/+60
|
* feat: Add new user stats page. Fixes #1523Mohamed Bassem2025-07-062-0/+501
|
* feat(workers): Allow custmoizing max parallelism for a bunch of workers. ↵Mohamed Bassem2025-07-051-1/+1
| | | | Fixes #724
* refactor: Move the health endpoint to hono as wellMohamed Bassem2025-07-041-8/+0
|
* refactor: Move the trpc endpoint to honoMohamed Bassem2025-07-041-22/+0
|
* chore: migrate away from eslint to oxlint (#1642)xuatz2025-06-224-0/+4
| | | | | | | * chore: migrate away from eslint to oxlint * revert turbo task name lint * it seems like we can remove the seemingly default globals
* feat(ui): Improve the look of the public bookmarks pageMohamed Bassem2025-06-072-20/+7
|
* fix: Use a new public list metadata endpoint for metadata generationMohamed Bassem2025-06-071-3/+13
|
* feat(web): Redesign the user settings pageMohamed Bassem2025-06-071-2/+2
|
* feat: Add support for public lists (#1511)Mohamed Bassem2025-06-013-0/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * WIP: public lists * Drop viewing modes * Add the public endpoint for assets * regen the openapi spec * proper handling for different asset types * Add num bookmarks and a no bookmark banner * Correctly set page title * Add a not-found page * merge the RSS and public list endpoints * Add e2e tests for the public endpoints * Redesign the share list modal * Make NEXTAUTH_SECRET not required * propery render text bookmarks * rebase migration * fix public token tests * Add more tests
* feat: add user customisable default archive display behaviour (#1505)xuatz2025-06-013-11/+40
| | | | | | | | | | | | | | | | | * fix typo * implementation * bug fix and refactoring * Use nuqs for searchParam management * remove the todo about the tests * fix tests --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* refactor: Move bookmark utils from shared-react to sharedMohamed Bassem2025-05-311-1/+1
|
* feat: Allow defaulting to reader mode when clicking on bookmarks. Fixes #662Mohamed Bassem2025-05-242-24/+35
|
* refactor: Migrate from NextJs's API routes to Hono based routes for the API ↵Mohamed Bassem2025-05-1827-1142/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#1432) * Setup Hono and migrate the highlights API there * Implement the tags and lists endpoint * Implement the bookmarks and users endpoints * Add the trpc error code adapter * Remove the old nextjs handlers * fix api key not found handling * Fix trpc error handling * Fix 204 handling * Fix search ordering * Implement the singlefile endpoint * Implement the asset serving endpoints * Implement webauth * Add hono as a catch all route under api * fix tests
* feat(api): enable ?sortOrder= for relevant resources (#1398)xuatz2025-05-186-7/+28
| | | | | * feat(api): enable `?sortOrder=` for relevant resources * fix tests
* fix(search): add new relevance sort order (#1392)xuatz2025-05-181-1/+9
| | | | | | | | | | | * fix(search): add new relevance sort order * address pr comments * some minor fixes --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* feat: Add NETSCAPE-Bookmark-file-1 export format support (#1374)Yuiki Saito2025-05-111-15/+41
| | | | | | | | | | | | | * Add function to export bookmarks in NETSCAPE-Bookmark-file-1 format * Update export endpoint to support NETSCAPE format * Add format selection to export UI * include tags in the export --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* feat: Implement generic rule engine (#1318)Mohamed Bassem2025-04-273-1/+100
| | | | | | | | | | | | | | | | | * 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