Skip to content

feat(side-conversations): side conversations#67

Merged
mpge merged 1 commit into
mainfrom
feat/side-conversations
Jun 25, 2026
Merged

feat(side-conversations): side conversations#67
mpge merged 1 commit into
mainfrom
feat/side-conversations

Conversation

@mpge

@mpge mpge commented Jun 25, 2026

Copy link
Copy Markdown
Member

Ports side conversations from the Laravel reference, closing WordPress''s last core-engine parity gap.

What

  • SideConversation + SideConversationReply models + tables (escalated_side_conversations, escalated_side_conversation_replies via dbDelta): private internal/email threads attached to a ticket. A conversation opens with a first reply, replies append, and it can be closed. Channel ∈ {internal, email}; status openclosed. Pure valid_channel() helper.
  • SideConversationService — mirrors the Laravel SideConversationController: create() (validates subject/channel/body, opens with first reply), add_reply(), close(), for_ticket() (newest first, replies attached).

Verification

  • php -l clean on all files.
  • vendor/bin/pint --test (the lint CI gate) passes on all changed files.
  • New Test_Side_Conversation_Service — pure valid_channel test + live-wpdb flow (create opens with first reply; rejects empty subject/body + bad channel; reply + close; for_ticket attaches replies newest-first). Runs in CI against the WP test harness.
  • New dbDelta blocks copy the exact format of the existing tables.

Port side conversations from the Laravel reference. Adds SideConversation
and SideConversationReply models + tables (private internal/email threads
attached to a ticket, opened with a first reply, appendable, and closable)
and a SideConversationService enforcing the rules: subject and body
required, channel must be internal or email.
@mpge mpge merged commit 669afeb into main Jun 25, 2026
3 checks passed
@mpge mpge deleted the feat/side-conversations branch June 25, 2026 03:19
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.

1 participant