* feat: added external api endpoint for customers feature
* fix: review comments from copilot
* fix: segretate endpoints into detail endpoints
* fix: moved name validation logic to serializer
* add workspace to oauth token
* modify oauth flow to store workspace and app installation in tokens and grant
* reduce app installation id cache ttl
* reduce app installation id cache ttl to 1s
* include clientid in cache key
* [SILO-454] refactor: add common code for decorators, logger packages
- refactor Controller related decorators and use those in silo
- add silo's logger config in packages and use it for live
- remove redundant code across silo, live
* remove usages of local logger module
* add test in prebuild phase for silo
* use logger from packages and linter changes
* chore: remove E_INTEGRATION_KEYS enum from etl/core
* chore: use E_INTEGRATION_KEYS from types
* remove unused file-tree.ts file
* chore: update psycopg dependencies to version 3.2.9 in base requirements
* refactor: clean up unused imports across multiple files
* chore: update lxml dependency to version 6.0.0 in base requirements
* style: improve code readability by breaking long lines into multiple lines across several files
* style: enhance readability by breaking long lines in ModuleSerializer docstring
* [SILO-556] fix: only rely on feature flags for enabling importers
- remove special handling for clickup, notion which was added as a stop-gap
solution for release
* formatting changes
* chore: add InitiativeLabelAssociation model and update InitiativeLabel fields
- Introduced the InitiativeLabelAssociation model to manage many-to-many relationships between initiatives and labels.
- Updated InitiativeLabel model to include new fields: name, description, and color.
- Removed direct foreign key relationships from InitiativeLabel to Initiative and Label.
- Adjusted unique constraints and added new constraints for InitiativeLabel.
* removed null from m2m
* fix: update __str__ method in InitiativeLabel model to return label name
* add unique constraint to InitiativeLabelAssociation model
- Introduced a unique constraint on the InitiativeLabelAssociation model to ensure that each initiative-label pair is unique when not marked as deleted.
- Updated migration file to reflect this new constraint.
* strategy + controller + service and type changes
* enterprise support to store
* UI and store changes
* worker changes and entity type change
* fixes gitlab enterprise flow
* add translations
* remove logs
* fix formatting and feature flag
* fix type build issue
* fix formatting
* fix cursor reviews
* fix feature flag visibility + name for pull request id + cleaned supported integrations method
* fix: permission check on viewset
* chore: check workspace admin
* chore: initiative is_workspace_admin before if condition
* chore: project member check
* fix: if conditions
* chore: add condition for guests to only edit description and name
* fix: use ROLE enum instead of magic numbers
* chore: remove if condition
* fix: next path url redirection
* fix: enhance URL redirection safety in authentication views
Updated SignInAuthSpaceEndpoint, GitHubCallbackSpaceEndpoint, GitLabCallbackSpaceEndpoint, and GoogleCallbackSpaceEndpoint to include checks for allowed hosts and schemes before redirecting. This improves the security of URL redirection by ensuring only valid URLs are used.
* chore: updated uitl to handle double /
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
* data migration and management command for github v1
* add check to support already splitted entity connections
* fix return and method name in migration
* add entity connection id arg and fixes
* remove log params
* feat: UI and store change to split pr automation and issue sync entity item create
* backend changes to bisect issue sync pr automation + fix entity conn types
* use user credentials in github flow + UI improvements + improve logging + issue state mapping
* add bidirectional sync logo
* gh ent test and fixes
* translations and copy changes
* fix url format in issue link
* optimise getCredentials method + fixes
* fix formatting
* refactor: enhance URL validation and redirection logic in authentication views
* Updated authentication views (SignInAuthSpaceEndpoint, GitHubCallbackSpaceEndpoint, GitLabCallbackSpaceEndpoint, GoogleCallbackSpaceEndpoint, and MagicSignInSpaceEndpoint) to include url_has_allowed_host_and_scheme checks for safer redirection.
* Improved URL construction by ensuring proper formatting and fallback to base host when necessary.
* Added get_allowed_hosts function to path_validator.py for better host validation.
* refactor: improve comments and clean up code in path_validator.py
* Updated comments for clarity in the get_safe_redirect_url function.
* Removed unnecessary blank line to enhance
* feat: enhance path validation and URL safety in path_validator.py
* Added get_allowed_hosts function to retrieve allowed hosts from settings.
* Updated get_safe_redirect_url to validate URLs against allowed hosts.
* Improved URL construction logic for safer redirection handling.
* feat: enhance URL validation in authentication views
* Added url_has_allowed_host_and_scheme checks in SignUpAuthSpaceEndpoint and MagicSignInSpaceEndpoint for safer redirection.
* Updated redirect logic to fallback to base host if the constructed URL is not allowed.
* Improved overall URL safety and handling in authentication flows.
* fix: improve host extraction in get_allowed_hosts function
* Updated get_allowed_hosts to extract only the host from ADMIN_BASE_URL and SPACE_BASE_URL settings for better URL validation.
* Enhanced overall safety and clarity in allowed hosts retrieval.
* feat: rich filters store architecture and UI components
* feat: add work item layout filter HOC
* improvements: minor enhancements for rich filters
* added button configuration to add filters button
* added option to disable transition for filter item
* fixed filter item label truncation
* added support for changing work item filter config keys
* improvements: add filter button config initialization
* improvements: work item layout filter compatibility fixes
* refactor: update filter structure and improve type safety across automation and rich filters
- Changed filter property types to use TFilterProperty and TFilterValue for better type consistency.
- Updated various components and hooks to utilize new type definitions, enhancing type safety.
- Refactored filter configuration and adapter logic to accommodate the new types, ensuring compatibility with existing functionality.
- Improved handling of filter expressions and conditions, streamlining the overall filter management process.
* chore: restructure rich filter utils
* refactor: optimize filter value handling and update automation condition types
- Removed unnecessary condition checks in automation details sidebar trigger.
- Enhanced filter value input to handle empty states more gracefully.
- Updated filter helper methods to return both optimal operator and transformed value.
- Adjusted filter instance logic to accommodate changes in operator and value updates.
- Modified type definitions for automation conditions and filter configurations to support SingleOrArray types.
- Added utility functions for transforming values based on operator requirements.
* fix: handle single-value operators in automation condition filters
* fix: build errors
* chore: refactor work item filters to core with enterprise extensibility
* chore: update clear filters logic from project work item empty state
* chore: remove header filters selection from project work item list
* chore: remove header filters selection from project work item list mobile header
* feat: add work item filters bar to support save and update views
* feat: add visibility button to filters bar
* chore: minor fixes for work item filters adapter
* feat: enhance filters bar with async save and update handling
* chore: minor ux fixes for filters bar
* refactor: split updateCondition into separate operator and value update methods
* feat: add save and update view options to rich filter instance
* chore: minor fixes in clear filters
* feat: project level work item filters hoc with save and update view options
* chore: minor UX improvements for view save and update options
* chore: ordering fix in work item filters store
* improvement: enhance work item filters with consistent naming and memoization optimization
* feat: different variants for filters row
* feat: implement rich filters in create and update project view modal
* chore: ensure that max visible conditions are only visible in header variant
* feat: add tracker elements for clear filter, save view, and update view
* feat: update layout filter if view is updated from modal
* feat: implement rich filters for project archived work items
* feat: implement rich filters for cycle work items
* feat: implement rich filters for module work items
* chore: remove module applied filters header
* feat: implement rich filters in epics layout
* feat: implement rich filters in workspace views
* chore: remove router filter params from all issue layout root
* feat: implement rich filters for profile work items
* fix: shouldNotifyChangeForExpression should be called before clearing the filter expression
* refactor: get all the entities from props to generate work item config
* feat: implement rich filters for teamspace work items
* feat: implement rich filters for teamspace views
* feat: implement rich filters for teamspace project work items
* feat: implement rich filters for teamspace views create / update modal
* chore: remove all instances of FilterSelection component
* chore: clean up filters from FilterSelection
* feat: add LegacyToRichFiltersConverter and BaseIssueFilterSet for enhanced filtering capabilities
- Introduced LegacyToRichFiltersConverter to automate conversion from legacy filter formats to rich filter JSON structure, including validation features for UUIDs, choices, and dates.
- Added BaseIssueFilterSet with custom filter methods for handling soft delete exclusions and direct field lookups for the Issue model.
- Updated README.md to document the new converter and filter set usage, including examples and configuration options.
* feat: implement migrations for rich filters in core and EE models
- Added migration scripts to convert legacy filters to rich_filters format for core models (IssueView, WorkspaceUserProperties, etc.) and EE models (EpicUserProperties, InitiativeUserProperty, TeamspaceUserProperty).
- Introduced utility functions for migrating and clearing rich_filters, enhancing the migration process.
- Updated date validation in the LegacyToRichFiltersConverter to utilize dateutil.parser for improved flexibility in date format handling.
- Enhanced README.md to reflect changes in date validation capabilities.
* fix: build errors
* feat: refactor rich filter config and utils to support complex and extended filters
* feat: add `state_group` to project level filters
* chore: minor updates for work item filter configs
* feat: add state group set filter
* feat: add project and teamspace project filters
* chore: remove filters-selection component
* Updated IssueViewset to use complexfilter backend and made improvements to grouping.
- Refactored IssueListEndpoint and IssueViewSet to utilize new filtering and grouping features, enhancing query efficiency.
- Updated issue grouping functions to accept a queryset parameter, improving flexibility and performance.
- Optimized AND operations through branch-based evaluation.
* Changed the rich filters query param to 'filters'
* chore: integrate project work item rich filters with backend
* refactor: page wise filter constants
* chore: minor build fixes
* feat: integrate rich filters across all work item layouts
* fix: view update on additional changes
* chore: enabled filter item transition
* chore: remove total filters from view list item
* feat: add work item subscriber filter
* added custom UUIDInFilter and update filterset to utilize it
* fix: handle empty filters with empty object instead of null
* Fixed bug with updating issues
* fix: disable save view in epic layout
* chore: update state group set filter label
* fix: filter item early return re-render error
* fix: space app build
* fix: web build
* added CharInFilter and enhanced BaseFilterSet to support exact filters
* add subscriber ID filters to BaseIssueFilterSet
* simplify filter definitions in BaseIssueFilterSet by removing unnecessary lookup expressions
* Use comma separated values for in and range filters
* Fixed issue creation
* fix: reset filter condition when operator changes to different config type
* fix: only show work item type filter if enabled for project
* chore: minor fix in cleanup function and sub work item types
* fixed date rage filter
* fix: initial work item filters for global view, project view, teamspace view, initial work item filters for static views
* fix: add condition with negation operator
* fix: reset filters when project and teamspace view layouts unmount
* Enhance issue filtering capabilities across multiple views by integrating ComplexFilterBackend and BaseIssueFilterSet. Refactor issue querysets to apply filtering and annotations consistently, improving performance and maintainability.
* chore: update epic filters to show by layout
* Enhance issue queryset by applying annotations for improved data handling in WorkspaceViewIssuesViewSet.
* Fixed workspace issue viewset
* feat: add rich_filters support to multiple user properties endpoints
* fix: incorrect count
* improvement: update filters dropdowns height to full
* refactor: update filter label from "Grouping" to "Work item group" for clarity
* improvement: update work item filters list order
* feat: sanitize and stabilize filter expressions before external conversion
* chore: reorder add filter button in filters row
* feat: enhance issue viewsets by adding prefetch_related for improved performance and data retrieval across multiple endpoints. Refactor queryset handling to streamline filtering and annotations.
* feat: apply static view filters to workspace issues
* chore: minor updates for global view rich filters
* fix: local storage filters
* refactor: update issue filter handling to use new supported filter types
- Replaced instances of EIssueFilterType with TSupportedFilterTypeForUpdate in various components and stores.
- Updated filter update methods to utilize the new filter type structure for better consistency and maintainability.
- Removed deprecated filter handling logic across multiple files, streamlining the filter update process.
* feat: enable rich filters for cycle and module analytics progress stats
Refactored progress statistics components to support advanced filtering capabilities across cycles and modules. Added new shared components for assignee, label, and state group progress tracking with consistent filtering interface.
* refactor: update sub-issue filter components to use available filters
- Replaced layoutDisplayFiltersOptions with availableFilters in SubIssueFilters and related components for better filter management.
- Introduced new constants for available filters specific to work item and initiatives pages.
- Cleaned up unused imports and improved filter enabling logic for clarity and maintainability.
* chore: disable operator selection when filter is disabled or only one operator option is available
* refactor: enhance filter components to support disabled state
* chore: minor cleanup
* reorderd the data migration for rich filters
* refactor: rich filter utils structure
* refactor: reuse traversal and transformation utilities
* refactor: use type guards in rich filters
* cleanup: remove unused comment
* refactor: restructure filter system with extended rich filters support
- Rename and reorganize filter modules for better structure
- complex_filter.py → filter_backend.py
- migration_utils.py → filter_migrations.py
- Remove custom_filters.py (inlined into filterset.py)
- Create extended filter system with inheritance hierarchy
- Add extended/ directory with enhanced converters and filtersets
- Support additional enterprise fields (team_project_id, type_id)
- Maintain base functionality while adding extended features
- Centralize imports through clean public API
- Update all view imports to use plane.utils.filters module
- Extended classes automatically override base implementations
- Maintain backward compatibility
- Rename BaseIssueFilterSet to IssueFilterSet across codebase
- Update migration files to use new converter structure
- Consolidate filter utilities for better maintainability
* Added missing param
* refactor: restructure rich filters by removing obsolete operator files and introducing core and extended operator configurations
* refactor: restructure rich filters utils
- Streamlined exports in rich-filters index files for factories, operations, types, and validators.
- Removed obsolete core types and operators, integrating their functionalities into a more cohesive structure.
- Introduced new factory and operation files to enhance modularity and maintainability.
- Improved type guards and utility functions for better type safety and clarity in filter operations.
* refactor: enhance operator handling in rich filters
- Introduced `getOperatorForPayload` utility to streamline operator normalization and negation handling across filter components.
- Updated various filter-related files to utilize the new utility, improving code clarity and reducing redundancy.
- Refactored condition addition logic to leverage the new operator handling, ensuring consistent behavior in filter expressions.
* Updated migration sequence
* refactor: update filter constants and types for consistency
- Renamed filter-related constants from `FILTER_TYPE_OPTIONS` to `FILTER_FIELD_TYPE_OPTIONS` for clarity.
- Updated references in various components and stores to use the new naming convention.
- Introduced new field type configurations to enhance filter handling and maintainability across the application.
* feat: enhance shared-state and rich filters integration
- Added new filter components and utilities to the shared-state package, improving the filter expression handling.
- Introduced `AddFilterButton`, `FilterItem`, and various input components for rich filters, enhancing user interaction.
- Updated existing components to utilize the new shared-state functionalities, ensuring consistency across the application.
- Refactored filter-related logic to streamline the integration of work item filters and improve maintainability.
* refactor: use factory functions instead of shared-state adapter
* fix: update filter helpers to handle negation correctly
* chore: minor comment cleanup
* feat: introduce new filter configurations and utilities for work item filters
- Added various filter configurations including cycle, date, label, module, priority, project, state, teamspace, user, and work item type.
- Implemented helper functions for multi-select and single-select configurations to streamline filter creation.
- Enhanced existing filter utilities to support new configurations, improving the overall filter management system.
- Organized filter-related code into dedicated files for better maintainability and clarity.
* feat: add rich filters types
* feat: add rich filters constants
* feat: add rich filters utils
* feat: add rich filters store in shared state package
* feat: add rich filters UI components
* chore: minor updates and fixes.
* chore: update pnpm lock file.
* [WEB-4842] feat: enhance rich filters with complex filter support and improved code organization
* chore: remove state group set from state filter
* chore: remove state group set from work item rich filters
* replace DashboardWidgetIssueFilterSet with IssueFilterSet in WidgetListEndpoint
- Removed the custom DashboardWidgetIssueFilterSet class and replaced it with the existing IssueFilterSet.
- This change simplifies the filter logic for the WidgetListEndpoint, leveraging the existing functionality of IssueFilterSet.
* removed state_group_set filter and related logic from IssueFilterSet
* fix: make setLoading optional in loadOptions function for improved flexibility
* fix: automation condition item value display
* chore: minor cleanup and updates
* chore: revert un-needed changes
* chore: remove duplicate exports
* chore: minor improvements to rich filters
* chore: minor improvements
* code cleanup and minor fixes
* chore: minor change
---------
Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
* refactor: streamline URL construction in authentication views
* Updated MagicSignInSpaceEndpoint and MagicSignUpSpaceEndpoint to directly construct redirect URLs using formatted strings instead of the get_safe_redirect_url function.
* Enhanced get_safe_redirect_url to use quote for safer URL encoding of parameters.
* refactor: enhance URL validation and redirection in authentication views
* Added validate_next_path function to improve the safety of redirect URLs in MagicSignInSpaceEndpoint and MagicSignUpSpaceEndpoint.
* Updated URL construction to ensure proper handling of next_path and base_url.
* Streamlined the get_safe_redirect_url function for better parameter encoding.
* refactor: unify URL redirection logic across authentication views
* Introduced validate_next_path function to enhance URL safety in SignInAuthSpaceEndpoint, SignUpAuthSpaceEndpoint, GitHubCallbackSpaceEndpoint, GitLabCallbackSpaceEndpoint, and GoogleCallbackSpaceEndpoint.
* Updated URL construction to directly format the redirect URL, improving clarity and consistency across multiple authentication views.
* refactor: remove base_host retrieval from authentication views
* Removed unnecessary base_host retrieval from GitHub, GitLab, and Google callback endpoints.
* Updated MagicSignUpEndpoint to use get_safe_redirect_url for URL construction.
* Refactored MagicSignInSpaceEndpoint to streamline URL redirection logic.
* refactor: streamline URL redirection in MagicSignInSpaceEndpoint
* Removed redundant base_url retrieval from the exception handling in MagicSignInSpaceEndpoint.
* Enhanced the clarity of URL construction by directly using get_safe_redirect_url.
* refactor: replace validate_next_path with get_safe_redirect_url for safer URL redirection across authentication views
* refactor: use get_safe_redirect_url for improved URL redirection in SignInAuthSpaceEndpoint and SignUpAuthSpaceEndpoint
* fix: redirect paths
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* chore: added issue relation and page sort order
* feat: add ProjectWebhook model to manage webhooks associated with projects
* chore: updated the migration file
* chore: added migration
* chore: reverted the page base code
* chore: added a variable for sort order in pages
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* dev: updated catch-up return values
* dev: replaced created_at with updated_at in catchup base query while filtering
* dev: handled the catchup order
* chore: updated bool
* fix: disbale project features on project create
* Implement migration 0105 to alter project cycle view fields to Boolean with default values
* Add project view settings in workspace seed task
* Add is_current_version_deprecated field to Instance model
Index user_id field in Session model
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* fix: added function to return instance of internal api client
* fix: added fallback for internal api base url
* fix: modified eslint and prettier config for api client
* fix: formatting errors
* ✅ chore: enhance trial banner to include 'Learn more' button for business and enterprise plans
* fix: correct logic for displaying 'Learn more' button in trial banner based on current plan
* refactor: simplify 'Learn more' button logic in trial banner to use subscription URLs
* [SILO-388][WEB-4702] Merge integrations screen and applications screen (#3708)
* refactor: merge integrations and applications page changes
* remove applications from navigations tile
* show tabs only with owned apps present
* refactor: hardcode legacy integrations in list for selfhosted
* redirect to setup url for external apps if available
* fix wrong url redirect to applications page
* add app workspace installations api (#3921)
* [SILO-448] Get App installation is allowed for a users workspaces (#3925)
* check if app installation is allowed
* rename installation to state
* optimise query using map
* optimise query using map
* optimise query via limited resource usage
* fix: ux updates
* fix: added revoke modal
---------
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
* user app disconnect api + member app install flow (#3886)
* chore: use app slug for update app use case
* ✨ feat: enhance application form with new input components and layout improvements
- Introduced new form components including InputField, RichTextField, and FormSection for better structure and reusability.
- Updated CreateUpdateApplication form to utilize new components, improving readability and maintainability.
- Enhanced styling for various elements, including AppTile and AppList, to improve user experience.
- Added a collapsible section feature in the form for better organization of input fields.
- Improved integration of category selection and attachment upload functionalities.
* ✨ feat: add collapsible sections to application form for improved organization
* ✨ feat: enhance application details view with categorized app lists and update environment variables
- Added new environment variables for silo base URL and path.
- Refactored AppListRoot to categorize installed, third-party, and internal applications.
- Improved AppTile layout for better visual hierarchy and responsiveness.
* ✨ feat: add RegenerateClientSecretModal for managing client secrets
- Introduced a new modal component for regenerating client secrets in the application settings.
- Implemented functionality to copy application ID, client ID, and display a masked client secret.
- Enhanced user experience with toast notifications for successful copy actions and modals for regenerated credentials.
* ✨ feat: enhance application management with improved app lists and dynamic modals
- Refactored AppListRoot to consolidate app categorization, displaying all apps, owned apps, and internal apps more effectively.
- Updated GeneratedCredentialsModal to support dynamic titles and descriptions based on the creation or update mode.
- Enhanced CreateUpdateApplication form with new input fields for company name and improved label structures for better clarity.
- Improved user feedback in RegenerateClientSecretModal by passing the mode for better context in the credentials modal.
* ♻️ refactor: reordered form fields and input added some translations
* ♻️ refactor: cleanup
* ✨ feat: enhance UI components with improved spacing and new icons
* ♻️ refactor: cleanup
* 📝 chore: update translations
* 🚨 fix: lint
* 🚨 fix: lint
* 🗑️ chore: remove unused ApplicationTextareaField component
* chore: update application form and translations
* ✨ feat: enhance application form and update translations
- Updated the SettingsHeading component to include a bottom border for improved UI.
- Refactored the application form by removing unused imports and organizing field components.
- Enhanced translations across multiple languages to provide clearer instructions regarding app installation permissions.
* 🔧 fix: adjust button spacing in AppTile
* fix: format web, silo and i18n changes
---------
Co-authored-by: gakshita <akshitagoyal1516@gmail.com>
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
Co-authored-by: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com>
* feat: added users tab in analytics
* feat: export in users insight table
* ♻️ refactor: simplify InsightCard component and remove ActiveUsers component
- Removed unused TrendPiece and percentage calculation from InsightCard.
- Updated InsightCardProps to eliminate the 'versus' prop.
- Refactored TotalInsights to streamline the useAnalytics hook and added comments for clarity.
- Deleted the ActiveUsers component as it is no longer needed.
- Integrated WiResolvedVsPending component in the Users view.
* 🚧 WIP: Introduced customTicks prop in BarChart for flexible tick rendering.
* 🚧 WIP: Introduced customTicks prop in BarChart for flexible tick rendering.
* ✨ feat: add customTooltipLabel prop to BarChart for enhanced tooltip customization
* ✨ feat: enhance user analytics components with tooltip and data fetching improvements
* ✨ feat: update user analytics components with improved titles and localization for work item metrics
- Updated localization files to include translations for "workitem_resolved_vs_pending" in multiple languages.
- Refactored imports in the Users component for better organization.
* ♻️ refactor: cleanup
* ✨ feat: add WiResolvedVsPending component and custom tooltip for user analytics
* ✨ feat: added customTicks to axis charts for flexible tick rendering
* 🔧 fix: update default bar fill color to black and ensure consistent color usage in BarChart
* ✨ feat: add customTooltipContent prop to LineChart for enhanced tooltip flexibility
* 🔧 fix: remove duplicate customTicks prop from BarChart component
* 🚨 fix: lint
* 🚨 fix: lint
* 🚨 fix: lint
* 🔧 fix: clean up comments in users root component
* 🚨 fix: lint
* 🚨 fix: lint
* 🚧 WIP: Introduced customTicks prop in BarChart for flexible tick rendering.
* ✨ feat: added customTicks to axis charts for flexible tick rendering
* 🔧 fix: update default bar fill color to black and ensure consistent color usage in BarChart
* ✨ feat: add customTooltipContent prop to LineChart for enhanced tooltip flexibility
* 🔧 fix: update bar fill color handling to support dynamic colors based on data and removed DEFAULT_BAR_FILL_COLOR
* 🔧 fix: correct bar fill color handling in BarChart to ensure proper color assignment for tooltips
* 🔧 fix: update customTicks prop types in TAxisChartProps to use unknown type for better type safety
* 📝 chore: updated translations and cleaned up insight card
* 🚨 fix: lint
* 🔧 fix: remove unused translation key "no_of" from Russian translations
* feat: share page notification
* feat: enhance share page notification functionality and email template
- Added a new function to map page access levels to descriptive strings.
- Updated the share_page_notification task to include workspace name and email preference URL in the context.
- Improved email template formatting for better readability and added a link to manage email preferences.
- Refactored logging to use a dedicated logger instance.
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* chore: organised the page comments folder
* chore: corrected the filter
* fix: parity
* fix: padding and spacing issues
* fix: dev wiki redirection
* fix: cancel icon on top of the reference text
* fix: hover styles and padding in new comment form
* fix: added back animations and better styles
* fix: show latest comment
* fix: comment creation handling fixed
* fix: border and hover states fix
* fix: truncate fixes
* fix: reply controller count values
* fix: scroll after opening reliably
* fix: add comment control
* fix: all other ux issues
* fix: count of showing/hiding
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* chore: added collapsibl to propel
* fix: export path
* chore: made collapsible a compound component
* fix: lint and format errors
* chore: updated propel exports order and added collapsible to tsdown config
* feat: add workitem existence check in SubWorkitemTemplateEndpoint
* fix: update workitem existence check to include project_id in SubWorkitemTemplateEndpoint
* ✨ feat: integrate Storybook addons and enhance Tabs component
- Added `@storybook/addon-designs` and `@storybook/addon-docs` to the project dependencies.
- Enhanced the Tabs component stories to support dynamic tab options.
- Introduced a custom theme for Storybook with a new manager configuration.
- Added a new SVG logo for branding in Storybook.
- Pinned the storybook and related packages version
* ♻️ refactor: update Storybook manager configuration by removing unused import
* ♻️ refactor: enhance Tabs story with size labels and layout adjustments
* 🚨 fix: lint issues
* 🚨 fix: lock file
* ✏️ fix: update brand image path in Storybook manager configuration
* ♻️ refactor: improve Tabs story by ensuring safe default value and enhancing content rendering
* [SILO-456] [SILO-457] feat: Added toggle for personal account view for enabling dm alerts (#3971)
* fix: added alert config type for slack
* feat: added helper method for slack alerts
* fix: added service method and controller methods for updating alert config
* fix: updated personal account view for getting the config
* fix: resolved review comments
* [SILO-458] [SILO-459] feat: Added DM Alerts handler in silo slack worker (#4015)
* chore: added ASSIGNEE_IDS as known field
* fix: added helper functions
* fix: modified slack etl type to accomodate message expansion
* fix: added type for alert processing
* fix: added alert service with tests
* fix: added dm alert handler in controller
* fix: refactored connection details helper for common code
* fix: added method for parsing html and extracting mention component out of html
* fix: encapsulated comment views into comment files
* fix: added inverted mode to user map fucntion
* fix: added helpers
* feat: added DM Alerts handler
* fix: added comment reply handler for block actions
* fix: node html parser importx
* fix: renamed function better for alert config
* fix: resolved review comments
* fix: added better error handling
* fix: review comments and function renaming
* [SILO-484] feat: added translations and modified design of dm alert blocks (#4082)
* fix: added actor displayname in display text
* fix: added translations
* fix: reduced ttl timings of alerts
* fix: filtered actor and affected user
* fix: added conditional quoting for WI linkback
* fix: formatted all the files
---------
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
* chore: move icons from ui package to propel package
* chore: package and tsdown config updated
* chore: migrate all icon imports from @plane/ui to @plane/propel/icons
* chore: remove icon components from @plane/ui package (migrated to
@plane/propel/icons)
* chore: code refactoring
* chore: migrate remaining icon components from @Plane/ui to @Plane/propel/icons
* chore: move ee specific icons from ui package to propel package
* chore: propel package dep. added to editor package
* chore: migrate icon components from @plane/ui to @plane/propel/icons in dev-wiki
* chore: migrate icon components from @plane/ui to @plane/propel/icons in space
* chore: migrate icon components from @plane/ui to @plane/propel/icons in web
* chore: migrate icon components from @plane/ui to @plane/propel/icons in web
* chore: migrate icon components from @plane/ui to @plane/propel/icons in web
* chore: migrate icon components from @plane/ui to @plane/propel/icons in web
* chore: migrate icon components from @plane/ui to @plane/propel/icons in web
* chore: update docker-compose.yml to change restart policy condition from 'on-failure' to 'any' and remove SSL variable from variables.env
* fix: update docker-compose.yml to change restart policy condition from 'any' to 'on-failure'
* fix: fixed routing for pi chat
* fix: added progress bar for home page pi input box
* fix: threads based on workspace
* fix: loading state fixed
* fix: refactor
* dev: handled indexing for the notification fields
* dev: removing indexing related to workspaces
* dev: handled indexing for file asset, user favorite, and page log
* dev: indexing concurrently
* feat: rich filters store architecture and UI components
* improvements: minor enhancements for rich filters
* added button configuration to add filters button
* added option to disable transition for filter item
* fixed filter item label truncation
* added support for changing work item filter config keys
* improvements: add filter button config initialization
* feat: done basic setup of rich filters in dashboard widgets
* refactor: clean up whitespace in widget type definitions
* feat: implement complex filtering backend for Django REST Framework
* Added ComplexFilterBackend to support advanced JSON-based filtering with logical operators.
* Introduced DashboardWidgetIssueFilterSet for filtering issues based on various criteria.
* Updated widget views to utilize the new filtering capabilities.
* Refactored widget_graph_plot.py to streamline query construction.
* Added README documentation for the filters module detailing usage and examples.
* chore: update filter configurations and clean up
* Enhance ComplexFilterBackend for improved performance and documentation
* Updated WidgetListEndpoint to pass the view instance to the filter method.
* Optimized NOT operations to use subqueries instead of large IN clauses for better performance.
* Removed deprecated range filter validation logic.
* Expanded README documentation to include performance considerations and advanced usage examples for NOT operations.
* Refactor DashboardWidgetIssueFilterSet to use custom filter methods for soft delete exclusion
* Replaced direct field lookups with custom filter methods for assignee, cycle, module, mention, and label IDs to exclude soft deleted records.
* Added new filter methods for label ID and label ID in to enhance filtering capabilities.
* Improved code readability and maintainability by centralizing filtering logic.
* refactor: remove unused export for TAutomationConditionFilterExpression in widget.ts
* fix: types
* chore: added more filters
* refactor: made the TFilterValue typed and add config for boolean
* refactor: made TFilterValue typed and add config for boolean
* Refactor WidgetListEndpoint to streamline issue filtering logic
* Updated the issue filtering process to first retrieve workspace by slug, improving clarity and maintainability.
* Consolidated filtering conditions into a single query for better performance and readability.
* Enhanced the DashboardWidgetIssueFilterSet to utilize the new filtering capabilities for label IDs.
* Enhance ComplexFilterBackend with depth validation and structure checks
* Introduced maximum depth validation for complex filters to prevent excessive nesting.
* Added structure validation to ensure proper JSON format for filter nodes.
* Implemented detailed error handling for various filter scenarios, improving robustness and user feedback.
* Refactor WidgetListEndpoint to improve workspace and dashboard retrieval
* Updated the WidgetListEndpoint to retrieve the workspace by slug before querying the dashboard, enhancing clarity and maintainability.
* Replaced multiple filter conditions with workspace ID for dashboard and widget queries, improving performance and consistency.
* Removed redundant workspace retrieval from the end of the method to streamline the code.
* chore: remove boolean filter value input
* improvements: define value type for filter configs
* chore: add default value type for filter configs
* chore: minor type updates for filter configs
* imrovement: type safety of the operators in rich filters
* refactor: reverted to old types of rich filters
* refactor: reverted to old label of rich filters
* refactor: enhance dashboard widget filters with new adapter and HOC
- Replaced the existing WidgetConfigSidebarFilters with EnhancedWidgetConfigSidebarFilters to support new filter logic.
- Introduced DashboardWidgetFilterAdapter for converting between internal and external filter expressions.
- Updated filter configurations to use the new external filter structure.
- Removed the old filters adapter and adjusted related types for better clarity and maintainability.
- Cleaned up imports and improved code organization in the filters components.
* chore: cleanup
* chore: cleanup
* refactor: update dashboard filters and add observable for filters
* refactor: comment out draft filter configuration in dashboard filters
* ♻️ refactor: adaptor to have comma separated array values and removed draft filter config
* ♻️ refactor: updated the default value for the empty expression
* ♻️ refactor: value sanitization for empty values
* ✨ feat: enhance sidebar filters with loading state and optimized data fetching
* 🧹 chore: remove duplicate export of work-item-filters from utils index
* 🎨 style: update button variant in sidebar filters from neutral-primary to accent-primary
* 🔧 fix: update dependency in withFilters to include handleSubmit in effect dependencies
* 🔧 fix: update _parseFilterValue to handle SingleOrArray type for filter values
* Removed unnecessary code
* ♻️ refactor: integrate workspace project fetching and improve dashboard filter handling
* 🔧 fix: rename EXTERNAL_OPERATOR_SEPARATOR to EXTERNAL_WIDGET_OPERATOR_SEPARATOR for consistency in filter handling
---------
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* fix: silenced error for couldn't add bot to channel
* fix: added expanded field for created_by and updated_by
* fix: added expansion of created_by and updated_by for issues
* fix: updated views to accomodate changes for created and updated fields
* fix: removed reaction helpers and updated blocks
* fix: removed options for enabling mentions
* fix: build fixes
* fix: added support for user lookup even if the user has not connected account
* fix: modified issue block design for bolds
* fix: resolved review comments
* feat: page comments
* chore: added node id
* chore: changed reverse relation
* chore: added resolve comment endpoint
* fix: build errors
* fix: basic comment decoration added
* fix: add marks
* fix: operations
* fix: to ditch decorations approach!
* fix: move dev-wiki into apps
* fix: new approach with some more types
* fix: link view container
* fix: editor ee packages updated
* fix: basic threads implementation added
* fix: comments scroll and filtering
* fix scrolling
* chore: added total count for comments
* fix: seperate the comments store
* fix: comments removal
* feat: multi comment on same mark
* fix: mark fixed and styles of comments fixed!
* feat: added better animations
* fix: better styles and animations for comments
* fix: ee seperation
* fix: threads api fix
* fix: new comment store attached
* fix: resolve and delete
* fix: remove framer motion
* fix: add comment ordering
* fix: delete extension
* fix: web
* fix: context aware comments
* fix: new working comment store
* fix: getting changes to web
* fix: ui of comments
* fix: comment mark resolution fixed
* fix: move changes to store
* temp fix: project pages
* fix: comments using lite text editor
* fix: rerendering infinitely
* fix: comment box and reference
* chore: updated the migration file
* fix: move things to ee
* chore: un commented the feature flag logic
* chore: removed an extra line in feature flag
* fix: editor types
* fix: scrolling of thread items
* fix: scrolling of thread items
* fix: type errors
* fix: comment creation
* fix: page comments
* fix: page comments
* fix: remove utils
* fix: added feature flagging
* fix:loading json content
* fix: upload items
* fix: upload items
* fix: ui chanegs
* fix: comment box
* fix: better spacing
* Fix spacing and removing the divs not needed anymore
* fix: comments storing json
* Add comment thread management hooks
* Replace use-new-comment hook with use-scroll-manager
Remove useNewComment hook and related logic. Add useScrollManager hook
for managing scroll behavior in the comments sidebar. Refactor
threads-sidebar to use scroll manager for thread and comment box
navigation. Add cancel button to new comment box.
* Remove hover and click effects for resolved comment marks
* Auto-scroll new comments in sidebar after order sync
Adds highlight and scroll-to behavior for newly created comments.
Sidebar now scrolls to the new thread after comments order updates.
* Add granular page comment permissions and UI checks
Introduce canCurrentUserCommentOnPage permission for pages. Update
comment UI to respect user comment permissions. Refactor comment
creation logic into useNewComment hook. Hide comment/reply UI for users
without permission.
* Refactor comments components and imports for clarity and type safety
* Refactor comments components to use local types and remove unused files
- Move type definitions from shared types file into local components -
Remove unused comment-reactions component and types/index.ts - Update
imports to use local hooks and types - Minor code cleanup and formatting
* Refactor comments feature flag and clean up comments components
- Replace isPageCommentsEnabled with isCommentsEnabled in page stores -
Remove unused types, utils, and reactions components from comments -
Move and rename comments components for consistency - Update editor
flagging to use new comments feature flag logic - Simplify comments
sidebar and thread item structure - Remove redundant exports and props
from comments modules
* Refactor comments extension to use workspace feature flag
- Pass storeType to navigation pane extensions - Check isCommentsEnabled
with workspaceSlug before rendering comments - Update canComment logic
to use canCurrentUserCommentOnPage - Remove console.log and unused code
- Fix types for extension props
* Add canCurrentUserCommentOnPage to TeamspacePage
* Refactor TCommentConfig type and move EditorSideEffects
- Move TCommentConfig to ce/types/editor.ts and ee
* fix: ce sync
* fix: prosemirror-model fixed
* chore: removed the extra migration
* chore: added page comments serializer
* fix: comments
* refactor: comments
* fix: ce/ee seperation
* chore: changed the page serialization
* fix: page comments refactored
* fix: remove ce changes
* fix: restoration for nested pages fixed
* fix: less ce changes
* fix: imports
* fix: better refactoring of page root and editor body
* fix: renaming files
* fix: editor sideeffects
* fix: add comments json field
* fix: page comments types
* fix: lint warnings
* fix: props name change
* fix: props name
* fix: comment mark
* fix: import type
* fix: review changes
* fix: extra checks
* fix: type changes
* fix: remove editor ref current
* fix: renaming
* fix: renaming files
* fix: comments extension revamp
* fix: declaring better types
* fix: better types
* fix: hooks seperated
* fix: edit box
* fix: html validation
* fix: agents md
* fix: naming convention
* fix: update names and service methods
* fix: more fixes
* fix: attributs
* fix: dev wiki sync
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* feat: added support for expanding `updated_by` and `type` in work item
* fix: moved type to dictionary for expansion
* fix: refactored unnecessary fields
* feat: add proxy upload and download endpoints for S3 integration
- Introduced ProxyUploadEndpoint and ProxyDownloadEndpoint to handle file uploads and downloads via S3 with time-based validation.
- Updated asset URLs to include new proxy endpoints.
- Enhanced S3Storage class to support proxy URL generation for uploads and downloads.
- Added configuration option USE_STORAGE_PROXY to toggle proxy usage.
* chore: update USE_STORAGE_PROXY configuration to disable by default
- Changed USE_STORAGE_PROXY environment variable in common settings and deployment files to default to 0.
- Ensured consistency across various deployment configurations for better control over storage proxy usage.
* chore: standardize formatting and update dependencies in compose files
- Added USE_STORAGE_PROXY environment variable to default to 0 in both Coolify and Portainer deployment configurations.
- Improved formatting for better readability across various service definitions in the compose files.
- Ensured consistent indentation and alignment for environment variables and dependencies.
* feat: enhance S3 storage integration with improved policy validation
- Updated ProxyUploadEndpoint and ProxyDownloadEndpoint to utilize new validation methods for upload and download parameters.
- Implemented comprehensive policy validation in S3Storage, including expiration checks, bucket restrictions, and signature verification.
- Changed USE_STORAGE_PROXY environment variable to default to 1 for enabling proxy usage by default.
* fix: simplify error message in ProxyUploadEndpoint
- Updated the error response in ProxyUploadEndpoint to provide a more generic error message for upload failures, enhancing user experience and reducing exposure of internal error details.
* fix: compose file formatting
---------
Co-authored-by: Sriram Veeraghanta <veeraghanta.sriram@gmail.com>
* dev: catch-up init
* dev: handled catch up FF, push notification and updated query response
* dev: removed feature flag validation for catch_up
* dev: remove the catch_up FF
* dev: handled the actor details in issue, epic and intake activity and comment queries
* dev: handled the catchup mutations and updated intake id in workitem details
* dev: handled the actor details
* dev: sorted catchups
* dev: handled the push notification catch-up
* dev: converted the count in catch up
* dev: updated the push notification comment validation
* dev: moved the first and last in to sub queries
* dev: removing deleted work items
* dev: optimized the catchup query
* dev: handled the UUID conversion
* Update application version to v1.14.0 and add automation consumer and outbox poller services
- Updated APP_RELEASE_VERSION to v1.14.0 in various deployment files.
- Added new services for automation consumer and outbox poller in Docker and Podman configurations.
- Introduced environment variables for outbox poller and automation consumer in relevant .env files.
- Updated build scripts to reflect the new version requirements.
* Add iframely service to deployment configurations
- Introduced iframely service in Dockerfile, supervisor.conf, and various deployment YAML files.
- Updated environment variables to include IFRAMELY_URL and IFRAMELY_REPLICAS.
- Ensured iframely service dependencies are correctly set in all relevant configurations.
* fix: update iframely image path in Dockerfile
* refactor: rename plane-iframely to iframely across deployment configurations
* chore: remove iframely dependency from deployment configurations
* chore: clean up whitespace in docker-compose.yml
* refactor: update filter structure and improve type safety across automation and rich filters
- Changed filter property types to use TFilterProperty and TFilterValue for better type consistency.
- Updated various components and hooks to utilize new type definitions, enhancing type safety.
- Refactored filter configuration and adapter logic to accommodate the new types, ensuring compatibility with existing functionality.
- Improved handling of filter expressions and conditions, streamlining the overall filter management process.
* chore: restructure rich filter utils
* refactor: optimize filter value handling and update automation condition types
- Removed unnecessary condition checks in automation details sidebar trigger.
- Enhanced filter value input to handle empty states more gracefully.
- Updated filter helper methods to return both optimal operator and transformed value.
- Adjusted filter instance logic to accommodate changes in operator and value updates.
- Modified type definitions for automation conditions and filter configurations to support SingleOrArray types.
- Added utility functions for transforming values based on operator requirements.
* fix: handle single-value operators in automation condition filters
* dev: handled the actor details in issue, epic and intake activity and comment queries
* dev: handled the actor details
* dev: hanlded the default values for actor details
* dev: updated actor details in activity
* [SILO-404] [SILO-425] [SILO-427] Get fields to display API for work item create form + project config + options method (#3781)
* plane client v2 using node sdk + form fields API
* add form utils methods for project config and options
* update plane-node-sdk and bug fixes
* [SILO-427] Add support for custom field options in options api (#3849)
* add support for custom field options in options api
* make flexible params for custom fields
* remove unused types
* removed issue type in get intake
* remove options in custom fields fetch + add typeId in custom fieldId
* remove options in labels and states fields
* add caching and search text support in options api
* add tests for fields options method
* [SILO-424] [SILO-415] feat: slack linkbacks revamp and modal changes to include intake in work item (#3841)
* fix: added new issue linkback
* fix: member endpoint to not return bot users
* feat: added helpers for supporting functions
* fix: added old value field for activity to show in the linkback
* feat: create new activity and comment linkback
* feat: refactored existing views according to new designs
* feat: refactored workers to comply with new views
* fix: added helper function for inverting map
* fix: self review suggestions
* fix: resolved review comments
* [SILO-424] fix: revamped slack modals to include custom fields for work item creation (#3912)
* fix: modified options api to use the latest fields api
* fix: added field parser in order to parse slack form field values
* fix: added helpers for slack
* fix: added work item and modal props
* fix: added activity update block
* fix: made intake linkback less complex
* fix: issue modal now supports custom field values
* fix: added new block actions according to new modal action changes
* fix: added create mode for message actions
* fix: switched comment sync payload to helper functions
* fix: reduced form fields for intake issue
* chore: addressed review comments
* fix: testing fixes for slack integration
* fix: command linkback not working
* fix: removed sync button for update modal
* fix: added type expand support for work items
* fix: modified sdk for adding type as an expanded field
* fix: added check for type for unfurls
* fix: self review 2
* fix: updated UX copy changes proposed
* fix: resolved comments from review
* [SILO-410] Pages link unfurl in Slack (#3894)
* added page support in slack link unfurl
* add support for page link unfurl in slack
* move urls to constants + improvements
* allow not required fields to be null
* fix: block actions and project updates linkback
* fix: type id parsing for form fields
* fix: options api and module and cycle issues
* fix: view submission and issue modal fixes
* fix: removed unfurl media links
* fix: added userid for the options api for slack
* fix: slack comments got from testing
* fix: removed yarn lock and slack block files
---------
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
* feat: add card component to propel package and update tooltip imports
* refactor: remove @plane/ui dependency and update tooltip imports to use local card component
* fix: lint
* refactor: update import from @plane/ui to @plane/utils in command component
* refactor: extend CardProps interface to include HTML attributes for better flexibility
* feat: enhance URL utility functions with IP address validation and cleaned up the extraction utilities
* fix: remove unnecessary type assertion in isLocalhost function
* [SILO-463] chore: add slack scopes consistent with app manifest
* Verify Slack Request signature for all slack events
- Add bolt sdk for easy for use
- Add rawBody verify function in parsers
- Add middleware to authorize slack requests
* Refactor and extend cleanup tasks for logs and versions
- Consolidate API log deletion into cleanup_task.py - Add tasks to
delete old email logs, page versions, and issue description versions -
Update Celery schedule and imports for new tasks
* chore: update cleanup task with mongo changes
* fix: update log deletion task name for clarity
* fix: enhance MongoDB archival error handling in cleanup task
- Added a parameter to check MongoDB availability in the flush_to_mongo_and_delete function.
- Implemented error logging for MongoDB archival failures.
- Updated calls to flush_to_mongo_and_delete to include the new parameter.
* fix: correct parameter name in cleanup task function call
- Updated the parameter name from 'mode' to 'model' in the process_cleanup_task function to ensure consistency and clarity in the code.
* fix: improve MongoDB connection parameter handling in MongoConnection class
- Replaced direct access to settings with getattr for MONGO_DB_URL and MONGO_DB_DATABASE to enhance robustness.
- Added warning logging for missing MongoDB connection parameters.
* chore: added teamspace permission for pages
* chore: updated the comment in permission layer
* chore: stored the teamspace member in variable
* chore: optimised the logic
* chore: updated the teamspace permission
* add missing fields and methods in endpoints
* add POST method for project members
* make project_id as uuid in url pattern
* remove post method
* fix method reordering
* fix: wrong WI count while scrolling
* chore: optimize issue queryset
* fix: use separate query for total_count_queryset
* fix: guest visibility constraint
* fix: use separate query for total_count_queryset in external api
* fix: use queryset.count()
* refactor: streamline database connection handling in AutomationConsumer and enhance outbox record formatting
* chore: update outbox cleaner schedule and cutoff days configuration
* feat: enhance database connection handling in AutomationConsumer
Added a method to ensure the database connection is alive and integrated it into message processing to improve reliability. This change replaces direct calls to close old connections with a more robust connection check.
* fix: handle permanent database connection loss in AutomationConsumer
Added a warning log and system exit for cases where the database connection is lost permanently, improving the robustness of the consumer's error handling.
* fix: improve error handling for database connection loss in AutomationConsumer
Added a warning log and system exit for permanent database connection loss, enhancing the consumer's resilience against connection issues.
* Refactor API logs task and outbox cleaner logic
- Use MongoConnection in API logs task - Add ENABLE_OUTBOX_POLLER
setting - Update outbox cleaner to respect poller setting - Add
cleanup_junk_data.py placeholder
* [SILO-276] ops: extend start command to start each service separately
- to scale server and workers scale independently, support taking
extra arguments to start command
- if no args are specified, start all services for backward compatibility
* early return if there are no args provided
* feat: add URL input component and integrate into property value select
* feat: enhance URL input component with editing functionality and improved URL parsing
* fix: remove readOnlyData prop from PropertyValueSelect component
* refactor: cleanup
* refactor: update import statement for consistency in URL input component
* feat: implement TruncatedUrl component for improved URL display in URL input
* feat: add truncated link export and URL utility to respective modules
* refactor: replace Link2 with ExternalLink in TruncatedUrl component
* refactor: replace Link2 with ExternalLink in TruncatedUrl component
* refactor: update TruncatedUrl component to use full domain for display and added some docs
* feat: add TruncatedUrl component and update link exports
* fix: export ParsedURL interface for better accessibility in URL utilities
* refactor: remove TruncatedUrl component and update link exports
* refactor: export ParsedURL interface for improved accessibility in URL utilities
* fix: update parseURL function to return undefined for invalid URLs
* refactor: rename ParsedURL interface to IParsedURL for consistency
* refactor: rename IParsedURL to IURLComponents and update parsing functions for improved clarity
* chore: remove TruncatedUrl component and update exports in utils
* refactor: update URL utility functions and improve documentation for clarity
* refactor: add full URL property to IURLComponents interface and update extractURLComponents function
* refactor: rename createURL function to isUrlValid and update its implementation to validate URL strings
* feat: add truncated link export and URL utility to respective modules
* refactor: replace Link2 with ExternalLink in TruncatedUrl component
* feat: add TruncatedUrl component and update link exports
* fix: export ParsedURL interface for better accessibility in URL utilities
* refactor: remove TruncatedUrl component and update link exports
* fix: update parseURL function to return undefined for invalid URLs
* refactor: rename ParsedURL interface to IParsedURL for consistency
* refactor: rename IParsedURL to IURLComponents and update parsing functions for improved clarity
* refactor: update URL utility functions and improve documentation for clarity
* refactor: add full URL property to IURLComponents interface and update extractURLComponents function
* refactor: rename createURL function to isUrlValid and update its implementation to validate URL strings
* refactor: rename isUrlValid function to getValidURL and update its implementation to return URL object or undefined
* refactor: made TFilterValue typed and add config for boolean
* chore: remove boolean filter value input
* improvements: define value type for filter configs
* chore: add default value type for filter configs
* chore: minor type updates for filter configs
---------
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
* fix(lint): get ci passing again
* chore(ci): run lint before build
* chore(ci): exclude web app from build check for now
The web app takes too long and causes CI to timeout. Once we
improve we will reintroduce.
* fix: formating of files
* fix: adding format to ci
---------
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
* Türkçe dil desteği , İgilizce okunuşlardan gerçek karşılığına çevirildi.
* "sidebar.intake"="Talep" olarak değiştirildi.
---------
Co-authored-by: Bektaş IŞIK <bektas.isik@aurorabilisim.com>
* init: automations store and components
* chore: updated components
* refactor: correct semantics
* chore: modal components added
* chore: update conjunction translations
* Pgtrigger and Outbox prototype
* feat: add event stream app with models and migrations
- Introduced the event_stream app with initial models: Outbox and IssueProxy.
- Implemented a PostgreSQL trigger for logging updates to issues.
- Added necessary migrations and updated settings to include the new app.
* refactor: migrate event publisher to event stream
- Updated imports in test files to reflect the new event_stream app structure.
- Removed the event_publisher app, including its models, migrations, and tests.
- Introduced MemorySafeOutboxEventListener and related service for handling outbox events.
- Added management command for starting the outbox event listener with memory safety.
- Implemented PostgreSQL triggers for outbox notifications in the new event_stream app.
* refactor: enhance issue serializer and event stream models
- Updated IssueSerializer and IssueCreateSerializer to manage assignees and labels more efficiently by calculating additions and removals instead of deleting all and re-adding.
- Introduced new proxy models for CycleIssue and ModuleIssue with corresponding PostgreSQL triggers for event handling.
- Refactored Outbox model to include entity type and ID for better event tracking.
- Removed outdated IssueProxy model and its associated triggers, streamlining the event stream architecture.
* chore: update base requirements for OpenSearch and add pika for RabbitMQ
- Retained django-opensearch-dsl version 0.7.0 in requirements.
- Added pika version 1.3.2 for RabbitMQ integration.
* refactor: update import paths for event stream listener
- Changed import statements in test_competitive_listeners.py, service.py, and listen_outbox_events.py to reflect the new module structure by removing the 'apiserver' prefix.
* feat: implement PostgreSQL LISTEN/NOTIFY listener for outbox events
- Added DatabaseConnection class to manage psycopg3 connections for LISTEN/NOTIFY.
- Introduced NotificationListener class to handle PostgreSQL NOTIFY messages and dispatch them to registered handlers.
- Updated Command class to utilize NotificationListener for listening to outbox events, replacing the previous restartable listener implementation.
- Improved error handling and logging throughout the listener process.
* feat: enhance event processing with advisory locks
- Implemented advisory lock mechanism to prevent concurrent processing of events.
- Added methods to acquire and release advisory locks in the DatabaseConnection class.
- Updated root_handler to fetch complete outbox data and mark events as processed only if all handlers succeed.
- Improved error handling and logging for event processing.
* fix: improve event logging and error handling in NotificationListener
- Updated event logging to include event ID for better traceability.
- Enhanced error handling in the command's handle method to log exceptions and maintain robustness during event listening.
* feat: add memory monitoring and auto-restart functionality to event listener
- Introduced MemoryMonitor class to track memory usage and event processing counts.
- Implemented automatic restarts for the NotificationListener based on memory and event limits.
- Enhanced command line options to configure memory limits, event limits, and memory check intervals.
- Improved logging for memory stats and event processing to aid in monitoring and debugging.
* feat: update local and production settings for event logging
- Introduced logging configuration for 'plane.event_stream' in both local and production settings to enhance event logging capabilities.
* chore: Implement async outbox polling mechanism with memory monitoring and event handling. Add management command for outbox poller and create necessary database migrations for outbox triggers and indexes.
* docs: Add comprehensive README for Event Stream system detailing architecture, components, configuration, usage, and performance tuning.
* feat: Enhance MongoDB integration with a singleton connection manager and implement outbox cleanup task for migrating records from PostgreSQL to MongoDB
* feat: Add asyncio support for tests and new test files for outbox polling
* Merge branch 'event-stream' of github.com:makeplane/plane-ee into event-stream
* refactor: Update event types in outbox triggers for cycle, issue, and module models; add IssueComment, IssueLink, and IssueRelation proxies with corresponding triggers
* refactor: Update import paths for JsonFormatter and consolidate OpenFeature imports; add unit tests for OutboxPoller and related classes
* refactor: Replace all_objects with objects in Outbox queries and update test fixtures for outbox records
* feat: Add daily outbox cleaner task to Celery and update type hint for MongoDB collection
* refactor: Enhance memory monitoring and outbox polling logic with improved logging and delay handling
* feat: Implement outbox triggers for issue, issue attachment, issue link, and issue relation models with dynamic event type determination
* chore: Remove obsolete files related to multiple listeners and competitive processing tests
* Delete service.py
* feat: Add outbox poller script to manage database migrations and process events with configurable parameters
* refactor: Optimize EpicCreateSerializer to handle initiative, assignee, and label updates with conflict management and improved logic for adding/removing related entities
* feat: Update issue proxy triggers for outbox events
- Removed the existing 'issue_outbox_update' trigger from the IssueProxy model.
- Added a new 'issue_outbox_update' trigger with enhanced logic to handle conversion events when the issue type changes.
- The new trigger captures updates and soft deletes, inserting appropriate events into the outbox.
* feat: Refactor issue proxy triggers and add new outbox event handling
- Removed and replaced existing triggers for IssueProxy, IssueAssigneeProxy, IssueLabelProxy, CycleIssueProxy, and ModuleIssueProxy.
- Introduced new triggers to handle outbox events for various issue-related actions, including creation, updates, and deletions.
- Enhanced logic for event type determination based on issue type, ensuring accurate event handling in the outbox.
* refactor: Update serializers to use ID fields for assignees and labels
- Changed the handling of assignees and labels in IssueCreateSerializer and EpicCreateSerializer to use ID fields instead of object references.
- Improved logic for determining assignees and labels to add or remove by using lists of IDs.
- Enhanced code readability with comments explaining the changes.
* feat: Enhance issue event handling in outbox triggers
- Updated triggers for IssueProxy, IssueAssigneeProxy, and IssueLabelProxy to determine event types based on issue type, including handling for epics.
- Introduced filtered data for outbox events to exclude description fields, improving data integrity and reducing unnecessary payload size.
- Enhanced logic for detecting changes during updates, ensuring only relevant changes are captured and processed.
* feat: implement connection pooling for outbox poller
- Introduced DatabaseConnectionPool class to manage async connection pooling using psycopg_pool.
- Enhanced outbox polling logic to utilize connection pooling for improved performance and resource management.
- Added health check and statistics retrieval methods for the connection pool.
- Updated outbox model and migration to include claimed_at field for better event tracking.
- Refactored tests to validate new connection pooling functionality.
* feat: Introduce automation engine with models and registry
- Added core components for the automation engine, including models for Automation, AutomationVersion, AutomationNode, AutomationEdge, AutomationRun, and NodeExecution.
- Implemented a NodeRegistry for managing automation nodes and a decorator for easy registration.
- Created initial files for automation app configuration and documentation, including an entity-relationship diagram and detailed model explanations.
- Established a migration for the new automation models to integrate with the existing database schema.
* refactor: move MongoConnection to a new settings module and update imports
- Created a new mongo.py file to define the MongoConnection class for managing MongoDB connections.
- Updated the import path in outbox_cleaner.py to reference the new MongoConnection location.
* refactor: update import path for MongoConnection in outbox_cleaner.py
* chore: remove scout_apm from production settings and requirements
- Deleted scout_apm from the installed apps in production.py.
- Removed scout-apm dependency from base.txt requirements.
* feat: add claimed_at field to outbox events and update requirements
- Added claimed_at field to the outbox event model for enhanced event tracking.
- Updated outbox poller to handle claimed_at in event processing.
- Included django-pgtrigger in base.txt requirements for database trigger management.
* feat: enhance memory monitoring in outbox poller
- Updated MemoryMonitor to signal for restarts instead of exiting on memory limit exceedance.
- Added methods to check for restart requests and wait for restart signals.
- Improved outbox poller logic to handle memory monitoring more gracefully during processing.
- Ensured all claimed rows are processed before initiating a restart.
* feat: implement graceful shutdown handling in outbox poller
- Added GracefulShutdownHandler class to manage shutdown signals (SIGTERM, SIGINT, SIGQUIT).
- Integrated shutdown handling into the outbox poller to allow for graceful exits during processing.
- Updated polling logic to check for shutdown requests and clean up resources accordingly.
- Enhanced command help text to reflect new signal handling capabilities.
* simplify AutomationEdge model by removing label and condition fields, and update unique constraint
* Enhance outbox event handling by adding workspace and project IDs
- Updated the outbox cleaner to include `workspace_id` and `project_id` in the deletion process.
- Modified the outbox poller to handle new fields in event processing.
- Adjusted models and migrations to support the new fields in the outbox table.
- Updated tests to ensure proper handling of workspace and project IDs in outbox records.
* chore: folder migration
* fix: type errors
* Refactor AutomationNode model and migration
- Removed `node_id`, `position_x`, `position_y`, and `execution_order` fields from the AutomationNode model.
- Updated migration to reflect the removal of constraints and adjusted the ordering of the model.
- Cleaned up the migration dependencies for better clarity.
* Add automation serializers and endpoints
- Introduced AutomationWriteSerializer and AutomationReadSerializer for handling automation data.
- Added AutomationNodeWriteSerializer and AutomationNodeReadSerializer for automation node management.
- Created AutomationEndpoint and AutomationNodeEndpoint views to manage automation and automation nodes with CRUD operations.
- Implemented permission checks for different roles on the endpoints.
* Merge branch 'preview' of github.com:makeplane/plane-ee into event-stream
* Add automation scope choices and update serializers and views
- Introduced AutomationScopeChoices for defining automation scopes.
- Updated AutomationWriteSerializer and AutomationReadSerializer to include scope validation and new fields.
- Created automation URL patterns and endpoints for managing automations.
- Implemented feature flag checks for automation-related endpoints.
- Enhanced permission checks for CRUD operations on automations.
* Refactor automation models, serializers, and views for improved structure and functionality
- Updated migration file to enhance automation-related models, including Automation, AutomationVersion, AutomationRun, AutomationNode, and AutomationEdge.
- Refactored serializers to include additional fields and validation for AutomationNode.
- Introduced new endpoints for managing AutomationNodes, including CRUD operations with feature flag checks.
- Improved URL patterns for automation and automation node management.
- Enhanced permission checks for automation-related operations.
* Add AutomationEdge serializers and endpoints for managing automation edges
- Introduced AutomationEdgeWriteSerializer and AutomationEdgeReadSerializer for handling automation edge data.
- Created AutomationEdgeEndpoint to manage CRUD operations for automation edges with appropriate feature flag checks.
- Updated URL patterns to include routes for automation edges.
- Refactored existing automation node endpoint to inherit from AutomationBaseEndpoint for consistency.
* feat: add Automation Bot type and enhance automation model
- Introduced a new BotTypeEnum value for "AUTOMATION_BOT".
- Added a OneToOneField for bot_user in the Automation model to associate a bot user with automations.
- Created a new AutomationActivity model to track activities related to automations, including fields for action, old and new values, and related entities.
* feat: add automation models and constraints
- Introduced new models for Automation, AutomationNode, AutomationRun, NodeExecution, AutomationVersion, AutomationEdge, and AutomationActivity.
- Implemented foreign key relationships and constraints to ensure data integrity, including unique constraints with conditions for deleted records.
- Added indexes to optimize query performance on various fields across the new models.
- Enhanced existing models with additional fields and relationships to support automation functionality.
* feat: rich filters store architecture and UI components
* improvement: use map instead of object for automations store
* improvement: rename automations v2 components to automations
* feat: automation nodes and edges
* feat: enhance automation functionality with new models and endpoints
- Added AutomationRun and NodeExecution models to track automation runs and their execution details.
- Introduced AutomationDetailReadSerializer to provide detailed information about automations, including nodes and edges.
- Updated AutomationEndpoint to create and manage automation bots, enhancing automation capabilities.
- Created AutomationRunEndpoint for retrieving automation run data, supporting both single and multiple run queries.
- Refactored existing serializers and views to incorporate new features and improve overall structure.
* improvement: refactor automation nodes
* feat: publisher for pushing events from the poller to the queue
* feat: Implement RabbitMQ Event Stream Publisher and Outbox Event Model
- Added EventStreamPublisher class for reliable event publishing to RabbitMQ with support for fanout exchanges, message persistence, and concurrent access handling.
- Introduced OutboxEvent dataclass for structured representation of outbox events, including methods for conversion to various formats.
- Updated OutboxPoller to utilize the new publisher for handling outbox events, improving event processing and publishing logic.
* feat: Add logging for published messages in EventStreamPublisher
- Enhanced the EventStreamPublisher class to log published messages, including instance ID and message body for better traceability and debugging.
* feat: Enhance Outbox Poller Tests and Introduce Event Stream Publisher Tests
- Refactored test cases in `test_outbox_poller.py` to simplify row tuple creation and improve readability.
- Added new test suite for `EventStreamPublisher` in `test_publisher.py`, covering initialization, connection management, message publishing, error handling, and thread safety.
- Introduced a new `__init__.py` file in the event stream tests directory to support module structure.
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: implement automation activity tracking functionality
- Added a new module for tracking automation activities, including creation, updates, and deletions.
- Introduced functions to handle different types of automation activities and log changes to relevant fields.
- Updated AutomationEndpoint to trigger automation activity tasks upon creation, update, and deletion of automations.
- Enhanced error handling and logging for automation activity processes.
* feat: expand automation activity tracking with node and edge functionalities
- Added functions to track creation, updates, and deletions of automation nodes and edges.
- Implemented new activity types for node and edge activities in the automation activity task.
- Updated AutomationNodeEndpoint and AutomationEdgeEndpoint to trigger activity tracking upon relevant actions.
- Enhanced serialization of requested data for activity logging, ensuring accurate tracking of changes.
* feat: add automation activity tracking for activities
- Introduced AutomationActivityReadSerializer to handle serialization of automation activity data.
- Created AutomationActivityEndpoint for managing CRUD operations related to automation activities.
- Updated URL patterns to include routes for automation activities.
- Enhanced existing serializers and views to support new activity tracking functionalities.
* feat: add unit tests for automation activity tracking
- Introduced comprehensive unit tests for automation activity functions, including creation, deletion, and updates of automation activities, nodes, and edges.
- Implemented test cases to validate the tracking of field changes and ensure accurate logging of activities.
- Enhanced test coverage for various scenarios, including valid and invalid data inputs, to ensure robustness of automation activity tracking functionalities.
* feat: Implement automation execution engine and node management
- Added AutomationExecutionEngine class to handle the execution of automation workflows, including validation of events, loading of nodes, and execution of triggers, conditions, and actions.
- Introduced various node types (triggers, conditions, actions) with specific implementations for handling events and performing actions within the automation framework.
- Enhanced the automation system with auto-discovery of node modules during Django startup, ensuring all nodes are registered and ready for execution.
- Created comprehensive README documentation for automation nodes, detailing available triggers, conditions, and their configurations.
- Added error handling and logging for improved traceability during automation execution.
- Implemented tests for the new automation features to ensure reliability and correctness.
This commit lays the foundation for a robust automation system capable of responding to database events and executing defined workflows.
* Added automations to installed apps
* refactor: remove unused import in automation activity test file
* chore: automations components restructure and API integration init
* improvement: add loader for automations list table
* fix: automations settings page layout
* fix: automation list loader
* improvement: reduce add node button height
* feat: update automation modal.
* refactor: simplify label ID handling in IssueCreateSerializer
* improvement: rename `actions` to `action-buttons` in automation details sidebar.
* feat: add automation status endpoint to toggle status for different automations
* feat: automation comment actions
* chore: default last run status to None
* chore: add total success count
* chore: add total failed count
* improvement: automations list table
* chore: automation feature flag update and minor fix in status endpoint
* fix: automation status endpoint feature flag
* feat: automation details page header
* chore: remove support for multiple trigger nodes in a single automation
* feat: update automation status handling to include is_enabled flag
* improvements: minor enhancements for rich filters
* added button configuration to add filters button
* added option to disable transition for filter item
* fixed filter item label truncation
* added support for changing work item filter config keys
* improvements: add filter button config initialization
* chore: minor type name updates
* Updated migration
* Implement automation consumer and management commands for event processing
- Added AutomationConsumer class to handle RabbitMQ events and dispatch to Celery tasks.
- Created management commands for running the automation consumer and creating automations interactively.
- Introduced Celery tasks for executing automation logic and cleaning up processed events.
- Updated settings to include automation-related configurations.
- Implemented logging for better traceability of automation processes.
* Enhance automation execution engine with structured results and multiple action support
- Introduced new data classes for standardized execution context and results: ExecutionContext, NodeResult, and AutomationResult.
- Updated AutomationExecutionEngine to support multiple action nodes executed sequentially, halting on the first failure.
- Refactored node execution methods to improve clarity and maintainability.
- Enhanced error handling and logging for better traceability during automation execution.
- Updated README to reflect changes in automation execution flow and node capabilities.
* feat: enhance automation model to create bot user and update field tracking
* feat: add initiator_id field to Outbox model and update migration dependencies
* feat: condition node for automations
* chore: enable feature flag check for automation create and update status endpoint
* feat: add initiator_id to Outbox insertions across event stream models
- Updated Outbox insert statements in various models to include initiator_id.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure proper tracking of the user initiating changes.
- Enhanced event handling for soft deletes and regular updates to maintain consistency in data tracking.
* feat: enable / disable automations
* feat: include initiator_id in OutboxEvent model and database interactions
- Added initiator_id field to the OutboxEvent model for enhanced tracking.
- Updated database queries in outbox_poller.py to include initiator_id in insertions.
- Ensured consistency in data handling across event stream components.
* refactor: update handle_row function to use OutboxEvent model
- Changed the parameter type of handle_row from Dict to OutboxEvent for better type safety.
- Updated logging to utilize the to_dict method of OutboxEvent for consistent event data representation.
* chore: update `edgeIdsToDelete` to `edgeIdsToRemove`
* refactor: simplify EventStreamPublisher by removing default queue and message TTL parameters, and updating setup methods for exchange only
* feat: add change property action
* TODOs
* chore: automation activity
* chore: added issue for issue created trigger
* chore: updated migrations
* chore: added priority, date and state changes
* chore: update automation migration
* chore: remove label activity
* chore: created the comment activity
* fix: logical operators casing
* feat: add docker entrypoint script for automation consumer
- Introduced a new script to manage the automation consumer process.
- The script includes commands to wait for the database and migrations before running the automation consumer.
* feat: add automation models and migrations
- Introduced new models for Automation, AutomationActivity, AutomationEdge, AutomationNode, AutomationRun, AutomationVersion, NodeExecution, and ProcessedAutomationEvent.
- Implemented necessary migrations to support the new automation features, including relationships and constraints.
- Enhanced event handling capabilities with detailed tracking and management of automation processes.
* chore: trigger main content condition preview
* chore: update condition preview limit
* chore: validated conditions for automations
* chore: added check for automation and import job
* refactor: streamline event processing by ignoring system-originated events
* fix: automation activities
* refactor: update SQL command for setting initiator type in automation and import tasks
* chore: update lxml and xmlsec versions in base requirements
* chore: update outbox cleaner cutoff days to 7 and include it in settings
* fix: update SQL command for setting initiator type in data import and bulk update tasks
* feat: add triggers for issue assignee and label management in outbox
- Implemented triggers for inserting and updating issue assignee and label data in the outbox.
- Adjusted SQL logic to handle previous attributes correctly during assignee and label updates.
- Changed trigger execution timing from AFTER to BEFORE for better handling of soft deletes.
* feat: enhance automation consumer script with queue and prefetch options
- Added support for specifying the automation events queue and prefetch count in the docker entrypoint script for the automation consumer.
* fix: update automation consumer script and event stream exchange name
- Changed the queue name in the automation consumer script to use the new environment variable for event stream.
- Updated the default exchange name in the event stream publisher to align with the new naming convention.
* refactor: update automation consumer settings and permissions
- Changed the queue name and exchange name in the automation consumer and related scripts to use new environment variables.
- Updated file permissions for the docker entrypoint script to ensure proper execution.
* chore: activity filters
* fix: activity filters
* chore: automation activity description
* chore: added new fields in automation run
* improvement: add custom automations to project settings page
* improvement: minor enhancements and fixes.
* feat: update automation consumer settings and logging configuration
* Changed default queue name for automation events in run_automation_consumer.py.
* Added logging configuration for plane.automations.consumer in both local and production settings.
* Removed unused node_execution.py file.
* minor cleanup
* chore: minor improvements
* feat: update automation execution tracking and logging
* Added logic to update the last run timestamp and increment the run count for automations.
* Enhanced the field tracking in automation activity logging to include node type for better clarity.
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
* [WEB-4677] improvement: add defaultOpen property to CustomSearchSelect
* improvement: add utils to format time duration
* improvement: added initializing state for project store
* improvement: minor changes in automations page
* feat: add list endpoint for listing all values related to all properties for a workitem
* feat: enhance issue property value retrieval by including issue type filtering
* refactor: clean up issue property validators and improve API documentation for issue property value endpoints
* improvement: update empty state assets for recurring work items
* improvement: add all missing recurring work item activity types
* fix: update recurring work items submitting state
* chore: update upgrade empty state
* feat: add all missing translations
* chore: sending workspace info for all the pi apis
* fix: message scrolling for chat
* fix: border color for markdown table
* fix: added workspace_id in queue-answer api
* fix: workspaceId types
* fix: refactor
* add external apis for epic
* epic in plane api sdk
* add tests for epic endpoints + support epics in issue-identifier endpoint
* format files
* use choices from model + fixes
---------
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
* add external API GET for page + plane sdk support
* additional check in project page + send required fields
* add tests for pages api endpoints
* make published page api authenticated + format and fixes
* feat: add epic properties tracking functionality and refactor epicsTrackers usage
* refactor: update epic property operation methods to use propertyId instead of issueId
* feat: enhance epic property operation to include isActive parameter for create and update actions
* refactor: update IssuePropertiesRoot to use currentWorkspace anf projectId
* Pgtrigger and Outbox prototype
* feat: add event stream app with models and migrations
- Introduced the event_stream app with initial models: Outbox and IssueProxy.
- Implemented a PostgreSQL trigger for logging updates to issues.
- Added necessary migrations and updated settings to include the new app.
* refactor: migrate event publisher to event stream
- Updated imports in test files to reflect the new event_stream app structure.
- Removed the event_publisher app, including its models, migrations, and tests.
- Introduced MemorySafeOutboxEventListener and related service for handling outbox events.
- Added management command for starting the outbox event listener with memory safety.
- Implemented PostgreSQL triggers for outbox notifications in the new event_stream app.
* refactor: enhance issue serializer and event stream models
- Updated IssueSerializer and IssueCreateSerializer to manage assignees and labels more efficiently by calculating additions and removals instead of deleting all and re-adding.
- Introduced new proxy models for CycleIssue and ModuleIssue with corresponding PostgreSQL triggers for event handling.
- Refactored Outbox model to include entity type and ID for better event tracking.
- Removed outdated IssueProxy model and its associated triggers, streamlining the event stream architecture.
* chore: update base requirements for OpenSearch and add pika for RabbitMQ
- Retained django-opensearch-dsl version 0.7.0 in requirements.
- Added pika version 1.3.2 for RabbitMQ integration.
* refactor: update import paths for event stream listener
- Changed import statements in test_competitive_listeners.py, service.py, and listen_outbox_events.py to reflect the new module structure by removing the 'apiserver' prefix.
* feat: implement PostgreSQL LISTEN/NOTIFY listener for outbox events
- Added DatabaseConnection class to manage psycopg3 connections for LISTEN/NOTIFY.
- Introduced NotificationListener class to handle PostgreSQL NOTIFY messages and dispatch them to registered handlers.
- Updated Command class to utilize NotificationListener for listening to outbox events, replacing the previous restartable listener implementation.
- Improved error handling and logging throughout the listener process.
* feat: enhance event processing with advisory locks
- Implemented advisory lock mechanism to prevent concurrent processing of events.
- Added methods to acquire and release advisory locks in the DatabaseConnection class.
- Updated root_handler to fetch complete outbox data and mark events as processed only if all handlers succeed.
- Improved error handling and logging for event processing.
* fix: improve event logging and error handling in NotificationListener
- Updated event logging to include event ID for better traceability.
- Enhanced error handling in the command's handle method to log exceptions and maintain robustness during event listening.
* feat: add memory monitoring and auto-restart functionality to event listener
- Introduced MemoryMonitor class to track memory usage and event processing counts.
- Implemented automatic restarts for the NotificationListener based on memory and event limits.
- Enhanced command line options to configure memory limits, event limits, and memory check intervals.
- Improved logging for memory stats and event processing to aid in monitoring and debugging.
* feat: update local and production settings for event logging
- Introduced logging configuration for 'plane.event_stream' in both local and production settings to enhance event logging capabilities.
* chore: Implement async outbox polling mechanism with memory monitoring and event handling. Add management command for outbox poller and create necessary database migrations for outbox triggers and indexes.
* docs: Add comprehensive README for Event Stream system detailing architecture, components, configuration, usage, and performance tuning.
* feat: Enhance MongoDB integration with a singleton connection manager and implement outbox cleanup task for migrating records from PostgreSQL to MongoDB
* feat: Add asyncio support for tests and new test files for outbox polling
* Merge branch 'event-stream' of github.com:makeplane/plane-ee into event-stream
* refactor: Update event types in outbox triggers for cycle, issue, and module models; add IssueComment, IssueLink, and IssueRelation proxies with corresponding triggers
* refactor: Update import paths for JsonFormatter and consolidate OpenFeature imports; add unit tests for OutboxPoller and related classes
* refactor: Replace all_objects with objects in Outbox queries and update test fixtures for outbox records
* feat: Add daily outbox cleaner task to Celery and update type hint for MongoDB collection
* refactor: Enhance memory monitoring and outbox polling logic with improved logging and delay handling
* feat: Implement outbox triggers for issue, issue attachment, issue link, and issue relation models with dynamic event type determination
* chore: Remove obsolete files related to multiple listeners and competitive processing tests
* Delete service.py
* feat: Add outbox poller script to manage database migrations and process events with configurable parameters
* refactor: Optimize EpicCreateSerializer to handle initiative, assignee, and label updates with conflict management and improved logic for adding/removing related entities
* feat: Update issue proxy triggers for outbox events
- Removed the existing 'issue_outbox_update' trigger from the IssueProxy model.
- Added a new 'issue_outbox_update' trigger with enhanced logic to handle conversion events when the issue type changes.
- The new trigger captures updates and soft deletes, inserting appropriate events into the outbox.
* feat: Refactor issue proxy triggers and add new outbox event handling
- Removed and replaced existing triggers for IssueProxy, IssueAssigneeProxy, IssueLabelProxy, CycleIssueProxy, and ModuleIssueProxy.
- Introduced new triggers to handle outbox events for various issue-related actions, including creation, updates, and deletions.
- Enhanced logic for event type determination based on issue type, ensuring accurate event handling in the outbox.
* refactor: Update serializers to use ID fields for assignees and labels
- Changed the handling of assignees and labels in IssueCreateSerializer and EpicCreateSerializer to use ID fields instead of object references.
- Improved logic for determining assignees and labels to add or remove by using lists of IDs.
- Enhanced code readability with comments explaining the changes.
* feat: Enhance issue event handling in outbox triggers
- Updated triggers for IssueProxy, IssueAssigneeProxy, and IssueLabelProxy to determine event types based on issue type, including handling for epics.
- Introduced filtered data for outbox events to exclude description fields, improving data integrity and reducing unnecessary payload size.
- Enhanced logic for detecting changes during updates, ensuring only relevant changes are captured and processed.
* feat: implement connection pooling for outbox poller
- Introduced DatabaseConnectionPool class to manage async connection pooling using psycopg_pool.
- Enhanced outbox polling logic to utilize connection pooling for improved performance and resource management.
- Added health check and statistics retrieval methods for the connection pool.
- Updated outbox model and migration to include claimed_at field for better event tracking.
- Refactored tests to validate new connection pooling functionality.
* refactor: move MongoConnection to a new settings module and update imports
- Created a new mongo.py file to define the MongoConnection class for managing MongoDB connections.
- Updated the import path in outbox_cleaner.py to reference the new MongoConnection location.
* refactor: update import path for MongoConnection in outbox_cleaner.py
* chore: remove scout_apm from production settings and requirements
- Deleted scout_apm from the installed apps in production.py.
- Removed scout-apm dependency from base.txt requirements.
* feat: add claimed_at field to outbox events and update requirements
- Added claimed_at field to the outbox event model for enhanced event tracking.
- Updated outbox poller to handle claimed_at in event processing.
- Included django-pgtrigger in base.txt requirements for database trigger management.
* feat: enhance memory monitoring in outbox poller
- Updated MemoryMonitor to signal for restarts instead of exiting on memory limit exceedance.
- Added methods to check for restart requests and wait for restart signals.
- Improved outbox poller logic to handle memory monitoring more gracefully during processing.
- Ensured all claimed rows are processed before initiating a restart.
* feat: implement graceful shutdown handling in outbox poller
- Added GracefulShutdownHandler class to manage shutdown signals (SIGTERM, SIGINT, SIGQUIT).
- Integrated shutdown handling into the outbox poller to allow for graceful exits during processing.
- Updated polling logic to check for shutdown requests and clean up resources accordingly.
- Enhanced command help text to reflect new signal handling capabilities.
* Enhance outbox event handling by adding workspace and project IDs
- Updated the outbox cleaner to include `workspace_id` and `project_id` in the deletion process.
- Modified the outbox poller to handle new fields in event processing.
- Adjusted models and migrations to support the new fields in the outbox table.
- Updated tests to ensure proper handling of workspace and project IDs in outbox records.
* Merge branch 'preview' of github.com:makeplane/plane-ee into event-stream
* feat: add initiator_id field to Outbox model and update migration dependencies
* feat: add initiator_id to Outbox insertions across event stream models
- Updated Outbox insert statements in various models to include initiator_id.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure proper tracking of the user initiating changes.
- Enhanced event handling for soft deletes and regular updates to maintain consistency in data tracking.
* feat: include initiator_id in OutboxEvent model and database interactions
- Added initiator_id field to the OutboxEvent model for enhanced tracking.
- Updated database queries in outbox_poller.py to include initiator_id in insertions.
- Ensured consistency in data handling across event stream components.
* refactor: update handle_row function to use OutboxEvent model
- Changed the parameter type of handle_row from Dict to OutboxEvent for better type safety.
- Updated logging to utilize the to_dict method of OutboxEvent for consistent event data representation.
* feat: enhance Outbox model with initiator type and update related logic
- Added initiator_type field to the Outbox model to track the type of event initiator.
- Introduced InitiatorTypes enum for better clarity and management of initiator types.
- Updated OutboxEvent model and related methods to include initiator_type for consistent event data representation.
- Adjusted database interactions across event stream models to accommodate the new initiator_type field.
* feat: add initiator_type to Outbox insertions across event stream models
- Updated Outbox insert statements in various models to include initiator_type for better tracking of event initiators.
- Adjusted related logic in CycleIssueProxy, IssueProxy, ModuleIssueProxy, and others to ensure consistent handling of initiator_type during event processing.
- Enhanced event handling for both soft deletes and regular updates to maintain data integrity and tracking.
* feat: update event stream triggers to use After timing for improved consistency
- Changed trigger timing from Before to After for various event stream models including CycleIssueProxy, IssueProxy, and IssueAssigneeProxy to ensure that outbox updates reflect the final state of the entities.
- Enhanced logic in triggers to include previous attributes for better tracking of changes during updates.
- Adjusted related logic in IssueLabelProxy and IssueCommentProxy to maintain consistency across event handling.
* feat: enhance bulk update task with transaction management and initiator type
- Wrapped bulk creation of issue relations and parent ID updates in a transaction to ensure atomicity.
- Set the initiator type to 'SYSTEM.IMPORT' for both bulk creation and updates to improve tracking of operations.
- Improved database interaction by using a connection cursor for executing SQL commands.
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* chore: crud operations for recurring work item
* chore: added perodic task for recurring work item
* chore: removed the error statement
* fix: bg task for labels
* chore: added recurring work item model
* chore: added null field for recurring work item log
* feat: recurring work items UI
* chore: added activities for recurring task
* feat: add interval type to recurring work item form
* chore: updated the cront expression
* chore: minor updates for recurring work item serializer and interval type
* chore: removed the seconds calculation
* chore: added task fk to activity table
* improvement: interval dropdown width
* fix: start date validation
* chore: added created at for activity
* feat: add recurring work item activity logic
* chore: updated the migration file
* chore: update the activity for recursive task
* chore: deleteing the recurring task permanantely
* improvement: recurring work item activity helpers
* fix: recurring work item custom properties data preloading
* improvement: minor UI enhancements
* improvement: recurring work item activity helpers
* fix: init loader logic
* Use the right field namewhile creating activity
* chore: add hourly and minutly interval types for testing
* Added test intervals for debugging
* chore: update the periodic task to set null
* chore: added activity for recurring work item properties
* chore: updated the description activity
* chore: removed the fields
* chore: updated the type activity
* chore: added property in the model
* remove temporary minutly and hourly interval types from recurring work items
---------
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* chore: add functionality to store app rail preference in backend
* chore: updated toggle handler
* chore: user update refactor
* chore: moved app rail toggle to me/profile endpoint
* chore: updated workspace empty states
* chore: updated empty states for stickies and widgets
* updated empty state for dashboard widgets empty states
* chore: upadted stickies dark image
* chore: added empty states at project level features
* chore: updated workspace empty states
* chore: updated empty states for stickies and widgets
* updated empty state for dashboard widgets empty states
* chore: upadted stickies dark image
* fix: update Dockerfile and docker-compose for version v0.28.0 and improve curl commands in install script
* fix: update docker-compose to use 'stable' tag for all services
* fix: improve curl command options in install script for better reliability
2025-07-31 13:27:34 +05:30
sriram veeraghantaGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* Potential fix for code scanning alert no. 631: Incomplete URL scheme check
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* fix: ignore warning in this file
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* improvement: remove `issues_exists` property from work item types.
* Optimizations for issue type and epic type endpoints
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: add event trackers for password creation
* feat: add event trackers for project views
* feat: add event trackers for product updates and changelogs
* chore: use element name instead of event name for changelog redirect link
* fix: improve API service readiness check in install script
* fix(cli): correct python indentation in api health check
* fix(cli): prevent false positive api ready message on timeout
* added PageBinaryUpdateSerializer for binary data validation and update
* chore: added validation for description
* chore: removed the duplicated file
* Fixed coderabbit comments
- Improve content validation by consolidating patterns and enhancing recursion checks
- Updated `PageBinaryUpdateSerializer` to simplify assignment of validated data.
- Enhanced `content_validator.py` with consolidated dangerous patterns and added recursion depth checks to prevent stack overflow during validation.
- Improved readability and maintainability of validation functions by using constants for patterns.
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* chore: added comment
* feat: enhance IssueCommentDocument and search functionality
- Added new fields: issue_title, issue_sequence_id, and issue_type_id to IssueCommentDocument.
- Updated IssueCommentSearchSerializer to include the new fields and changed comment to a SerializerMethodField for better handling of highlighted comments.
- Modified EnhancedGlobalSearchEndpoint to retrieve the new fields and implement highlighting for comments in search results.
* Update IssueCommentDocument and serializers for improved search functionality
- Enhanced IssueCommentDocument by adding an analyzer to the comment field and renaming issue_title to issue_name.
- Updated multiple serializers to make fields like type_id and logo_props optional.
- Improved IssueCommentSearchSerializer to handle highlights more effectively and renamed issue_title to issue_name.
- Adjusted EnhancedGlobalSearchEndpoint to reflect the changes in field names and modified comment highlighting settings.
* feat: integrated apis for wroksapce-search
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: restore background color and goals fields in Profile and Workspace models in migration 0099
* chore: update migration dependency to reflect recent changes in profile model migrations
* feat: enhance workitem template endpoints with feature flag and detailed retrieval
- Added feature flag check for the SubWorkitemTemplateEndpoint.
- Updated WorkitemProjectTemplateEndpoint to support fetching a specific template by primary key (pk) with prefetching of related workitem templates.
* feat: add 404 error handling for missing templates in WorkitemProjectTemplateEndpoint
* refactor: oauth flow to move app installation out of create token + get installation from token
* added tests for app installation flow and webhook fix
* replace app_installation_id with id as query param
- Added support for custom Q objects in OpenSearchHelper to allow complex filtering logic.
- Updated the EnhancedGlobalSearchEndpoint to utilize the new custom filter for page access control.
- Improved filter handling in the execute_multi_search method for better result organization.
* chore: fix lint
* fix: constants check:lint command
* chore(lint): permit unused vars which begin w/ _
* chore: rm dead code
* fix(lint): more lint fixes to constants pkg
* fix(lint): lint the live server
- fix lint issues
* chore: improve clean script
* fix(lint): more lint
* chore: set live server process title
* chore(deps): update to turbo@2.5.5
* chore(live): target node22
* fix(dev): add missing ui pkg dependency
* fix(dev): lint decorators
* fix(dev): lint space app
* fix(dev): address lint issues in types pkg
* fix(dev): lint editor pkg
* chore(dev): moar lint
* fix(dev): live server exit code
* chore: address PR feedback
* fix(lint): better TPageExtended type
* chore: refactor
* chore: revert most live server changes
* fix: few more lint issues
* chore: enable ci checks
Ensure we can build + confirm that lint is not getting worse.
* chore: address PR feedback
* fix: web lint warning added to package.json
* fix: ci:lint command
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* Basic setup for drf-spectacular
* Updated to only handle /api/v1 endpoints
* feat: add asset and user endpoints with URL routing
- Introduced new asset-related endpoints for user assets and server assets, allowing for asset uploads and management.
- Added user endpoint to retrieve current user information.
- Updated URL routing to include new asset and user patterns.
- Enhanced issue handling with a new search endpoint for issues across multiple fields.
- Expanded member management with a new endpoint for workspace members.
* Group endpoints by tags
* Detailed schema definitions and examples for asset endpoints
* Removed unnecessary extension
* Specify avatar_url field separately
* chore: add project docs
* chore: correct all errors
* chore: added open spec in work items
* feat: enhance cycle API endpoints with detailed OpenAPI specifications
- Updated CycleAPIEndpoint and CycleIssueAPIEndpoint to include detailed OpenAPI schema definitions for GET, POST, PATCH, and DELETE operations.
- Specified allowed HTTP methods for each endpoint in the URL routing.
- Improved documentation for cycle creation, updating, and deletion, including request and response examples.
* chore: added open spec in labels
* chore: work item properties
* feat: enhance API endpoints with OpenAPI specifications and HTTP method definitions
- Added detailed OpenAPI schema definitions for various API endpoints including Intake, Module, and State.
- Specified allowed HTTP methods for each endpoint in the URL routing for better clarity and documentation.
- Improved request and response examples for better understanding of API usage.
- Introduced unarchive functionality for cycles and modules with appropriate endpoint definitions.
* chore: run formatter
* Removed unnecessary settings for authentication
* Refactors OpenAPI documentation structure
Improves the organization and maintainability of the OpenAPI documentation by modularizing the `openapi_spec_helpers.py` file.
The changes include:
- Migrates common parameters, responses, examples, and authentication extensions to separate modules.
- Introduces helper decorators for different endpoint types.
- Updates view imports to use the new module paths.
- Removes the legacy `openapi_spec_helpers.py` file.
This refactoring results in a more structured and easier-to-maintain OpenAPI documentation setup.
* Refactor OpenAPI endpoint specifications
- Removed unnecessary parameters from the OpenAPI documentation for various endpoints in the asset, cycle, and project views.
- Updated request structures to improve clarity and consistency across the API documentation.
- Enhanced response formatting for better readability and maintainability.
* Enhance API documentation with detailed endpoint descriptions
Updated various API endpoints across the application to include comprehensive docstrings that clarify their functionality. Each endpoint now features a summary and detailed description, improving the overall understanding of their purpose and usage. This change enhances the OpenAPI specifications for better developer experience and documentation clarity.
* Enhance API serializers and views with new request structures
- Added new serializers for handling cycle and module issue requests, including `CycleIssueRequestSerializer`, `TransferCycleIssueRequestSerializer`, `ModuleIssueRequestSerializer`, and intake issue creation/updating serializers.
- Updated existing serializers to improve clarity and maintainability, including the `UserAssetUploadSerializer` and `IssueAttachmentUploadSerializer`.
- Refactored API views to utilize the new serializers, enhancing the request handling for cycle and intake issue endpoints.
- Improved OpenAPI documentation by replacing inline request definitions with serializer references for better consistency and readability.
* Refactor OpenAPI documentation and endpoint specifications
- Replaced inline schema definitions with dedicated decorators for various endpoint types, enhancing clarity and maintainability.
- Updated API views to utilize new decorators for user, cycle, intake, module, and project endpoints, improving consistency in OpenAPI documentation.
- Removed unnecessary parameters and responses from endpoint specifications, streamlining the documentation for better readability.
- Enhanced the organization of OpenAPI documentation by modularizing endpoint-specific decorators and parameters.
* chore: correct formatting
* chore: correct formatting for all api folder files
* refactor: clean up serializer imports and test setup
- Removed unused `StateLiteSerializer` import from the serializer module.
- Updated test setup to include a noqa comment for the `django_db_setup` fixture, ensuring clarity in the code.
- Added missing commas in user data dictionary for consistency.
* feat: add project creation and update serializers with validation
- Introduced `ProjectCreateSerializer` and `ProjectUpdateSerializer` to handle project creation and updates, respectively.
- Implemented validation to ensure project leads and default assignees are members of the workspace.
- Updated API views to utilize the new serializers for creating and updating projects, enhancing request handling.
- Added OpenAPI documentation references for the new serializers in the project API endpoints.
* feat: update serializers to include additional read-only fields
* refactor: rename intake issue serializers and enhance structure
- Renamed `CreateIntakeIssueRequestSerializer` to `IntakeIssueCreateSerializer` and `UpdateIntakeIssueRequestSerializer` to `IntakeIssueUpdateSerializer` for clarity.
- Introduced `IssueSerializer` for nested issue data in intake requests, improving the organization of serializer logic.
- Updated API views to utilize the new serializer names, ensuring consistency across the codebase.
* refactor: rename issue serializer for intake and enhance API documentation
- Renamed `IssueSerializer` to `IssueForIntakeSerializer` for better clarity in the context of intake issues.
- Updated references in `IntakeIssueCreateSerializer` and `IntakeIssueUpdateSerializer` to use the new `IssueForIntakeSerializer`.
- Added OpenAPI documentation for the `get_workspace_work_item` endpoint, detailing parameters and responses for improved clarity.
* chore: modules and cycles serializers
* feat: add new serializers for label and issue link management
- Introduced `LabelCreateUpdateSerializer`, `IssueLinkCreateSerializer`, `IssueLinkUpdateSerializer`, and `IssueCommentCreateSerializer` to enhance the handling of label and issue link data.
- Updated existing API views to utilize the new serializers for creating and updating labels, issue links, and comments, improving request handling and validation.
- Added `IssueSearchSerializer` for searching issues, streamlining the search functionality in the API.
* Don't consider read only fields as required
* Add setting to separate request and response definitions
* Added OAuth 2 authentication for OpenAPI Spec
* Fixed avatar_url warning on openapi spec generation
* Fixed errors with openapi spec generation
* Enhance OpenAPI documentation for issue types and properties
- Updated issue type and property API endpoints to include detailed OpenAPI documentation using decorators.
- Added support for various HTTP methods (GET, POST, PATCH, DELETE) in the issue type and property views.
- Introduced new parameters and response schemas to improve API clarity and usability.
- Updated settings to categorize endpoints under "Work Item Types" and "Work Item Properties" for better organization in the OpenAPI spec.
* Made spectacular disabled by default
* Moved spectacular settings into separate file and added detailed descriptions to tags
* Specify methods for asset urls
* Better server names
* Added filter to exclude server and page endpoints from API v1 paths in OpenAPI hooks
* Refine API endpoint methods and enhance OpenAPI documentation for worklogs
- Specified HTTP methods for worklog API endpoints to support POST, GET, PATCH, and DELETE operations.
- Added detailed descriptions for "Work Item Worklogs," "Work Item Types," and "Work Item Properties" in OpenAPI settings to improve documentation clarity and usability.
* Refactor OpenAPI decorators for issue property endpoints
- Updated decorators for issue property options and values to improve documentation clarity.
- Introduced new `PROPERTY_ID_PARAMETER` for better parameter management in API paths.
- Removed redundant parameters from issue worklog API methods to streamline the documentation.
* Enhance API documentation with summaries for various endpoints
- Added summary descriptions for user asset, cycle, intake, issue, member, module, project, state, and user API endpoints to improve clarity and usability of the API documentation.
- Updated the OpenAPI specifications to reflect these changes, ensuring better understanding for developers interacting with the API.
* Add contact information to OpenAPI settings
- Included contact details for Plane in the OpenAPI settings to enhance API documentation and provide developers with a direct point of contact for support.
- This addition aims to improve the overall usability and accessibility of the API documentation.
* Enhance OpenAPI documentation across multiple endpoints
- Added summaries to various API endpoints for improved clarity and usability.
- Updated decorators for user, asset, cycle, intake, issue type, issue, module, project, state, and worklog endpoints to include descriptive summaries.
- Improved overall documentation structure to facilitate better understanding of API functionalities.
* removed repeating summary
* Reordered tags and improved description relavancy
* Refactor OpenAPI settings to enhance documentation clarity
- Reorganized and updated descriptions for various API features, including "Cycles," "Modules," "States," "Users," "Work Items," and "Work Item Properties."
- Removed redundant entries and improved the structure of feature descriptions to better reflect their functionalities and use cases.
- Added new entries for "Work Item Types" and "Work Item Worklogs" to provide comprehensive coverage of work item management capabilities.
* Enhance OpenAPI documentation for cycle and issue endpoints
- Added response definitions for the `get_cycle_issues` and `delete_cycle_issue` methods in the CycleIssueAPIEndpoint to clarify expected outcomes.
- Included additional response codes for the IssueSearchEndpoint to handle various error scenarios, improving the overall API documentation and usability.
* Enhance serializer documentation across multiple files
- Updated docstrings for various serializers including UserAssetUploadSerializer, AssetUpdateSerializer, and others to provide clearer descriptions of their functionality and usage.
- Improved consistency in formatting and language across serializer classes to enhance readability and maintainability.
- Added detailed explanations for new serializers related to project, module, and cycle management, ensuring comprehensive documentation for developers.
* chore: remove duplicate summary
* Refactor API endpoints for cycles, intake, modules, projects, and states
- Replaced existing API endpoint classes with more descriptive names such as CycleListCreateAPIEndpoint, CycleDetailAPIEndpoint, IntakeIssueListCreateAPIEndpoint, and others to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved documentation and method summaries for better understanding of endpoint functionalities.
- Enhanced query handling in the new endpoint classes to streamline data retrieval and improve performance.
* Refactor issue and label API endpoints for clarity and functionality
- Renamed existing API endpoint classes to more descriptive names such as IssueListCreateAPIEndpoint, IssueDetailAPIEndpoint, LabelListCreateAPIEndpoint, and LabelDetailAPIEndpoint to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved method summaries and documentation for better understanding of endpoint functionalities.
- Streamlined query handling in the new endpoint classes to enhance data retrieval and performance.
* Refactor asset API endpoint methods and introduce new status enums
- Updated the GenericAssetEndpoint to only allow POST requests for asset creation, removing the GET method.
- Modified the get method to require asset_id, ensuring that asset retrieval is always tied to a specific asset.
- Added new IntakeIssueStatus and ModuleStatus enums to improve clarity and management of asset and module states.
- Enhanced OpenAPI settings to include these new enums for better documentation and usability.
* enforce naming convention
* Added LICENSE to openapi spec
* Refactor issue type and property API endpoints for improved clarity and functionality
- Renamed existing API endpoint classes to more descriptive names such as IssueTypeListCreateAPIEndpoint, IssueTypeDetailAPIEndpoint, IssuePropertyListCreateAPIEndpoint, and IssuePropertyDetailAPIEndpoint.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Enhanced method summaries and documentation for better understanding of endpoint functionalities.
- Streamlined query handling in the new endpoint classes to improve data retrieval and performance.
* Enhance OpenAPI documentation for various API endpoints
- Updated API endpoints in asset, cycle, intake, issue, module, project, and state views to include OpenApiRequest and OpenApiExample for better request documentation.
- Added example requests for creating and updating resources, improving clarity for API consumers.
- Ensured consistent use of OpenApi utilities across all relevant endpoints to enhance overall API documentation quality.
* Enhance OpenAPI documentation for various API endpoints
- Added detailed descriptions to multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to improve clarity for API consumers.
- Ensured consistent documentation practices by including descriptions that outline the purpose and functionality of each endpoint.
- This update aims to enhance the overall usability and understanding of the API documentation.
* Enhance OpenAPI documentation for issue types and properties by adding descriptions to various endpoints, including listing, creating, retrieving, updating, and deleting operations. Also, remove an unused import in the issue view file.
* Enhance OpenAPI documentation for issue property and value endpoints by adding request examples for creating and updating issue types, properties, options, and values. This improves clarity for API consumers on expected request formats.
* Update OpenAPI examples and enhance project queryset logic
- Changed example fields in OpenAPI documentation for issue comments from "content" to "comment_html" to reflect the correct structure.
- Introduced a new `get_queryset` method in the ProjectDetailAPIEndpoint to filter projects based on user membership and workspace, while also annotating additional project-related data such as total members, cycles, and modules.
- Updated permission checks to use the correct attribute name for project identifiers, ensuring accurate permission handling.
* Update OpenAPI documentation for issue comments to reflect changes in request format, replacing 'content' with 'comment_html'. Additionally, implement a new queryset method in ProjectDetailAPIEndpoint to enhance project filtering and member role annotations, improving data retrieval efficiency. Minor adjustments made to permission checks for project identifiers.
* Enhance OpenAPI documentation and add response examples
- Updated multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to include new OpenApiResponse examples for better clarity on expected outcomes.
- Introduced new parameters for project and issue identifiers to improve request handling and documentation consistency.
- Enhanced existing responses with detailed examples to aid API consumers in understanding the expected data structure and error handling.
- This update aims to improve the overall usability and clarity of the API documentation.
* IssueProperty Nullenum fix
* make api.plane.so default url in openapi spec
* refactor: update terminology from 'issues' to 'work items' across multiple API endpoints for consistency and clarity
* use common timezones from pytz for choices
* refactor: remove unused imports from API views
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
* Basic setup for drf-spectacular
* Updated to only handle /api/v1 endpoints
* feat: add asset and user endpoints with URL routing
- Introduced new asset-related endpoints for user assets and server assets, allowing for asset uploads and management.
- Added user endpoint to retrieve current user information.
- Updated URL routing to include new asset and user patterns.
- Enhanced issue handling with a new search endpoint for issues across multiple fields.
- Expanded member management with a new endpoint for workspace members.
* Group endpoints by tags
* Detailed schema definitions and examples for asset endpoints
* Removed unnecessary extension
* Specify avatar_url field separately
* chore: add project docs
* chore: correct all errors
* chore: added open spec in work items
* feat: enhance cycle API endpoints with detailed OpenAPI specifications
- Updated CycleAPIEndpoint and CycleIssueAPIEndpoint to include detailed OpenAPI schema definitions for GET, POST, PATCH, and DELETE operations.
- Specified allowed HTTP methods for each endpoint in the URL routing.
- Improved documentation for cycle creation, updating, and deletion, including request and response examples.
* chore: added open spec in labels
* chore: work item properties
* feat: enhance API endpoints with OpenAPI specifications and HTTP method definitions
- Added detailed OpenAPI schema definitions for various API endpoints including Intake, Module, and State.
- Specified allowed HTTP methods for each endpoint in the URL routing for better clarity and documentation.
- Improved request and response examples for better understanding of API usage.
- Introduced unarchive functionality for cycles and modules with appropriate endpoint definitions.
* chore: run formatter
* Removed unnecessary settings for authentication
* Refactors OpenAPI documentation structure
Improves the organization and maintainability of the OpenAPI documentation by modularizing the `openapi_spec_helpers.py` file.
The changes include:
- Migrates common parameters, responses, examples, and authentication extensions to separate modules.
- Introduces helper decorators for different endpoint types.
- Updates view imports to use the new module paths.
- Removes the legacy `openapi_spec_helpers.py` file.
This refactoring results in a more structured and easier-to-maintain OpenAPI documentation setup.
* Refactor OpenAPI endpoint specifications
- Removed unnecessary parameters from the OpenAPI documentation for various endpoints in the asset, cycle, and project views.
- Updated request structures to improve clarity and consistency across the API documentation.
- Enhanced response formatting for better readability and maintainability.
* Enhance API documentation with detailed endpoint descriptions
Updated various API endpoints across the application to include comprehensive docstrings that clarify their functionality. Each endpoint now features a summary and detailed description, improving the overall understanding of their purpose and usage. This change enhances the OpenAPI specifications for better developer experience and documentation clarity.
* Enhance API serializers and views with new request structures
- Added new serializers for handling cycle and module issue requests, including `CycleIssueRequestSerializer`, `TransferCycleIssueRequestSerializer`, `ModuleIssueRequestSerializer`, and intake issue creation/updating serializers.
- Updated existing serializers to improve clarity and maintainability, including the `UserAssetUploadSerializer` and `IssueAttachmentUploadSerializer`.
- Refactored API views to utilize the new serializers, enhancing the request handling for cycle and intake issue endpoints.
- Improved OpenAPI documentation by replacing inline request definitions with serializer references for better consistency and readability.
* Refactor OpenAPI documentation and endpoint specifications
- Replaced inline schema definitions with dedicated decorators for various endpoint types, enhancing clarity and maintainability.
- Updated API views to utilize new decorators for user, cycle, intake, module, and project endpoints, improving consistency in OpenAPI documentation.
- Removed unnecessary parameters and responses from endpoint specifications, streamlining the documentation for better readability.
- Enhanced the organization of OpenAPI documentation by modularizing endpoint-specific decorators and parameters.
* chore: correct formatting
* chore: correct formatting for all api folder files
* refactor: clean up serializer imports and test setup
- Removed unused `StateLiteSerializer` import from the serializer module.
- Updated test setup to include a noqa comment for the `django_db_setup` fixture, ensuring clarity in the code.
- Added missing commas in user data dictionary for consistency.
* feat: add project creation and update serializers with validation
- Introduced `ProjectCreateSerializer` and `ProjectUpdateSerializer` to handle project creation and updates, respectively.
- Implemented validation to ensure project leads and default assignees are members of the workspace.
- Updated API views to utilize the new serializers for creating and updating projects, enhancing request handling.
- Added OpenAPI documentation references for the new serializers in the project API endpoints.
* feat: update serializers to include additional read-only fields
* refactor: rename intake issue serializers and enhance structure
- Renamed `CreateIntakeIssueRequestSerializer` to `IntakeIssueCreateSerializer` and `UpdateIntakeIssueRequestSerializer` to `IntakeIssueUpdateSerializer` for clarity.
- Introduced `IssueSerializer` for nested issue data in intake requests, improving the organization of serializer logic.
- Updated API views to utilize the new serializer names, ensuring consistency across the codebase.
* refactor: rename issue serializer for intake and enhance API documentation
- Renamed `IssueSerializer` to `IssueForIntakeSerializer` for better clarity in the context of intake issues.
- Updated references in `IntakeIssueCreateSerializer` and `IntakeIssueUpdateSerializer` to use the new `IssueForIntakeSerializer`.
- Added OpenAPI documentation for the `get_workspace_work_item` endpoint, detailing parameters and responses for improved clarity.
* chore: modules and cycles serializers
* feat: add new serializers for label and issue link management
- Introduced `LabelCreateUpdateSerializer`, `IssueLinkCreateSerializer`, `IssueLinkUpdateSerializer`, and `IssueCommentCreateSerializer` to enhance the handling of label and issue link data.
- Updated existing API views to utilize the new serializers for creating and updating labels, issue links, and comments, improving request handling and validation.
- Added `IssueSearchSerializer` for searching issues, streamlining the search functionality in the API.
* Don't consider read only fields as required
* Add setting to separate request and response definitions
* Fixed avatar_url warning on openapi spec generation
* Made spectacular disabled by default
* Moved spectacular settings into separate file and added detailed descriptions to tags
* Specify methods for asset urls
* Better server names
* Enhance API documentation with summaries for various endpoints
- Added summary descriptions for user asset, cycle, intake, issue, member, module, project, state, and user API endpoints to improve clarity and usability of the API documentation.
- Updated the OpenAPI specifications to reflect these changes, ensuring better understanding for developers interacting with the API.
* Add contact information to OpenAPI settings
- Included contact details for Plane in the OpenAPI settings to enhance API documentation and provide developers with a direct point of contact for support.
- This addition aims to improve the overall usability and accessibility of the API documentation.
* Reordered tags and improved description relavancy
* Enhance OpenAPI documentation for cycle and issue endpoints
- Added response definitions for the `get_cycle_issues` and `delete_cycle_issue` methods in the CycleIssueAPIEndpoint to clarify expected outcomes.
- Included additional response codes for the IssueSearchEndpoint to handle various error scenarios, improving the overall API documentation and usability.
* Enhance serializer documentation across multiple files
- Updated docstrings for various serializers including UserAssetUploadSerializer, AssetUpdateSerializer, and others to provide clearer descriptions of their functionality and usage.
- Improved consistency in formatting and language across serializer classes to enhance readability and maintainability.
- Added detailed explanations for new serializers related to project, module, and cycle management, ensuring comprehensive documentation for developers.
* Refactor API endpoints for cycles, intake, modules, projects, and states
- Replaced existing API endpoint classes with more descriptive names such as CycleListCreateAPIEndpoint, CycleDetailAPIEndpoint, IntakeIssueListCreateAPIEndpoint, and others to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved documentation and method summaries for better understanding of endpoint functionalities.
- Enhanced query handling in the new endpoint classes to streamline data retrieval and improve performance.
* Refactor issue and label API endpoints for clarity and functionality
- Renamed existing API endpoint classes to more descriptive names such as IssueListCreateAPIEndpoint, IssueDetailAPIEndpoint, LabelListCreateAPIEndpoint, and LabelDetailAPIEndpoint to enhance clarity.
- Updated URL patterns to reflect the new endpoint names, ensuring consistency across the API.
- Improved method summaries and documentation for better understanding of endpoint functionalities.
- Streamlined query handling in the new endpoint classes to enhance data retrieval and performance.
* Refactor asset API endpoint methods and introduce new status enums
- Updated the GenericAssetEndpoint to only allow POST requests for asset creation, removing the GET method.
- Modified the get method to require asset_id, ensuring that asset retrieval is always tied to a specific asset.
- Added new IntakeIssueStatus and ModuleStatus enums to improve clarity and management of asset and module states.
- Enhanced OpenAPI settings to include these new enums for better documentation and usability.
* enforce naming convention
* Added LICENSE to openapi spec
* Enhance OpenAPI documentation for various API endpoints
- Updated API endpoints in asset, cycle, intake, issue, module, project, and state views to include OpenApiRequest and OpenApiExample for better request documentation.
- Added example requests for creating and updating resources, improving clarity for API consumers.
- Ensured consistent use of OpenApi utilities across all relevant endpoints to enhance overall API documentation quality.
* Enhance OpenAPI documentation for various API endpoints
- Added detailed descriptions to multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to improve clarity for API consumers.
- Ensured consistent documentation practices by including descriptions that outline the purpose and functionality of each endpoint.
- This update aims to enhance the overall usability and understanding of the API documentation.
* Update OpenAPI examples and enhance project queryset logic
- Changed example fields in OpenAPI documentation for issue comments from "content" to "comment_html" to reflect the correct structure.
- Introduced a new `get_queryset` method in the ProjectDetailAPIEndpoint to filter projects based on user membership and workspace, while also annotating additional project-related data such as total members, cycles, and modules.
- Updated permission checks to use the correct attribute name for project identifiers, ensuring accurate permission handling.
* Enhance OpenAPI documentation and add response examples
- Updated multiple API endpoints across asset, cycle, intake, issue, module, project, state, and user views to include new OpenApiResponse examples for better clarity on expected outcomes.
- Introduced new parameters for project and issue identifiers to improve request handling and documentation consistency.
- Enhanced existing responses with detailed examples to aid API consumers in understanding the expected data structure and error handling.
- This update aims to improve the overall usability and clarity of the API documentation.
* refactor: update terminology from 'issues' to 'work items' across multiple API endpoints for consistency and clarity
* use common timezones from pytz for choices
* Moved the openapi utils to the new folder structure
* Added exception logging in GenericAssetEndpoint to improve error handling
* Fixed code rabbit suggestions
* Refactored IssueDetailAPIEndpoint to streamline issue retrieval and response handling, removing redundant external ID checks and custom ordering logic.
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* chore: remove command entries from podman-quadlet configuration files
* chore: update application version to v1.13.0 in Dockerfile, podman configuration, and environment files
* chore: update Dockerfile to use 'preview' version and adjust app directory structure for COPY commands
* fix: update Dockerfile to correct app directory structure for silo image COPY command
* fix: update Dockerfile to correct app directory structure for live image COPY command
* fix: update Dockerfile to set PLANE_VERSION to v1.12.1
* fix: update supervisor configuration to change live command path
* fix: update Dockerfile and supervisor configuration to correct app directory paths
* fix: update Dockerfile and supervisor configuration to correct application paths for web, space, and admin services
* fix: update Dockerfile to set PLANE_VERSION to stable
* fix: update Dockerfile to set PLANE_VERSION to v1.12.1
* fix: dev wiki
* wiki fix
* update from web
* fix: dev wiki shared pages
* fix: shared pages
* fix : side bar expand
* fix: dev wiki
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* add app uninstall endpoint and tests
* Implement app uninstall webhook and update uninstall endpoint to trigger webhook on application uninstallation
* fix test cases
* modifications to fix tests failure
* moved app uninstall webhook call to view
* fix: local environment setup
* fix(dev): get silo migration working
* fix(dev): fix env var expansion
* fix(dev): permit live server to import logger
* fix(dev): silo connection to mq
* fix(dev): few more build errors resolved
---------
Co-authored-by: Aaron Heckmann <aaron@plane.so>
* add get published app by slug endpoint + support for external app feature in workspace selector
* moved service init outside methods
* moved service init outside the render method
* redirect to applications page if app is installed + default to third_party apps
* fix: bot not getting added to projects on interupted flow
* feat: add configuration_url field to Application model and update related components
* remove configuration_url in migrations
* add sub commands to make app internal and external
* fix status mapping in phase 1 + handle race condn + addn logs
* enhancement: increase wait time for requeuing pages and handle empty paginated batches in BaseDataMigrator
* [WEB-4498] improvement: remove workspace details from workspace members list API
* refactor: update select_related usage in workspace invitation and member views
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: added intake issue handler in create new work item
* feat: added intake service
* feat: modified issue modal and project selection to fit in intake creation
* feat: modified block action and view submission to handle intake issues
* feat: created intake linkback
* feat: added error for intake
* fix: intake issue not supporting states and labels
* fix: added link addition for issue creation
* fix: links and attachments are not duplicating
* fix: attachment not downloaded
* chore: use deepcopy
* fix: attachment not copying in s3
* chore: tests for IssueDuplicateEndpoint
* chore: resolve copilot reviews
* chore: separate function for attachment asset duplication
* chore: separate function for attachment asset duplication
* WIP
* fix: issue description copy
* fix: unused imports
* chore: tests for issue attachment bg task
* fix: function name
* chore: add comments and type hints.
* Remove deprecated Nginx configuration files and scripts, including Dockerfiles, environment scripts, and configuration templates, to streamline the project structure.
* Update environment configuration and Docker setup for proxy services
- Added LISTEN_PORT and LISTEN_SSL_PORT variables to .env.example and related files.
- Updated Docker Compose files to reference new port variables instead of deprecated NGINX_PORT.
- Adjusted README and variable documentation to reflect changes in port configuration.
- Changed build context for proxy services to use the new directory structure.
* Refactor port configuration in environment and Docker files
- Renamed LISTEN_PORT and LISTEN_SSL_PORT to LISTEN_HTTP_PORT and LISTEN_HTTPS_PORT in .env.example and related files.
- Updated Docker Compose configurations to reflect the new port variable names.
- Adjusted documentation in README and variables.env to ensure consistency with the new naming conventions.
* refactor: reorganize deployment structure and update build workflows
- Restructure deployment directories from deploy/ to deployments/
- Move selfhost files to deployments/cli/community/
- Add new AIO community deployment setup
- Update GitHub Actions workflows for new directory structure
- Add Caddy proxy configuration for CE deployment
- Remove deprecated AIO build files and workflows
- Update build context paths in install scripts
* chore: update Dockerfile and supervisor configuration
- Changed `apk add` command in Dockerfile to use `--no-cache` for better image size management.
- Updated `build.sh` to ensure proper directory navigation with quotes around `dirname "$0"`.
- Modified `supervisor.conf` to set `stderr_logfile_maxbytes` to 50MB and added `stderr_logfile_backups` for better log management across multiple services.
* chore: consistent node and python version
---------
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
* Enhance CI workflows: Add AIO build support and manifest management
- Introduced `mark_manifest_latest` input to control manifest versioning in `appliance-docker-ee.yml`.
- Updated paths in `appliance-docker-ee.yml` for consistency with new directory structure.
- Removed obsolete `build-aio-branch-ee.yml` workflow.
- Added `aio_build` input to `build-branch-ee.yml` for AIO image builds.
- Updated various build jobs to utilize new AIO build logic and dependencies.
- Refactored paths in `build-branch-ee.yml` for improved clarity and organization.
- Updated Dockerfile for proxy to use specific versions of dependencies.
* fix: update build script invocation in CI workflow
- Changed the invocation of the build script in `build-branch-ee.yml` to use `bash` for improved compatibility.
* fix: update artifact upload condition and correct file path in build script
- Modified the condition for uploading artifacts to S3 in `build-branch-ee.yml` to include airgapped builds.
- Corrected the file path for the Caddyfile in `build.sh` to reflect the new directory structure.
* refactor: enhance artifact uploads and remove deprecated scripts
- Added multiple artifact uploads in `build-branch-ee.yml` for `docker-compose.yml`, `coolify-compose.yml`, `portainer-compose.yml`, `swarm-compose.yml`, and `variables.env`.
- Deleted obsolete scripts and configuration files related to airgapped deployment, including `build.sh`, `install.sh`, and various YAML files in the `cli-install` and `airgapped` directories.
- Updated CI workflow to streamline artifact management and improve deployment processes.
* refactor: remove deprecated artifact upload for swarm-compose.yml in CI workflow
- Eliminated the upload step for `swarm-compose.yml` in `build-branch-ee.yml` to streamline artifact management and reduce redundancy.
* fix: consistent node version across all docker files
---------
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
* chore: streamline issue saving process with advisory locks for sequence management
* fix: update advisory lock usage in issue model for improved concurrency management
* fix: comment sync with deduping
* fix: /plane command not working with empty description
* fix: added actor display name to the store dedup payload
* fix: accessors for data
* feat: add recurring workitem models and update workitem template relationships
- Introduced `RecurringWorkitemConfiguration` and `RecurringWorkitem` models to manage recurring workitems.
- Updated `WorkitemTemplate` to include `parent_workitem_template` and `project_template` fields for better hierarchy and association.
- Enhanced model imports in `__init__.py` to include new recurring models.
* refactor: rename and enhance recurring workitem models
- Renamed `RecurringWorkitemConfiguration` to `RecurringWorkitemTask` and `RecurringWorkitem` to `RecurringWorkitemTaskLog` for clarity.
- Updated model fields to include `start_at`, `end_at`, `interval_seconds`, and `cron_expression` for improved scheduling flexibility.
- Added validation to ensure either `interval_seconds` or `cron_expression` is provided.
- Established a one-to-one relationship with Celery Beat's `PeriodicTask` for task management.
- Enhanced related names and help texts for better understanding and usability.
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* Enhancement: Add OpenSearch batch update tasks and monitoring features
- Introduced new Celery tasks for processing batched OpenSearch updates and logging queue metrics.
- Updated the task registry in `celery.py` to include `process-batched-opensearch-updates` and `log-opensearch-update-queue-metrics`.
- Created a new module for batched search update tasks with comprehensive logging and error handling.
- Added a management command for monitoring OpenSearch batch update queues with various options for real-time and detailed statistics.
- Enhanced the OpenSearch documents module with new entity definitions and improved field handling for better search capabilities.
- Updated settings to utilize the new batched signal processor for OpenSearch operations.
- Removed deprecated signal handler to streamline the codebase.
* Refactor: Update logging and registry access in search-related tasks
- Changed logger name from "plane.api" to "plane.worker" for better context.
- Simplified model search relevance checks by utilizing the registry's public API.
- Enhanced cascade processing logic to improve clarity and efficiency.
- Minor adjustments in the monitoring command to streamline confirmation checks.
* Fix: Improve timestamp parsing in search queue monitoring
* Refactor search queue monitoring command to support sub-commands
* Update force-drain command to accept models as an option
* Implement chunked processing for Redis queue updates
- Added max_batch_size parameter to retrieve_all_queued_updates to limit the number of items processed at once, preventing memory issues.
- Updated cleanup_stale_queue_for_model to process items in chunks, improving efficiency and stability for large queues.
- Introduced OPENSEARCH_UPDATE_BATCH_MAX_SIZE setting for configurable batch processing limits.
* Refactor: Replace retrieve_all_queued_updates with get_queued_updates_chunks for improved memory efficiency
- Updated batched_search_update_task to utilize get_queued_updates_chunks, allowing for chunked processing of queued updates.
- Modified related imports and settings to reflect the new chunking approach.
- Enhanced queue processing logic to log progress and handle errors more effectively during chunk processing.
* Changed the return value for unknown health statuses to use WARNING instead of HTTP_INFO
* Multiple enhancements for chunk processing and metric logging
- Reduced the chunk size for processing updates from 15000 to 1000 to improve performance.
- Simplified the logging of queue metrics by focusing on essential metrics and removing unnecessary health status checks.
- Updated timestamp handling to use epoch seconds for consistency.
- Enhanced the alerting mechanism to only flag large queues, streamlining monitoring efforts.
* Updated readme
* feat: implement batch processing for ClickUp data migration with pagination support
* refactor: move pullBatches in clickup migrator as private method
* remove redundant pull method
* refactor: standardize pagination context naming in ClickUp migrator and base import worker
* dev: handled the project default module, cycle, view, and page in project create and update mutation
* dev: handled the project feature while creating the project
- Changed references from 'apiserver' to 'apps/server' in Docker configurations and environment setup.
- Updated contributing documentation to reflect the new service structure.
- Adjusted setup script to accommodate the new directory layout.
- Removed obsolete files related to the previous structure.
* chore: add keyword fields to description and name in IssueDocument and PageDocument
* [WEB-4372] feat: enhance semantic field management and indexing behavior in documents
This commit introduces improvements to the handling of semantic fields in the Issue and Page models, including original value tracking for change detection. It also updates the indexing logic to differentiate between full reindexing and partial updates based on semantic field changes. Additionally, the signal handler is enhanced for better batch processing and error logging during index updates.
* feat(tests): Add reusable workspace fixture
Introduces a new `workspace` fixture in `conftest.py` to provide a
consistent and reusable setup for tests that require a workspace.
* feat(tests): Add tests for project creation (POST)
This commit introduces a comprehensive test suite for the project creation API endpoint.
The suite covers a wide range of scenarios, including:
- Successful creation and verification of side-effects (default states, project members, user properties).
- Validation for invalid or missing data (400 Bad Request).
- Permission checks for different user roles (e.g., guests are forbidden).
- Authentication requirements (401 Unauthorized).
- Uniqueness constraints for project names and identifiers (409 Conflict).
- Successful creation with all optional fields populated.
It leverages the `workspace`, `session_client` and `create_user` fixtures for a consistent test setup.
* refactor(tests): Centralize project URL helper into a base class
To avoid code duplication in upcoming tests, this commit introduces a `TestProjectBase` class.
The `get_project_url` helper method is moved into this shared base class, and the existing `TestProjectAPIPost` class is updated to inherit from it. This ensures the URL generation logic is defined in a single place and preparing the suite for the upcoming GET tests.
* feat(tests): Add tests for project listing and retrieval (GET)
This commit adds a suite for the GET method. It leverages the previously created `TestProjectBase` class for URL generation.
The new test suite covers:
- Listing projects:
- Verifies that administrators see all projects.
- Confirms guests only see projects they are members of.
- Tests the separate detailed project list endpoint.
- Retrieving a single project:
- Checks for successful retrieval of a project by its ID.
- Handles edge cases for non-existent and archived projects (404 Not Found).
- Authentication:
- Ensures authentication is required (401 Unauthorized).
* feat(tests): Add tests for project update (PATCH) and deletion (DELETE)
Key scenarios tested for PATCH:
- Successful partial updates by project administrators.
- Forbidden access for non-admin members (403).
- Conflict errors for duplicate names or identifiers on update (409).
- Validation errors for invalid data (400).
Key scenarios tested for DELETE:
- Successful deletion by both project admins and workspace admins.
- Forbidden access for non-admin members (403).
- Authentication checks for unauthenticated users (401).
* Remove unnecessary print statement
* refactor(tests): Update workspace fixture to use ORM
Updates the `workspace` fixture to create the model instance directly via the ORM using the `Workspace` model instead of the API, as requested during code review.
* Refactor: Remove some unused imports
Removes imports that I added while working on the test suite for the Project API but were ultimately not used. Note that other unused imports still exist from the state of the codebase when this branch was created/forked.
This commit introduces a new README.md file detailing the structure, features, and usage of OpenSearch documents within the Plane application. It covers document types, key features like edge n-gram and semantic search, configuration settings, and guidelines for adding new document types and running index operations.
* refactor: update AMI and CloudFormation template handling in CI workflow
- Removed previous manifest file references and associated cleanup steps from the CI workflow.
- Updated S3 paths for storing the latest and versioned AMI manifests.
- Introduced a new step to store the CloudFormation template in S3 with updated paths.
- Enhanced the CloudFormation template to include a parameter for AMI ID, replacing the previous region-based mapping.
- Improved AMI naming convention in Packer configuration to include a timestamp.
* chore: enhance cleanup commands in Packer configuration for AMI builds
- Added removal of authorized_keys for the root user to improve security during AMI creation.
- Included command to clear command history to further secure the AMI environment.
* chore: improve cleanup commands in Packer configuration for AMI builds
- Replaced command to clear command history with specific removal of .bash_history files for both ubuntu and root users.
- Enhanced security measures during AMI creation by ensuring sensitive history data is removed.
* chore: refine cleanup commands in Packer configuration for AMI builds
- Updated command to remove command history files for both ubuntu and root users to a more general pattern, enhancing security during AMI creation.
* feat: add SSH and Application Security Group CIDR parameters to CloudFormation template
- Introduced new parameters for SSH and Application Security Group CIDR configurations, allowing for more granular control over access.
- Updated metadata and validation assertions to ensure these parameters are required when creating new infrastructure.
- Modified security group rules to reference the new CIDR parameters for SSH, HTTP, and HTTPS access.
* fix: update PublicSubnetCidr default value in CloudFormation template
- Changed the default value of PublicSubnetCidr from "10.50.1.0/16" to "10.50.1.0/24" to better align with subnetting requirements for new infrastructure.
* chore: update default values for SSH and Application Security Group CIDR parameters in CloudFormation template
- Changed the default values for SshSecurityGroupCidr and ApplicationSecurityGroupCidr from "0.0.0.0/0" to an empty string to enforce explicit configuration of access controls.
* feat: add podman quadlets deployment method
- Added steps to process podman quadlets, including creating necessary directories and files.
- Implemented logic to split podman-quadlets.ini into separate files.
- Created a tarball of the podman quadlets for artifact upload.
- Updated the workflow to download the podman quadlets tarball during the build process.
* fix: update environment variable handling in build workflow
- Changed logic to always upload artifacts to S3.
- Enhanced the processing of quadlets.env to replace or append variables in plane.env.
- Updated specific URLs in plane.env for various services to point to the correct endpoints.
* fix: improve environment variable update logic in build workflow
- Enhanced the handling of environment variables in plane.env by differentiating between macOS and other operating systems for the sed command.
- Ensured that variables are correctly replaced or appended based on the operating system type.
* fix: update artifact upload logic in build workflow
- Changed the condition for uploading artifacts to S3, setting it to false in specific scenarios.
- Adjusted the handling of the artifact S3 suffix based on the new logic.
* fix: correct artifact upload and environment variable handling in build workflow
- Updated the artifact upload logic to always set the upload flag to true.
- Improved the handling of new lines in the environment variable file, ensuring proper formatting when appending lines.
* fix: refine environment variable handling in build workflow
- Simplified the appending of new lines in plane.env by removing unnecessary echo commands.
- Updated the conditional check for macOS in the sed command to use double brackets for consistency.
* fix: streamline environment variable processing in build workflow
- Combined conditional checks for comments and empty lines in plane.env to simplify logic.
- Reduced the number of echo commands for improved efficiency in appending lines.
* fix: enhance environment variable processing in build workflow
- Streamlined the logic for processing environment variables in plane.env by consolidating conditional checks for comments and empty lines.
- Improved code readability and efficiency by reducing redundant echo commands.
* fix: simplify environment variable processing in build workflow
- Consolidated the logic for processing non-comment, non-empty lines in plane.env to enhance readability.
- Removed redundant conditional checks to streamline the appending of key-value pairs.
* fix: enhance environment variable processing in build workflow
- Improved the logic for skipping comments and empty lines in plane.env for better clarity.
- Consolidated the handling of key-value pairs to streamline the appending and updating process, particularly for macOS compatibility.
* fix: clean up environment variable file by removing unnecessary comments
- Removed the comment line in quadlets.env for improved clarity and conciseness.
- Ensured the environment variable definitions remain intact for proper application configuration.
* fix: refine environment variable processing in build workflow
- Enhanced the handling of comment lines in plane.env by copying them as is and ensuring proper formatting.
- Improved the logic for processing empty lines to maintain clarity and efficiency in the environment variable file.
* fix: improve environment variable processing in build workflow
- Added initial content creation for plane.env to ensure a clean start.
- Enhanced the handling of comment lines and empty lines for better formatting and readability.
- Streamlined the appending of key-value pairs to maintain consistency across different operating systems.
* fix: enhance environment variable processing in build workflow
- Updated the conditional checks for comment lines and empty lines to improve clarity and consistency.
- Replaced the use of double brackets with single brackets for empty line checks to align with standard practices.
* fix: enhance environment variable handling in build workflow
- Added a newline before appending key-value pairs in plane.env to ensure proper formatting.
- Updated quadlets.env to include a comment for clarity on overriding existing environment variables.
* fix: improve environment variable handling in build workflow
- Streamlined the appending of comment lines in plane.env by using echo instead of printf for consistency.
- Removed unnecessary newlines when processing empty lines to enhance clarity and maintain formatting.
* fix: improve newline handling in environment variable processing
- Added newlines after comment lines in plane.env to enhance readability and maintain consistent formatting.
- Ensured that the initial content creation for plane.env includes an empty line for better structure.
* fix: improve newline handling in environment variable processing
- Added an additional newline after comment lines in plane.env to further enhance readability and maintain consistent formatting.
* fix: update environment variable handling in build workflow
- Removed unnecessary newline handling in plane.env to streamline the processing of comment lines.
- Commented out URL replacements in plane.env for future implementation when correct URLs are available.
- Added DB_URL and DATABASE_URL to quadlets.env for improved database connectivity.
* fix: update environment variable handling in install scripts
- Removed commented-out URL replacements in build workflow for clarity.
- Added WEB_URL and CORS_ALLOWED_ORIGINS variables to install script for improved configuration flexibility.
* fix: add SITE_ADDRESS variable to quadlets.env for improved configuration
- Introduced SITE_ADDRESS variable to quadlets.env to specify the site address for the application.
* fix: add install script for podman-quadlets to build workflow
- Included the install.sh script for podman-quadlets in the build process to enhance deployment capabilities.
- Updated the copying of configuration files to ensure all necessary components are included in the artifact.
* fix: update install script to use tar for extracting archives
- Replaced the unzip command with tar for extracting the archive in the install.sh script to improve compatibility and streamline the installation process.
* fix: add directory creation function to install script
- Introduced a new function to create required directories in the install.sh script, enhancing the setup process for podman-quadlets.
- Updated the file handling logic to ensure necessary directories are created in both ROOT_PLANE_DIR and target_dir, improving deployment reliability.
* fix: update artifact upload logic in build workflow
- Changed the condition for setting the artifact_upload_to_s3 variable to false when the target branch is not met, improving clarity in the workflow's artifact handling.
* fix: update artifact upload logic in build workflow
- Changed the condition for setting the artifact_upload_to_s3 variable to false when the target branch is not met, improving clarity in the workflow's artifact handling.
* fix: update directory structure in build workflow
- Changed the directory path for systemd configuration files from 'dist/etc/containers/systemd' to 'dist/config/containers/systemd' to better reflect the organization of configuration files in the build process.
- Updated the file handling logic to ensure proper placement of generated files in the new directory structure.
* fix: update APP_VERSION handling in build workflow
- Added logic to replace APP_VERSION with ARTIFACT_SUFFIX in quadlets.env during the build process, improving configuration management.
* fix: update artifact download path in build workflow
- Changed the download path for podman-quadlets artifact to the directory level, ensuring all related files are correctly placed during the build process.
* fix: rename install script and update build workflow references
- Renamed the install script for podman-quadlets from 'install.sh' to 'podman-quadlets-install.sh' to better reflect its purpose.
- Updated references in the build workflow to point to the new script name, ensuring consistency in the deployment process.
* refactor: update podman-quadlets configuration and build workflow
- Renamed network from 'plane_nw' to 'plane-nw' in podman-quadlet-compose.yaml and podman-quadlets.ini for consistency.
- Removed the podman-quadlets-install.sh script as it is no longer needed, streamlining the installation process.
- Adjusted paths in the build workflow to reflect the new directory structure and ensure proper file handling during the build process.
* fix: update artifact suffix handling in build workflow
- Changed the logic for setting the artifact_s3_suffix variable to use the branch name (BR_NAME) instead of the target branch, ensuring accurate suffix assignment for artifact uploads.
* fix: correct file copy path in build workflow
- Updated the file copy command in the build workflow to reference the install.sh script from the current directory instead of the parent directory, ensuring accurate file placement during the build process.
* fix: update port mappings in podman-quadlet configuration
- Changed the published ports in podman-quadlet-compose.yaml and podman-quadlets.ini from 80:80 and 443:443 to 8080:80 and 8443:443, respectively, to avoid conflicts and improve accessibility.
* fix: standardize network naming in podman-quadlet configuration
- Updated network names in podman-quadlet-compose.yaml from 'systemd-plane_nw' to 'systemd-plane-nw' for consistency across the configuration.
* fix: update web interface access URL in installation summary
- Changed the URL in the installation summary to include the correct port (8080) for accessing the Plane web interface, ensuring users navigate to the correct address.
* fix: update podman-quadlets configuration and build workflow
- Refactored the build workflow to create a new directory structure for podman quadlets, replacing 'dist' with 'plane-podman'.
- Updated the installation script and environment variable handling to use ${APP_RELEASE_VERSION} for image tags in podman-quadlet configuration files.
- Adjusted file copy commands and paths to ensure correct placement and processing of configuration files during the build.
* fix: enhance build workflow with file existence checks and tar creation validation
- Added checks to verify the existence of Caddyfile and podman-quadlets.ini before proceeding with file operations, ensuring necessary files are present.
- Updated the tar creation command to maintain the correct directory structure and included a validation step to confirm successful creation of the tar file.
* fix: update installation instructions and add help option to script
- Modified the installation summary to include the correct command for reloading the systemd user daemon.
- Added a help option to the main function of the installation script to provide usage information to users.
* changed `APP_VERSION` in quadlets.env
* refactor: update docker-compose configurations and image tags
- Restored and configured services (web, space, admin, live) in docker-compose-local.yml for local development.
- Updated image tags in podman-quadlet-compose.yaml to version v1.12.0 for all services, ensuring consistency across deployments.
* chore: comment out unused services in docker-compose-local.yml
- Commented out the configurations for web, space, admin, and live services in docker-compose-local.yml to streamline the file for local development.
* chore: update build workflow to handle airgapped builds and package podman quadlets to airgapped build
* feat: add API_HOSTNAME to quadlets.env for improved service configuration
---------
Co-authored-by: Manish Gupta <manish@plane.so>
* feat: made mentions parser to be compatible with multiple symbols
* feat: addedd plane mentions parser to parse mentions from plane html
* feat: returned workspace connection information from plane connection details
* feat: added custom issue rich text parsing block in slack issue modal
* feat: added content parser for slack integration
* feat: added view submission to address rich text blocks
* feat: added content parsing for plane comments
* feat: added turndown service
* feat: added file download as attachment when create issues from slack message
* fix: resolved comments
* fix: renamed slack content parser
* fix: added test for content parser
* migration to support github enterprise server integration
* improved redirect uri conditional addition
* add tests and atomic txn for generate application + move redirect uris to constant
* add more test + fix slug for apps
* use django models instead of mock models
* dev: listing the all workitem relations
* dev: issue relation create and update mutation update
* dev: updated workitem search query for workitem relation
* dev: handled the workitem relation activity when we remove
* chore: removed project filter in issue relation for cross issue relations
* chore: Epic relation with all relation keys
* chore: updated enum for work item relation type
* dev: handled the related issues for duplicate and relates to
* dev: issue relation activity key updates
* dev: password confirmation logic in mobile signup
* dev: updated the invitation acceptance in google and github authentication
* dev: handled the password strength in signin
* dev: updated password strength validation
* dev: seperated the file structure for page queries
* dev: updated page mutation file structure
* dev: removed comments
* dev: shared pages in workspace and project level
* dev: updated project level shared page query
* dev: updated user level shared page query
* dev: updated yoour work page query
* dev: handled the isShared and isSharedAccess in page type
* dev: handled the page detail shated permission
* dev: handled the feature flag and handled it in workspace page permission
* dev: handled the move_to_page in global search
---------
Co-authored-by: Sainath <sainath@Sainaths-MacBook-Pro-2.local>
* fix: removed t function from dependency array which was causing infinite loop
* fix: add eslint disable comment for exhaustive-deps warning in IssuePeekOverview
* fix: removed t function from dependency array which was causing infinite loop
* fix: add eslint disable comment for exhaustive-deps warning in IssuePeekOverview
- instead of setting bot_type as APP_BOT on all bots, only set when
is_mentionable is True on the application
- add migration to back migrate all existing bot users
* chore: replace ScatterChart with BarChart in analytics components and update chart configurations
* chore: update chart labels and tooltip end date in ModuleProgress component
* refactor: swap labels and colors for created and resolved issues in CreatedVsResolved component
- Added a method to validate the order_by parameter in both IssueViewSet and IssueDetailEndpoint, ensuring it corresponds to a defined set of sortable fields.
- Defaulted to sorting by created_at if the provided field is invalid, improving query robustness and consistency across views.
- Implemented a method to validate the order_by parameter, ensuring it corresponds to valid sortable fields.
- Defaulted to sorting by created_at if the provided field is invalid, enhancing query flexibility and robustness.
* [WIKI-495] feat: add customer request fields to ViewIssueListSerializer and update WorkspaceViewIssuesViewSet for feature flag checks
- Enhanced ViewIssueListSerializer to conditionally include customer request fields based on user access.
- Updated WorkspaceViewIssuesViewSet to prefetch customer request issues when the feature flag is enabled for the workspace.
- Improved context handling in the serializer for better data representation.
* fix: improve pagination logic in OffsetPaginator
- Updated the pagination logic to use a duplicated queryset for accurate result slicing.
- Adjusted next_cursor calculation to ensure it reflects the correct number of results available for pagination.
* feat: enhance ViewIssueListSerializer to include customer request IDs
- Added a method to retrieve customer request IDs associated with issues.
- Updated the serializer's representation to include the new customer request IDs field.
* feat: add type_id to ViewIssueListSerializer representation
- Included type_id in the serialized output of ViewIssueListSerializer to enhance issue data representation.
* fix: refine pagination logic in OffsetPaginator
- Updated page_results to use .values("id") for optimized data retrieval.
- Adjusted next_cursor calculation to use page_results.count() for accurate pagination state.
* fix: live server shared access
* fix: optimized this
* chore: changed the variable name
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* fix: handle division by zero in projects insight table percentage calculation
* fix: handle NaN in percentage calculation for completed work items in projects insight table
* feat: add IssueListDetailSerializer for detailed issue representation
- Introduced IssueListDetailSerializer to enhance issue data representation with expanded fields.
- Updated issue detail endpoint to utilize the new serializer for improved data handling.
- Added methods for retrieving related module, label, and assignee IDs, along with support for expanded relations.
* feat: add ViewIssueListSerializer and enhance issue ordering
- Introduced ViewIssueListSerializer for improved issue representation, including assignee, label, and module IDs.
- Updated WorkspaceViewIssuesViewSet to utilize the new serializer and optimized queryset with prefetching.
- Enhanced order_issue_queryset to maintain consistent ordering by created_at alongside other fields.
- Modified pagination logic to support total count retrieval for better performance.
* fix: optimize issue filtering and pagination logic
- Updated WorkspaceViewIssuesViewSet to apply filters more efficiently in the issue query.
- Refined pagination logic in OffsetPaginator to ensure consistent behavior using limit instead of cursor.value, improving overall pagination accuracy.
* fix: improve pagination logic in OffsetPaginator
- Updated the next_cursor calculation to use the length of results instead of cursor.value, ensuring accurate pagination behavior.
- Added a comment to clarify the purpose of checking for additional results after the current page.
* Move the common permission filters into a separate method
* fix: handle deleted related issues in serializers
- Updated IssueListDetailSerializer to skip null related issues when building relations.
- Enhanced ViewIssueListSerializer to safely access state.group, returning None if state is not present.
- Removed unused User import in base.py for cleaner code.
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: added feature flag for confluence importer
* feat: modified content parser for removing default PTag extension
* feat: made controller generic for supporting both notion and confluence
* feat: moved notion extensions into driver folder
* feat: created zip driver factory and types
* feat: added notion import driver as extracted part
* chore: removed existing content parser
* feat: added body extractor extension
* feat: added collapsable and notes extension
* feat: added colors and icon parser extension
* feat: added file and page parser extensions
* feat: added task list extension for confluence
* feat: added confluence import driver
* feat: modified zip manager to extract out the tree logic
* feat: modified phases and base to use the driver instead of concrete implementation
* feat: added confluence as migrator job
* feat: added confluence import page
* feat: added notion and confluence components into common zip importer components
* feat: modified hooks and services to use common zip importer
* feat: modified services and store references for using confluence
* fix: remove unnecessary file
* fix: removed comment
* feat: corrected components for using serviceName as title
* feat: added translations
* chore: self review 1
* chore: self review 2, comments, phases and exports
* fix: path getting longer than 255 characters
* feat: added test for content parser
* fix: removed json stringify for colormap
* fix: resolved comments
* fix: enabled feature flag
* fix: shared pages initilization for view access
* chore: optimised the logic for shared pages
* fix: lock control
* chore: cursor rules in gitignore
* chore: optimised the page query
* chore: combined the user map
* fix: should render
* chore: added the logic to unshare
* fix: can current user access page
* fix: blocking pages
* fix: page doesn't exist
* fix: empty state and unshared realtime
* fix: console log payload
* chore: updated the permission layer
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* refactor: move app bot addition to project save method
- Removed the signal handler for adding app bots to a project.
- Integrated app bot addition directly into the Project model's save method.
- Updated the add_app_bots_to_project function to exclude the user who created the project.
* Fixed import issues
* feat: add short_id and slug fields to Template model with migration
* Added short_id and slug fields to the Template model for better identification and SEO.
* Implemented a migration to populate these fields for existing templates.
* Enhanced save method to generate short_id and slug if not set, ensuring uniqueness and proper formatting.
* feat: enhance Template model and serializers with short_id and URL validation
* Added a name_changed flag to the Template model to track name changes.
* Updated TemplateSerializer to include short_id and slug in read-only fields.
* Implemented URL validation in the name field of TemplateSerializer to prevent names containing URLs.
* Introduced a new utility function, generate_short_id, for generating unique identifiers.
* Modified PublishedTemplateEndpoint to use short_id instead of UUID for template retrieval.
* add unit tests for EE utilities and identifier generation
* Introduced unit tests for the EE utilities package, focusing on the identifier generation function.
* Implemented tests for various scenarios including default and custom lengths, uniqueness, character set validation, and cryptographic quality.
* Created new test files and directories to organize the unit tests effectively.
* dev: handled team space permissions that user can access the queries and mutation when the user is part of the teamspace
* dev: handled the all projects teamspace filters
* dev: handled the teamspace filter in sync_to_async
* dev: updated the all_projects query
* dev: updated projects query
* dev: updated projects query
* dev: updated projects query
* dev: updated project teamspace query
* dev: updated your work query
* dev: updated the project teamspace filters
* dev: updated teamspace query in pages
* dev: updated page and epic teamspace query
* dev: handled the coroutine error in your work
* dev: handled the async and normal function for teamsapce filter
* dev: updated teamspace helper
* dev: updated project permission
* dev: issue detail update query
* dev: updated issue detail query
* dev: updated distinct
* dev: implemented teamspace members
* dev: updated project permission layer
* dev: removed repeated code
* dev: handled the status
* dev: updated projects query
* dev: updated projects query distinct
* dev: updated the roles for project level
* dev: issue search filter included timespace
* dev: updated projects query
* dev: included teamsapce in global search
* dev: updated projects query distinct
* dev: handled the epics in global search
* dev: handled the sync in global search
* dev: project filter in global search
* dev: updated notification teamspace filter
* dev: resolved the conversations
* feat: add JWT authentication support and related tests for user session endpoint
- Updated UserSessionEndpoint to support JWT authentication alongside session authentication.
- Introduced a new jwt_client fixture for testing JWT authentication.
- Added comprehensive tests for user session handling with various authentication scenarios, including valid, invalid, and expired tokens.
* Update apiserver/plane/app/views/user/base.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update apiserver/plane/app/views/user/base.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* chore: improved pat permissions
* fix: err message
* fix: removed permission from backend
* [WEB-4330] refactor: update API token endpoints to use user context instead of workspace slug
- Changed URL patterns for API token endpoints to use "users/api-tokens/" instead of "workspaces/<str:slug>/api-tokens/".
- Refactored ApiTokenEndpoint methods to remove workspace slug parameter and adjust database queries accordingly.
- Added new test cases for API token creation, retrieval, deletion, and updates, including support for bot users and minimal data submissions.
* fix: removed workspace slug from api-tokens
* fix: refactor
* chore: url.py code rabbit suggestion
* fix: APITokenService moved to package
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
* feat: duplicate issue to another project
* chore: change viewset name
* chore: set None for all project level fields
* feat: added duplicate action to all work item layouts
* chore: code split for ce
* chore: removed redundant function declaration
* chore: refactored action modals
* fix: modify api response
* feat: added feature flag
* fix: use serializer to render response
* feat: duplicate epics to another projects
* feat: epics duplicate frontend implementation
* feat: description assets duplication
* fix: asset duplication
* fix: related issues not duplicating
* fix: add import
* fix: description assets are not copied
* chore: add feature flag check
* fix: variable name of duplicated issue
* fix: argument name
* chore: resolved coderabbit comments
---------
Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
* chore: added delete property for workitem types
* chore: Added translations
* fix: update layout of toggle switch in quick actions component
* feat: add enable/disable warning for issue types while deleting a issue type
* chore: updated translations
* feat: implement issue type delete confirmation modal and refactor quick actions
* feat: add iconClassName prop to CustomMenu, make the custom menu icon bigger in issue-types and updated issue type quick acctions for default state handling
* feat: implement delete modal for work item types , reafactored the delete promise to the top
* refactor: rename iconClassName to chevronIconClassName in CustomMenu and update related components
* feat: enhance enable/disable functionality in issue type quick actions with toast notifications
* chore: utilised chevronClassname
* refactor: reset custom-menu component
* feat: add cant_delete_linked_message translations for multiple languages and update quick actions component to handle deletion state
* refactor: update quick actions component to include tooltip for delete action based on issue existence
* refactor: enhance quick actions component to disable actions based on issue existence and improve tooltip handling
* chore: un publish a page when archived
* fix: trigger event to unpublish sub pages
* fix: making publish common
* regression: remove publishing teamspace pages
* fix: pubish actions made common in workspace and project pages
* fix: remove unused import
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* chore: added code split for the analytics store
* chore: done some refactor
* refactor: update entity keys in analytics and translations
* chore: updated the translations
* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor
* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality
* feat: enhance WorkItemsModal and analytics store with isEpic functionality
* feat: integrate isEpic state into TotalInsights and WorkItemsModal components
* refactor: remove isEpic state from WorkItemsModalMainContent component
* refactor: removed old analytics components and related services
* refactor: new analytics
* refactor: removed all nivo chart dependencies
* chore: resolved coderabbit comments
* fix: remove duplicate isEpic prop in WorkItemsModal component
* fix: update type for tab parameter in processUrl method of AnalyticsV2Service
* fix: update processUrl to handle custom-work-items in peek view
* feat: implement CSV export functionality in InsightTable component
* feat: add user analytics components and extend analytics functionality
* feat: enhance analytics service with filter parameters and improve data handling in InsightTable
* feat: add projects analytics components
* feat: add cycles, modules, and intake analytics components with corresponding data handling and visualization
* feat: add new translation keys for various statuses across multiple languages
* chore: update analytics components and translations
* [WEB-4246] fix: enhance analytics components to include 'isEpic' parameter for improved data fetching
* refactor: clean up imports and update translation keys in analytics components
* chore: added project logo props in charts
* feat: integrate project logo display in analytics tables
* chore: added feature flag
* chore: disabled users
* chore: added feature flag
* chore: added payment failure vaidation
* feat: enhance analytics page with subscription upgrade tooltip and update translations
* updated translations
* chore: added additional parameters in payload
* added state icons in module and cycle table
* fix: handle empty date values in cycles and modules insight tables
* chore: added the keys for module
* chore: added custom tooltip for cycles and modules
* chore: added color to the scatter points
* refactor: centralize module status colors and update chart point colors and yaxis domain
* fix: update comment to clarify display name usage in WorkItemInsightColumns
* feat: add completed work items count to analytics and update chart components
* refactor: update trend-piece component to use new status variants for analytics
* feat: enhance ee analytics tables with export functionality and added project logo in intake
* refactor: clean up fetch keys and simplify analytics component structure
* refactor: rename analytics fields constants for consistency and clarity
* refactor: update analytics feature flag for improved clarity and consistency
* chore: changed the feature flag of analytics
* refactor: streamline analytics tab structure and introduce locked tab labels for feature flag check while rendering tab label
* chore: remove unused translation key for entity count in English locale
* fix: import of intake
* fix: append percentage sign to completion percentage label in cycles insight table
* refactor: simplify completion percentage calculation in ModulesCyclesTooltip and enhance Avatar component styling in UserAvatarName
* refactor: update AnalyticsWrapper titles to use i18n keys and clean up imports in analytics components
* fix: update isEpic handling in WorkItemsModal to consider isPeekView state
* fix: update i18n title in AnalyticsWrapper for Intake component
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* fix: duplicate assignees in user recents
* chore: optimize filtering logic
* chore: filter with deleted_at field
* chore: tests for IssueRecentSerializer
* refactor: update SyncWorkspace to read activation file from local system and handle file writing in activation handler
* fix: update MemberList assignment in SyncWorkspace to use payload data
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* refactor: update SyncWorkspace to read activation file from local system and handle file writing in activation handler
* fix: update MemberList assignment in SyncWorkspace to use payload data
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* fix: enhance license validation for airgapped workspace activation
Updated the license validation logic to ensure that if a workspace has a non-free license, an error is returned when attempting to associate it with a different license key. This change prompts users to deactivate the existing license first.
* refactor: remove caching from FeatureFlagProxyEndpoint and enhance license validation for airgapped workspaces
Removed the caching decorator from the FeatureFlagProxyEndpoint's GET method. Updated the workspace activation handler to include a check for airgapped environments in the license validation logic, ensuring that non-free licenses are handled correctly.
* fix: skip APP_RELEASE_VERSION during environment variable updates in install script
- Updated the install.sh script to skip processing the APP_RELEASE_VERSION key when reading from the backup environment file, ensuring that this key is not inadvertently modified during upgrades.
* fix: update current_version assignment in register_instance_ee command
- Changed the assignment of current_version to use app_version as the default value when user_version is not provided, ensuring consistency in version handling.
---------
Co-authored-by: Manish Gupta <manish@plane.so>
* fix: enhance license validation for airgapped workspace activation
Updated the license validation logic to ensure that if a workspace has a non-free license, an error is returned when attempting to associate it with a different license key. This change prompts users to deactivate the existing license first.
* refactor: remove caching from FeatureFlagProxyEndpoint and enhance license validation for airgapped workspaces
Removed the caching decorator from the FeatureFlagProxyEndpoint's GET method. Updated the workspace activation handler to include a check for airgapped environments in the license validation logic, ensuring that non-free licenses are handled correctly.
* refactor: move web utils to packages
* fix: build and lint errors
* chore: update drag handle plugin
* chore: update table cell type to fix build errors
* fix: build errors
* chore: sync few changes
* feat: add pi base url to constants
* chore: update all util imports in ee folder
* chore: refactor web utils imports
* chore: update imports
* fix: build errors
* fix: build errors
* fix: update utils import
* chore: minor fixes related to duplicate assets imports
* chore: update duplicate assets service
* [WEB-4316] chore: new endpoints to download an asset (#7207)
* chore: new endpoints to download an asset
* chore: add exception handling
* [WEB-4323] refactor: Analytics refactor (#7213)
* chore: updated label for epics
* chore: improved export logic
* refactor: move csvConfig to export.ts and clean up export logic
* refactor: remove unused CSV export logic from WorkItemsInsightTable component
* refactor: streamline data handling in InsightTable component for improved rendering
* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation
* refactor: cleaned up some component and added utilitites
* feat: add "at_risk" translation to multiple languages in translations.json files
* refactor: update TrendPiece component to use new status variants for analytics
* fix: adjust TrendPiece component logic for on-track and off-track status
* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts
* feat: add "at_risk" translation to various languages in translations.json files
* feat: add "no_of" translation to various languages in translations.json files
* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files
* refactor: rename insightsFields to ANALYTICS_INSIGHTS_FIELDS and update analytics tab import to use getAnalyticsTabs function
* feat: update AnalyticsWrapper to use i18n for titles and add new translation for "no_of" in Russian
* fix: update yAxis labels and offsets in various charts to use new translation key and improve layout
* feat: define AnalyticsTab interface and refactor getAnalyticsTabs function for improved type safety
* fix: update AnalyticsTab interface to use TAnalyticsTabsBase for improved type safety
* fix: add whitespace-nowrap class to TableHead for improved header layout in DataTable component
* [WEB-4311] fix: membership data handling and state reversal on error (#7205)
* [WEB-4231] Pie chart tooltip #7192
* fix: build errors
* fix: utils imports
* chore: fix build errors
* yarn lock file update
---------
Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Co-authored-by: JayashTripathy <76092296+JayashTripathy@users.noreply.github.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* add types for clickup entities
* add api service for clickup
* add pull and transform methods
* clickup folder
* add migrator and bulk transformer for clickup
* add clickup apk service for store
* add clickup data store
* add UI components and page clickup importer
* add UI components and page clickup importer
* fix bugs related to clickup import labels attachment issue type
* fix duplicate comments
* resolve plane client conflict
* content parser for description
* add relation map update for import job
* fix issues regarding custom field types options and values
* add translations + feature flag for clickup
* fix missing integration type export
* fix relation mapping across projects
* fix false comment actors in data import task
* fix cancel import job translation
* fix cancel import job translation
* fix rate limit issues for clickup import
* push unique work items to transform job
* handle username null in members
* increase refetch timing for jobs
* add rate limit fixes for pull in import job
* remove protect in pull job as not required now
* clickup additional data migrator for comments and attachments
* clickup additional migrator setup
* comment clickup importer
* fix status mapping for custom status in list n folders
* fix issues with clickup additional data migrator
* add changes to etl pull method clickup
* increase the rate limit for oauth tokens
* add pulling percent logs
* add batching to pull in clickup additional migrator
* add mq changes for error handling from preview
* Add migration for completed batch count + fix issues with progress of clickup additional migrator
* add support for external id and source in project and state external apis
* creation of project and state before transform if missing
* UI changes to support only space selection and start all folder import job
* Bug fixes for enhanced ClickUp importer with multi folder import; Translations; UI changes to support enhanced clickup importer
* migration to support enhanced clickup changes
* add emoji for project + no priority fix
* add logs to debug job stuck issue
* batch api calls to apiserver
* Fix edge-case in data import task to handle empty batches, preventing jobs from getting stuck in "TRANSFORMING" state.
* add retry logic for job finished in race condn and last batch failure
* feat: Update API routes with count increment endpoint, refactor import report logic, and enhance logging for job processing
* refactor: Improve logging in data import task and adjust batch completion logic for better handling of empty lists + UI fixes
* refactor: Enhance logging in data import task and streamline batch completion handling for empty issue lists
* refactor: remove batch locks
* refactor: enhance error handling in data migration
* chore: remove storing of members in config, skip sending relation map in get jobs
* refactor: logs and labels transform
* fix no page batch completion + feature flag clickup
* fix duplicate state mapping and transforming stuck
* reduce batching in state creation
* fix: remove multer package and resolved build errors
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* [SILO-249] feat: notion importer phase 1 with zip manager and worker traversal (#3153)
* feat: added notion zip manager code
* feat: added endpoint for bulk create pages
* feat: added page service in sdk
* fix: temporary runner
* feat: added notion zip file node types
* feat: added file extractor and file tree creator methods
* feat: added zip file manager class for interacting with extractors
* feat: added key manager types
* feat: added notion data migrator class for processing nodes
* feat: added method to set map in the store
* feat: added initialization of s3 in worker base
* feat: registered notion worker in the manager
* feat: added env variables for s3
* fix: remove unused services
* fix: removed unnecessary package
* fix: moved options into types
* fix: cleanup and jsdoc comments
* fix: renamed types and enums for consistency
* fix: replaced console.log with logger
* fix: added ttl to caches
* fix: moved zip manager to be reusable
* feat: added distributed counter for keeping count of leaf nodes
* fix: broken down the notion importer into multiple phases
* fix arrow function for key
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
* fix: eslint issues
* fix: unused variables and expression call
* fix: resolved eslint warnings
---------
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
* fix: build fix
* [SILO-254] feat: notion importer phase two implementation (#3169)
* feat: created endpoint for bulk operation on pages
* feat: added phase two implementation of notion migrator
* feat: added expected and ignored files list
* feat: added method for getting a specific map field
* fix: duplicate import
* feat: added page api endpoint
* feat: restructured and exported parser from core
* feat: added notion content parser extensions
* feat: added content parser initialization
* feat: added cleanup function in base migrator
* feat: refactored phases to include content parsing and cleanups
* chore: added content parser config
* feat: added cleanup function in zip manager to remove toc
* feat: added bluebird as dependency
* chore: remove test file
* fix: formatted code
* fix: decoupled content parser from `etl/core` to avoid circular dependency (#3204)
* fix: decoupled parser from etl/core and moved to etl/parser
* fix: modified linear importer for using parser from etl/parser
* fix: updated notion importer content parser imports
* [SILO-265] feat: Notion Importer UI and controller for generating presigned URL (#3237)
* feat: added notion controller for handling credentials save and uploads
* feat: added new keys and cached job and credential data
* feat: added notion controller and s3 init script
* feat: added UI changes for notion importer
* feat: added translation file and feature flags
* feat: added model changes to job and modified endpoint for pages
* feat: added start time to job
* fix: silo build failing
* feat: added notion importer UI component for uploading
* feat: added new extension for processing bookmark links
* fix: coderabbit suggestions
* fix: build fixes
* fix: condition
* fix: added page bulk endpoint under hmac and apiclient
* fix: root page when there is only one directory
* fix: added root directory path and error handling
* fix: add html page for each directory if not present
* feat: added feature flags for notion importer
* feat: added translations for all languagaes
* feat: added translations
* fixed: translations for russian
* [SILO-302] feat: migrated notion zip upload endpoints to apiserver (#3327)
* feat: added endpoint for silo uploads for notion importer
* feat: refactored controller to add start import route
* fix: removed policy for ttl in s3
* feat: modified frontend for using new endpoints from apiserver for uploads
* chore: added permission to silo asset endpoint
* feat: added notion importer feature flag to asset endpoint
* fix: used existing assets v2 for updating the asset upload
* fix: removed unused endpoints from silo asset view
* fix: moved notion importer into new settings page
---------
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
* Added cover_image_asset to Template model
* use the right property
* Test case for Template Model
* [SILO-317] feat: add cover image upload to template publish form
* improve: add cover image loader
* feat: add paste support to pill input
* chore: add cover_image in the serializer
* chore: update cover image url field key
* improvement: update translations for cover image field
* chore: minor icon updates
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
* chore: updated label for epics
* chore: improved export logic
* refactor: move csvConfig to export.ts and clean up export logic
* refactor: remove unused CSV export logic from WorkItemsInsightTable component
* refactor: streamline data handling in InsightTable component for improved rendering
* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation
* refactor: cleaned up some component and added utilitites
* feat: add "at_risk" translation to multiple languages in translations.json files
* refactor: update TrendPiece component to use new status variants for analytics
* fix: adjust TrendPiece component logic for on-track and off-track status
* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts
* feat: add "at_risk" translation to various languages in translations.json files
* feat: add "no_of" translation to various languages in translations.json files
* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files
* refactor: rename insightsFields to ANALYTICS_INSIGHTS_FIELDS and update analytics tab import to use getAnalyticsTabs function
* feat: update AnalyticsWrapper to use i18n for titles and add new translation for "no_of" in Russian
* fix: update yAxis labels and offsets in various charts to use new translation key and improve layout
* feat: define AnalyticsTab interface and refactor getAnalyticsTabs function for improved type safety
* fix: update AnalyticsTab interface to use TAnalyticsTabsBase for improved type safety
* fix: add whitespace-nowrap class to TableHead for improved header layout in DataTable component
* Added cover_image_asset to Template model
* use the right property
* Test case for Template Model
* Added is_mentionable boolean field to Application
* feat: Plane Commercial AMI Publish Action
* feat: update CloudFormation template and workflow for AMI publishing
- Added new environment variables for CloudFormation template and output file in the GitHub Actions workflow.
- Refactored the CloudFormation template to set default CIDR values and simplified region restrictions.
- Updated the Packer configuration to use instance type directly instead of spot instance types.
* feat: add new infrastructure parameters for VPC and public subnet CIDR blocks in CloudFormation template
* chore: update AMI publish region default value and clean up CloudFormation template by removing outdated parameters and logic
* chore: update AWS VPC and subnet CIDR defaults, modify instance type, and adjust AMI volume size in Packer configuration
* Enhance CloudFormation template and related scripts to support Instance Domain Name configuration. Added parameters for InstanceDomainName, updated metadata, and modified user data scripts to export the domain name. Updated verify-plane-setup script to utilize the domain name for access instructions.
* Update appliance-docker-ee.yml to change default AMI publish region to 'us-east-1' and update AWS manifest bucket to 'plane-terraform-marketplace'
* Add JSON validation for AMI cleanup in appliance-docker-ee.yml
* chore: updated label for epics
* chore: improved export logic
* refactor: move csvConfig to export.ts and clean up export logic
* refactor: remove unused CSV export logic from WorkItemsInsightTable component
* refactor: streamline data handling in InsightTable component for improved rendering
* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation
* refactor: cleaned up some component and added utilitites
* feat: add "at_risk" translation to multiple languages in translations.json files
* refactor: update TrendPiece component to use new status variants for analytics
* fix: adjust TrendPiece component logic for on-track and off-track status
* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts
* feat: add "at_risk" translation to various languages in translations.json files
* feat: add "no_of" translation to various languages in translations.json files
* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files
* [WEB-4307] fix: remove teamspace membership when user is assigned guest role
* chore: update comments
* chore: minor logic improvement
* chore: update comments
* fix: update group key handling in issue store utilities for state groups
- Introduced a new function to determine the default group key based on the provided groupByKey.
- Updated references to use the new function for improved clarity and maintainability.
- Adjusted the mapping for "state_detail.group" in the ISSUE_GROUP_BY_KEY to ensure consistency.
- Enhanced the getArrayStringArray method to handle group values more effectively.
* refactor: clean up filters constants
* fix: skip APP_RELEASE_VERSION during environment variable updates in install script
- Updated the install.sh script to skip processing the APP_RELEASE_VERSION key when reading from the backup environment file, ensuring that this key is not inadvertently modified during upgrades.
* fix: update current_version assignment in register_instance_ee command
- Changed the assignment of current_version to use app_version as the default value when user_version is not provided, ensuring consistency in version handling.
---------
Co-authored-by: Manish Gupta <manish@plane.so>
* refactor: improve code readability by formatting imports and breaking long lines in intake and issue views
* chore: correct soft deletes
* refactor: streamline queryset filtering for soft deletion across models
* feat: enhance assignee filtering to support teamspace members in issue creation
* chore: replaced issue with work item
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* dev: handled the signup logic for password and magic code
* dev: removed is_mobile in authentication
* chore: handled the invitation id for google and github
* chore: updated the types imports
* chore: updated url
* chore: handled the google and github click
* chore: updated auth adapter props
* chore: updated the str validation
* chore: classname Typo
* chore: updated key in mobile magic_code view
* chore: updated the invitation logic in email and magic
* chore: typo
* feat: remove scope filter from teamspace statistics
* feat: remove project dropdown from create or update teamspace form
* feat: remove scope filter from teamspace views
* feat: remove scope filter from teamspace pages
* feat: remove scope filter from teamspace work items
* chore: add endpoint to add multiple projects to teamspaces also remove
auto member addition to project
* choe: add uuid import
* feat: teamspaces detail in project settings
* feat: re-write permission layer to handle project roles through teamspaces
* improvement: toast message for teamspace list in project settings
* chore: remove teamspace projects module.
* feat: UI revamp for project settings members page
* refactor: single source of truth for project member roles
* improvement: project member settings page header.
* chore: remove teamspace list if feature is disabled
* chore: add teamspace validation for project endpoints
* chore: update permissions
* chore: teamspace filter
* chore: correct indentation
* chore: update teamspaces permission endpoint
* chore: update teamspace filters
* chore: update project members me api to return the current member project
* chore: update permissions to accomodate team permissions
* chore: remove the util function and use the manager queryset to filter project access
* chore: update permission for issue types
* chore: update querysets for epics and issue types
* chore: update page access
* improvement: permission layer and other minor UI changes
* improvement: minor UI enhancements
* chore: update project roles endpoint
* chore: update project members endpoint
* chore: update project members endpoint
* chore: remove member annotation
* refactor: project member role and original role
* refactor: project membership store
* improvement: project member list loader
* fix: search issues endpoint
* improvement: translation support for teamspaces project settings.
* chore: added option to clear existing members while fetching project members.
* chore: add extra validation for places where guests have restricted view
* chore: add caching for workspace feature flag
* fix: role update logic.
* fix: project members me api when user is guest for the project
* chore: remove duplicates returned from the api
* improvement: update link project modal
* improvement: ui / ux and translations enhancements
* feat: add all translations for teamspaces
* chore: minor component updates
* chore: minor fixes related to permission layer
* fix: strict type checks for permission layer
* fix: empty state and broken links for teamspaces
* fix: delete teamspace members when user is removed from workspace
* improve: members settings page
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
Co-authored-by: Nikhil <118773738+pablohashescobar@users.noreply.github.com>
* [SILO-229] feat: support bots to be assigned/mentioned in Plane
* Set the user bot_typ to 'APP_BOT' for application bot users
* Allow APP Bot users to be added as assignees
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: add FeatureFlagProxySpaceEndpoint and integrate payment URL patterns
- Introduced FeatureFlagProxySpaceEndpoint to handle feature flag requests based on workspace anchor.
- Updated payment URL patterns to include the new space URL patterns.
- Enhanced feature flag view with caching and error handling.
* feat: enhance error handling and add rate limiting to feature flag endpoints
- Integrated logging for exceptions in FeatureFlagProxyEndpoint and FeatureFlagProxySpaceEndpoint.
- Added SpaceRateThrottle and AnchorBasedRateThrottle to manage request rates for feature flag endpoints.
* chore: space app store and service init
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* Migrates to OpenSearch for enhanced search
Migrates from Elasticsearch to OpenSearch to leverage its capabilities.
- Updates dependencies and configurations to use OpenSearch.
- Introduces OpenSearchHelper to streamline query building and execution,
featuring standardized filters, query DSL with custom analyzers,
field-specific boosts, pagination, and source field filtering.
- Implements edge n-gram analyzer for improved prefix matching in search queries.
- Modifies search views to utilize OpenSearchHelper for efficient and
organized search results.
- Adds AttrDictField to properly serialize AttrDict objects
This migration enhances the search functionality and ensures compatibility
with the new OpenSearch infrastructure.
* Added opensearch to requirements and removed elasticsearch
* increased timeout for opensearch connections
* Minor updates to index signal handler
* Better search capability for workitem id
* Minor optimization for helper class
* Query performance improvements
* Modified management command to handle opensearch
* Replaced elasticsearc references to opensearch
* Update OpenSearch index names to include a configurable prefix from settings. Added support for OPENSEARCH_INDEX_PREFIX in Cycle, Issue, Module, Page, Project, Teamspace, View, and Workspace documents.
* Update default OpenSearch index prefix to an empty string in common settings.
* refactor: enhance backup and restore scripts for container data management
* fix: ensure proper quoting in backup script to handle paths with spaces
* fix: ensure backup directory is only removed if tar command succeeds
* CodeRabbit fixes
* chore: added code split for the analytics store
* chore: done some refactor
* refactor: update entity keys in analytics and translations
* chore: updated the translations
* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor
* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality
* feat: enhance WorkItemsModal and analytics store with isEpic functionality
* feat: integrate isEpic state into TotalInsights and WorkItemsModal components
* refactor: remove isEpic state from WorkItemsModalMainContent component
* refactor: removed old analytics components and related services
* refactor: new analytics
* refactor: removed all nivo chart dependencies
* chore: resolved coderabbit comments
* fix: update processUrl to handle custom-work-items in peek view
* feat: implement CSV export functionality in InsightTable component
* feat: enhance analytics service with filter parameters and improve data handling in InsightTable
* feat: add new translation keys for various statuses across multiple languages
* [WEB-4246] fix: enhance analytics components to include 'isEpic' parameter for improved data fetching
* chore: update yarn.lock to remove deprecated @nivo packages and clean up unused dependencies
* fix: settings header css + cta on error page
* [WEB-4249] fix: filter out inactive workspace members from project member list
---------
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
* feat: airgapped draft
* feat: enhance airgapped installation script and build process
- Added installation checks for Docker and Docker Compose versions.
- Implemented yq for dynamic updates to docker-compose.yml, including setting environment variables and handling service volumes.
- Improved build.sh to install yq if not present and manage Docker images for airgapped setups.
- Updated install.sh to streamline the installation process and ensure necessary files are in place before proceeding.
* feat: enhance airgapped install script with domain input and OS compatibility
- Added prompts for user input of installation directory and application domain/IP address.
- Implemented OS-specific handling for `sed` commands to ensure compatibility across macOS and Linux.
- Improved user experience with additional confirmation messages during installation.
* feat: update installation script and versioning for airgapped deployment
- Enhanced the installation script to prompt for confirmation when the setup directory is not empty, allowing users to proceed with caution.
- Updated application version to v1.9.2 in both the docker-compose configuration and environment variables for consistency.
- Improved final confirmation message for clarity during installation.
* chore: airgapped upload license endpoint
* feat: added endpoint for uploading file in airgapped mode
* chore: file upload to handle formdata
* feat: license activation using file upload
* feat: add GitHub Actions workflow for building airgapped images
- Introduced a new workflow to build airgapped images with customizable platform options.
- Implemented steps for dependency installation, Docker setup, AWS credentials configuration, and environment preparation.
- Enhanced docker-compose.yml processing to include airgapped-specific configurations and manage service volumes.
- Added functionality to pull and save Docker images, and create a distribution tarball for S3 upload.
* feat: enhance build script for airgapped deployment
- Added support for customizable build platform and application release version through command-line flags.
- Implemented usage instructions for the build script to guide users on required and optional parameters.
- Improved handling of environment variable updates in docker-compose.yml and plane.env for different operating systems.
- Included cleanup steps to remove temporary data and logs after the build process.
* checking build
* refactor: simplify Docker setup in GitHub Actions workflow
- Removed redundant volume configuration for buildx cache in the build-branch-ee.yml workflow.
* feat: enhance build process by installing yq if missing
- Added a check in the GitHub Actions workflow to install yq if it is not already present, ensuring the build script can dynamically update docker-compose.yml.
- Removed redundant directory creation in the build script, streamlining the volume mapping process.
- Adjusted sed command handling for macOS and Linux to improve compatibility.
* feat: update airgapped artifact packaging in GitHub Actions workflow
- Modified the condition for packaging airgapped artifacts to include 'Release' build type.
- Streamlined the setup of yq by using an action instead of manual installation.
- Enhanced the build script to dynamically set the release version based on the build type, improving flexibility for different deployment scenarios.
- Updated S3 upload path to include the artifact suffix for better organization.
* feat: add AWS credentials to GitHub Actions workflow
- Introduced environment variables for AWS access key and secret key in the build-branch-ee.yml workflow, enabling secure access to AWS resources during the build process.
* fix: correct syntax for environment variable assignment in GitHub Actions workflow
- Updated the assignment of environment variables in the build-branch-ee.yml workflow to use the correct syntax for string interpolation.
- Ensured consistency in setting the AIRGAPPED_RELEASE_VERSION based on the build type condition.
* feat: add AWS CLI installation step to GitHub Actions workflow
- Introduced a step to install the AWS CLI in the build-branch-ee.yml workflow, ensuring necessary tools are available for AWS interactions.
- Updated environment variable assignments for consistency and clarity in the packaging process of airgapped artifacts.
* fix: streamline S3 upload command in GitHub Actions workflow
- Simplified the S3 upload command in the build-branch-ee.yml workflow by removing unnecessary directory navigation, directly referencing the airgapped tarball for upload.
- Improved clarity and efficiency in the artifact deployment process.
* chore: comment out S3 upload command in GitHub Actions workflow
- Commented out the S3 upload command in the build-branch-ee.yml workflow to prevent execution during the build process.
- This change allows for easier testing and debugging of the artifact packaging without uploading to S3.
* fix: correct syntax in GitHub Actions workflow for airgapped release version
- Fixed the conditional syntax in the build-branch-ee.yml workflow to properly close the if statement.
- Ensured the S3 upload command is correctly referenced, maintaining clarity in the artifact deployment process.
* fix: install yq if not present in GitHub Actions workflow
- Added a conditional check to install yq in the build-branch-ee.yml workflow if it is not already installed, ensuring the build process can proceed without errors related to missing dependencies.
- This change enhances the reliability of the workflow by automating the installation of necessary tools.
* fix: optimize Docker cleanup and S3 upload command in GitHub Actions workflow
- Added Docker cleanup commands to remove unused images and prune the system, improving resource management during the build process.
- Streamlined the S3 upload command to directly pipe the tarball, enhancing efficiency in artifact deployment.
* fix: improve confirmation prompt in installation script
- Added README.md contents
- Updated the confirmation prompt in install.sh for clarity, changing "YES" to "Yes" to enhance user understanding during the installation process.
* fix: update runner configuration for airgapped artifacts packaging in GitHub Actions workflow
- Changed the runner from 'ubuntu-22.04' to 'ubuntu-22.04-4-cores' to optimize resource allocation during the packaging process of airgapped artifacts.
- This adjustment aims to enhance performance and efficiency in the build workflow.
* fix: update runner configuration for airgapped artifacts packaging in GitHub Actions workflow
- Changed the runner from 'ubuntu-22.04-4-cores' to 'ubuntu-latest-4-cores' to ensure the use of the latest stable environment for improved compatibility and performance during the packaging process of airgapped artifacts.
* fix: update runner configuration for airgapped artifacts packaging in GitHub Actions workflow
- Changed the runner from 'ubuntu-latest-4-cores' back to 'ubuntu-22.04' to align with the previous configuration, ensuring compatibility and stability during the packaging process of airgapped artifacts.
* fix: simplify yq installation in GitHub Actions workflow
- Removed the conditional check for yq installation in the build-branch-ee.yml workflow, ensuring yq is always installed during the setup process. This change enhances the reliability of the workflow by eliminating potential errors related to missing dependencies.
* refactor: reorganize build steps in GitHub Actions workflow
- Restored and structured the build-push steps for various Docker images (admin, web, space, live, silo, apiserver, proxy, monitor, email) in the build-branch-ee.yml workflow.
- Updated the dependencies for the packaging of airgapped artifacts to ensure all build steps are executed in the correct order.
- Enhanced clarity and maintainability of the workflow by explicitly defining each build-push job.
* fix: comment out hardcoded airgapped release version in GitHub Actions workflow
- Commented out the hardcoded AIRGAPPED_RELEASE_VERSION in the build-branch-ee.yml workflow to allow for dynamic versioning based on the branch name, enhancing flexibility in the build process.
* refactor: update image handling in airgapped build and install scripts
- Modified build.sh to save each Docker image individually to a tar file and remove the image after saving, improving image management.
- Updated install.sh to load multiple tar files instead of a single hardcoded tarball, enhancing flexibility in image loading during setup.
* test build
* enhance: add build summary and usage instructions for airgapped artifacts in GitHub Actions workflow
- Introduced a build summary section in the build-branch-ee.yml workflow to provide details about the airgapped artifacts, including release version and S3 path.
- Added usage instructions for downloading and installing the airgapped artifacts, improving user guidance and accessibility.
* chore: remove deprecated build-airgapped workflow
- Deleted the build-airgapped.yml workflow file as it is no longer needed.
- Updated build-branch-ee.yml to streamline the packaging process for airgapped artifacts and improve S3 upload commands.
* fix: update file handling for license activation to support JSON format
- Changed file validation to accept only .json files in the frontend and backend.
- Updated the API to read and forward the activation file correctly.
- Enhanced error handling for unsupported file types and server responses.
* enhance: improve build summary and usage instructions in GitHub Actions workflow
- Added Git commit hash and branch information to the build summary in build-branch-ee.yml for better traceability.
- Updated usage instructions formatting to enhance clarity and user experience when downloading and installing airgapped artifacts.
* enhance: add presigned URL generation for airgapped artifacts in GitHub Actions workflow
- Implemented the creation of a presigned URL for airgapped artifacts, allowing for secure access for 30 days.
- Updated the build summary to include the presigned URL, improving user guidance for downloading artifacts.
* style: improve formatting of usage instructions in GitHub Actions workflow
- Updated the usage instructions in build-branch-ee.yml to use inline code formatting for better readability and clarity.
- Enhanced user guidance for downloading and installing airgapped artifacts.
* refactor: enhance build summary and usage instructions in GitHub Actions workflow
- Improved the formatting of the build summary in build-branch-ee.yml for better readability.
- Updated usage instructions to include code blocks, enhancing clarity for users downloading and installing airgapped artifacts.
* fix: time format issue with RFC, added custom marshaller
* feat: integrate crane for optimized image handling in airgapped build process
- Added installation of crane in the GitHub Actions workflow to enhance image pulling and saving efficiency.
- Updated build.sh to utilize crane for pulling images when available, providing a fallback to Docker if not.
- Improved user feedback during image handling, ensuring clarity on the process and success of operations.
* fix: update crane installation method in GitHub Actions workflow
- Changed the crane installation command to download the tarball to a file before extraction, improving reliability and error handling during the installation process.
* fix: streamline crane installation in GitHub Actions workflow
- Updated the crane installation command to directly pipe the download into extraction, simplifying the process and reducing the need for intermediate files.
* feat: add airgapped mode support for license file handling
- Introduced a new setting to enable airgapped mode.
- Added LicenseFileFetchEndpoint to fetch license files for workspaces in airgapped mode.
- Enhanced LicenseDeActivateEndpoint to delete license files when in airgapped mode.
- Updated LicenseActivateUploadEndpoint to restrict access based on airgapped mode.
- Implemented S3Storage method for deleting files from S3.
* fix: update environment variable formatting in GitHub Actions workflow
- Changed the format of environment variable assignments in build-branch-ee.yml to use `key=value` syntax, improving clarity and consistency in the workflow.
* fix: update airgapped artifact packaging in GitHub Actions workflow
- Refactored the packaging step in build-branch-ee.yml to utilize environment variables for better clarity and maintainability.
- Enhanced the presigned URL generation to extend the expiry to 90 days, improving access security for airgapped artifacts.
* fix: refine AIRGAPPED_RELEASE_VERSION handling in GitHub Actions workflow
- Updated the assignment of AIRGAPPED_RELEASE_VERSION to improve clarity and consistency in the build process.
- Enhanced the build summary to reflect the changes in variable usage, ensuring accurate information is presented to users.
- Streamlined the presigned URL handling for better integration within the workflow.
* fix: update airgapped artifact workflow with environment variable enhancements
- Refactored the build process in build-branch-ee.yml to utilize environment variables for AIRGAPPED_RELEASE_VERSION, S3_PATH, COMMIT_HASH, and PRESIGNED_URL, improving clarity and maintainability.
- Enhanced the build summary to reflect the updated variable usage, ensuring accurate information is presented to users.
- Streamlined the presigned URL handling and extended its expiry to 90 days for improved access security.
* improvement: upload license file form UI
* fix: enhance airgapped build summary in GitHub Actions workflow
- Updated the build summary in build-branch-ee.yml to include a temporary file for the presigned URL, improving security and clarity.
- Added the Git commit hash to the summary for better traceability of builds.
- Streamlined the summary formatting for improved readability and user guidance.
* fix: update airgapped artifact workflow to include presigned URL upload
- Commented out the previous artifact packaging steps for airgapped builds to streamline the process.
- Added functionality to create a temporary file for the presigned URL and upload it as an artifact, enhancing accessibility and security.
- Improved clarity in the workflow by ensuring the presigned URL is logged and stored appropriately.
* fix: reduce presigned URL expiry in airgapped artifact workflow
- Updated the PRESIGNED_URL_EXPIRY from 90 days to 7 days to enhance security and limit access duration.
- Commented out the previous expiry setting for clarity and future reference.
* fix: enhance airgapped artifact workflow with S3 region support
- Added S3_REGION environment variable to specify the AWS region for presigned URL generation, improving flexibility and accuracy in artifact handling.
- Updated the presigned URL command to include the region parameter, ensuring correct URL generation for S3 access.
- Modified the build summary to replace the presigned URL placeholder with a generic "<presigned-url>" for clarity in usage instructions.
* fix: streamline airgapped artifact workflow by enabling packaging steps
- Re-enabled the packaging steps for airgapped artifacts in the workflow, ensuring that the build process includes the creation and upload of artifacts to S3.
- Clarified the presigned URL expiry comment to indicate it is set to the maximum allowed by AWS for improved understanding of security settings.
* fix: enhance airgapped artifact workflow with multi-platform support
- Added support for building and uploading airgapped artifacts for both amd64 and arm64 architectures in the GitHub Actions workflow.
- Updated the S3 paths and presigned URL handling to accommodate the new architecture-specific artifacts.
- Improved user guidance in the installation script by providing clearer instructions for starting services and checking logs.
* fix: update airgapped artifact workflow to use consistent build platform flag
- Changed the build platform flag from `--build-platform` to `--platform` in the airgapped artifact workflow for both amd64 and arm64 builds, ensuring consistency across the build commands.
* chore: license activation changes
* feat: added mock implemation of airgapped api
* fix: enhance airgapped artifact workflow with detailed service images
- Added specific Docker image references for various services in the airgapped installation README, improving clarity on required files for offline deployment.
- Updated the workflow to ensure all necessary images are included for a comprehensive airgapped setup.
* fix: cases for workspace replace and seats
* fix: improve airgapped artifact workflow with conditional arm64 build support
- Added conditional logic to build and package arm64 artifacts based on the AIRGAPPED_ARM64_BUILD environment variable, enhancing flexibility in the workflow.
- Updated the presigned URL handling for arm64 artifacts to ensure proper access management.
- Improved the build summary to include arm64 S3 path only when applicable, streamlining output clarity.
* fix: update airgapped README to include email service Docker image
- Added reference to the Docker image for the email service in the airgapped installation README, enhancing clarity on required files for offline deployment.
* fix: add arm64 build support to airgapped artifact workflow
- Introduced ARM64_BUILD environment variable to manage conditional logic for arm64 builds in the workflow.
- Updated the build steps to set ARM64_BUILD based on the target branch, enhancing flexibility for multi-architecture support.
* fix: refactored logic for license management
* fix: ensure members_list is properly formatted as JSON in license activation
* fix: verification threshold
* feat: enhance airgapped license handling with versioning and improved error logging
- Added `Version` field to `AirgappedLicensePayload` for better tracking.
- Updated database population logic to use the new `Version` field.
- Improved error handling in `GetManualSyncHandler` with additional logging for license and feature flag refresh failures.
- Refined license deactivation logic for airgapped licenses based on current period end date.
* chore: update workspace activation check
* feat: improve airgapped handling in API views and tasks
- Added checks for airgapped settings in `CheckUpdateEndpoint`, `version_check`, and `register_instance_ee` to return early if the environment is airgapped.
- Enhanced code readability and maintainability by centralizing airgapped logic.
* improvement: remove seat management and subscription management for airgapped workspaces
* fix: update airgapped artifact workflow to extract tarball into specific directory
- Modified the extraction command in the airgapped installation instructions to specify the target directory, improving organization and clarity for users during the installation process.
* fix: update application version to v1.10.0 in deployment configurations
- Updated the APP_VERSION in coolify-compose.yml, docker-compose-caddy.yml, portainer-compose.yml, and variables.env to reflect the new version v1.10.0, ensuring consistency across deployment files.
* feat: enhance license activation response with workspace member details
- Updated the LicenseFileFetchEndpoint to include a list of active workspace members in the response.
- Converted user IDs to strings for consistency in the returned data structure.
* feat: added sync endpoint for download file
* feat: added logic for manual sync handler
* feat: added private key to prime airgapped api
* feat: implement job registration for instance license resync in airgapped mode
- Added a new job to the worker for resyncing instance licenses using a context-aware handler.
- Updated the HTTP handler port to "8090" for consistency.
- Changed the airgapped check to always return true in the workspace product handler.
* fix: update license activation response to return workspace members directly
- Modified the LicenseFileFetchEndpoint to return the workspace members list directly instead of converting it to a list, ensuring the response structure is consistent with the expected data format.
* feat: add command configuration for monitor service in airgapped build script
- Updated the build script to include a command for the monitor service, setting it to ["prime-monitor", "start-airgapped"] when the service is detected.
* docs: update airgapped README with installation instructions and prerequisites
- Enhanced the prerequisites section for clarity on Docker and Docker Compose requirements.
- Added a detailed installation process, including steps for running the installation script and the resulting directory structure.
- Updated post-installation steps to guide users on starting services and monitoring logs.
* improvement: handle error message for license activation
* feat: enhance airgapped cron job scheduling
- Introduced a new cron handler for scheduling airgapped cron jobs, including a License Refresh Job.
- Updated the worker to register the new cron job for instance license resync.
* minor fixes as sugged by reviewer
* fix: update HTTP handler port to use dynamic PORT variable in airgapped command
* fix: added version and api environment variables
* chore: update handlers to use isAirgapped method
* fix: converted db open calls to transactions in product handler
* fix: ensure UUIDs are only generated for unset IDs in License, UserLicense, and Flags models
* chore: update error message
* fix: add API_HOSTNAME environment variable to deployment configurations
- Introduced API_HOSTNAME variable in coolify-compose.yml, docker-compose-caddy.yml, portainer-compose.yml, and variables.env to standardize API endpoint configuration across deployment files.
* fix: update API_HOSTNAME format in deployment configurations
- Changed the API_HOSTNAME variable in coolify-compose.yml, docker-compose-caddy.yml, portainer-compose.yml, and variables.env to include the protocol (http://), ensuring consistent and correct API endpoint formatting across deployment files.
* feat: enhance airgapped installation and configuration
- Updated build.sh to insert "name: Plane-airgapped" into the docker-compose.yml file.
- Modified install.sh to set a default installation directory, improve user prompts, and handle upgrades more gracefully.
- Added checks for existing installations and running instances to prevent conflicts during upgrades.
- Enhanced the configuration display for better user clarity during setup.
* feat: improve environment variable handling in airgapped installation script
- Added a new function to update environment variables in the plane.env file.
- Enhanced the logic for reading and processing key-value pairs from the backup file, ensuring proper trimming and handling of empty values.
- Streamlined the update process for environment variables during installation and upgrades.
* feat: add Docker and docker-compose version checks in airgapped installation script
- Implemented checks for Docker version to ensure it meets the minimum requirement.
- Added validation to confirm that Docker is running before proceeding with installation.
- Included checks for the presence of either docker-compose or the new docker compose command.
- Enhanced error handling for version checks to improve user feedback during installation.
---------
Co-authored-by: Thomas Taylor <twtaylor7@gmail.com>
Co-authored-by: Manish Gupta <manish@plane.so>
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Manish Gupta <59428681+mguptahub@users.noreply.github.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: akshat5302 <akshatjain9782@gmail.com>
* fix: initiatives modal
* fix: icons
* feat: add and list initiatives to a project
* feat: add and list initiatives to epic
* fix: api integrations
* fix: build issues
* fix: refactor
* fix: null value in initiative_ids
* chore: add initative_ids in the issue detail endpoint
* chore: use prefetch
* fix: return empty list for no initiative ids
* chore: insert created_by
* fix: initiative epics not getting inserted
* fix: refactoring
---------
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
* chore: endpoints for advance analytics
* chore: updated the analytics version
* chore: added query paramter for tables
* chore: updated the analytics stats
* chore: added updated at and updated by
* chore: analytics endpoints ee
* chore: revamped the analytics
* chore: removed the duplicated code
* fix: minor value update
* chore: added the filter to remove bot users
* chore: added the is bot validation for project memebers
* feat: add isEpic state to epic analytics sidebar
* chore: added analytics for epic sidebar
* fix: update analytics service to handle custom work items in peek view
* chore: reduced the epic check
* chore: changed the epic feature flag logic
* Chore analytics epic UI (#3292)
* chore: added code split for the analytics store
* chore: done some refactor
* refactor: update entity keys in analytics and translations
* chore: updated the translations
* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor
* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality
* feat: enhance WorkItemsModal and analytics store with isEpic functionality
* feat: integrate isEpic state into TotalInsights and WorkItemsModal components
* refactor: remove isEpic state from WorkItemsModalMainContent component
* fix: update isEpic handling in WorkItemsModal and integrate into TotalInsights
---------
Co-authored-by: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com>
---------
Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: JayashTripathy <76092296+JayashTripathy@users.noreply.github.com>
* chore: added validation for none mention id in the page component
* chore: reverted yarn lock
* chore: removed the import statement
* chore: changed null value validation
* chore: removed none for get
* chore: removed none for get
* refactor: permission layer
* refactor: add original_role to project member serializer
* chore: minor fixes related to permission layer
* fix: strict type checking while checking user permissions
* fix: error position while updating any label
* chore: gracefully show the error message
* feat: added error messages on workitem type creation based on error type
* fix: send code in the error response
* fix: added validation for error code in the toast for workitem type creation/updation
* fix: update conflict error messages for work item type creation and update
* fix: improve error handling and styling in issue type creation form
* refactor: cleaned up some code
* chore: added remaining translations
---------
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
* fix: updated the project page filter that the pages that are moved from project to project
* chore: handled the move page filter in your_work and user_pages
* chore: set_password mutation
* chore: set password auth import error
* chore: workspacce operations
* chore: mutation for workspace
* chore: skipped onboarding validation
* chore: skipped onboarding for github and google
* chore: list and join user workspace invites
* chore: public worksapce invite and accept invite enabled
* chore: updated profile v2
* chore: updated auth endpoints
* chore: delete user query
* chore: handled the user delete and user delete email
* chore: handled the erros
* chore: updated the delete query
* chore: handled the role
* chore: handled the role
* chore: handled the role
* chore: handled the member role in workspaces for delete user
* chore: handled the workspace type error in workspace invite
* chore: handled the role in user delete query and mutation
* chore: resolved conversations
* chore: updated password type
* chore: validated workspace name contains URL
* chore: replced slack with email for user delete
* fix: add work item type & property description in projects created from templates
* fix: set work item type enabled flag when creating a new default work item type
* fix: remove work item type description field length validation
* [SILO-284] Endpoint to copy/install published template from marketplace
* Append (copy) to the tempalte name to maintain integrity
* Added workspace-selector to restricted slug list
* feat: update workspace selector to install templates
* [WEB-4198] Added new fields and migrations for template and application. Updated template categories
* contact_email is optional
* [WEB-4198] feat: template publish form improvements
* chore: remove template keywords computed function
* chore: add english translations for template publish form
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* fix: move page across project
* fix: moved the server agent to core
* fix: added validation for the endpoint
* fix: make it a get request
* chore: updated the endpoint
* fix: redirection after moving pages
* fix: redirect to last opened page on deleting page
* chore: save realtime description
* fix: sending correct binary
* fix: test new approach
* chore: changed the request headers
* fix: made the function more extensible
* chore: updated the move pages permission layer
* chore: added updated at and updated by
* chore: added updated at and updated by
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* fix: header text of insight table search
* fix: made the active project list scrollable
* chore: added xAxis label to table header
* chore: removed the intake issues
* fix: made the headerText necessary
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* feat: publish template to marketplace form
* Sample fixture for template categories
* Updated serializer with new fields and made changes to api endpoints to use serializer while creating templates (#3205)
* improvement: add more fields to the template publish form
* improvement: ui update and error validations for template publish form
* Added extra fields to marketplace template urls
* improvement: minor ui/ ux enhancements
* feat: add translations for template publish
* chore: update string utils for joinWithConjunction
* fix: build error
* Remove workspace and template_type from serializer validation
* improvement: updated template categories computed function to computed value
* improvement: ensure terms & conditions and privacy policy urls have http protocol
* Only return verified project templates for the meta endpoint
* improvement: updated template keywords dropdown placeholder
* improvement: update translations
* improvement: add loader for publish template page
* improvement: docs comments for string utils
* Add validation for publishing and unpublish option for management command
* fixed formatting
* change support_url to support_email while validating
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
* feat: add email service and SMTP configuration to docker-compose
- Introduced a new email service in docker-compose with environment variables for SMTP configuration.
- Updated Caddyfile to route SMTP traffic for email service.
- Added necessary SMTP ports and health checks for the email service.
- Updated variables.env to include email-related configurations and replicas.
* refactor: clean up Caddyfile SMTP routing configuration
- Simplified the indentation and formatting of the SMTP routing sections in the Caddyfile.
- Ensured consistent structure for the proxy routes for email services on specified ports.
* fix: update SMTP domain binding in Caddyfile
- Changed the SMTP domain binding in the Caddyfile to use '0.0.0.0' for specified ports (10025, 10465, 10587) to allow connections from all network interfaces.
- This adjustment enhances the accessibility of the email service routing configuration.
* fix: update mail server testing instructions in README
- Changed placeholder from `<mail-domain>` to `<host-domain>` for clarity in SMTP connection testing instructions.
- This update improves the accuracy of the documentation for users testing their mail server setup.
* feat: enhance email service configuration in docker-compose and Caddyfile
- Added SMTP environment variables to coolify-compose.yml for better email service configuration.
- Updated docker-compose-caddy.yml to remove redundant SMTP_DOMAIN variable.
- Modified Caddyfile to simplify SMTP domain binding for email service routes.
- Ensured proper permissions for TLS directory in email Dockerfile.
* refactor: remove email service environment variables in coolify-compose.yml
---------
Co-authored-by: akshat5302 <akshatjain9782@gmail.com>
* feat: support patching relation_map in ImportJob APIs
- This map can be used to process relations b/w issues async during
import phase
* add validation for relation_map field
* use super method to update serializer
* [SILO-253] feat: add bulk update relations job for importers (#3188)
* feat: add bulk update relations job
* get only external_id, id fields from issues
* set created_by, updated_by on operations
* chore: added cycles and modules in analytics peek view
* chore: added cycles and modules analytics
* chore: added project filter for work items
* chore: added a peekview flag and based on that table columns
* chore: added peek view
* chore: added check for display name
* chore: cleaned up some code
* chore: fixed export csv data
* chore: added distinct work items
* chore: assignee in peek view
* updated csv fields
* chore: updated workitems peek with assignee
* fix: removed type assersions for workspaceslug
* chore: added day wise filter in cycles and modules
* chore: added extra validations
---------
Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
* chore: remove analytics duration filter
* removed subtitle from title and date_filter from service call
* chore: removed the date filter
* bottom text of insight trend card
* chore: changed issue manager
* fix: limited items in table
* fix: removed unnecessary props from data-table
---------
Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* refactor: enhance backup and restore scripts for container data management
* fix: ensure proper quoting in backup script to handle paths with spaces
* fix: ensure backup directory is only removed if tar command succeeds
* CodeRabbit fixes
* chore: comment details of work item
* chore: attachment count and attachment name
* chore: issue link and subscriber count
* chore: list of assignees
* chore: asset_url as attachment_links
* chore: code refactor
* fix: cannot export Excel
* chore: remove print statements
* fix: filtering in list
* chore: optimize attachment_count and attachment_link query
* chore: optimize fetching issue details for multiple select
* chore: use Prefetch to avoid duplicates
* chore: add epic filter
* chore: add is_epic
* chore: issue_type
* chore: list of related customer names
* chore: custom properties
* refactor: move issue property values to another function
* fix: change Issue Type to Work Item Type
* fix: change Issue Type to Work Item Type in excel imports
* feat: implement a generic oauth module for all callbacks
- Strategy based pattern to implement OAuth callbacks for any
third party integration
- Implement strategy for Plane's internal OAuth
- Add endpoint for fetching app installations
* add missing fields for integration helper in github controller
* pass client id, secret to strategy during init
* revert conflict changes
* use getPlaneAPIClient for consistency
* chore: analytics endpoint
* added anlytics v2
* updated status icons
* added area chart in workitems and en translations
* active projects
* chore: created analytics chart
* chore: validation errors
* improved radar-chart , added empty states , added projects summary
* chore: added a new graph in advance analytics
* integrated priority chart
* chore: added csv exporter
* added priority dropdown
* integrated created vs resolved chart
* custom x and y axis label in bar and area chart
* added wrapper styles to legends
* added filter components
* fixed temp data imports
* integrated filters in priority charts
* added label to priority chart and updated duration filter
* refactor
* reverted to void onchange
* fixed some contant exports
* fixed type issues
* fixed some type and build issues
* chore: updated the filtering logic for analytics
* updated default value to last_30_days
* percentage value whole number and added some rules for axis options
* fixed some translations
* added - custom tick for radar, calc of insight cards, filter labels
* chore: opitmised the analytics endpoint
* replace old analytics path with new , updated labels of insight card, done some store fixes
* chore: updated the export request
* Enhanced ProjectSelect to support multi-select, improved state management, and optimized data fetching and component structure.
* fix: round completion percentage calculation in ActiveProjectItem
* added empty states in project insights
* Added loader and empty state in created/resolved chart
* added loaders
* added icons in filters
* added custom colors in customised charts
* cleaned up some code
* added some responsiveness
* updated translations
* updated serrchbar for the table
* added work item modal in project analytics
* fixed some of the layput issues in the peek view
* chore: updated the base function for viewsets
* synced tab to url
* code cleanup
* chore: updated the export logic
* fixed project_ids filter
* added icon in projectdropdown
* updated export button position
* export csv and emptystates icons
* refactor
* code refactor
* updated loaders, moved color pallete to contants, added nullish collasece operator in neccessary places
* removed uneccessary cn
* fixed formatting issues
* fixed empty project_ids in payload
* improved null checks
* optimized charts
* modified relevant variables to observable.ref
* fixed the duration type
* optimized some code
* updated query key in project-insight
* updated query key in project-insight
* updated formatting
* chore: replaced analytics route with new one and done some optimizations
* removed the old analytics
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* [SILO-142] Setup base for linear docs importer (#2934)
* feat: added page external api endpoint for creating and getting pages
* feat: added pages inside migration task
* feat: added pull documents and transform document functions inside linear
* feat: added pages inside generated payload pushed to queue
* feat: added separate job as linear_docs migrator
* fix: formatting
* fix: data_import_task broken to separate functions
* fix: separated github content-parser with linear content-parser
* fix: remove not existing page logic in process page
* fix: data import task to bulk create pages
* [SILO-145] feat: adding extendable content-parser for silo, supporting linear docs importer 🤠 (#2966)
* feat: added pages inside migration task
* feat: added pull documents and transform document functions inside linear
* feat: added pages inside generated payload pushed to queue
* feat: added separate job as linear_docs migrator
* fix: formatting
* fix: data_import_task broken to separate functions
* fix: separated github content-parser with linear content-parser
* feat: added content parser runner class and external parser extensions
* feat: added plane extension for plane side of parsing
* feat: added base-file-extension helper
* feat: added linear specific extensions and parser getter
* feat: modified linear transform and api service
* fix: modified base et for handling content-parsers opts
* fix: removed extra functions from image proxy extension
* fix: renamed to file-upload-helper
* fix: comments for processorts
* fix: moved get issue function inside mention parser
* fix: logic optimization
* feat: added modules extension in content-parser
* fix: mentions parser to work with fallback options
* fix: update user map type for linear
* [SILO-154] Added Linear Docs as summary element and optimized summary endpoint (#3010)
* feat: modified issue count endpoint to data summary endpoint
* feat: modified store and UI to display summary fields
* chore: resolved comments
* [SILO-153] feat: dispatch finished & linear docs step bound with existing with linear issue import step (#3009)
* feat: modified import task and controller to add a dispatch job
* feat: modified base importer worker in order to accomodate finished step
* feat: modified linear importer in order to handle custom completion step for job
* chore: resolved comments
* chore: analytics endpoint
* chore: created analytics chart
* chore: validation errors
* chore: added a new graph in advance analytics
* chore: added csv exporter
* chore: updated the filtering logic for analytics
* chore: opitmised the analytics endpoint
* chore: updated the base function for viewsets
* chore: updated the export logic
* chore: added type hints
* chore: added type hints
* chore: comment details of work item
* chore: attachment count and attachment name
* chore: issue link and subscriber count
* chore: list of assignees
* chore: asset_url as attachment_links
* chore: code refactor
* fix: cannot export Excel
* chore: remove print statements
* fix: filtering in list
* chore: optimize attachment_count and attachment_link query
* chore: optimize fetching issue details for multiple select
* chore: use Prefetch to avoid duplicates
* [SILO-134] RUNWAY Implement new OAuth flow for Github integration (#3089)
* oauth helper service + db helpers + modify plane sdk to accomodate oauth token
* fix indentation + create util for remove undefined in object
* add fields to workspace credential for oauth adapt
* get oauth token helper method
* auth callback flow changes to add plane oauth flow for github integration
* integrate github user and auth callback with oauth
* add user callback support with oauth for github integration
* remove token from cache on app disconnection
* Get Connection Details refactor change
* remove unwanted logs
* add missing translations
* replace plane app client id and secret fetching from env to db
* fix app get from db
* refactoring and comments resolved
* rename installation_id to plane_installation_id
* use db query methods and complete the app secret fetch flow
* remove unwanted logs and send missing values in update creds method
* move plane app db call just before oauth token call + models export in init
* Fix ssl reject error for pg
* add NODE_ENV option for ssl db config + management command to reset app_secrets + iteration fix
* fix oauth rate limit cache key breaking
* Fix redirect uri issue
* Fix pull request behaviour
* remove NODE_ENV check in DB connection
- Add new column webhook_id for app installation
- Once oauth app is installed, create webhooks for the workspace using
app.webhook_url
- Link these webhooks to app installations
- If webhook_url is modified, modify all existing webhooks for the app installation.
* Added necessary models and relationships to Application. Added a basic view for published applications enpoint
* Added new marketplace django app and moved the published application endpoint
* Added missing view
* Added support_url and video_url to the model and updated migrations
* split marketplace views into separate files
* made categories json field
* chore: add management command and migration for templates publish
* chore: add docstring and template example
* Model chagnes and migrations for Application and Template
* Add support for new marketplace application fields in UI and API
* More migration changes for Application and Template
* Removed setting made_by while publishing template
* Added new endpoints for Application and Tempalte categories
* Added missing imports
* Added logo_props to ApplicationCategory and TempalteCategory models
* modify categories to API from constant
* remove marketplace constant file
* remove non require field + marketplace public endpoint serialiser changes
* add translations + add missing fields in serialiser
* add upload modal translations
* modify attachments as url list instead of uuid
* fix redirect uri regex + make webhook url as optional
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* feat: added filters for sub issues
* feat: added list groups for sub issues
* drat: epics groupby and filters
* feat: sorting, ordering and filtering for sub work items
* chore: reverted filter name change
* chore: reverted filter change
* feat: added sort and filter for initiatives
* fix: build errors
* feat: added external api to get a specific user
* feat: added user information in front of comment if not present
* chore: reverted changes for apis
* fix: user actor from webhook for getting name
* fix: remove unused import
* fix: added null check
* fix: change variable name
* improvement: use `short_description` for all template description
* fix: update create endpoint to use `short_description` for all template description
* Added data migration to copy description to short description for templates
* Added workitem page relation
* Update the data directly instead of fetching it
* feat: added filters for sub issues
* feat: added list groups for sub issues
* chore: updated order for sub work item properties
* feat: filters for sub work items
* feat: added filtering and ordering at frontend
* chore: reverted backend filters
* feat: added empty states
* chore: code improvemnt
---------
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
* updated project and workitem form
* added translation for other languages also
* Update packages/i18n/src/locales/zh-CN/translations.json
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* chore: handling base path and urls
* chore: uniformize urls in common settings
* correct live url
* chore: use url join to correctly join urls
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* [SILO-189] feat: added UI for connecting slack channels to plane projects (#3080)
* feat: added endpoint for fetching project updates connections
* feat: added service function for getting projects updates connection
* chore: added translations for slack project updates page
* feat: added type for response from slack conversation
* feat: added controller methods for getting project connections and channels
* feat: added service methods and project connections manager into store
* feat: added form component for project updates modal
* feat: added main list component for project updates and connected to root
* fix: error translation
* feat: added handler to address project updates
* chore: resolved comments
* feat: backend changes for slack project updates (#3105)
* fix: translations for project updates (#3107)
* feat: added types to optimize channel endpoint (#3108)
* chore: Handled epics in recents and work items
* chore: workspace slug
* chore: handled is epic in work item
* fix: handled workspace__slug in parent details
* fix: handled user_id in parent details
* chore: handled the issue search epic
* chore: updated work item relation query
* chore: enabled is_epic in work item browse query
* chore: validated epics relations
* chore: work item relations
* chore: handled epic relation without epic filter in sub issues
* chore: is work item parent is epic
* chore: added analytics for the epic in work item type
* chore: issue types import
* chore: querying the epics in the epic relation query
* chore: epics filters in issue search
* chore: epic activity and comments
* chore: epic activity and comments in schema
* chore: activity and comments epics
* chore: work item search epic update
* chore: import errors resolved
* chore: epic filter in work item search
* fix: handled parent_is_epic is none in work item qujery
* chore: handled epic comment
* chore: updated typos
* chore: handled the epic comment create mutation
* chore: triggering the link activity in epic
* chore: handled exceptions and resolved comments
* chore: analytics handled the none
* chore: updated mobile work item filters
* chore: updated workitem filters
* chore: Handled epics in recents and work items
* chore: workspace slug
* chore: handled is epic in work item
* fix: handled workspace__slug in parent details
* fix: handled user_id in parent details
* chore: handled the issue search epic
* chore: updated work item relation query
* chore: enabled is_epic in work item browse query
* chore: validated epics relations
* chore: work item relations
* chore: handled epic relation without epic filter in sub issues
* chore: is work item parent is epic
* chore: added analytics for the epic in work item type
* chore: issue types import
* chore: querying the epics in the epic relation query
* chore: epics filters in issue search
* chore: epic activity and comments
* chore: epic activity and comments in schema
* chore: activity and comments epics
* chore: work item search epic update
* chore: import errors resolved
* chore: epic filter in work item search
* fix: handled parent_is_epic is none in work item qujery
* chore: handled epic comment
* chore: updated typos
* chore: handled the epic comment create mutation
* chore: triggering the link activity in epic
* chore: handled exceptions and resolved comments
* chore: analytics handled the none
* fix: modified connection details for addressing user credentials
* fix: modified refresh credentials handler to upsert user credentials
* fix: modified types for both user responses
* fix: refactored comment handler to user issue details function
* chore: resolved comments
* chore: added logs
* fix: segregated type for token refresh
* fix: added null for issue details helper
* chore: local dev improvements
* chore: pr feedback
* chore: fix setup
* fix: env variables updated in .env.example files
* fix(local): sign in to admin and web
* chore: update minio deployment to create an bucket automatically on startup.
* chore: resolve merge conflict
* chore: updated api env with live base path
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* chore: added trigger for new sub page
* chore: updated the permission layer
* chore: delete the nested page as well
* chore: updated the recursive logic for restoration
* chore: added parameters for bulk update
* feat: added new blocks interface to ephemeral message posting
* feat: modified connection details helper in order to user credentials
* feat: modified controller to include userMap array
* feat: added account connection blocks
* feat: added missing credentials check and posting a message for connection
* feat: modified slack connection store for passing apiToken for state
* fix: resolved comments
* feat: added blocker for link work item command
* change pr behaviour method to use entityconnections for right state mapping
* renames and sanitize + modify test for PR automation state update
* remove console logs
---------
Co-authored-by: Surya Prashanth <prashantsurya002@gmail.com>
* fix: feature flag check for workspace level
* chore: customer ids and customer request ids in issues list
* chore: customer ids and customer request ids in epics
* chore: customer ids and customer request ids in epics
* chore: support sql file attachment
* fix: returning issue id instead of customer and request ids
* chore: customer request count to customer request ids
* chore: customer request id on issue retrieve api
* chore: customer id and customer request id in epic detail api
* * chore: added work items and requests count for epics
* chore: updated store for work items customers data
* fix: coustomers count mutation in list
---------
Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
* refactor: sub-work items components, hooks and types
* feat: group by and order by for sub work items of epic
* feat: group by and order by for sub work items of a work items
* feat: group by and order by for sub work items of a initiative
* fix: group by assignee ids
* feat: added orderby and display properties toggle for sub work items
* fix: build errors
* feat: added order by to epics work items
* chore: remvoed issue_type from display properties
* chore: removed unused variables and commented code
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
Co-authored-by: Vamsi Krishna <46787868+vamsikrishnamathala@users.noreply.github.com>
* migration: data with iexact 'in-app' changed to 'IN_APP'
* chore: add start_of_week field in profile
* chore: define variables for choices
* chore: merge migration files
* chore: return order based on group
* chore: order for workspace stats endpoint
* chore: state response updated
* chore: state icon types updated
* chore: state icon updated
* chore: state settings new icon implementation
* chore: icon implementation
* chore: code refactor
* chore: code refactor
* chore: code refactor
* fix: order field type
---------
Co-authored-by: sangeethailango <sangeethailango21@gmail.com>
* chore: add json files and initial job to push data to workspace
* chore: update seed data location
* chore: update seed data to use assets from static urls
* chore: update seed data to use updated labels
* chore: add logging and update label name
* chore: add created_by for project member
* chore: add created_by_id for issue user property
* chore: add workspace seed task logs
* chore: update log message to return task name
* chore: add warning log for workspace seed task
* chore: add validation for issue seed data
* fix: work item is not updating when we are enabling the estimate and assigning the estimate to an workitem
* chore: work item estimate issue updates
* chore: updated assignees and labels in the issue v2 mutation
* chore: updated issue labels and assignees
* chore: updated value list in get assignee and labels
* chore: typos
* chore: handled description in work items
* oauth helper service
* oauth helper service + db helpers + modify plane sdk to accomodate oauth token
* fix indentation + create util for remove undefined in object
* remove await in helper methods
* workspace credential helper methods
* remove workspace_id from get workspace entity connection helper
* Get Connection Details refactor change
* fix indentation
* fix extra lines in end of file
* refactored to move integration related types in their specific files
* add application id copy button
---------
Co-authored-by: Saurabhkmr98 <saurabhkapur73@gmail.com>
Co-authored-by: Saurabh Kumar <70131915+Saurabhkmr98@users.noreply.github.com>
* * feat: added customers and customer requests to epics detail
* chore: update empty states for customer requests and linked work items
* fix: removed console logs
* [WEB-3754] chore: added epics in the x-axis
* chore: added epic in x axis property
* chore: added type hints for the function
* chore: optimised the epic fetch
* chore: changed the key
---------
Co-authored-by: JayashTripathy <jayashtripathy371@gmail.com>
* chore: header enhancement for dashboard and teamspace pages
* chore: moved teamspaces pages list fetch to layout level
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* fix: nested pages transitions fixed
* fix: close preview on keydown
* fix: title updated
* fix: redis broadcasting and ui changes
* fix: crashing redis and refactoring title and yarn lock
* [WEB-3472] Added django-oauth-toolkit and overridden models to add uuid as PK
* added workspace to oauth application
* oauth application view
* fix application workspace related name
* Added soft deletion functionality to Application
* Added oauth middleware and authentication to BaseAPIView
* chore: slug and audit changes + regenerate secret endpoint
* add check oauth app slug exists endpoint
* Added permission to check if the application has workspace access
* fix: check slug endpoint
* chore: model changes for app installation flow
* chore: model changes for app installation + additional endpoints
* model file format
* add application install endpoint
* fix issues
* Migrations update
* Update permission to check for workspace installation
* fix api issues + small model change
* OAuth auth code flow changes + model changes for create app + API endpoints improvement
* Updated migrations
* oauth model changes for bot to be in app install
* Added throttle classes for APIs when authenticated with OAuth
* Updated migrations
* Added new fields
* marketplace app creation UI store + types + app create/edit UI
* add new asset type for marketplace app logo and description
* Updated asset entities for OAuth Application
* Added rate limiting to token and oauth code views
* Moved Application views into ee/app
* Removed workspace_application FK from Token and added grant_type field. Updated the token generation logic to associate the token with the app_bot user
* add application list screen + edit page
* Code cleanup - removed unncessary redundant code
* api fixes + app create e2e flow UI
* remove try/except + permission class add + workspace dependency fix
* fix server breaking
* replace workspace with workspace slug in endpoints
* add webhook url in applications model
* edit and list page API integrations
* fix build issue
* Updated migrations
* add installation status + manage token generation via installation id + rename installation table
* fix issues + update restricted workspace slugs
* Migration update
* Oauth consent flow UI + backend changes + translations
* add skip authorization support for app create api
* Ratelimiting changes
* Added type hints
* [WEB-3760] Add app bot as a workspace and project member. Auto add app bot user whenever a project is created
* Rate limit fixes. Better check for template response
* fix CORS issue and remove redirection from web
* fix CORS issue and remove redirection from web
* [OAUTH] add feature flag for oauth (#2890)
* add feature flag for oauth
* fix build issue
* [OAUTH] add support for multiple grant type + fix token endpoint (#2898)
* add support for multiple grant type + fix token endpoint
* fix grant type indentation
* Change oauth url prefix (#2906)
* fix workspace installation breaking (#2907)
* fix oauth page restrict due to workspace slug (#2911)
* fix oauth auth code flow + optional pkce support
* add grant type check for token user modification
* change the url pattern
---------
Co-authored-by: Saurabhkmr98 <saurabhkapur73@gmail.com>
Co-authored-by: Saurabh Kumar <70131915+Saurabhkmr98@users.noreply.github.com>
* fix: made redis instance singleton for being used multiple places
* fix: remove disconnection on shutdown
* fix: consumers throw error in start
* fix: remove extra methods and connection status
* fix: remove graceful shutdown
* fix: refactored pull-request handler into common behaviour
* fix: refactored gitlab integration to use common pr behaviour
* chore: added test to support the pull request behaviour
* chore: transformed to composition from inheritance
* fix: PR comments
* fix: extended type annotations and behaviour
* chore: epic version history
* chore: epics version history
* chore: handle undefined created_at
* chore: handle undefined date
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* fix: uuid validation and function parameter handling for external apis
* chore: update status 410 Gone to 409 conflicts
* chore: add webhook trigger for issue created through apis
* chore: remove pks from post
* chore: remove issue id from module post
@@ -15,20 +15,40 @@ Without said minimal reproduction, we won't be able to investigate all [issues](
You can open a new issue with this [issue form](https://github.com/makeplane/plane/issues/new).
### Naming conventions for issues
When opening a new issue, please use a clear and concise title that follows this format:
- For bugs: `🐛 Bug: [short description]`
- For features: `🚀 Feature: [short description]`
- For improvements: `🛠️ Improvement: [short description]`
- For documentation: `📘 Docs: [short description]`
**Examples:**
-`🐛 Bug: API token expiry time not saving correctly`
-`📘 Docs: Clarify RAM requirement for local setup`
-`🚀 Feature: Allow custom time selection for token expiration`
This helps us triage and manage issues more efficiently.
## Projects setup and Architecture
### Requirements
-Node.js version v16.18.0
-Docker Engine installed and running
- Node.js version 20+ [LTS version](https://nodejs.org/en/about/previous-releases)
- Python version 3.8+
- Postgres version v14
- Redis version v6.2.7
- **Memory**: Minimum **12 GB RAM** recommended
> ⚠️ Running the project on a system with only 8 GB RAM may lead to setup failures or memory crashes (especially during Docker container build/start or dependency install). Use cloud environments like GitHub Codespaces or upgrade local RAM if possible.
### Setup the project
The project is a monorepo, with backend api and frontend in a single repo.
The backend is a django project which is kept inside apiserver
The backend is a django project which is kept inside apps/api
1. Clone the repo
@@ -50,6 +70,17 @@ chmod +x setup.sh
docker compose -f docker-compose-local.yml up
```
4. Start web apps:
```bash
pnpm dev
```
5. Open your browser to http://localhost:3001/god-mode/ and register yourself as instance admin
6. Open up your browser to http://localhost:3000 then log in using the same credentials from the previous step
That’s it! You’re all set to begin coding. Remember to refresh your browser if changes don’t auto-reload. Happy contributing! 🎉
## Missing a Feature?
If a feature is missing, you can directly _request_ a new one [here](https://github.com/makeplane/plane/issues/new?assignees=&labels=feature&template=feature_request.yml&title=%F0%9F%9A%80+Feature%3A+). You also can do the same by choosing "🚀 Feature" when raising a [New Issue](https://github.com/makeplane/plane/issues/new/choose) on our GitHub Repository.
@@ -75,11 +106,13 @@ To ensure consistency throughout the source code, please keep these rules in min
- **Improve documentation** - fix incomplete or missing [docs](https://docs.plane.so/), bad wording, examples or explanations.
## Contributing to language support
This guide is designed to help contributors understand how to add or update translations in the application.
This guide is designed to help contributors understand how to add or update translations in the application.
### Understanding translation structure
#### File organization
Translations are organized by language in the locales directory. Each language has its own folder containing JSON files for translations. Here's how it looks:
```
@@ -90,9 +123,11 @@ packages/i18n/src/locales/
├── fr/
│ └── translations.json
└── [language]/
└── translations.json
└── translations.json
```
#### Nested structure
To keep translations organized, we use a nested structure for keys. This makes it easier to manage and locate specific translations. For example:
```json
@@ -107,32 +142,37 @@ To keep translations organized, we use a nested structure for keys. This makes i
```
### Translation formatting guide
We use [IntlMessageFormat](https://formatjs.github.io/docs/intl-messageformat/) to handle dynamic content, such as variables and pluralization. Here's how to format your translations:
#### Examples
- **Simple variables**
```json
{
"greeting": "Hello, {name}!"
}
```
- **Pluralization**
```json
{
- **Simple variables**
```json
{
"greeting": "Hello, {name}!"
}
```
- **Pluralization**
```json
{
"items": "{count, plural, one {Work item} other {Work items}}"
}
```
}
```
### Contributing guidelines
#### Updating existing translations
1. Locate the key in `locales/<language>/translations.json`.
2. Update the value while ensuring the key structure remains intact.
3. Preserve any existing ICU formats (e.g., variables, pluralization).
#### Adding new translation keys
1. When introducing a new key, ensure it is added to **all** language files, even if translations are not immediately available. Use English as a placeholder if needed.
2. Keep the nesting structure consistent across all languages.
@@ -140,48 +180,48 @@ We use [IntlMessageFormat](https://formatjs.github.io/docs/intl-messageformat/)
3. If the new key requires dynamic content (e.g., variables or pluralization), ensure the ICU format is applied uniformly across all languages.
### Adding new languages
Adding a new language involves several steps to ensure it integrates seamlessly with the project. Follow these instructions carefully:
1. **Update type definitions**
Add the new language to the TLanguage type in the language definitions file:
1. **Update type definitions**
Add the new language to the TLanguage type in the language definitions file:
```typescript
// types/language.ts
export type TLanguage = "en" | "fr" | "your-lang";
```
```ts
// packages/i18n/src/types/language.ts
export type TLanguage = "en" | "fr" | "your-lang";
```
2. **Add language configuration**
Include the new language in the list of supported languages:
1. **Add language configuration**
Include the new language in the list of supported languages:
@@ -47,14 +39,14 @@ Meet [Plane](https://plane.so/), an open-source project management tool to track
Getting started with Plane is simple. Choose the setup that works best for you:
- **Plane Cloud**
Sign up for a free account on [Plane Cloud](https://app.plane.so)—it's the fastest way to get up and running without worrying about infrastructure.
- **Plane Cloud**
Sign up for a free account on [Plane Cloud](https://app.plane.so)—it's the fastest way to get up and running without worrying about infrastructure.
- **Self-host Plane**
Prefer full control over your data and infrastructure? Install and run Plane on your own servers. Follow our detailed [deployment guides](https://developers.plane.so/self-hosting/overview) to get started.
- **Self-host Plane**
Prefer full control over your data and infrastructure? Install and run Plane on your own servers. Follow our detailed [deployment guides](https://developers.plane.so/self-hosting/overview) to get started.
@@ -62,90 +54,59 @@ Prefer full control over your data and infrastructure? Install and run Plane on
## 🌟 Features
- **Issues**
Efficiently create and manage tasks with a robust rich text editor that supports file uploads. Enhance organization and tracking by adding sub-properties and referencing related issues.
- **Issues**
Efficiently create and manage tasks with a robust rich text editor that supports file uploads. Enhance organization and tracking by adding sub-properties and referencing related issues.
- **Cycles**
Maintain your team’s momentum with Cycles. Track progress effortlessly using burn-down charts and other insightful tools.
- **Cycles**
Maintain your team’s momentum with Cycles. Track progress effortlessly using burn-down charts and other insightful tools.
- **Modules**
Simplify complex projects by dividing them into smaller, manageable modules.
- **Modules**
Simplify complex projects by dividing them into smaller, manageable modules.
- **Views**
Customize your workflow by creating filters to display only the most relevant issues. Save and share these views with ease.
- **Views**
Customize your workflow by creating filters to display only the most relevant issues. Save and share these views with ease.
- **Pages**
Capture and organize ideas using Plane Pages, complete with AI capabilities and a rich text editor. Format text, insert images, add hyperlinks, or convert your notes into actionable items.
- **Pages**
Capture and organize ideas using Plane Pages, complete with AI capabilities and a rich text editor. Format text, insert images, add hyperlinks, or convert your notes into actionable items.
- **Analytics**
Access real-time insights across all your Plane data. Visualize trends, remove blockers, and keep your projects moving forward.
- **Analytics**
Access real-time insights across all your Plane data. Visualize trends, remove blockers, and keep your projects moving forward.
- **Drive** (_coming soon_): The drive helps you share documents, images, videos, or any other files that make sense to you or your team and align on the problem/solution.
## 🛠️ Local development
### Pre-requisites
- Ensure Docker Engine is installed and running.
### Development setup
Setting up your local environment is simple and straightforward. Follow these steps to get started:
1. Clone the repository:
```
git clone https://github.com/makeplane/plane.git
```
2. Navigate to the project folder:
```
cd plane
```
3. Create a new branch for your feature or fix:
```
git checkout -b <feature-branch-name>
```
4. Run the setup script in the terminal:
```
./setup.sh
```
5. Open the project in an IDE such as VS Code.
6. Review the `.env` files in the relevant folders. Refer to [Environment Setup](./ENV_SETUP.md) for details on the environment variables used.
7. Start the services using Docker:
```
docker compose -f docker-compose-local.yml up -d
```
That’s it! You’re all set to begin coding. Remember to refresh your browser if changes don’t auto-reload. Happy contributing! 🎉
Explore Plane's [product documentation](https://docs.plane.so/) and [developer documentation](https://developers.plane.so/) to learn about features, setup, and usage.
## ❤️ Community
@@ -194,7 +146,7 @@ Feel free to ask questions, report bugs, participate in discussions, share ideas
If you discover a security vulnerability in Plane, please report it responsibly instead of opening a public issue. We take all legitimate reports seriously and will investigate them promptly. See [Security policy](https://github.com/makeplane/plane/blob/master/SECURITY.md) for more info.
To disclose any security issues, please email us at security@plane.so.
To disclose any security issues, please email us at security@plane.so.
RUN pip install -r requirements/local.txt --compile --no-cache-dir
COPY . .
RUN mkdir -p /code/plane/logs
RUN chmod -R +x /code/bin
RUN chmod -R 777 /code
# Expose container port and run entry point script
EXPOSE8000
CMD["./bin/docker-entrypoint-api-local.sh"]
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.