* Add SettingsAccountsEmailsBlocklistInput story
* Add SettingsAccountsEmailsBlocklistSection story
* Add SettingsAccountsEmailsBlocklistTable story
* Add SettingsAccountsEmailsBlocklistTableRow story
* wip
* add play
* add play
* add delete from blocklist test
* wip
* wip
* done
* fix: replace twenty logo in the png format with one in the svg format for better resolution
* fix: toggle the custom url switch to true if the local storage contains a server base url different from that of the env variable
* fix: update the front base url and the server base url to those of the production environment in the .env.example file
* fix: update README to add a step for changing env variables to those of the development environment for contributors or local testers
* feat: currency type in optimisitc cache update
* Add test for optimisitc currency cache
* Refactor error message for currency filter to be more accurate
* Fix
---------
Co-authored-by: Charles Bochet <charles@twenty.com>
* fix: set a specifc date to date field input on the story and set the state on record store family selector
* test: add an interaction test to verify the specific date
* feat: configure eslint rules by replicating those in the twenty-front package and introduce scripts for linting, formatting code and removing build output
* fix: ensure each file of the extension package satisfies linting rules and disable some rules where necessary
* fix: update relative imports to absolute imports throughout extension code with the defined tilde and at symbols
* fix: import the updated ui module from the front package to the chrome extension package to prevent eslint rules from breaking subject to the recent merged changes into main
* fix: commit the case change for files that were missed by Git in the earlier commits due to default configuration
* feat: find duplicate objects backend init
* refactor: move duplicate criteria to constants
* fix: correct constant usage after type change
* feat: skip query generation in case its not necessary
* feat: filter out existing duplicate
* feat: FE queries and hooks
* feat: show duplicates on FE
* refactor: should-skip-query moved to workspace utils
* refactor: naming improvements
* refactor: current record typings/parsing improvements
* refactor: throw error if existing record not found
* fix: domain -> domainName duplicate criteria
* refactor: fieldNames -> columnNames
* docs: add explanation to duplicate criteria collection
* feat: add person linkedinLinkUrl as duplicate criteria
* feat: throw early when bot id and data are empty
* refactor: trying to improve readability of filter criteria query
* refactor: naming improvements
* refactor: remove shouldSkipQuery
* feat: resolve empty array in case of empty filter
* feat: hide whole section in case of no duplicates
* feat: FE display list the same way as relations
* test: basic unit test coverage
* Refactor Record detail section front
* Use Create as input argument of findDuplicates
* Improve coverage
* Fix
---------
Co-authored-by: Charles Bochet <charles@twenty.com>
* fix: forbid creation of objects or fields with certain characters or with forbidden keywords that clashes with pg_graphql
* refactor: add a decorator for name validation and use it on fields
* Migrate command to cron
* Put back command using job as well
* Build service and module + move into folder
---------
Co-authored-by: Thomas Trompette <thomast@twenty.com>
* Refactor task count
* Fixed show page rerender
* Less rerenders and way better title and body UX
* Finished breaking down activity editor subscriptions
* Removed console.log
* Last console.log
* Fixed bugs and cleaned
* improve timeline messaging to allow users to view the threads to which they participated
* working
* improvement
* improvements
* improvements
* fix
* remove unnecessary type
* Add SettingsAccountsEmailsBlocklistInput story
* prevent contact creation from the same company
* add todo
* improvements
* Delete packages/twenty-front/src/modules/settings/accounts/components/__stories__/SettingsAccountsEmailsBlocklistInput.stories.tsx
* refactor
* modify after review
* improve code
* create utils
* fix
* Fix getAllByWorkspaceId to throw NotFoundException when no workspace member found
* fix after merge
* use map
* modify after review
* Fix delete with no result should not throw
* add logs
* Delete packages/twenty-server/src/database/typeorm/metadata/migrations/1708442904165-addOnDeleteActionToRelationMetadata.ts
* parse metadata path
* metadata rest api
* add queryAction condition and return object singular/plural
* handle GET endpoint for metadata
* FindOne and FindMany query for metadata endpoint
* Request all objects and nest fields in object request
---------
Co-authored-by: martmull <martmull@hotmail.fr>
* Added functionality for onKeyDown for new webhook and new API key, to save when the user presses the [Enter] key
* Update SettingsDevelopersApiKeysNew.tsx
Fix for linter
* Update SettingsDevelopersWebhooksNew.tsx
Fix for linter
* Update SettingsDevelopersApiKeysNew.tsx
Got rid of extra space in if statement
* Update SettingsDevelopersWebhooksNew.tsx
Got rid of extra space for if statement
* Update SettingsDevelopersApiKeysNew.tsx
prettier
* Update SettingsDevelopersWebhooksNew.tsx
prettier
* Fix linter
---------
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
* Add SettingsAccountsEmailsBlocklistInput story
* prevent contact creation from the same company
* add todo
* improvements
* Delete packages/twenty-front/src/modules/settings/accounts/components/__stories__/SettingsAccountsEmailsBlocklistInput.stories.tsx
* refactor
* modify after review
* improve code
* fix: memory issue with truncate command
* fix: LINK doesn't have any default value
* fix: Cannot convert LINK to column type.
* fix: handle old column type and add a warn to fix them manually
* Add computed field to workspace entity
* Add activationStatus to front requests
* Update Selector
* Use activation status
* Stop using selector for mock values
* Remove isCurrentWorkspaceActiveSelector
* Use activation status
* Fix typo
* Use activation status
* Create hook for sign in up navigate
* Update hook to handle profile creation
* Use varaible
* Use more readable boolean function
* Uploading some new visuals
* Delete packages/twenty-docs/static/img/preview-light.png
* Rename Github cover light.png to preview-light.png
* replace index light file test
* Uploaded illustration updated versions
* Adding data model illustrations
* Updated font case for data model illustrations
* Rename Emails-dark.png to emails-dark.png
* Rename Emails-light.png to emails-light.png
* Rename Index-dark.png to index-dark.png
* Rename Index-light.png to index-light.png
* Rename Kanban-dark.png to kanban-dark.png
* Rename Kanban-light.png to kanban-light.png
* Rename Keyboard-dark.png to keyboard-dark.png
* Rename Notes-dark.png to notes-dark.png
* Rename Notes-light.png to notes-light.png
* Rename Tasks-dark.png to tasks-dark.png
* Rename Tasks-light.png to tasks-light.png
* Rename Keyboard-light.png to keyboard-light.png
* Added some API settings illus - final update
* wip
* wip
* move blocklist to connectedAccount
* wip
* format date
* fix styling
* renaming
* fix imports
* fix imports
* Rename BlockListItem.ts to BlocklistItem.ts
* Add IS_BLOCKLIST_ENABLED feature flag and remove IS_MESSAGING_ENABLED gate at model creation
* hide blocklist if feature flag is disabled
* on click focus on activity body editor
* acitivity editor hot key scope added
* classname prop added escape hot key scope call back added
* passing containerClassName prop for activity editor
* hot key scope added
* console log cleanup
* activity target escape hot key listener added
* tasks filter hot key scope refactor
* scope renaming refactor
* imports order linting refactor
* imports order linting refactor
* acitivity editor field focus state and body editor text listener added
* logic refactor removed state for activity editor fields focus
* removed conflicting click handler of inline cell creating new scope
* linting and formatting
* acitivity editor field focus state and body editor text listener added
* adding text at the end of line
* fix duplicate imports
* styling: gap fix activity editor
* format fix
* Added comments
* Fixes
* Remove useListenClickOutside, state, onFocus and onBlur
* Keep simplifying
* Complete review
* Fix lint
---------
Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
* Add CreateContactService to messaging services
* Add logic to create a contact if it doesn't exist
* Add name
* Improvements
* contact creation working
* fix bug
* Add IsPersonEmailService to check if an email is personal or not
* filter is working
* improve filter
* create companies and people
* Refactor createContactFromHandleAndDisplayName to createContactAndCompanyFromHandleAndDisplayName
* improve regex
* reorganizing services
* updates
* reorganize folders
* wip
* use transaction
* wip
* wip
* wip
* batch queries
* almost working
* working
* build: create a new vite project for chrome extension
* feat: configure theme per the frontend codebase for chrome extension
* feat: inject the add to twenty button into linkedin profile page
* feat: create the api key form ui and render it on the options page
* feat: inject the add to twenty button into linkedin company page
* feat: scrape required data from both the user profile and the company profile
* refactor: move modules into options because it is the only page using react for now
* fix: show add to twenty button without having to reload the single page application
* fix: extract domain of the business website instead of scrapping the industry type
* feat: store api key to local storage and open options page when trying to store data without setting a key
* feat: send data to the backend upon click and store it to the database
* fix: open options page upon clicking the extension icon
* fix: update terminology from user to person to match the codebase convention
* fix: adopt chrome extension to monorepo approach using nx and get the development server working
* fix: update vite config for build command to work per the requirement
* feat: add instructions in the readme file to install the extension for local testing
* fix: move server base url to a dotenv file and replace the hard-coded url
* feat: permit user to configure a custom route for the server from the options page
* fix: fetch api key and route from local storage and display on options page to inform users of their choices
* fix: move front base url to dotenv and replace the hard-coded url
* fix: remove the trailing slash from person and company linkedin username
* fix: improve code commenting to explain implementation somewhat better
* ci: introduce a workflow to build chrome extension to ensure it can be published
* fix: format files to display code in a consistent manner per the prettier configuration in codebase
* fix: improve the commenting significantly to explain important and hard-to-understand parts of the code
* fix: remove unused permissions from the manifest file for publishing to the chrome web store
* Add nx
* Fix vale
---------
Co-authored-by: Charles Bochet <charles@twenty.com>
* create service
* wip
* use raw queries
* creating companies is working
* Fix participant handle domain name extraction
* Add HTTP service to fetch company info from domain name
* Handle 404
* Fix missing parameter in INSERT query
* wip
* renaming
* Add typing
* Set opportunity stage as editable
* Fix comments
* Add command for migration
* Fixes
---------
Co-authored-by: Thomas Trompette <thomast@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>