Skip to content

v0.2.0

Choose a tag to compare

@rameerez rameerez released this 17 Sep 21:53
· 34 commits to main since this release
4701814

support_desk 0.2.0 — the desk can write first

lucia.open_support_conversation_with!(alice, "We saw your refund bounced", about: order)
  • New verb, same seam. agent.open_support_conversation_with!(requester, message, about:, topic:) over Ticket.open!(…, by: agent); opened_by is a record like closed_by, with opened_by_requester? / opened_by_support? and scopes.
  • Atomic. The case, the opener's seat (reason: opened, no announcement), the opening line and the first message are one savepoint — a refused message leaves nothing behind. reply! gets the same guarantee.
  • The limits are on asking, not on being asked. open_rate_limit / max_open_tickets count only requester-opened cases.
  • config.opening_line / config.opening_line_from_support — the system line a thread opens with, posted inside the transaction and ordered before the first message by construction. config.find_requester for the console's "Write to someone". has_support_tickets if: — who may ask and be written to; eligibility is checked at every write.
  • Console: new + open_conversation, GlobalID allow-lists, reuse authorization under the row lock, 303/422 with the draft preserved; the door in the mounted and generated consoles.
  • Schema: one additive migration (rails g support_desk:upgrade), rake support_desk:backfill_opened_by, doctor checks.
  • Read the CHANGELOG's "Upgrading from 0.1": this is a drained cutover, not a rolling deploy — 0.1 processes reject the new opened assignment reason.
  • Verified on Rails 7.2 / 8.0 / 8.1 (SQLite) and PostgreSQL; rubocop and brakeman clean.

What's Changed

  • Writing first: the desk can open the conversation (0.2.0) by @rameerez in #3

Full Changelog: v0.1.3...v0.2.0