* feat(admin): add confirmation dialog for user deletion (#1648)
* No need to manage dialog state
---------
Co-authored-by: Mohamed Bassem <me@mbassem.com>
* 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>
* 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
* 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 shared
* Expose RSS feeds for lists
* Add e2e tests
* Slightly improve the look of the share dialog
* allow specifying a limit in the rss endpoint
* feat: Implement tabbed layout for bookmark preview content and details
* feat: Enable swipe gesture to switch between content and details tabs
* feat: add scroll-based tab bar hide/show functionality
* fix: adjust tab bar layout to maintain content space when hidden
* fix: bg-muted was stopping midway in the background
* fix: disable mouse tracking for swipe detection in BookmarkPreview
* fix: improve scroll behavior to prevent glitchy tab bar animation
* Update apps/web/components/dashboard/preview/BookmarkPreview.tsx
Co-authored-by: xuatz <xzlow10@gmail.com>
* Update apps/web/components/dashboard/preview/BookmarkPreview.tsx
Co-authored-by: xuatz <xzlow10@gmail.com>
* feat: add responsive layout with tabs and swipe for BookmarkPreview
* Remove react swipe, scroll handlers and do screen detection using media queries
* Revert the grey background for the main content
* remove react-swip from the package.json
* more fixes
* Fix the black area under the tab bar
---------
Co-authored-by: xuatz <xzlow10@gmail.com>
Co-authored-by: Mohamed Bassem <me@mbassem.com>
* 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>
* 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
* 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>
* 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>
* 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: Implement search filtering in the backend
* feat: Implement search language parser
* rename matcher name
* Add ability to interleve text
* More fixes
* be more tolerable to parsing errors
* Add a search query explainer widget
* Handle date parsing gracefully
* Fix the lockfile
* Encode query search param
* Fix table body error
* Fix error when writing quotes
* #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>