6.4 KiB
6.4 KiB
RedmineUP Local Fork Changelog
The installed RedmineUP redmine_contacts and redmine_contacts_helpdesk
plugins are treated as locally maintained legacy code for this Redmine 3.4.4
environment. Before risky edits, archive the current plugin directories in
dist/ and record the purpose, touched behavior, and LAN test result here.
Current Checkpoint
- Baseline:
- Redmine
3.4.4 redmine_contacts4.1.2 PROredmine_contacts_helpdesk3.0.9 PRO
- Redmine
- Strategic direction:
- Treat helpdesk/customer data as first-class.
- Prefer local-fork plugin edits when they unlock safer search/indexing.
- Keep Redmine request paths independent from external worker/index failures.
- Implemented locally:
redmine_event_outboxplugin with issue/journal/contact events.- Optional helpdesk outbox hooks for
HelpdeskTicketandJournalMessage. - Read-only
helpdesk_search/*JSON endpoints in the local helpdesk fork. - Standalone contact CLI and read-only helpdesk export/search CLI.
- LAN deployment status:
- Helpdesk search routes were deployed and route-loaded successfully on the LAN Redmine copy.
- Short alias/usage routes were added to avoid noisy routing errors during manual browser testing.
- Helpdesk mail import, Helpdesk metadata lookup, default non-email updates, and explicit outbound Helpdesk replies are live-smoke-tested through redMCP.
- Helpdesk outbox/worker validation now has a repeatable live script.
- Next meaningful milestone:
- Run
validate_helpdesk_outbox_worker.pyafter outbox or worker changes, then choose the external index target and durable processing policy.
- Run
2026-04-25 - Helpdesk Outbox Worker Validation
- Touched areas:
- Helpdesk test tooling
- External outbox worker validation docs
- Purpose:
- Make Helpdesk outbox coverage repeatable after database refreshes and worker changes.
- Validate worker enrichment against a real Mailpit-imported Helpdesk ticket without claiming rows or marking them processed.
- Behavior checked:
- Controlled Helpdesk import produces
helpdesk_ticket.created,helpdesk_ticket.updated,journal_message.created,journal.created, andissue.updatedrows. - Worker dry-run enrichment emits
event,ticket, andmessagedocuments. - Derived message documents expose
has_bcc_addressbut do not expose rawbcc_address.
- Controlled Helpdesk import produces
- LAN test result:
./validate_helpdesk_outbox_worker.pypassed againstfud-helpdeskandfud-nohelpdesk.- Latest documented passing run created and closed controlled Helpdesk issue
#39873. - Observed outbox rows: 1
helpdesk_ticket.created, 3helpdesk_ticket.updated, 1journal_message.created, 3journal.created, and 2issue.updated. - Worker dry-run enrichment produced 10
event, 6ticket, and 2messagedocuments without claiming or marking rows processed.
2026-04-24 - Helpdesk/redMCP Smoke Validation
- Touched areas:
redMCP- Helpdesk test tooling
- Purpose:
- Prove the LAN test instance can import a Helpdesk email, expose its Helpdesk metadata through redMCP, update a non-Helpdesk control issue, send an explicit Helpdesk reply, and verify outbound delivery through Mailpit.
- Make customer-visible Helpdesk email opt-in in redMCP.
- Behavior clarified:
RedMCP\RedmineClient::updateIssue()uses the normal Redmine REST API and does not send a Helpdesk email by default.updateIssue(..., ['send_helpdesk_email' => true])andsendHelpdeskIssueResponse()deliberately use the Helpdesk email path.
- LAN test result:
./helpdesk_smoke_test.pypassed againstfud-helpdeskandfud-nohelpdesk.- The smoke test verifies that a default issue update does not send Mailpit mail, while an explicit Helpdesk response does.
- Latest documented passing run created and closed controlled Helpdesk issue
#39871.
2026-04-24 - POP3 Get Mail Compatibility Fix
- Touched plugin:
redmine_contactsredmine_contacts_helpdesk
- Purpose:
- Fix Helpdesk POP3 retrieval on the LAN test host when Ruby 2.5 raises
FrozenError: can't modify frozen StringinsideNet::POP3. - Allow Helpdesk outbound mail to use Mailpit's unauthenticated SMTP listener.
- Fix Helpdesk POP3 retrieval on the LAN test host when Ruby 2.5 raises
- Behavior changed:
- Changed POP3 message retrieval from
msg.poptomsg.pop(String.new)so Ruby's POP3 code appends chunks into an explicit mutable destination string. - This does not change message handling semantics; it only avoids relying on Ruby's default empty string argument being mutable.
- Changed Helpdesk SMTP delivery option construction to omit
authentication,user_name, andpasswordwhen the project SMTP authentication setting is blank.
- Changed POP3 message retrieval from
- LAN test result:
- Deployed to
/usr/share/redmine/plugins/redmine_contacts. HelpdeskMailer.check_project(Project.find("fud-helpdesk").id)completed successfully and processed 1 message.- Deployed to
/usr/share/redmine/plugins/redmine_contacts_helpdesk. - Mailpit rejected
AUTH PLAINwith502 5.5.1 Command not implemented. After blanking SMTP auth settings and omitting auth options, a Helpdesk test mail for issue#39863was delivered to Mailpit.
- Deployed to
2026-04-21 - Helpdesk Search Foundation
- Archives created before plugin edits:
dist/redmine_contacts-4.1.2-local-before-helpdesk-search-20260421T215548Z.tar.gzdist/redmine_contacts_helpdesk-3.0.9-local-before-helpdesk-search-20260421T215548Z.tar.gz
- Touched plugins:
redmine_contacts_helpdeskredmine_event_outbox
- Purpose:
- Make helpdesk ticket and message identity available to external search and indexing workers.
- Avoid relying on Redmine issue author when helpdesk-created tickets use
Anonymous.
- Behavior changed:
- Added read-only
helpdesk_search/*JSON endpoints guarded by the existingview_helpdesk_ticketspermission. - Added optional outbox hooks for
HelpdeskTicketandJournalMessage.
- Added read-only
- Payload/content policy:
- Include ids, source, direction, message id, and non-body address metadata.
- Do not copy email bodies, private note text, attachments, or BCC addresses into event rows or the read API.
- LAN test result:
- Pending. Validate on the LAN Redmine copy by creating/updating a controlled
helpdesk ticket and journal message, checking
event_outbox_events, and calling the newhelpdesk_search/*endpoints with a user/API key that hasview_helpdesk_tickets.
- Pending. Validate on the LAN Redmine copy by creating/updating a controlled
helpdesk ticket and journal message, checking