chore: enable chatwoot v4 feature by default#3
Merged
gabrieljablonski merged 1 commit intofazer-ai/mainfrom Feb 14, 2025
Merged
chore: enable chatwoot v4 feature by default#3gabrieljablonski merged 1 commit intofazer-ai/mainfrom
gabrieljablonski merged 1 commit intofazer-ai/mainfrom
Conversation
6a08fec to
81e33bd
Compare
gabrieljablonski
added a commit
that referenced
this pull request
Mar 5, 2025
gabrieljablonski
added a commit
that referenced
this pull request
Mar 28, 2025
gabrieljablonski
added a commit
that referenced
this pull request
Mar 30, 2025
gabrieljablonski
added a commit
that referenced
this pull request
Apr 4, 2025
gabrieljablonski
added a commit
that referenced
this pull request
Jan 4, 2026
* feat: fazer.ai license management * feat: harden fazer.ai license checks * feat: update fazer.ai hub URL and adjust version check logic * feat: fazeraihub improvements * feat: fazer-ai-hub feature usage * feat: update feature usage on feature changes * feat: update grace period logic * fix: class typo * feat: cancel at period end * feat: enhance stub_fazer_ai_hub_request for improved testing
gabrieljablonski
added a commit
that referenced
this pull request
Mar 25, 2026
* feat: kanban fazer.ai (#1) * feat(kanban): partial phase 1 * feat(kanban): add Kanban feature implementation with API endpoints and models - Implemented funnel assignments, funnel steps, and tasks with respective JSON views. - Created factories for Kanban models to facilitate testing. - Added request specs for funnel assignments, funnel steps, and tasks to ensure API functionality. - Introduced audit logging for task updates and created a job for handling audit events. - Updated initializers to include FazerAi concerns and FactoryBot paths. - Fixed paths in existing files to align with the new structure. - Added a Railtie for loading tasks from the FazerAi library. * feat(kanban): implement Kanban feature with new API endpoints for audit events, funnel inboxes, template messages, and webhook configs * feat(kanban): enhance funnel assignments and funnels with agent details and improve audit logging * fix: adjust indentation in set_funnel method for better readability * feat(kanban): add validations and error messages for Kanban tasks and assignments; enhance seed data for Kanban module * feat(kanban): implement UI for Kanban board with task and step management - Added KanbanTaskModal component for creating and editing tasks. - Introduced KanbanBoardPage component to manage the Kanban board layout. - Created routes for the Kanban board and integrated Vuex store for state management. - Developed actions, mutations, and getters for handling funnels, steps, and tasks in the Vuex store. - Updated models to include validations and callbacks for funnel and step management. - Implemented API endpoints for creating, updating, and deleting tasks and steps. - Added tests for funnel step deletion and task movement between steps. - Enhanced Vite configuration to include Kanban module for testing and asset management. * docs: feature plan annotations * fix: edit task modal error * feat: enhance kanban functionality with task deletion and priority management - Added confirmation dialog for task deletion in Kanban. - Implemented priority selection with icons and colors in Kanban tasks. - Updated task and checklist item priority defaults from 'medium' to 'normal'. - Introduced discard changes confirmation for unsaved modifications in step and task modals. - Refactored Kanban components to support new features and improve user experience. - Enhanced internationalization support for new modal messages and tooltips. - Updated database schema and migrations to reflect priority changes. * fix: icon references * feat: tasks manual position * feat: add copy step and task id button * feat: implement kanban funnel functionality with overview and modal support * feat: create funnel modal * fix: funnel switcher switch sides * feat: enhance kanban UI with custom scrollbar and loading state handling * feat: add funnel settings page and related functionality - Introduced a new KanbanFunnelSettingsPage for managing funnel settings. - Added routes for funnel settings and updated navigation to include settings. - Implemented API calls for updating funnel details, assignments, and inboxes. - Enhanced the funnel model to support ordered steps and updated validations. - Updated Vuex store to handle funnel updates and deletions. - Modified funnel JSON responses to include ordered steps and task counts. - Improved UI components for better user experience in funnel management. * feat: enhance funnel deletion process and validations * feat: enhance funnel policy and JSON response for assigned inboxes * feat: add success message for steps order update and enhance funnel settings page * feat: enhance layout and styling for dialog and kanban components * feat: update kanban feature plan with indexed db and actioncable events for real-time UI updates * feat: rename funnel assignments to funnel agents and update related functionality - Updated locale files to reflect the change from assignments to agents. - Modified routes to use agents instead of assignments. - Created a migration to rename the kanban_funnel_assignments table to kanban_funnel_agents and update indexes. - Implemented a new FunnelAgentsController to manage agents for funnels. - Removed the old FunnelAssignmentsController and its associated views. - Updated the FunnelsController to handle agent updates instead of assignments. - Adjusted JavaScript API calls and Vue components to use the new agents structure. - Updated policies to manage funnel agents instead of assignments. - Created new views for funnel agents and removed views for funnel assignments. - Updated factories and specs to reflect the new funnel agent model. * fix: modal overflow issues * feat: skeleton loaders * feat: funnel sorting preferences * feat: favorite funnels * feat: assigning agents to tasks * feat: assign task conversations and contacs * feat: update agent and inbox labels in kanban localization * feat: filter tasls by agent and inbox * fix: minor improvements * feat: move tasks * feat: improved task moving logic * feat: avatars in select components * feat: add indexes for improved filtering on kanban tasks * feat: update task positioning logic to use insert_before_task_id * feat: rename 'state' to 'status' in kanban tasks and update related logic * feat: add filtering options for completed and cancelled tasks in kanban * feat: duplicate task * feat: refactor task card and improved sizing on small screens * feat: add 'resolved' status to conversations and update related components * feat: step selector on card * feat: add 'move to next step' functionality and improve column width styles in Kanban * feat: localized created at time ago * feat: kanban contact panel * feat: kanban conversation panel * chore: update overview skeleton * fix: popper overflow issues * feat: add tasks_count to funnel steps and update related views and controllers * feat: add inbox_id prop to KanbanConversationPanel and implement cleanup_task_conversations callback in FunnelInbox model * feat: Refactor Kanban task and conversation relationships - Changed the relationship between conversations and tasks from many-to-many to one-to-many by adding a `kanban_task_id` foreign key to the conversations table. - Updated relevant models, controllers, and views to reflect the new relationship structure. - Removed the join table `kanban_task_conversations` and adjusted associated methods and validations. - Enhanced task creation and update processes to handle conversation assignments more effectively. - Updated localization files to include new warning messages regarding conversation reassignments. - Modified tests to ensure proper functionality with the new relationship structure. * feat: update Kanban routing to use task-specific routes and improve modal handling * feat: enhance Kanban documentation with IndexedDB and ActionCable updates * feat: update task emit structure in Kanban components for consistency * chore: usealert instead of erro section for task modal * refactor: funnel -> board * refactor: filter icons -> kanban icons * feat: add agent and inbox assignment options in Kanban settings and enhance UI interactions * feat: rich text editor for descriptions * fix: navigateToSettings with empty args * feat: create board from template * feat: create board from template * feat: enhance title editing with keyboard shortcuts and paste handling * feat: update kanban feature plan with new entries for indexed db and board duplication * Add ActionCable listener for Kanban events and dispatch updates - Implemented `FazerAi::ActionCableListener` to handle events for Kanban tasks, steps, and boards. - Added methods to broadcast creation, update, and deletion events for tasks and steps. - Enhanced `FazerAi::Kanban::Board` model to dispatch events on updates and provide event data. - Updated `FazerAi::Kanban::BoardStep` and `FazerAi::Kanban::Task` models to dispatch events on create, update, and delete actions. - Introduced `FazerAi::Conversations::EventDataPresenter` to include Kanban task data in conversation events. - Added tests for ActionCable listener and event dispatching in Kanban models. - Updated event types in `lib/events/types.rb` to include Kanban-specific events. * feat: enhance conversation dispatching on task updates and destruction * feat: update timestamp handling and add conversation update dispatching in task model * feat: router links * feat: add task agent model and associated specs with event dispatching * feat: assign to me on task modal * test: remove stale specs * feat: enhance error handling and localization for Kanban module * feat: task sorting * feat: remove sorting option for tasks in Kanban feature plan * feat: improved admin/agent policy * chore: remove unused visible fields * feat: kanban webhook * feat: enhance kanban_task_deleted to handle task payload as Hash * chore: remove unused entities * feat: refactor task handling in KanbanColumn to use internal state management * feat: update task count retrieval logic in KanbanBoardSettingsPage * feat: auto-assign task agent to conversation * feat: enhance auto-assign logic to check agent assignability for conversations * feat: auto-create task for new conversation * fix: assign agent to task if assigned to conversation on create * feat: auto-assign task to agent * feat: step cancelled/completed modes * feat: mark task completed * feat: auto-resolve conversations on task end * feat: auto-complete task on conversation resolved * feat: kanban automation rules * chore: update impl plan docs * fix: handle potential null values in automation type retrieval * fix: handle cases where custom attribute keys are not found, returning default values * feat: improved automation rules * chore: consolidate kanban migrations * chore: update feature plan docs * chore: move kanban task id to conversation concern * chore: change kanban module name on superadmin * chore: cleanup routes and dead code * chore: remove comment from schema * chore: cleanup minor stuff * chore: remove -ee suffix from package name * chore: disable arm64 image build * feat: kanban fazer.ai subscription (#3) * feat: fazer.ai license management * feat: harden fazer.ai license checks * feat: update fazer.ai hub URL and adjust version check logic * feat: fazeraihub improvements * feat: fazer-ai-hub feature usage * feat: update feature usage on feature changes * feat: update grace period logic * fix: class typo * feat: cancel at period end * feat: enhance stub_fazer_ai_hub_request for improved testing * Chore/merge main (#4) * fix: handle potential null values in automation type retrieval (#163) * fix: handle potential null values in automation type retrieval * fix: handle cases where custom attribute keys are not found, returning default values * fix: log error message when Baileys API is unavailable (#164) * fix: z-api read message (#165) * fix: z-api read messages * fix: use threads for parallel requests * feat: use jobs instead * fix: refactor ZapiReadMessageJob to use service method for sending read messages * fix: improve error handling for Baileys API unavailability (#166) * Migrate workflows to Blacksmith * ci: migrate only publish image to blacksmith * ci: migrate only publish image to blacksmith * feat(kanban): task start and due dates (#9) * feat(kanban): task start and due dates * feat(kanban): add due date and start date status methods and tests * feat(kanban): task labels (#10) * feat(kanban): task start and due dates * feat(kanban): add due date and start date status methods and tests * feat(kanban): task labels * feat(kanban): start/due date on contact panel * feat: display kanban page disabled state (#11) * feat: display kanban page disabled state * ci: fix route test * feat: enhance subscription sync process and add mock server for testing (#12) * feat: enhance subscription sync process and add mock server for testing * feat: improve license control by ensuring safe HTML output and updating time handling in mock server * chore: standardize fazer.ai styling in mock server and documentation * feat: fazer.ai hub session (#13) * feat: enhance subscription sync process and add mock server for testing * feat: fazer.ai hub session id * feat: add thread safety to session ID management * feat(kanban): update task priority values and database schema (#14) * feat(kanban): update task priority values and database schema * chore: fix migration and add nil priority spec * chore: update copyright year and holder in fazer.ai license * feat: improve fazer.ai hub status handling and update sync job schedule (#15) * feat: improve fazer.ai hub status handling and update sync job schedule * feat: list account with fazer.ai features, and kanban enabled/disabled filter on account index * test: mock Internal::CheckNewVersionsJob in features_helper_spec (#16) * chore: update docs on fazer-ai-hub mock server * feat: include account_id in contact and inbox JSON responses (#182) * test: include account_id in inbox response validation * chore: ux improvements and bug fixes (#17) * chore: increase step header icon sizes * chore: different year formatting and prevent default during task rename * chore: enhance date formatting and add title validation in Kanban modals * chore: adjust ProseMirror height and overflow settings in Kanban modals * fix(kanban): step order improvements * chore: enhance Kanban column status icon styling and improve task title truncation in modals * chore: improve error handling by utilizing parseAPIErrorResponse in Kanban components * fix: improve error handling in parseAPIErrorResponse and prevent click event propagation in KanbanTaskCard * test: enhance error handling in parseAPIErrorResponse function (#18) * fix: kanban changed attributes (#19) * fix: adjust layout spacing in Kanban task card component * fix: refactor kanban task update handling and enrich changed attributes * test: ensure event is dispatched only once for task updates * fix: clear accumulated changes on rollback in Kanban task model * feat: optmized task fetching (#24) * feat: optmized task fetching * feat: enhance task fetching with filters and optimize state management * feat: implement jitter mechanism for version check job (#26) * feat: implement jitter mechanism for version check job * feat: make jitter window configurable for version check job * feat: add jitter mechanism to version check jobs * feat: update version check jitter window to 30 minutes * feat: fazer.ai superadmin improvements (#27) * feat: fazer.ai feature cards on superadmin settings * feat: update fazer.ai feature display in account features section * feat: update kanban feature references to remove 'chatwoot_' prefix * feat: sync hub on restart (#28) * feat: update kanban account limit handling and add subscription sync on startup * chore: remove useless check * feat: add early return for zero kanban account limit in reconcile_feature_limits * feat: enhance kanban feature access checks and update specs for account limits * feat: add kanban feature availability check and update related error messages * ci: skip version check job execution (#29) * fix: correct Rake application check in fazer.ai sync initializer * test: fix kanban errors * feat: implement infinite scroll loading for Kanban tasks (#30) * feat: implement infinite scroll loading for Kanban tasks * fix: improve infinite scroll handling by re-observing sentinel on load completion * fix: refactor infinite scroll handling by simplifying IntersectionObserver setup * fix: correct rootMargin and add threshold for intersection observer options * fix: update scheduling for internal version check job and improve sync logic (#31) * fix: update scheduling for internal version check job and improve sync logic * fix: update internal_check_new_versions_job schedule to run daily at noon UTC * Chore/merge main (#32) * fix: update send_attachment_message to address transcoding requirement (#191) * test: comment out test for audio attachment due to transcoding requirement * fix: Remove `phone_number_id` param from WhatsApp media retrieval for incoming messages (chatwoot#13319) Fixes chatwoot#13317 Fixes an issue where WhatsApp attachment messages (images, audio, video, documents) were failing to download. Messages were being created but without attachments. The `phone_number_id` parameter was being passed to the `GET /<MEDIA_ID>` endpoint when downloading incoming media. According to Meta's documentation: > "Note that `phone_number_id` is optional. If included, the request will only be processed if the business phone number ID included in the query matches the ID of the business phone number **that the media was uploaded on**." For incoming messages, media is uploaded by the customer, not by the business phone number. Passing the business's `phone_number_id` causes validation to fail with error: `Param phone_number_id is not a valid whatsapp business phone number id ID` This PR removes the `phone_number_id` parameter from the media URL request for incoming messages. * chore: general improvements (#33) * feat: paywall conversation panel * chore: disable automations when kanban is disabled * chore: update localization board -> funnel * feat: add kanban task overdue webhook (#34) * feat: add kanban task overdue webhook * refactor: update kanban task webhook events to use 'overdue' terminology * feat: kanban improvements (#36) * feat: enhance kanban templates with new sales and support steps and tasks * feat(kanban): only 1 cancelled step * chore: manage fazer.ai license button copy * fix(kanban): re-sort after moving task * feat: increase inbox icon sizes * feat: improved task automation rules * feat(kanban): step change time and status check on conversation panel * chore: copilot instructions * feat(kanban): update auto-complete task logic to exclude cancelled tasks * feat(kanban): implement assign_to_board action and enhance task description copying * chore: update copilot instructions to clarify spec evaluation criteria * chore: update swagger setup * docs: kanban api documentation * docs: include enums on schema definitions * docs: api docs favicon * docs: update swagger routes and improve index.html API reference * test: update swagger controller specs to correctly test redirection and response content * feat: enhance board creation to handle cancelled steps and update API… (#37) * feat: enhance board creation to handle cancelled steps and update API request structure * feat: update board creation to ignore cancellation for first and last step positions * feat: sync task and conversation agents functionality with updates to settings, models, and API documentation (#38) * feat: update API documentation for sync task and conversation agents with new properties and descriptions * Chore/merge main (#39) * fix: update send_attachment_message to address transcoding requirement (#191) * test: comment out test for audio attachment due to transcoding requirement * fix: Remove `phone_number_id` param from WhatsApp media retrieval for incoming messages (chatwoot#13319) Fixes chatwoot#13317 Fixes an issue where WhatsApp attachment messages (images, audio, video, documents) were failing to download. Messages were being created but without attachments. The `phone_number_id` parameter was being passed to the `GET /<MEDIA_ID>` endpoint when downloading incoming media. According to Meta's documentation: > "Note that `phone_number_id` is optional. If included, the request will only be processed if the business phone number ID included in the query matches the ID of the business phone number **that the media was uploaded on**." For incoming messages, media is uploaded by the customer, not by the business phone number. Passing the business's `phone_number_id` causes validation to fail with error: `Param phone_number_id is not a valid whatsapp business phone number id ID` This PR removes the `phone_number_id` parameter from the media URL request for incoming messages. * fix(whatsapp): fix conversation duplication on race condition (#193) * fix(whatsapp): update message source ID handling and improve Redis key formatting * fix(whatsapp): prevent updating contact_inbox on identifier conflict * fix(whatsapp): refactor conversation routing tests to use shared examples for better clarity and maintainability --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> * Chore/merge main (#40) * fix: update send_attachment_message to address transcoding requirement (#191) * test: comment out test for audio attachment due to transcoding requirement * fix: Remove `phone_number_id` param from WhatsApp media retrieval for incoming messages (chatwoot#13319) Fixes chatwoot#13317 Fixes an issue where WhatsApp attachment messages (images, audio, video, documents) were failing to download. Messages were being created but without attachments. The `phone_number_id` parameter was being passed to the `GET /<MEDIA_ID>` endpoint when downloading incoming media. According to Meta's documentation: > "Note that `phone_number_id` is optional. If included, the request will only be processed if the business phone number ID included in the query matches the ID of the business phone number **that the media was uploaded on**." For incoming messages, media is uploaded by the customer, not by the business phone number. Passing the business's `phone_number_id` causes validation to fail with error: `Param phone_number_id is not a valid whatsapp business phone number id ID` This PR removes the `phone_number_id` parameter from the media URL request for incoming messages. * fix(whatsapp): fix conversation duplication on race condition (#193) * fix(whatsapp): update message source ID handling and improve Redis key formatting * fix(whatsapp): prevent updating contact_inbox on identifier conflict * fix(whatsapp): refactor conversation routing tests to use shared examples for better clarity and maintainability * feat(whatsapp): delete messages on baileys/zapi providers (#194) * feat(baileys): implement message deletion functionality * feat(zapi): add message deletion functionality and corresponding tests * feat(whatsapp): update message deletion logic for provider compatibility * feat(whatsapp): enhance message deletion logic to handle missing phone numbers * feat: add message editing functionality with UI support (#195) * feat: add message editing functionality with UI support * feat: enhance message editing with content length validation and context menu adjustments * feat(baileys): add reply context handling (#196) --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> * fix: change button type to submit for saving custom views (#41) * feat: add navigation function to handle URL routing in KanbanTaskCard component (#42) * feat: add navigation function to handle URL routing in KanbanTaskCard component * feat: enhance link handling in KanbanTaskCard for better navigation experience * refactor: simplify task retrieval and update JSON response structure * fix: sidebar rendering for scheduled messages * feat(settings): validate FRONTEND_URL before refreshing instance status * feat: add localized date format for scheduled messages (#206) * feat(date-picker): add localized date and time formats for Kanban component * fix(kanban): add missing automation actions (#45) * fix(kanban): add missing automation actions * refactor(kanban): delegate conversation actions to ActionService * fix(kanban): set default parameter for create_scheduled_message method * chore: enterprise compatible branding * Revert "chore: enterprise compatible branding" This reverts commit 6fc9f3c. * chore: add branding configuration management and ENV overrides * feat: implement unlimited kanban accounts feature and update related logic (#46) * feat: implement unlimited kanban accounts feature and update related logic * test: add spec for handling nil kanban limit in reconcile_subscription_service * fix: update kanban task on conversation changes and enhance event data presentation (#47) * fix: update kanban task on conversation changes and enhance event data presentation * fix: include cancelled status in kanban task and board step data * chore: include contact email and phone number in conversation data (#48) * chore: include contact email and phone number in conversation data * chore: refactor contact data structure in conversation payload * chore: move contact and conversation push data methods to the end of the class * chore: include step color in payloads (#49) * fix: kanban feature flag index mismatch * fix: email delivery in Email::SendOnEmailService (#217) * fix: email delivery in Email::SendOnEmailService * fix: handle nil response from email_reply in Email::SendOnEmailService * feat: Implement existing template linking for CSAT surveys (#218) * feat: Implement existing template linking for CSAT surveys - Added functionality to link existing CSAT templates for WhatsApp channels. - Introduced a new component for selecting existing templates. - Updated the dashboard settings page to support template mode switching between creating new and using existing templates. - Enhanced the CSAT template management service to handle linking existing templates and fetching available templates. - Updated API routes to include linking and fetching available templates. - Added tests for the new linking functionality and template availability checks. * feat: Enhance CSAT template handling and validation across services and components * feat: Refactor body variable extraction for CSAT templates and update related validations * feat: Add linked_at field to CSAT template responses and update related handling * feat: Add tests for ConversationDrop date formatting and CSAT template body variable handling * chore: add S3-compatible storage configuration options to environment files (#219) * feat: add audio transcoding support for WhatsApp Cloud API (#220) * feat: add audio transcoding support for WhatsApp Cloud API - Introduced `Audio::TranscodeService` to handle audio transcoding to OGG/Opus format. - Updated `Messages::MessageBuilder` to transcode audio attachments based on `transcode_audio` parameter. - Enhanced `WhatsappCloudService` to normalize audio content types and send voice flag for recorded audio in OGG format. - Added utility functions for audio conversion in JavaScript. - Updated Dockerfile to include FFmpeg for audio processing. - Added tests for audio transcoding and WhatsApp Cloud service interactions. * feat: enhance audio handling with transcoding support and error management * feat: improve audio transcoding error handling and enhance audio recording features * feat: enhance audio transcoding process and error handling for better reliability * feat: update recorded audio handling to support boolean and array formats * docs: add audio transcoding and recorded audio support for message attachments * fix: remove normalization of opus content type in send_attachment_message * fix: include additional_attributes for contact social profiles in event data (#51) * fix: conversation display ids (#52) * fix: update conversation ID references to use display IDs across kanban components * fix: update pagination logic and meta response for board_id filtering in tasks request spec * fix: update conversation ID references to use display IDs in task-related specs * fix: remove conversation database ID references and ensure display IDs are used consistently * fix: namespace middleware class for FazerAiPlatformHeader (#53) * chore: hide disabled premium options (#54) * chore: increase task due job frequency (#55) * chore: increase task due job frequency * chore: add overdue_webhook_sent_at to kanban_tasks and update job logic * chore: improve task overdue webhook processing and add related specs * chore: enhance task overdue webhook processing and update related specs * chore: replace overdue_webhook_sent_at with overdue_notified_at in kanban tasks and update related job logic * chore: enhance error handling in TriggerTaskDueWebhooksSchedulerJob and add related spec * refactor: update webhook job parameters to include account webhook and delivery ID * fix(kanban): migrate vue-multiselect to next components Replace all vue-multiselect usages in kanban with upstream replacements after the package was removed in the 4.12.0 merge: - Agents/inboxes pickers → TagMultiSelectComboBox - Label pickers → LabelItem + AddLabel (preserving color dots) - Conversations/contacts pickers → TagInput (API-driven search) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: update kanban webhook specs to match new WebhookJob parameters The webhook job signature was updated to include account_webhook type, secret, and delivery_id, but the kanban webhook specs weren't updated. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(baileys): read groups_enabled flag dynamically from ENV GROUPS_ENABLED was a Ruby constant evaluated once at class load time, so changes to the env var were not picked up on boot. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(kanban): restore auto-save for agents and inboxes pickers Replace watchers with direct event handlers that clone the array and save immediately. The watcher approach silently skipped saves because TagMultiSelectComboBox mutates the shared array reference in-place before emitting, making old and new values identical to the comparator. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ci: migrate Run Chatwoot CE spec workflow to Blacksmith CI Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(kanban): resolve PG error when agent sorts tasks by position or priority Replace LEFT OUTER JOIN + DISTINCT with EXISTS subqueries in the task policy scope and controller filters. DISTINCT conflicted with COALESCE ORDER BY expressions used for position/priority sorting, causing a 500 for non-admin agents. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: blacksmith-sh[bot] <157653362+blacksmith-sh[bot]@users.noreply.github.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change is