* feat: add ticket numbers to cards with workspace prefix
- Add cardNumber to cards
- Add cardPrefix/cardCounter to workspace
- Populate initial prefixes and numbers via new migration
- Introduce generateWorkspacePrefix util and export it
- Include cardNumber in card-related API responses and search results
- Render and display tickets as PREFIX-NUMBER in UI
- Update Card component to accept ticketNumber
- Update CardModal and board cards to show number when available
- Add cardNumber to CommandPalette search results type
* feat: regen migration
* feat: enhance card and workspace schemas with cardNumber and indexing
- Updated the card repository to allocate card numbers atomically per workspace.
- Modified the card schema to include a cardNumber field and added an index on listId and cardNumber for improved query performance.
- Enhanced the workspace schema to include an index on cardPrefix for optimized lookups.
- Adjusted the migration journal to reflect the new schema changes and their timestamps.
- Updated the regex in workspace repository to allow alphanumeric prefixes in ticket IDs.
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat: add card context menu and duplication functionality
* Implemented a context menu for cards allowing actions such as copying links, duplicating cards, and managing members, labels, and due dates
* Added modals for card duplication and context actions.
* Updated API with a new endpoint for duplicating cards, including options for copying labels, members, and checklists
* refactor: remove cardPublicId from context menu and related components
* Removed cardPublicId prop from CardContextMenu and CardContextMembersModal for cleaner context handling
* Updated scrollbar styling
* feat: add delete card functionality to context menu
* feat: workspace start of week column
* feat(l10n): add workspace setting for the first day of the week
Fixes#361
* feat: add Saturday as option
* chore: fix migration order
* chore: fix merge
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* fix: add 404 not found page
Closes#320
- Add custom 404 page matching the app's design system
- Include PatternedBackground and proper dark mode support
- Provide navigation links to homepage and boards
- Add i18n support with @lingui/react
* fix: add 404 redirects for non-existent boards and cards
Add useEffect hooks to redirect to /404 page when:
- Board does not exist in board view
- Card does not exist in card view
This addresses the cases mentioned in maintainer feedback where
the static 404 page wasn't being used for dynamic routes.
Addresses review feedback on PR #349
* feat: redirect to 404 for non-existent public workspaces and cards
Per maintainer feedback:
- Add redirect logic to public boards view when workspace doesn't exist
- Add redirect logic to public card modal when card doesn't exist
- Uses error?.data?.code === 'NOT_FOUND' check as suggested
- Closes modal before redirecting for card modal
* feat: add notifications schema
* chore: gen migration
* feat: add mention email template
* feat: add sendMentionEmail func
* feat: add repo funcs
* feat: update card router to send emails on mention
* fix: update the editor suggestion to show all members
* feat: skip pending members in sendMentionEmails
* feat: update comments to use tiptap editor
* refactor: replace presigned URL uploads with backend upload endpoints
* feat: update avatar upload to use new endpoint
* refactor: use createS3Client in auth hooks
* feat: generate presigned URLs for avatars
* fix: show avatar image in user menu
* fix: hide tooltip if content is empty
* fix: support external avatar URLs in generateAvatarUrl
* fix: remove content type restriction on attachments
* fix: prevent workspace.byId validation errors when publicId is empty
* fix: add keys to shortcut elements
* fix: prevent card.byId validation errors when cardPublicId is empty
* chore: remove invalid config option from next.config.js
* feat: setup schema for workspace roles
* chore: regen migration
* feat: add publicId to workspace roles
* feat: setup default permissions
* feat: add repo funcs
* feat: setup basic router interactions
* feat: add card permissions
* feat: assert permissions for lists
* feat: assert board permissions
* feat: assert permission for remaining routes
* feat: add permissions page to settings
* feat: enable updating member roles
* feat: order members by role and createdAt
* feat: allow editing individual permissions
* feat: reset role defaults
* feat: clear all permission overrides
* feat: allow users to delete entities they have created
* feat: set roleId when inviting new members
* feat: disable UI elements if user does not have permissions
* feat: allow admins to assign the admin role to other users
* feat: allow delete:list as default
* refactor: centre permissions modal
* chore: translations
Display user profile pictures instead of initials on card comments
and activity items. Fetches the user image field from the database
and passes imageUrl to the Avatar component.
Co-authored-by: Sachin Divekar <sachin.divekar@remiges.tech>
* feat: add YouTube video embed support for TipTap editor
- Paste YouTube URLs to auto-embed videos with metadata
- Edit video title and URL through dropdown menu
- Convert embed back to plain URL link
- Fetch video titles automatically via YouTube oEmbed API
* fix:
- reverted NewCardForm CSS properties back to max-h-48.
- Added boolean prop to TipTap Edtior for YouTube embed.
- Disabled YouTube embed feature for NewCardForm Editor
* chore: lint
* chore: translations
* chore: update translations
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat: implement drag-and-drop reordering for checklist items
* WIP: Changes before syncing with main
* feat: update drag icon and positioning
* refactor: consolidate checklist item updates into single endpoint
- Remove standalone reorderItem route (now part of updateItem)
- Add optional index parameter to updateItem for reordering
- Change updateItem from PUT to PATCH method
- Add deletedAt IS NULL filter to reorderItem SQL queries
- Follows existing pattern from card.update route
* feat: add optimistic updates
* chore: translations
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat: add card due dates to schema
* feat: update repo funcs
* feat: update card router to support due dates
* chore: update migration journal
* feat: add date selector
* feat: display date icon and label on cards
* feat: add due date filters
* feat: add due date to new card form
* feat: light mode tweaks
* feat: improve text eligibility on light mode
* feat: reduce selector font size
* feat: display date updates in card activity
* chore: gen translations
* feat: hide dropdown on comments for public boards
* feat: fix height of modal and add scrollable content area
* feat: add view only badge to public boards
* feat: prevent card title from overlapping close button
* chore: gen translations
* feat: add patterned background to boards
* feat: setup dashboard 2.0
* fix: prevent patterned background from overlaying buttons
* feat: set max width for main card view
* feat: adjust colour scheme for card view
* feat: adjust dashboard border colour scheme and radius
* fix: use correct colour for description placeholder
* fix: use getLayout to persist layout state across pages
* feat: reduce max width for settings and members pages
* feat: add feedback button and modal
* feat: adjust page max width
* feat: extend mobile layout support
* fix: hide pro badge when collapsed
* feat: tweak nav styling for light mode
* feat: tweak skeleton loaders for board list
* feat: extend list max height
* fix: hide side nav right border on desktop
* chore: update hero images
* chore: update hero images for docs
* chore: update translations
* fix: add min width to dashboard
* fix: display theme background and set dynamic viewport height
* fix: prevent zooming on ios
* fix: enable scroll on card page
* feat: add mobile navigation with responsive layout and theme controls
* feat: prevent workspace owners from removing themselves and update workspace dropdown styling
* feat: add useClickOutside hook and event listener utilities for improved UI interactions
* chore: improve mobile UI styling
* refactor: improve UI layout and buttons in boards/members views
feat: adjust /members layout
* fix: standardize layout containers and improve mobile navigation styling
* feat: update card view layout
* feat: add responsive layout to board view
* feat: readjust boards page layout
* feat: enhance table view on mobile for members page
* feat: extend mobile support with sliding side panels
* fix: prevent two panels from being open at the same time
* feat: close panels when clicking outside
* fix: adjust font-sizing for import source
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat: setup localisation with lingui
* Fix hydration and locale issues
* Add missing translations and tweak selector styling
* Extend language support
* Update lang support
* Extend lang support
* Fix build and add dyanmic imports
* feat: integrate MDXEditor for card description with markdown support
* feat: replace textarea with markdown editor for card descriptions and improve styling
* refactor: replace MDXEditor with Tiptap for rich text editing
* fix: prevent menu item from taking focus and submitting
* feat: replace editor menu with bubble menu and add placeholder text
* feat: implement slash commands menu in editor with suggestion API
* chore: update editor styling
* chore: update editor placeholder text
* fix: navigate command list by keyboard and tweak styling
* fix: prevent editor onBlur from submitting NewCardForm
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat: add user authentication check for activity list self-identification
* refactor: replace api.user with authClient for session management in ActivityList
* fix: add type="button" to modal close buttons to fix Enter key form submission
Previously, pressing Enter in modal form inputs would dismiss the modal instead
of submitting the form because close buttons defaulted to type="submit". This
adds explicit type="button" to all modal close buttons to ensure Enter key
properly submits forms.
Fixes:
- New board creation via Enter key
- New workspace creation via Enter key
- New card creation via Enter key
- New list creation via Enter key
- Member invitation via Enter key
- Label creation/editing via Enter key
- Board URL updates via Enter key
- Import boards forms via Enter key
* fix: submit forms on enter key submission
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>