Skip to content

Release/v2.1.0#249

Merged
chamikaJ merged 304 commits intodevelopmentfrom
release/v2.1.0
Jul 9, 2025
Merged

Release/v2.1.0#249
chamikaJ merged 304 commits intodevelopmentfrom
release/v2.1.0

Conversation

@chamikaJ
Copy link
Contributor

@chamikaJ chamikaJ commented Jul 9, 2025

No description provided.

shancds and others added 30 commits June 20, 2025 17:13
- Introduced ProjectViewEnhancedBoard to the project view constants.
- Added a new tab item for the enhanced board view, improving project management options.
- Updated tab items structure to include the new board variant for better user navigation.
…or Worklenz frontend

- Introduced a new document summarizing performance optimizations across the application.
- Applied React.memo(), useMemo(), and useCallback() to key components to minimize unnecessary re-renders and optimize rendering performance.
- Implemented a route preloading system to enhance navigation speed and user experience.
- Added performance monitoring utilities for development to track component render times and function execution.
- Enhanced lazy loading and suspense boundaries for better loading states.
- Conducted production optimizations, including TypeScript error fixes and memory management improvements.
- Memoized style and configuration objects to reduce garbage collection pressure and improve memory usage.
…ate project view

- Added react-window-infinite-loader to improve performance in rendering large lists.
- Integrated enhancedKanbanReducer into the Redux store for state management.
- Updated ProjectViewEnhancedBoard to utilize EnhancedKanbanBoard for better project visualization.
- Implemented lazy loading for all route components to improve initial load times and reduce bundle size.
- Added Suspense boundaries around lazy-loaded components for better loading states and user experience.
- Memoized guard components to prevent unnecessary re-renders and optimize performance.
- Introduced defensive programming practices in guard components to handle potential errors gracefully.
- Updated routing structure to utilize React Router's future features for enhanced performance.
…ctors

- Introduced a Redux performance monitoring system to log action metrics, including duration and state size.
- Implemented middleware for tracking performance of Redux actions and logging slow actions in development.
- Added utility functions for analyzing performance metrics and generating recommendations for optimization.
- Created memoized selectors to enhance performance and prevent unnecessary re-renders across various application states.
…ce and development experience

- Updated Vite configuration to include production checks for sourcemaps and minification.
- Added development server settings for automatic opening and HMR overlay customization.
- Optimized chunking strategy for better caching and organization of dependencies.
- Enhanced asset file naming strategies for better categorization of images and fonts.
- Introduced experimental features for performance improvements and CSS optimization.
- Adjusted task-row component styling for improved font size consistency.
feat(config): enhance Vite configuration for improved build performan…
- Updated jest.config.js, postcss.config.js, and tailwind.config.js to use ES module export syntax.
- Removed unused tsconfigPaths import from vite.config.ts to streamline the configuration.
refactor(config): migrate configuration files to ES module syntax
- Updated jest.config.js, postcss.config.js, and tailwind.config.js to use CommonJS module.exports syntax for compatibility with Node.js environments.
refactor(config): switch configuration files to CommonJS module syntax
…performance

- Added lazy loading for NotFoundPage and TaskListFilters components to enhance initial load times.
- Wrapped lazy-loaded components in Suspense boundaries to provide loading states and improve user experience.
- Updated Vite configuration to optimize chunking strategy and preserve module signatures for better dependency management.
feat(lazy-loading): implement lazy loading and suspense for improved …
…atibility

feat(env-config): add env-config.js for development environment setup

- Updated index.html to use a standard script tag for env-config.js.
- Introduced env-config.js as a development placeholder for environment variables, allowing fallback to build-time env vars.
fix(index.html): change script type for env-config.js to improve comp…
…ule interop

- Added deduplication for React and React DOM to ensure a single instance.
- Simplified the chunking strategy to group React-related libraries together, enhancing dependency management.
- Introduced interop settings for better module compatibility.
feat(config): refine Vite configuration for improved chunking and mod…
…uration

- Added AssigneeSelector, Avatar, AvatarGroup, Button, Checkbox, CustomColordLabel, CustomNumberLabel, LabelsSelector, Progress, Tag, and Tooltip components for improved UI functionality.
- Updated Vite configuration to change the development server port to 5173 and removed unnecessary interop settings for module compatibility.
- Enhanced task management components to utilize new task structure and improve performance.
…sability

- Refactored TaskGroup and TaskRow components to improve rendering efficiency by utilizing memoization and callbacks.
- Moved color mappings for group statuses and priorities outside of components to prevent unnecessary re-creations.
- Enhanced drag-and-drop functionality with optimistic updates and throttling for smoother user experience.
- Updated task management slice to support new properties and batch updates for better performance.
- Simplified selectors and improved error handling in the task management slice.
…kListFilters component

- Refactored EnhancedKanbanBoard and EnhancedKanbanGroup components for better code organization and readability.
- Integrated TaskListFilters component to enhance task filtering capabilities within the kanban board.
- Cleaned up unnecessary whitespace and improved formatting for consistency across the codebase.
…d-drop functionality

- Added support for reordering kanban groups via drag-and-drop, enhancing user experience.
- Updated EnhancedKanbanBoard and EnhancedKanbanGroup components to handle group dragging and state management.
- Introduced visual feedback for dragging groups and tasks, improving usability.
- Refined CSS styles for better layout and responsiveness during drag operations.
…ag-over state

- Eliminated the background color for the drop preview when a kanban group is dragged over, enhancing visual clarity during drag-and-drop operations.
… groups

- Added synchronous state updates for task and group reordering in the EnhancedKanbanBoard component, improving UI responsiveness during drag-and-drop operations.
- Introduced new actions `reorderTasks` and `reorderGroups` in the enhanced-kanban slice for better state management.
- Updated EnhancedKanbanGroup and EnhancedKanbanTaskCard components to utilize the new layout change animations, enhancing the user experience during reordering.
…ion names and status management

- Implemented functionality to edit section names directly within the EnhancedKanbanGroup component, allowing for a more dynamic user experience.
- Added unique name generation for sections to prevent duplicates.
- Integrated status update and deletion capabilities, enabling users to manage task statuses effectively.
- Enhanced UI with new Ant Design components for better interaction and visual feedback during editing and deletion processes.
…onents

- Introduced `getTasksV3` and `refreshTaskProgress` methods in `TasksControllerV2` to optimize task retrieval and progress refreshing.
- Updated API routes to include new endpoints for V3 task management.
- Enhanced frontend components to utilize the new V3 API, improving performance by reducing frontend processing.
- Added `VirtualizedTaskList` and `VirtualizedTaskGroup` components for efficient rendering of task lists.
- Updated task management slice to support new V3 data structure and improved state management.
- Refactored styles for better dark mode support and overall UI consistency.
…ts for improved layout and performance

- Added support for customizable columns in `TaskRow` component, allowing for fixed and scrollable columns.
- Implemented synchronized scrolling between header and body in `VirtualizedTaskList` for better user experience.
- Refactored column header rendering to dynamically generate based on column definitions, improving maintainability.
- Enhanced styles for task group headers and column headers to ensure consistent appearance and responsiveness.
…rdering

- Integrated socket functionality to emit events for task and column sort order changes during drag-and-drop operations in the EnhancedKanbanBoard component.
- Enhanced the handleDragEnd function to prepare and send the updated column order to the backend or via socket, improving real-time synchronization.
- Updated error handling for socket emissions to ensure robustness during reordering processes.
…ions

- Updated the logic for determining the sort order when tasks are dropped in the EnhancedKanbanBoard component.
- Added handling for dropping tasks at the end of a group and ensured proper assignment of sort orders, improving task organization during drag-and-drop operations.
shancds and others added 27 commits July 7, 2025 13:12
…drop

- Implemented a check for task dependencies when moving tasks between groups in the EnhancedKanbanBoard component.
- Integrated alert notifications to inform users if a task cannot be moved due to incomplete dependencies, enhancing user experience and task management integrity.
…naming

- Updated the chunking strategy to keep React and related libraries together, improving compatibility and reducing context issues.
- Simplified asset naming conventions for better caching and consistency, removing unnecessary hash lengths.
- Adjusted optimization settings to ensure critical libraries are included while excluding heavy libraries for lazy loading.
…eval

- Eliminated caching logic from the TasksControllerV2 to streamline task retrieval and improve performance.
- Updated response handling to directly return task data without caching, enhancing clarity and reducing complexity.
- Removed cache invalidation method to simplify the controller's responsibilities.
…ask filtering

- Updated SQL queries in TasksControllerV2 to use table aliases for clarity and consistency.
- Improved filtering logic for project IDs and assignees to ensure accurate task retrieval.
- Refactored JSON object construction in SQL queries for better readability and maintainability.
- Adjusted parameter handling in query execution to streamline data retrieval processes.
… and clarity

- Improved logging for performance tracking in the getTasksV3 method.
- Streamlined progress refresh logic and removed unnecessary calculations to optimize initial load times.
- Unified query handling by aligning with the getList method for consistency.
- Transformed response structure to maintain compatibility with V3 format while ensuring efficient data processing.
- Added memoized selectors in the frontend for better performance and reduced re-renders.
- Simplified the logic for determining the production tracking ID by removing the check for the 'worklenz.com' hostname.
- Ensured that the tracking ID is now solely based on the 'app.worklenz.com' hostname, streamlining the analytics loading process.
…imization

- Created multiple new indexes in the performance-indexes.sql file to enhance query performance for tasks, team members, and related tables.
- Added a materialized view for team member information in 3_views.sql to pre-calculate expensive joins, improving data retrieval efficiency.
- Introduced a function to refresh the materialized view, ensuring up-to-date information while optimizing performance.
- Implemented an optimized method in tasks-controller-v2.ts to split complex queries into focused segments, significantly improving response times and overall performance.
- Changed the background color of the TaskCard component from '#f0f0f0' to '#E2EAF4' in light mode to enhance visual consistency and user experience.
- Updated project data fetching logic in the project drawer and related components to ensure the drawer opens only after successful data retrieval.
- Added detailed logging for successful and failed fetch attempts to improve debugging and user feedback.
- Introduced error handling to maintain user experience by allowing the drawer to open even if data fetching fails, displaying an error state.
- Refactored project list and project view components to optimize search functionality and improve loading states.
- Removed deprecated components related to task management to streamline the project view.
… task rendering

- Added visual drop indicators before and after task cards in the KanbanGroup component to improve user experience during drag-and-drop operations.
- Removed the isDropIndicator prop from TaskCard as the drop indicator logic is now handled within the KanbanGroup, simplifying the TaskCard component.
- Updated drag-and-drop event handling in TaskCard to better manage task positioning during drag operations, enhancing overall functionality.
- Added a title and meta subject for the release note template.
- Enhanced styling for better readability and user experience, including background color, font adjustments, and button styles.
- Introduced new sections for features, including a new tasks list, kanban board, group view, language support, and bug fixes.
- Improved responsiveness and dark mode support for the email template.
…ask interaction

- Added handleDragEnd function to reset hovered task and group states after drag operations in EnhancedKanbanBoard.
- Updated KanbanGroup and TaskCard components to support onDragEnd prop, enhancing drag-and-drop functionality and user experience during task management.
- Updated the initialization of grouped request parameters to use a proper groupBy value.
- Improved the effect dependencies to include groupBy, ensuring correct state management.
- Enhanced the logic for fetching grouped projects, ensuring parameters are set correctly and data is retrieved when necessary.
- Added comments for clarity on the conditions for fetching grouped projects.
…opdown behavior

- Removed unused kanbanMode prop and related logic to simplify the AssigneeSelector component.
- Updated dropdown position handling to improve visibility and responsiveness during interactions.
- Optimized member selection logic for better performance and user feedback.
- Enhanced the rendering of team members with improved visual feedback for pending changes.
- Updated the focus handling in KanbanGroup to select all text in the input field when focused, improving user experience during task editing.
- Introduced new localization files for Albanian, German, Spanish, Portuguese, and Chinese, enhancing the application's multilingual support.
- Added new keys and updated existing translations in project-view, task-list-table, and settings files to improve user experience across different languages.
- Enhanced error handling and empty state messages in task management components to provide clearer feedback to users.
- Updated tooltip texts and button labels for better clarity and consistency in the user interface.
- Updated translations for task drawer components in Albanian, German, Spanish, Portuguese, Chinese, and English to improve clarity and consistency.
- Added new keys for task progress, activity log, and time log forms to support enhanced user interactions.
- Improved placeholder texts, error messages, and button labels for better user experience across multiple languages.
- Refactored activity log component to utilize translation keys for dynamic content rendering.
…in description editor

- Changed tab component property from 'destroyInactiveTabPane' to 'destroyOnHidden' for improved tab management.
- Added CSS styles for links in the description editor to enhance visibility based on theme mode.
- Implemented link click handling to open links in a new tab while preventing default editor behavior, improving user experience.
- Removed unnecessary padding from task filters for a cleaner look.
- Adjusted height calculations to optimize space usage in the task list.
- Added padding to the content area to ensure the horizontal scrollbar is visible.
- Updated subtask count checks for clarity and consistency.
- Modified gap and margin values in project view header for improved alignment.
- Adjusted heights and padding in the task list and filters for better space optimization.
- Updated styling in TaskRow for consistent alignment of task elements.
- Refined padding in ImprovedTaskFilters for a cleaner appearance.
- Removed unnecessary margin in ProjectViewHeader to streamline layout.
- Adjusted padding and alignment in TaskListV2 for better visual consistency.
- Enhanced styling in TaskRow to ensure uniformity across various task elements.
- Updated flex properties for improved responsiveness and usability in task display.
// Replace mention spans with plain @mentions
const withoutMentionSpans = content.replace(/<span class="mentions">@(\w+)<\/span>/g, '@$1');

Check failure

Code scanning / CodeQL

Incomplete multi-character sanitization

This string may still contain [<script](1), which may cause an HTML element injection vulnerability.

Copilot Autofix

AI 7 months ago

To fix the issue, the sanitization logic should be improved to handle incomplete replacements. This can be achieved by repeatedly applying the regular expression until no matches remain. Alternatively, a well-tested library like sanitize-html can be used to reliably sanitize input and handle edge cases comprehensively. The latter is generally recommended for production-grade applications due to its robustness.

In this case, we will apply the regular expression repeatedly in a loop until the input is fully sanitized, as introducing a library might require additional dependencies and setup.

Suggested changeset 1
worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx b/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx
--- a/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx
+++ b/worklenz-frontend/src/components/task-drawer/shared/info-tab/comments/task-view-comment-edit.tsx
@@ -22,7 +22,13 @@
   const withoutMentionSpans = content.replace(/<span class="mentions">@(\w+)<\/span>/g, '@$1');
 
   // Remove any other HTML tags
-  return withoutMentionSpans.replace(/<[^>]*>/g, '');
+  let sanitizedContent = withoutMentionSpans;
+  let previousContent;
+  do {
+    previousContent = sanitizedContent;
+    sanitizedContent = sanitizedContent.replace(/<[^>]*>/g, '');
+  } while (sanitizedContent !== previousContent);
+  return sanitizedContent;
 };
 
 const TaskViewCommentEdit = ({ commentData, onUpdated }: TaskViewCommentEditProps) => {
EOF
@@ -22,7 +22,13 @@
const withoutMentionSpans = content.replace(/<span class="mentions">@(\w+)<\/span>/g, '@$1');

// Remove any other HTML tags
return withoutMentionSpans.replace(/<[^>]*>/g, '');
let sanitizedContent = withoutMentionSpans;
let previousContent;
do {
previousContent = sanitizedContent;
sanitizedContent = sanitizedContent.replace(/<[^>]*>/g, '');
} while (sanitizedContent !== previousContent);
return sanitizedContent;
};

const TaskViewCommentEdit = ({ commentData, onUpdated }: TaskViewCommentEditProps) => {
Copilot is powered by AI and may make mistakes. Always verify output.
@chamikaJ chamikaJ merged commit 6c08f10 into development Jul 9, 2025
7 of 8 checks passed
@chamikaJ chamikaJ deleted the release/v2.1.0 branch July 11, 2025 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants