* 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: 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>
* init: schema migration, isArchived added to
board table. refactor: board repo for isArchived filtering
* init: archived, unarchived API procedures. refactor: all query
* fix: migration error
* feat: add tabbed navigation for boards view
* Implemented a Listbox for mobile and a tabbed navigation for desktop to switch between "Boards" and "Archived" views.
* Introduced state management for active tab selection.
* Updated UI components to reflect the new navigation structure.
* init: frontend/boards lists & tabs
* chore: fixed font styling and spacing
* init:boardDropdown / boardView.
* chore:added translations
* Remove .cursor plan file from repo
* fix:build erros
* revert: remove locales changes
* fix:reverted changes under locales, replaced the archive and unarchive endpoints. Reorder migrations
* fix:migration issue
* fix: update journal.json
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat(db): add webhook schema, migration, and repository
Add the database foundation for workspace webhooks:
- Add workspace_webhooks table with migration (webhook_event enum,
URL, secret, event subscriptions, active flag)
- Add webhook repository with CRUD operations
- Add webhooks schema definition with relations
- Extend card and list repos to return board/list names for
webhook payload context
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(db): remove unused webhook_event enum and fix migration timestamp
- Remove dead webhook_event pgEnum from schema (events column uses text)
- Remove CREATE TYPE statement from migration SQL
- Fix migration journal timestamp to be chronologically after the
notifications migration (idx 25)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(db): return boardPublicId from card and list repo queries
Add board publicId to getWorkspaceAndCardIdByCardPublicId and
getWorkspaceAndListIdByListPublicId return values, needed for
correct boardId in webhook payloads.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(db): add workspaceId index and document secret exposure
- Add index on workspaceId for efficient webhook lookups per workspace
- Add JSDoc comment on getActiveByWorkspaceId explaining that it
returns secrets for server-side HMAC signing only and must never
be exposed via client-facing endpoints
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(db): extract parseEvents helper in webhook repo
DRY up 6 repeated JSON.parse-and-cast calls into a single helper
function, addressing reviewer feedback on PR #391.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* 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
* 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
* feat(workspace): sanitize member emails for non-admin users in workspace router
* feat(workspace): add email visibility setting and update member display logic
* fix(workspace): update default value for showEmailsToMembers column to true
* - Removed unnecessary type assertions
- Added anonymous name handling (anonymous_[publicId]) in the API
- Removed placeholder logic
- Reverted null check
- Avoided as unknown cast
* 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: add migration to remove not null constraint from referenceId on subscriptions
* feat(cloud): write worspace slug availability checks to db
* feat: add migration to add cascade set null to referenceId on subscription
* feat: update workspace and subscripton schema
* feat: add createWorkspaceSlugCheck repo func
* feat: set workspace url on creation
* chore: update translations
* refactor: various tweaks and fixes
* feat: add pro bolt to pricing notice
* feat: toggle pro subscription
* fix: hide pro subscription notice for self hosters
* feat: add pro upgrade message on members page
* feat: hide pro upgrade notice on small viewports
* feat: update workspace url placeholder
* feat: implement Trello integration with OAuth and user fields
* feat: migrate Trello integration to new integrations table
* refactor: migrate Trello integration to use new integration system
* refactor: migrate Trello integration to use new integrations table
* fix: add loading check for Trello integration and update VSCode settings
* feat: enhance import boards UI with dynamic integration providers and local storage config
* feat: add select/unselect all buttons and loading state to board import form
* feat: add Trello import env vars on README
* docs: update Trello import guide to use OAuth flow instead of API keys
* feat: add integrations table for OAuth token management
* feat: connect trello from import modal
* refactor: consolidate Trello integration endpoints into unified integration router
* fix: trello import again
* refactor: generalize integration authorization flow and improve error handling
* refactor: update Trello API endpoints and tags for better organization
* feat: add Integrations tag to OpenAPI specification
* refactor: update Trello auth endpoint to use generic integration provider param
* refactor: move Trello integration logic from trello.ts to import.ts router
* refactor: consolidate Trello integration endpoints and fix API URL
* chore: remove debug logs
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
* feat: add account deletion functionality with cascade delete for workspace relations
* fix: add cascade delete to workspace user foreign key constraints
* fix: change onDelete action to set null for user references in schema
* feat: tweak design
---------
Co-authored-by: Henry <henry_ball@hotmail.co.uk>
Co-authored-by: Henry <30578846+hjball@users.noreply.github.com>
* fix: add cascade delete for card-related foreign keys and invalidate workspace cache after deletion
* fix: use refetch instead of invalidate for workspace deletion to ensure immediate UI update
* feat: add cascade delete to card relations and activity tables