v1.2.0
- E-mail intake (IMAP), optional and off by default: clients can create a ticket or reply to an existing one just by sending/replying to an e-mail. Configure any number of mailboxes in the new Admin > Poczta page (SMTP + IMAP together, replacing the old "E-MAIL" tab), each routed to a specific subcategory or a whole category (new tickets.category_id column). Replies are matched to their ticket via the number/checksum already in every notification subject; autoresponders/bounces are detected and rejected; "restrict tickets to LDAP" is enforced for e-mail like the guest web form. Manual "Pobierz teraz" per-mailbox fetch button; dedicated storage/logs/imap-*.log regardless of the app's log level; mail-icon badges on e-mail-originated tickets/messages in the operator queue and ticket view. - Operator queue: "select all" checkbox in the table header for every currently visible ticket under the active filter/tab. - Fixed: scheduled commands (SLA breach check, automation rules, and now IMAP fetch) always sent notifications through .env's default mailer instead of the configured SMTP server, because AppServiceProvider's Settings override used to skip itself for any console command, not just migrate. - Fixed: visiting a ticket that no longer exists (deleted mid-session, or a stale background refresh) showed a raw 404 instead of redirecting back to the operator queue / client dashboard. - Docs: README/ARCHITECTURE/CLAUDE/install/wiki updated for all of the above, including the previously-missing host crontab entry for schedule:run. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
61
CHANGELOG.md
61
CHANGELOG.md
@@ -3,6 +3,67 @@
|
||||
All notable changes to this project are documented in this file. Format loosely
|
||||
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [1.2.0] - 2026-07-23
|
||||
|
||||
### Added
|
||||
|
||||
- **E-mail intake (IMAP)**, optional and off by default — clients can create a
|
||||
ticket or reply to an existing one just by sending/replying to an e-mail.
|
||||
Configure any number of mailboxes in the new **Admin > Poczta** page (which
|
||||
now hosts SMTP alongside IMAP, replacing the old "E-MAIL" tab), each with
|
||||
its own host/port/encryption/credentials/folder and routed to either a
|
||||
specific subcategory (routes to that subcategory's team, same as a web
|
||||
ticket) or a whole category with no subcategory (a new `tickets.category_id`
|
||||
column covers this case — previously a ticket's category only ever came
|
||||
through a subcategory).
|
||||
- A reply is matched back to its ticket via the number/checksum already
|
||||
present in every notification e-mail's subject — works with either the
|
||||
plain sequential number or the obfuscated checksum, whichever numbering
|
||||
mode is active, no changes to outbound templates needed.
|
||||
- Automatic replies (autoresponders, "out of office", bounces/mailer-daemon)
|
||||
are detected via headers and common EN/PL subject phrasing and rejected
|
||||
instead of creating a ticket; a per-mailbox sender blocklist covers the
|
||||
rest. The "tylko użytkownicy z LDAP" restriction is enforced for e-mail
|
||||
exactly like the guest web form.
|
||||
- A "Pobierz teraz" button per mailbox fetches immediately, outside the
|
||||
5-minute schedule — useful for testing a freshly-configured mailbox or
|
||||
diagnosing why a specific e-mail didn't turn into a ticket.
|
||||
- Every connection attempt and per-message decision (accepted/rejected/
|
||||
matched to which ticket) is logged to a dedicated `storage/logs/imap-*.log`
|
||||
file, independent of the app's own log level.
|
||||
- Tickets and individual messages that came in by e-mail show a small
|
||||
mail-icon badge in the operator queue and ticket view, distinguishing them
|
||||
from ones created/replied to on the web.
|
||||
- **Operator queue**: a "select all" checkbox in the table header
|
||||
selects/deselects every ticket currently visible under the active
|
||||
filter/tab in one click, instead of clicking each row's checkbox.
|
||||
|
||||
### Changed
|
||||
|
||||
- Admin's old **"E-MAIL"** tab is now **"Poczta"** and also lists/manages the
|
||||
IMAP mailboxes above — the two halves of "reply by e-mail" (send/receive)
|
||||
now live together instead of SMTP being off on its own.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Scheduled-command notifications were silently going nowhere.**
|
||||
`AppServiceProvider`'s Settings-based config override (SMTP/LDAP/session/
|
||||
timezone) used to skip itself for *any* console command, not just
|
||||
`migrate` — meaning `tickets:check-sla-breaches` and `automation:run-rules`
|
||||
(and now `emails:fetch-imap`) always sent their e-mails through whatever
|
||||
`.env`'s `MAIL_MAILER` happened to be (`log`, i.e. nowhere) instead of the
|
||||
admin-configured SMTP server, with no visible error. Now scoped to just the
|
||||
`migrate` command family, so every scheduled command gets the same live
|
||||
config a web request would.
|
||||
- Visiting a ticket that no longer exists (most commonly: it was deleted
|
||||
while the viewer had it open, and a later background refresh hit the same
|
||||
URL) no longer shows Laravel's default 404 page — redirects back to the
|
||||
operator queue or client dashboard instead.
|
||||
- This host had no crontab entry at all for `php artisan schedule:run` —
|
||||
meaning SLA breach checks and automation rules had never actually run on
|
||||
their own, only ever on request. Documented and configured (see
|
||||
[CLAUDE.md](CLAUDE.md)).
|
||||
|
||||
## [1.1.4] - 2026-07-23
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user