* 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>
* 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>
* 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
* feat: enhance URL utility functions with IP address validation and cleaned up the extraction utilities
* fix: remove unnecessary type assertion in isLocalhost function
* 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>
* 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
* 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>
* 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>
* 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>