v0.1.3 — release integrity and correctness fixes
Correctness fixes from an integration review against a real host, plus the dependency bump that makes signing work without turning staff into messagers.
Fixed
- Opening a case and its first message is atomic. A rejected upload no longer leaves a case with nothing in it; the validation error renders with the draft preserved.
- Reopening a historical case keeps both conversations when a newer case already exists, instead of collapsing them. New submissions still reuse the open case.
- Assignment authorizes its actor, and assignment, hand-off, release and the reply policy all check current state under the row lock — so two agents racing on the same case cannot both win.
- Delayed message registration reads both clocks to decide whose turn it is, and can no longer reopen a case that was closed after the message was sent.
- Reading a console transcript marks the desk's read horizon through the last message actually displayed.
- Topics resolve within their own ticket's desk, and wizard routing and response promises honour non-default desks.
- The requester upload form is multipart, and its send budget is shared with chats rather than being a second, separate limit.
Requires chats >= 0.3.2
Authors there need no messaging capabilities of their own, so a staff member signs a desk's reply without being given acts_as_messager. The dependency is ~> 0.3, >= 0.3.2.
Upgrading
No migration, no configuration change. If you are on 0.1.1, upgrade regardless: that package was built from the wrong tree and raises on every requester screen.
Verified
| Tests | 661 runs, 3004 assertions, 0 failures |
| Databases | SQLite, PostgreSQL |
| Rails | 7.2, 8.0, 8.1 |
| Lint / security | rubocop clean, brakeman 0 warnings |
What's Changed
New Contributors
Full Changelog: v0.1.2...v0.1.3