aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/components/dashboard/bookmarks (follow)
Commit message (Collapse)AuthorAgeFilesLines
* fix: correctly render asset extracted text in the edit bookmark dialog. ↵Mohamed Bassem2025-11-281-4/+24
| | | | fixes #2181
* fix: use kbd for editor cardMohamed Bassem2025-11-221-27/+7
|
* feat: Add collaborative lists (#2146)Mohamed Bassem2025-11-176-155/+231
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: Add collaborative lists backend implementation This commit implements the core backend functionality for collaborative lists, allowing multiple users to share and interact with bookmark lists. Database changes: - Add listCollaborators table to track users with access to lists and their roles (viewer/editor) - Add addedBy field to bookmarksInLists to track who added bookmarks - Add relations for collaborative list functionality Access control updates: - Update List model to support role-based access (owner/editor/viewer) - Add methods to check and enforce permissions for list operations - Update Bookmark model to allow access through collaborative lists - Modify bookmark queries to include bookmarks from collaborative lists List collaboration features: - Add/remove/update collaborators - Get list of collaborators - Get lists shared with current user - Only manual lists can have collaborators tRPC procedures: - addCollaborator: Add a user as a collaborator to a list - removeCollaborator: Remove a collaborator from a list - updateCollaboratorRole: Change a collaborator's role - getCollaborators: Get all collaborators for a list - getSharedWithMe: Get all lists shared with the current user - cloneBookmark: Clone a bookmark to the current user's collection Implementation notes: - Editors can add/remove bookmarks from the list (must own the bookmark) - Viewers can only view bookmarks in the list - Only the list owner can manage collaborators and list metadata - Smart lists cannot have collaborators (only manual lists) - Users cannot edit bookmarks they don't own, even in shared lists * feat: Add collaborative lists frontend UI This commit implements the frontend user interface for collaborative lists, allowing users to view shared bookmarks and manage list collaborators. New pages: - /dashboard/shared: Shows bookmarks from lists shared with the user - Displays bookmarks from all collaborative lists - Uses SharedBookmarks component - Shows empty state when no lists are shared Navigation: - Added "Shared with you" link to sidebar with Users icon - Positioned after "Home" in main navigation - Available in both desktop and mobile sidebar Collaborator management: - ManageCollaboratorsModal component for managing list collaborators - Add collaborators by user ID with viewer/editor role - View current collaborators with their roles - Update collaborator roles inline - Remove collaborators - Shows empty state when no collaborators - Integrated into ListOptions dropdown menu - Accessible via "Manage Collaborators" menu item Components created: - SharedBookmarks.tsx: Server component fetching shared lists/bookmarks - ManageCollaboratorsModal.tsx: Client component with tRPC mutations - /dashboard/shared/page.tsx: Route for shared bookmarks page UI features: - Role selector for viewer/editor permissions - Real-time collaborator list updates - Toast notifications for success/error states - Loading states for async operations - Responsive design matching existing UI patterns Implementation notes: - Uses existing tRPC endpoints (getSharedWithMe, getCollaborators, etc.) - Follows established modal patterns from ShareListModal - Integrates seamlessly with existing list UI - Currently uses user ID for adding collaborators (email lookup TBD) * fix typecheck * add collaborator by email * add shared list in the sidebar * fix perm issue * hide UI components from non list owners * list leaving * fix shared bookmarks showing up in homepage * fix getBookmark access check * e2e tests * hide user specific fields from shared lists * simplify bookmark perm checks * disable editable fields in bookmark preview * hide lists if they don't have options * fix list ownership * fix highlights * move tests to trpc * fix alignment of leave list * make tag lists unclickable * allow editors to remove from list * add a badge for shared lists * remove bookmarks of user when they're removed from a list * fix tests * show owner in the manage collab modal * fix hasCollab * drop shared with you * i18n * beta badge * correctly invalidate caches on collab change * reduce unnecessary changes * Add ratelimits * stop manually removing bookmarks on remove * some fixes * fixes * remove unused function * improve tests --------- Co-authored-by: Claude <noreply@anthropic.com>
* fix: restore image size in grid layoutMohamed Bassem2025-11-031-2/+2
|
* feat: Support inline toggling for todos. fixes #1931 (#1933)Cédric2025-11-022-1/+39
| | | | | | | | | | | | * [1931] Can now chain the creation of todos from the quick add form * [1931] Can now toggle todos from the masonry view + added a custom renderer for inputs of type checkbox (required to remove the readonly default attribute) * handle nested lists and case --------- Co-authored-by: Cédric <cedric.marinot@elosi.com> Co-authored-by: Mohamed Bassem <me@mbassem.com>
* feat: Add view options to show tag/title and control image fit. Fixes #1960Mohamed Bassem2025-11-021-21/+40
|
* feat: display notes on bookmark card (#2083)xuatz2025-11-022-8/+86
| | | | | | | | | | | | | | | | | | | | | | | | | * feat: display notes on bookmark card * apply styling * include mobile impl * apply pr comments * add display options menu into PR * put it under app setting * cleanup * address pr comments * change the default for show notes to false * make the in-card note font lighter --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* fix(web): Add w-full to tags editor to prevent unusable narrow width (#2035)Mohamed Bassem2025-10-121-1/+1
| | | | | | | | | | | | | | | | | | | * fix(web): Add min-width to tags editor to prevent unusable narrow width When there are no tags, the tags editor input was shrinking to just 1 character width, making the entire component unusably narrow. This adds a min-w-64 (256px) class to ensure the input field is always at a usable width. Fixes #2033 Co-authored-by: Mohamed Bassem <MohamedBassem@users.noreply.github.com> * fix --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Mohamed Bassem <MohamedBassem@users.noreply.github.com>
* fix: fix show no bookmark page when there isn't search resultsMohamed Bassem2025-10-051-4/+5
|
* fix: fix public list sharing for empty lists (#1990)Mohamed Bassem2025-09-281-3/+4
|
* feat: Add tag search and pagination (#1987)Mohamed Bassem2025-09-281-146/+337
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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: fix tag flicker caused by tag sortingMohamed Bassem2025-09-072-29/+24
|
* feat(web): render AI summary in markdown (#1869)Youen Chéné2025-09-071-3/+4
| | | | | * feat: wrap bookmark summary with MarkdownReadonly component to render Markdown properly. * fix: hydration errors because of the markdown component
* fix: Incremental polling interval for ongoing crawlsMohamed Bassem2025-08-311-5/+2
|
* feat: Add a bookmark skeleton for searchMohamed Bassem2025-08-271-0/+84
|
* fix: Hide bookmark global actions when there's no bookmark grid shownMohamedBassem2025-08-231-0/+9
|
* deps: Upgrade expo & nextjs to react 19 (#1565)Mohamed Bassem2025-08-201-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* feat: Render human tags before AI tags (#1740)haappi2025-08-202-19/+26
|
* feat: Configurable number of grid columns. Fixes #1713Mohamed Bassem2025-07-261-6/+17
|
* chore: migrate away from eslint to oxlint (#1642)xuatz2025-06-221-1/+1
| | | | | | | * chore: migrate away from eslint to oxlint * revert turbo task name lint * it seems like we can remove the seemingly default globals
* fix: preserve unsaved title changes when modifying bookmark tags in the edit ↵Adrian-Ryan Acala2025-06-071-6/+5
| | | | | | | | | | | | | | | | | dialog (#1515) * feat: preserve unsaved title changes when modifying bookmark tags Prevents loss of unsaved title edits when users interact with tag selectors or other UI elements. Adds useDialogFormReset hook to maintain form state consistency across component re-renders. Fixes #1339 * Revert unnecessary modifications --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* feat: Add support for public lists (#1511)Mohamed Bassem2025-06-013-12/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* refactor: Move bookmark utils from shared-react to sharedMohamed Bassem2025-05-316-8/+8
|
* feat: Allow defaulting to reader mode when clicking on bookmarks. Fixes #662Mohamed Bassem2025-05-241-5/+21
|
* feat: Disable the AI summary button if AI is not configured. Fixes #649Mohamed Bassem2025-05-181-0/+4
|
* fix(search): add new relevance sort order (#1392)xuatz2025-05-181-1/+5
| | | | | | | | | | | * fix(search): add new relevance sort order * address pr comments * some minor fixes --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* fix(web): Hide smart lists from list selectorsMohamed Bassem2025-04-262-0/+2
|
* fix(web): Fix the spinner getting hidden during AI summarizationMohamed Bassem2025-04-211-2/+1
|
* ui(web): Reduce shadows, lighten some fonts, and a smaller editor. #1261Mohamed Bassem2025-04-213-10/+15
|
* fix: Fix server side error on clipboard checkMohamedBassem2025-04-191-2/+12
|
* fix: Dont download html content by default in the bookmark grid. Fixes #1198Mohamed Bassem2025-04-133-5/+14
|
* feat: Allow editing the extracted content of an asset bookmarkMohamed Bassem2025-04-131-5/+30
|
* ui(web): Copy link button greyed out when clipboard not available (#1209)ekambains2025-04-131-0/+2
| | | | | * ui(web): Now the copy link button is greyed out when clipboard is not available * Fix: handled navigator check safely
* chore: Rename hoarder packages to karakeepMohamedBassem2025-04-1225-49/+49
|
* fix: Deprecate the updateBookmarkText trpc endpoint and replace it with ↵MohamedBassem2025-04-081-2/+2
| | | | updateBookmark
* feat: Allow editing bookmark detailsMohamedBassem2025-04-083-12/+387
|
* feat(web): A slightly better looking banner when no bookmarks are foundMohamedBassem2025-04-062-1/+21
|
* build: Fix lint error in UpdatableBookmarksGridMohamed Bassem2025-03-221-1/+1
|
* fix: Add error boundary around bookmark cardsMohamed Bassem2025-03-093-3/+44
|
* feat: Add PDF screenshot generation and display (#995)Ahmad Mujahid2025-02-171-5/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Updated pdf2json to 3.1.5 * Extract and store a screenshot from PDF files using pdf2pic * Installing graphicsmagick and ghostscript * Generate Missing PDF screenshot with tidyAssets worker for backward support * Display PDF screenshot instead of the PDF in web if it exists. * Display PDF screenshot in mobile app if exists. * Updated pnpm-lock.yaml * Removed console.log * Revert the unnecessary changes in package.json * Revert pnpm-lock changes * Prevent rendering PDF files if the screenshot is not generated * refactor: replace useEffect with useMemo for section initialization * feat: show PDF file download button and handle large PDFs by defaulting to screenshot view * feat: add file size to openapi spec * feature: Add Assets preprocessing in fix mode to admin actions * i18n: add reprocess_assets_fix_mode translation * i18n: Add missing ar translations * A bunch of fixes * Fix openspec schema --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* fix: Limit concurrency of bulk actions. Fix #773Mohamed Bassem2025-01-122-17/+31
|
* feat: Add Bookmark Sorting Feature (#812)Daksh Pareek2025-01-122-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: add bookmark sorting by creation date - Add sort order toggle in GlobalActions component - Implement ascending/descending sort functionality - Update translations for sorting feature in all languages - Add sort order icons and dropdown menu - Maintain sort preference in URL params * feat: add bookmark sorting by creation date - Add sort order toggle in GlobalActions component - Implement ascending/descending sort functionality - Update translations for sorting feature in all languages - Add sort order icons and dropdown menu - Maintain sort preference in URL params during session Note: Sort order resets to default on page refresh, server-side persistence can be implemented in future enhancement * feat: Add global sort by date feature with shared sort order state - Implement global sort order functionality using a shared Zustand store (`useSortOrder` hook). - Update `getBookmarks` and `searchBookmarks` endpoints to accept a `sortOrder` parameter. - Refactor code to import `ZSortOrder` from shared types (`bookmarks.ts`), ensuring consistency across the codebase. - Update components (`UpdatableBookmarksGrid`, `bookmark-search`) to use the shared `useSortOrder` hook. - Remove unused `zSortBy` definition from `packages/shared/types/bookmarks.ts` to avoid confusion. - Ensure consistent naming conventions by prefixing Zod inferred types with `Z`. - Clean up code and address previous PR feedback comments. * tiny fixes and fixing TS errors --------- Co-authored-by: Mohamed Bassem <me@mbassem.com>
* fix: Fix truncated long text in bookmark preview modal. Fixe #793Mohamed Bassem2025-01-051-1/+1
|
* feat: Add support for smart lists (#802)Mohamed Bassem2025-01-021-14/+18
| | | | | | | | | | | | | | | | | | | * feat: Add support for smart lists * i18n * Fix update list endpoint * Add a test for smart lists * Add header to the query explainer * Hide remove from lists in the smart context list * Add proper validation to list form --------- Co-authored-by: Deepak Kapoor <41769111+orthdron@users.noreply.github.com>
* feat: Add delete bookmark confirmation dialog. Fixes #776 (#787)Nicole Li2024-12-312-12/+72
|
* feat: show createdAt year in card footer when created over a year ago (#790)JD Hartley2024-12-311-2/+9
|
* feat: Add basic pagination to searchBookmarks tRPCMohamed Bassem2024-12-221-1/+1
|
* feature: WYSIWYG markdown for notes. Fixes #701 (#715)Giuseppe2024-12-213-60/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * #701 Improve note support : WYSIWYG markdown First implementation with a wysiwyg markdown editor. Update: - Add Lexical markdown editor - consistent rendering between card and preview - removed edit modal, replaced by preview with save action - simple markdown shortcut: underline, bold, italic etc... * #701 Improve note support : WYSIWYG markdown improved performance to not rerender all note card when one is updated * Use markdown shortcuts * Remove the alignment actions * Drop history buttons * Fix code and highlighting buttons * Remove the unneeded update markdown plugin * Remove underline support as it's not markdown native * - added ListPlugin because if absent, there's a bug where you can't escape a list with enter + enter - added codeblock plugin - added prose dark:prose-invert prose-p:m-0 like you said (there's room for improvement I think, don't took the time too deep dive in) and removed theme - Added a switch to show raw markdown - Added back the react markdown for card (SSR) * delete theme.ts * add theme back for code element to be more like prism theme from markdown-readonly * move the new editor back to the edit menu * move the bookmark markdown component into dashboard/bookmark * move the tooltip into its own component * move save button to toolbar * Better raw markdown --------- Co-authored-by: Giuseppe Lapenta <giuseppe.lapenta@enovacom.com> Co-authored-by: Mohamed Bassem <me@mbassem.com>
* feature: Add i18n support. Fixes #57 (#635)Mohamed Bassem2024-11-175-41/+54
| | | | | | | | | | | | | * feature(web): Add basic scaffolding for i18n * refactor: Switch most of the app's strings to use i18n strings * fix: Remove unused i18next-resources-for-ts command * Add user setting * More translations * Drop the german translation for now
* fix: Fix SummarizeWithAI button to use an ActionButtonMohamed Bassem2024-11-091-4/+3
|