* 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>
* 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
* 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
* 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>
* [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>
* 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>
* chore: streamline issue saving process with advisory locks for sequence management
* fix: update advisory lock usage in issue model for improved concurrency management
- 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.
* 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.
* fix: removed t function from dependency array which was causing infinite loop
* fix: add eslint disable comment for exhaustive-deps warning in IssuePeekOverview
* 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>
* 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>
* fix: duplicate assignees in user recents
* chore: optimize filtering logic
* chore: filter with deleted_at field
* chore: tests for IssueRecentSerializer
* 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
* 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
* 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
* 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>
* 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: 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>
* 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: 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>
* 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
* 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>
* 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>
* 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: 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
* improvement: work item modal data preload and parent work item details
* improvement: collapsible button title
* improvement: project creation form and modal
* improvement: emoji helper
* improvement: enhance labels component modularity
* improvement: enable state group and state list components modularity
* improvement: project settings feature list
* improvement: common utils
* fix: race condition which is creating duplicate sequence ids
* chore: add management command to fix duplicate sequences
* chore: update command to take a lock and optimize the script to use dict
instead of loops
* chore: update the script to use transaction
* fix: make floating link generic and use it for all editors
* fix: link component behaviour with selected text fixed and storage is now typed
* chore: link view seperated
* fix: editor link edit view across multiple links resets now
* fix: link view container
* fix: cleaning up
* fix: url validation
- Added Vietnamese (Tiếng việt) to the list of supported languages.
- Created a new translations file for Vietnamese with comprehensive translations for various UI elements.
- Updated the TranslationStore to include the new Vietnamese language option.
Updated TranslationStore to include support for Brazilian Portuguese by importing the corresponding translations file.
Extended TLanguage type to include "pt-BR" as a valid language option.
* Return Cycle start and end dates in project's timezone
* fix: role improvements
* chore: role updates
* chore: update role endpoint to update workspace admin permissions
* fix: conditions
* chore: update member role for workspace members
* chore: update workspace permission role
* fix: currentAdmin permissions
---------
Co-authored-by: Dheeraj Kumar Ketireddy <dheeru0198@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* fix: markdown for mentions fixed
* fix: copying text in mentions
* fix: refactored the component to use the same function
* chore: renamed funcion name
* add the new copy extension
* init working fix
* remove useless code
* improve readibility
* update node import
* better smaller logic
* remove log
* add open close end handler
* update readabliity
* handle tables
* handle triple click in cell
* triple tap select current line
* handle block and list
* lists fixed
* handle all possible cases of copy in table
* update the min elements
* handle multi types in table
* handle table seletion cases
* handle whole table handler
* feat: all case converd
* update markdown handling code
* update return statement
* handle using group block
* handle param
* handle multple cell in table
* handle using recursion
* add types
* fix code rabbit suggestions
* fix root node bug
* update recursion with loop
* update transform copied to false
* refactor clipboard extension: remove options and integrate MarkdownClipboard into core extensions
* fix: header and code handler
* fix: store hooks fixed
* fix: mention id
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* [WEB-3597] fix: guest work item view access when hyper mode is enabled
* fix: only show work item created by the guest user if the guest_view_all_features is disabled
* refactor: editor file handling
* refactor: asset store
* refactor: space app file handlers
* fix: separate webhook connection params
* chore: handle undefined status
* chore: add type to upload status
* chore: added transition for upload status update
* feat: invitation link url
* feat: copy invite link from workspace invitations list
* invitation reponse cleanup and logo url fix
---------
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* fix: workspace roles for settings and members button
* fix: user role and member count for new workspace
* chore: set role to 20 while workspace creation
---------
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
* fix: prevent error when triggering deletion webhook
The deletion webhook was not firing because it attempted to retrieve
data after deletion, causing a failure.
According to the webhook documentation https://developers.plane.so/webhooks/intro-webhooks, the delete event should only contain
id, so the fix aligns with this expected behavior.
* fix: make delete_comment_activity include comment_id
The delete issues comment webhook requires comment_id
* fix: trigger webhook on project delete
* bump: upgrade editor
* fix: remove editor ref in use
* fix: added editor state to reduce rerenders
* fix: add editor rerendering optimization
* fix: wrong condition in scroll summary
* fix: removing ref usage internally in read only editor as well
* fix: remove unused methods from read only editor
* fix: add editable prop again
* regression: added the types for onHeadingChange
* fix: types
* fix: improve the check condition
* fix: listing bots as project members
* chore: added a filter to removed inactive users
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* feat: workspace home preference model
* chore: changed page title to textfield
* chore: add sort order
* chore: added null value in sticky title
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* Crud for wuick links
* Validate quick link existence
* Add custom method for destroy and retrieve
* Add List method
* Remove print statements
* List all the workspace quick links
* feat: endpoint to get recently active items
* Resolve conflicts
* Resolve conflicts
* Add filter to only list required entities
* Return required fields
* Add filter
* Add filter
* fix: adding language support package
* fix: language support implementation using mobx
* fix: adding more languages for support
* fix: profile settings translations
* feat: added language support for sidebar and user settings
* feat: added language support for deactivation modal
* fix: added project sync after transfer issues (#6200)
* code refactor and improvement (#6203)
* chore: package code refactoring
* chore: component restructuring and refactor
* chore: comment create improvement
* refactor: enhance workspace and project wrapper modularity (#6207)
* [WEB-2678]feat: added functionality to add labels directly from dropdown (#6211)
* enhancement:added functionality to add features directly from dropdown
* fix: fixed import order
* fix: fixed lint errors
* chore: added common component for project activity (#6212)
* chore: added common component for project activity
* fix: added enum
* fix: added enum for initiatives
* - Do not clear temp files that are locked. (#6214)
- Handle edge cases in sync workspace
* fix: labels empty state for drop down (#6216)
* refactor: remove cn helper function from the editor package (#6217)
* * feat: added language support to issue create modal in sidebar
* fix: project activity type
* * fix: added missing translations
* fix: modified translation for plurals
* fix: fixed spanish translation
* dev: language type error in space user profile types
* fix: type fixes
* chore: added alpha tag
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com>
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com>
Co-authored-by: gurusinath <gurusainath007@gmail.com>
* Crud for wuick links
* Validate quick link existence
* Add custom method for destroy and retrieve
* Add List method
* Remove print statements
* List all the workspace quick links
* Filter by user
* fix: split labels in kanban board
* chore: incresaed labels max render and moved labels to end of properties
chore: refactored label render component
* fix: smoother drag scrolling
* fix: refactoring out common fns
* fix: moved to mouse events instead of drag
* fix: improving the drag preview
* fix: added better selection logic
* fix: drag handle new way almost working
* fix: drag-handle old behaviour with better scrolling
* fix: remove experiments
* fix: better scroll thresholds
* fix: transition to drop cursor added
* fix: drag handling speed
* fix: cleaning up listeners
* fix: common out selection and dragging logic
* fix: scroll threshold logic fixed
* fix: added magnification properly and also moving around the zoomed image
* fix: zoom via trackpad pinch
* fix: update imports
* fix: initial magnification is reset
* chore: added fields in issue_version and profile tables and created a new sticky table
* chore: removed point in issue version
* chore: add imports in init
* chore: added sync jobs for issue_version and issue_description_version
* chore: removed logs
* chore: updated logginh
---------
Co-authored-by: sainath <sainath@sainaths-MacBook-Pro.local>
* chore: added fields in issue_version and profile tables and created a new sticky table
* chore: removed point in issue version
* chore: add imports in init
---------
Co-authored-by: sainath <sainath@sainaths-MacBook-Pro.local>
* chore: Add logger as a package
* chore: Add logger package for node server side apps
* remove plane logger import in web
* resolve pr reviews and add client logger with readme update
* fix: transformation and added middleware for logging requests
* chore: update readme
* fix: env configurable max file size
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* feat: add navigation dropdown component
* chore: enhance title/ description loader and componenet modularity
* chore: issue store filter update
* chore: added few icons to ui package
* chore: improvements for tabs componenet
* chore: enhance sidebar modularity
* chore: update issue and router store to add support for additional issue layouts
* chore: enhanced cycle componenets modularity
* feat: added project grouping header for cycles list
* chore: enhanced project dropdown componenet by adding multiple selection functionality
* chore: enhanced rich text editor modularity by taking members ids as props for mentions
* chore: added functionality to filter disabled layouts in issue-layout dropdown
* chore: added support to pass project ids as props in project card list
* feat: multi select project modal
* chore: seperate out project componenet for reusability
* chore: command pallete store improvements
* fix: build errors
* fix: refactoring
* fix: site ssr implementation
* chore: fixed auto reload on file change in sites
* chore: updated constant imports and globalised powerBy component
* chore: resolved lint and updated the env
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* fix: add lock unlock archive restore realtime sync
* fix: show only after editor loads
* fix: added strong types
* fix: live events fixed
* fix: remove unused vars and logs
* fix: converted objects to enum
* fix: error handling and removing the events in read only mode
* fix: added check to only update if the image aspect ratio is not present already
* fix: imports
* fix: props order
* revert: no need of these changes anymore
* fix: updated type names
* fix: order of things
* fix: fixed types and renamed variables
* fix: better typing for the real time updates
* fix: trying multiplexing our socket connection
* fix: multiplexing socket connection in read only editor as well
* fix: remove single socket logic
* fix: fixing the cleanup deps for the provider and localprovider
* fix: add a better data structure for managing events
* chore: refactored realtime events into hooks
* feat: fetch page meta while focusing tabs
* fix: cycling through items on slash command item in down arrow
* fix: better naming convention for realtime events
* fix: simplified localprovider initialization and cleaning
* fix: types from ui
* fix: abstracted away from exposing the provider directly
* fix: coderabbit suggestions
* regression: pass user in dependency array
* fix: removed page action api calls by the other users the document is synced with
* chore: removed unused imports
* chore: local storage helper hook added to package
* chore: tabs global component added
* chore: collapsible button improvement
* chore: linear progress indicator improvement
* chore: fill icon set added to package
* fix timeline scroll to the right in some cases
(cherry picked from commit 17043a6c7f)
* add get position based on Date
(cherry picked from commit 2fbe22d689)
* Add sticky block name to enable it to be read throughout the block regardless of scroll position
(cherry picked from commit 447af2e05a)
* Enable blocks to have a single date on the block charts
(cherry picked from commit cb055d566b)
* revert back date-range changes
* change gradient of half blocks on Timeline
* Add instance Id for Timeline Sidebar dragging to avoid enabling dropping of other drag instances
* fix timeline scrolling height
* fix estimates sorting in Front end side
* change estimate sorting keys
* - Fix estimate sorting when local db is enabled
- Fix a bug with with sorting on special fields on spreadsheet layout
- Cleanup logging
* Add logic for order by based on layout for special cases of no load
---------
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
* Add fallback when db initialization fails
* add checks for instance.exec
* chore: convert issue boolean fields to actual boolean value.
* change instance exec code
* sync issue to local db when inbox issue is accepted and draft issue is moved to project
* chore: added project and workspace keys
---------
Co-authored-by: rahulramesha <rahulramesham@gmail.com>
Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* fix relation creation and removal for Issue relations
* fix Scrolling to block when the block is beyond current chart's limits
* fix dark mode for timeline layout
* use a hook to get the current relations available in the environment, instead of directly importing it
* Update relation activity for all the relations
* - Fix transaction within transaction issue
- Close DB handles on reload
- Fix GET_ISSUES tracking
* Cleanup stray code
* Fix lint error
* Possible fix for NoModificationAllowedError
* chore: updated live server auth cookies handling
* chore: update token parsing logic
* fix: types and better logical seperation between the existing two tokens
* fix: better fallback to use request headers for cookies
---------
Co-authored-by: Palanikannan M <akashmalinimurugu@gmail.com>
* improve auto scroller logic
* fix drag indicator visibility on for blocks
* modify timeline store logic and improve timeline scrolling logic
* fix width of block while dragging with left handle
* fix block arrow direction while block is out of viewport
* fix layout switching when filter is not yet completely fetched
* add layout in issue filter params
* Handle cases when DB intilization failed
* chore: permission layer and updated issues v1 query from workspace to project level
* - Switch to using wa-sqlite instead of sqlite-wasm
* Code cleanup and fix indexes
* Add missing files
* - Import only required functions from sentry
- Wait till all the tables are created
* Skip workspace sync if one is already in progress.
* Sync workspace without using transaction
* Minor cleanup
* Close DB connection before deleting files
Fix clear OPFS on safari
* Fix type issue
* Improve issue insert performance
* Refactor workspace sync
* Close the DB connection while switching workspaces
* Update web/core/local-db/worker/db.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Worker cleanup and error handling
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update web/core/local-db/worker/db.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update web/core/local-db/storage.sqlite.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Update web/core/local-db/worker/db.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Code cleanup
* Set default order by to created at and descending
* Wait for transactions to complete.
---------
Co-authored-by: rahulramesha <rahulramesham@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* regression: image aspect ratio fix
* fix: name of variables changed for clarity
* fix: restore only on error
* fix: restore image by handling it inside the image component
* fix: image restoration fixed and aspect ratio added to old images to stop updates on load
* fix: added back restoring logic for public images
* fix: add conditions
* fix: image attributes types
* fix: return for old images
* fix: remove passive false
* fix: eslint fixes
* fix: stopping infinite loading scenarios while restoring from error
* [WEB-2577] improvement: use common create/update issue modal for accepting intake issues for consistency
* fix: lint errors.
* chore: minor UX copy fix.
* chore: minor indentation fix.
* fix: module date validation while generating the chart distribution
* chore: indentation fix
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
* fix: drag handle scrolling fixed
* fix: closest scrollable parent found and scrolled
* fix: removed overflow auto from framerenderer
* fix: make dragging dynamic and smoother
* feat: add text color and highlight options to pages
* style: rich text editor floating toolbar
* chore: remove unused function
* refactor: slash command components
* chore: move default text and background options to the top
* fix: sections filtering logic
* fix: drag handle scrolling fixed
* fix: closest scrollable parent found and scrolled
* fix: removed overflow auto from framerenderer
* fix: make dragging dynamic and smoother
* fix: image deletion on submit fixed in comments
* fix: cleareditor added to read only editor
* fix: image component double drop fixed
* feat: multiple image selection and uploading
* fix: click event on read only instance
* fix: made things async
* fix: prevented default behaviour
* fix: removed extra dep and cleaned up logic
* fix kanban view localStorage
* add functionality for list view and add type for kanban function
* add comment in issue-filter-helper store
* improved code quality
* add comment for clarity
* use better variable names
* use useCallback hook and change variable name
* made suggested changes
* - Handle single quotes in load workspace queries
- Add IS null where condition in query utils
* Fix description_html being lost
* Change secondary order to sequence_id
* Fix update persistence layer
* Add instrumentation
* - Fallback to server incase of any error
* fix: added aspect ratio to resizing
* fix: image loading
* fix: image uploading and adding only necessary keys to listen to
* fix: image aspect ratio maintainance done
* fix: loading of images with uploads
* fix: custom image extension loading fixed
* fix: refactored all the upload logic
* fix: focus detection for editor fixed
* fix: drop images and inserting images cleaned up
* fix: cursor focus after image node insertion and multi drop/paste range error fix
* fix: image types fixed
* fix: remove old images' upload code and cleaning up the code
* fix: imports
* fix: this reference in the plugin
* fix: added file validation
* fix: added error handling while reading files
* fix: prevent old data to be updated in updateAttributes
* fix: props types for node and image block
* fix: remove unnecessary dependency
* fix: seperated display message logic from ui
* chore: added comments to better explain the loading states
* fix: added getPos to deps
* fix: remove click event on failed to load state
* fix: css for error and selected state
* [WEB-2568] chore: minor improvements related to issue identifier and issue modal.
* fix: error handling for session recorder script.
* chore: minor improvement
* - Handle single quotes in load workspace queries
- Add IS null where condition in query utils
* Fix description_html being lost
* Change secondary order to sequence_id
* Fix update persistence layer
* Fix issue types filter
Fix none filter
* add local cache toggle in help section
* remove toggle from user settings
* Reset storage class on disabling local
---------
Co-authored-by: rahulramesha <rahulramesham@gmail.com>
* - Handle single quotes in load workspace queries
- Add IS null where condition in query utils
* Fix description_html being lost
* Change secondary order to sequence_id
* Fix update persistence layer
* Fix sync of local updates
* Escape single quotes!!
* Fix last updated time query
* Move console.logs out
* Fix issue title not rendering line breaks when disabled
* Add a todo
* Fix build errors
* Disable local
* use common getIssues from issue service instead of multiple different services for modules and cycles
* Use SQLite to store issues locally and load issues from it.
* Fix incorrect total count and filtering on assignees.
* enable parallel API calls
* use common getIssues from issue service instead of multiple different services for modules and cycles
* Use SQLite to store issues locally and load issues from it.
* Fix incorrect total count and filtering on assignees.
* enable parallel API calls
* chore: deleted issue list
* - Handle local mutations
- Implement getting the updates
- Use SWR to update/sync data
* Wait for sync to complete in get issues
* Fix build errors
* Fix build issue
* - Sync updates to local-db
- Fallback to server when the local data is loading
- Wait when the updates are being fetched
* Add issues in batches
* Disable skeleton loaders for first 10 issues
* Load issues in bulk
* working version of sql lite with grouped issues
* Use window queries for group by
* - Fix sort by date fields
- Fix the total count
* - Fix grouping by created by
- Fix order by and limit
* fix pagination
* Fix sorting on issue priority
* - Add secondary sort order
- Fix group by priority
* chore: added timestamp filter for deleted issues
* - Extract local DB into its own class
- Implement sorting by label names
* Implement subgroup by
* sub group by changes
* Refactor query constructor
* Insert or update issues instead of directly adding them.
* Segregated queries. Not working though!!
* - Get filtered issues and then group them.
- Cleanup code.
- Implement order by labels.
* Fix build issues
* Remove debuggers
* remove loaders while changing sorting or applying filters
* fix loader while clearing all filters
* Fix issue with project being synced twice
* Improve project sync
* Optimize the queries
* Make create dummy data more realistic
* dev: added total pages in the global paginator
* chore: updated total_paged count
* chore: added state_group in the issues pagination
* chore: removed deleted_at from the issue pagination payload
* chore: replaced state_group with state__group
* Integrate new getIssues API, and fix sync issues bug.
* Fix issue with SWR running twice in workspace wrapper
* Fix DB initialization called when opening project for the first time.
* Add all the tables required for sorting
* Exclude description from getIssues
* Add getIssue function.
* Add only selected fields to get query.
* Fix the count query
* Minor query optimization when no joins are required.
* fetch issue description from local db
* clear local db on signout
* Correct dummy data creation
* Fix sort by assignee
* sync to local changes
* chore: added archived issues in the deleted endpoint
* Sync deletes to local db.
* - Add missing indexes for tables used in sorting in spreadsheet layout.
- Add options table
* Make fallback optional in getOption
* Kanban column virtualization
* persist project sync readiness to sqlite and use that as the source of truth for the project issues to be ready
* fix build errors
* Fix calendar view
* fetch slimed down version of modules in project wrapper
* fetch toned down modules and then fetch complete modules
* Fix multi value order by in spread sheet layout
* Fix sort by
* Fix the query when ordering by multi field names
* Remove unused import
* Fix sort by multi value fields
* Format queries and fix order by
* fix order by for multi issue
* fix loaders for spreadsheet
* Fallback to manual order whn moving away from spreadsheet layout
* fix minor bug
* Move fix for order_by when switching from spreadsheet layout to translateQueryParams
* fix default rendering of kanban groups
* Fix none priority being saved as null
* Remove debugger statement
* Fix issue load
* chore: updated isue paginated query from to
* Fix sub issues and start and target date filters
* Fix active and backlog filter
* Add default order by
* Update the Query param to match with backend.
* local sqlite db versioning
* When window is hidden, do not perform any db versioning
* fix error handling and fall back to server when database errors out
* Add ability to disable local db cache
* remove db version check from getIssues function
* change db version to number and remove workspaceInitPromise in storage.sqlite
* - Sync the entire workspace in the background
- Add get sub issue method with distribution
* Make changes to get issues for sync to match backend.
* chore: handled workspace and project in v2 paginted issues
* disable issue description and title until fetched from server
* sync issues post bulk operations
* fix server error
* fix front end build
* Remove full workspace sync
* - Remove the toast message on sync.
- Update the disable local message.
* Add Hardcoded constant to disable the local db caching
* fix lint errors
* Fix order by in grouping
* update yarn lock
* fix build
* fix plane-web imports
* address review comments
---------
Co-authored-by: rahulramesha <rahulramesham@gmail.com>
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>
* use common getIssues from issue service instead of multiple different services for modules and cycles
* add group by to server constants
* change issue detail's overview's is loading logic to the loader from the store
* add extra method in local storage
* Kanban render 10 issues by default per column
* fix height in group virtualization
* remove debounced code for Kanban fetching more issues per column
* fix lint errors
* Updated control block to cover the whole element
* Updated the control link to cover the whole issues and relation blocks
* updated word wrap in notifications
* Reverted break words as its a different issue.
* fixed only for spreadsheet
* change package for global change
* made global and ad hoc changes
* fix border and z-index for intake and notifications header
* chore: add fallback for the live server
* fix: update provider document after patch request
* chore: make the health check call only on connection fail
* chore: update debounce interval
* refactor: remove useSwr call for healtch check
* fix: pages fallback init
* make front end changes for priority orderby reversal
* chore: handled priority ordering in issues pagination
---------
Co-authored-by: gurusainath <gurusainath007@gmail.com>
* fix: image resize fixed for initial render
* fix: working image resize with mousemove handler only inside the editor
* fix: unnecessary calc
* fix: setting state to true
@@ -4,7 +4,7 @@ Thank you for showing an interest in contributing to Plane! All kinds of contrib
## Submitting an issue
Before submitting a new issue, please search the [issues](https://github.com/makeplane/plane/issues) tab. Maybe an issue or discussion already exists and might inform you of workarounds. Otherwise, you can give new informplaneation.
Before submitting a new issue, please search the [issues](https://github.com/makeplane/plane/issues) tab. Maybe an issue or discussion already exists and might inform you of workarounds. Otherwise, you can give new information.
While we want to fix all the [issues](https://github.com/makeplane/plane/issues), before fixing a bug we need to be able to reproduce and confirm it. Please provide us with a minimal reproduction scenario using a repository or [Gist](https://gist.github.com/). Having a live, reproducible scenario gives us the information without asking questions back & forth with additional questions like:
@@ -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
yarn 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.
@@ -62,17 +93,153 @@ To ensure consistency throughout the source code, please keep these rules in min
- All features or bug fixes must be tested by one or more specs (unit-tests).
- We use [Eslint default rule guide](https://eslint.org/docs/rules/), with minor changes. An automated formatter is available using prettier.
## Need help? Questions and suggestions
Questions, suggestions, and thoughts are most welcome. We can also be reached in our [Discord Server](https://discord.com/invite/A92xrEGCge).
## Ways to contribute
- Try Plane Cloud and the self hosting platform and give feedback
- Add new integrations
- Add or update translations
- Help with open [issues](https://github.com/makeplane/plane/issues) or [create your own](https://github.com/makeplane/plane/issues/new/choose)
- Share your thoughts and suggestions with us
- Help create tutorials and blog posts
- Request a feature by submitting a proposal
- Report a bug
- **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.
### 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:
```
packages/i18n/src/locales/
├── en/
│ ├── core.json # Critical translations
│ └── translations.json
├── fr/
│ └── translations.json
└── [language]/
└── 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
{
"issue":{
"label":"Work item",
"title":{
"label":"Work item title"
}
}
}
```
### 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
{
"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.
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:
```ts
// packages/i18n/src/types/language.ts
export type TLanguage = "en" | "fr" | "your-lang";
```
1. **Add language configuration**
Include the new language in the list of supported languages:
Meet [Plane](https://dub.sh/plane-website-readme), an open-source project management tool to track issues, run ~sprints~ cycles, and manage product roadmaps without the chaos of managing the tool itself. 🧘♀️
Meet [Plane](https://plane.so/), an open-source project management tool to track issues, run ~sprints~ cycles, and manage product roadmaps without the chaos of managing the tool itself. 🧘♀️
> Plane is evolving every day. Your suggestions, ideas, and reported bugs help us immensely. Do not hesitate to join in the conversation on [Discord](https://discord.com/invite/A92xrEGCge) or raise a GitHub issue. We read everything and respond to most.
## ⚡ Installation
## 🚀 Installation
The easiest way to get started with Plane is by creating a [Plane Cloud](https://app.plane.so) account.
Getting started with Plane is simple. Choose the setup that works best for you:
If you would like to self-host Plane, please see our [deployment guide](https://docs.plane.so/docker-compose).
- **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.
`Instance admins` can configure instance settings with [God-mode](https://docs.plane.so/instance-admin).
`Instance admins` can configure instance settings with [Godmode](https://developers.plane.so/self-hosting/govern/instance-admin).
## 🚀 Features
## 🌟 Features
- **Issues**: Quickly create issues and add details using a powerful rich text editor that supports file uploads. Add sub-properties and references to problems for better organization and tracking.
- **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**:
Keep up your team's momentum with Cycles. Gain insights into your project's progress with burn-down charts and other valuable features.
- **Cycles**
Maintain your team’s momentum with Cycles. Track progress effortlessly using burn-down charts and other insightful tools.
- **Modules**: Break down your large projects into smaller, more manageable modules. Assign modules between teams to track and plan your project's progress easily.
- **Modules**
Simplify complex projects by dividing them into smaller, manageable modules.
- **Views**: Create custom filters to display only the issues that matter to you. Save and share your filters in just a few clicks.
- **Views**
Customize your workflow by creating filters to display only the most relevant issues. Save and share these views with ease.
- **Pages**: Plane pages, equipped with AI and a rich text editor, let you jot down your thoughts on the fly. Format your text, upload images, hyperlink, or sync your existing ideas into an actionable item or issue.
- **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**: Get insights into all your Plane data in real-time. Visualize issue data to spot trends, remove blockers, and progress your work.
- **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.
## 🛠️ Quick start for contributors
> Development system must have docker engine installed and running.
## 🛠️ Local development
Setting up local environment is extremely easy and straight forward. Follow the below step and you will be ready to contribute -
See [CONTRIBUTING](./CONTRIBUTING.md)
1. Clone the code locally using:
```
git clone https://github.com/makeplane/plane.git
```
2. Switch to the code folder:
```
cd plane
```
3. Create your feature or fix branch you plan to work on using:
```
git checkout -b <feature-branch-name>
```
4. Open terminal and run:
```
./setup.sh
```
5. Open the code on VSCode or similar equivalent IDE.
6. Review the `.env` files available in various folders.
Visit [Environment Setup](./ENV_SETUP.md) to know about various environment variables used in system.
7. Run the docker command to initiate services:
```
docker compose -f docker-compose-local.yml up -d
```
You are ready to make changes to the code. Do not forget to refresh the browser (in case it does not auto-reload).
Thats it!
## ❤️ Community
The Plane community can be found on [GitHub Discussions](https://github.com/orgs/makeplane/discussions), and our [Discord server](https://discord.com/invite/A92xrEGCge). Our [Code of conduct](https://github.com/makeplane/plane/blob/master/CODE_OF_CONDUCT.md) applies to all Plane community chanels.
Ask questions, report bugs, join discussions, voice ideas, make feature requests, or share your projects.
Explore Plane's [product documentation](https://docs.plane.so/) and [developer documentation](https://developers.plane.so/) to learn about features, setup, and usage.
If you believe you have found a security vulnerability in Plane, we encourage you to responsibly disclose this and not open a public issue. We will investigate all legitimate reports.
## ❤️ Community
Email squawk@plane.so to disclose any security vulnerabilities.
Join the Plane community on [GitHub Discussions](https://github.com/orgs/makeplane/discussions) and our [Discord server](https://discord.com/invite/A92xrEGCge). We follow a [Code of conduct](https://github.com/makeplane/plane/blob/master/CODE_OF_CONDUCT.md) in all our community channels.
## ❤️ Contribute
Feel free to ask questions, report bugs, participate in discussions, share ideas, request features, or showcase your projects. We’d love to hear from you!
There are many ways to contribute to Plane, including:
## 🛡️ Security
- Submitting [bugs](https://github.com/makeplane/plane/issues/new?assignees=srinivaspendem%2Cpushya22&labels=%F0%9F%90%9Bbug&projects=&template=--bug-report.yaml&title=%5Bbug%5D%3A+) and [feature requests](https://github.com/makeplane/plane/issues/new?assignees=srinivaspendem%2Cpushya22&labels=%E2%9C%A8feature&projects=&template=--feature-request.yaml&title=%5Bfeature%5D%3A+) for various components.
- Reviewing [the documentation](https://docs.plane.so/) and submitting [pull requests](https://github.com/makeplane/plane), from fixing typos to adding new features.
- Speaking or writing about Plane or any other ecosystem integration and [letting us know](https://discord.com/invite/A92xrEGCge)!
- Upvoting [popular feature requests](https://github.com/makeplane/plane/issues) to show your support.
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.
## 🤝 Contributing
There are many ways you can contribute to Plane:
- Report [bugs](https://github.com/makeplane/plane/issues/new?assignees=srinivaspendem%2Cpushya22&labels=%F0%9F%90%9Bbug&projects=&template=--bug-report.yaml&title=%5Bbug%5D%3A+) or submit [feature requests](https://github.com/makeplane/plane/issues/new?assignees=srinivaspendem%2Cpushya22&labels=%E2%9C%A8feature&projects=&template=--feature-request.yaml&title=%5Bfeature%5D%3A+).
- Review the [documentation](https://docs.plane.so/) and submit [pull requests](https://github.com/makeplane/docs) to improve it—whether it's fixing typos or adding new content.
- Talk or write about Plane or any other ecosystem integration and [let us know](https://discord.com/invite/A92xrEGCge)!
- Show your support by upvoting [popular feature requests](https://github.com/makeplane/plane/issues).
Please read [CONTRIBUTING.md](https://github.com/makeplane/plane/blob/master/CONTRIBUTING.md) for details on the process for submitting pull requests to us.
This document outlines the security protocols and vulnerability reporting guidelines for the Plane project. Ensuring the security of our systems is a top priority, and while we work diligently to maintain robust protection, vulnerabilities may still occur. We highly value the community’s role in identifying and reporting security concerns to uphold the integrity of our systems and safeguard our users.
This document outlines security procedures and vulnerabilities reporting for the Plane project.
## Reporting a vulnerability
If you have identified a security vulnerability, submit your findings to [security@plane.so](mailto:security@plane.so).
Ensure your report includes all relevant information needed for us to reproduce and assess the issue. Include the IP address or URL of the affected system.
At Plane, we safeguarding the security of our systems with top priority. Despite our efforts, vulnerabilities may still exist. We greatly appreciate your assistance in identifying and reporting any such vulnerabilities to help us maintain the integrity of our systems and protect our clients.
To ensure a responsible and effective disclosure process, please adhere to the following:
To report a security vulnerability, please email us directly at security@plane.so with a detailed description of the vulnerability and steps to reproduce it. Please refrain from disclosing the vulnerability publicly until we have had an opportunity to review and address it.
- Maintain confidentiality and refrain from publicly disclosing the vulnerability until we have had the opportunity to investigate and address the issue.
- Refrain from running automated vulnerability scans on our infrastructure or dashboard without prior consent. Contact us to set up a sandbox environment if necessary.
- Do not exploit any discovered vulnerabilities for malicious purposes, such as accessing or altering user data.
- Do not engage in physical security attacks, social engineering, distributed denial of service (DDoS) attacks, spam campaigns, or attacks on third-party applications as part of your vulnerability testing.
## Out of Scope Vulnerabilities
## Out of scope
While we appreciate all efforts to assist in improving our security, please note that the following types of vulnerabilities are considered out of scope:
We appreciate your help in identifying vulnerabilities. However, please note that the following types of vulnerabilities are considered out of scope:
- Vulnerabilities requiring man-in-the-middle (MITM) attacks or physical access to a user’s device.
- Content spoofing or text injection issues without a clear attack vector or the ability to modify HTML/CSS.
- Issues related to email spoofing.
- Missing DNSSEC, CAA, or CSP headers.
- Absence of secure or HTTP-only flags on non-sensitive cookies.
- Attacks requiring MITM or physical access to a user's device.
- Content spoofing and text injection issues without demonstrating an attack vector or ability to modify HTML/CSS.
- Email spoofing.
- Missing DNSSEC, CAA, CSP headers.
- Lack of Secure or HTTP only flag on non-sensitive cookies.
## Our commitment
## Reporting Process
At Plane, we are committed to maintaining transparent and collaborative communication throughout the vulnerability resolution process. Here's what you can expect from us:
If you discover a vulnerability, please adhere to the following reporting process:
- **Response Time** <br/>
We will acknowledge receipt of your vulnerability report within three business days and provide an estimated timeline for resolution.
- **Legal Protection** <br/>
We will not initiate legal action against you for reporting vulnerabilities, provided you adhere to the reporting guidelines.
- **Confidentiality** <br/>
Your report will be treated with confidentiality. We will not disclose your personal information to third parties without your consent.
- **Recognition** <br/>
With your permission, we are happy to publicly acknowledge your contribution to improving our security once the issue is resolved.
- **Timely Resolution** <br/>
We are committed to working closely with you throughout the resolution process, providing timely updates as necessary. Our goal is to address all reported vulnerabilities swiftly, and we will actively engage with you to coordinate a responsible disclosure once the issue is fully resolved.
1. Email your findings to security@plane.so.
2. Refrain from running automated scanners on our infrastructure or dashboard without prior consent. Contact us to set up a sandbox environment if necessary.
3. Do not exploit the vulnerability for malicious purposes, such as downloading excessive data or altering user data.
4. Maintain confidentiality and refrain from disclosing the vulnerability until it has been resolved.
5. Avoid using physical security attacks, social engineering, distributed denial of service, spam, or third-party applications.
When reporting a vulnerability, please provide sufficient information to allow us to reproduce and address the issue promptly. Include the IP address or URL of the affected system, along with a detailed description of the vulnerability.
## Our Commitment
We are committed to promptly addressing reported vulnerabilities and maintaining open communication throughout the resolution process. Here's what you can expect from us:
- **Response Time:** We will acknowledge receipt of your report within three business days and provide an expected resolution date.
- **Legal Protection:** We will not pursue legal action against you for reporting vulnerabilities, provided you adhere to the reporting guidelines.
- **Confidentiality:** Your report will be treated with strict confidentiality. We will not disclose your personal information to third parties without your consent.
- **Progress Updates:** We will keep you informed of our progress in resolving the reported vulnerability.
- **Recognition:** With your permission, we will publicly acknowledge you as the discoverer of the vulnerability.
- **Timely Resolution:** We strive to resolve all reported vulnerabilities promptly and will actively participate in the publication process once the issue is resolved.
We appreciate your cooperation in helping us maintain the security of our systems and protecting our clients. Thank you for your contributions to our security efforts.
We appreciate your help in ensuring the security of our platform. Your contributions are crucial to protecting our users and maintaining a secure environment. Thank you for working with us to keep Plane safe.
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
EXPOSE 8000
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.