Files
redmine/docs/redmineup_local_fork_changelog.md
T
2026-04-24 22:01:18 +00:00

4.0 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_contacts 4.1.2 PRO
    • redmine_contacts_helpdesk 3.0.9 PRO
  • 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_outbox plugin with issue/journal/contact events.
    • Optional helpdesk outbox hooks for HelpdeskTicket and JournalMessage.
    • 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.
    • Full end-to-end helpdesk outbox validation is still pending.
  • Next meaningful milestone:
    • Build the external worker/indexer that consumes event_outbox_events, enriches via read-only MySQL joins, and emits deterministic ticket/message documents for external indexing.

2026-04-24 - POP3 Get Mail Compatibility Fix

  • Touched plugin:
    • redmine_contacts
    • redmine_contacts_helpdesk
  • Purpose:
    • Fix Helpdesk POP3 retrieval on the LAN test host when Ruby 2.5 raises FrozenError: can't modify frozen String inside Net::POP3.
    • Allow Helpdesk outbound mail to use Mailpit's unauthenticated SMTP listener.
  • Behavior changed:
    • Changed POP3 message retrieval from msg.pop to msg.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, and password when the project SMTP authentication setting is blank.
  • 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 PLAIN with 502 5.5.1 Command not implemented. After blanking SMTP auth settings and omitting auth options, a Helpdesk test mail for issue #39863 was delivered to Mailpit.

2026-04-21 - Helpdesk Search Foundation

  • Archives created before plugin edits:
    • dist/redmine_contacts-4.1.2-local-before-helpdesk-search-20260421T215548Z.tar.gz
    • dist/redmine_contacts_helpdesk-3.0.9-local-before-helpdesk-search-20260421T215548Z.tar.gz
  • Touched plugins:
    • redmine_contacts_helpdesk
    • redmine_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 existing view_helpdesk_tickets permission.
    • Added optional outbox hooks for HelpdeskTicket and JournalMessage.
  • 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 new helpdesk_search/* endpoints with a user/API key that has view_helpdesk_tickets.