- 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>
- Real-time updates (Laravel Reverb): live operator queue, live ticket
chat/detail updates for operator and client, periodic fallback refresh
with a visible countdown as a backstop for dropped websocket connections.
- SLA automation rules (Admin > Automatyzacja SLA): act on a ticket after
N minutes of customer silence (change priority/status/team/assignee),
evaluated every 15 minutes, reusing TicketService's own setters so
automated changes get the same history/notification/broadcast a manual
change would.
- New notification: every operator on a matching team gets notified when
a new ticket lands in one of their subcategories.
- BookStack knowledge-base sidebar now also shown on the client's own
ticket view (previously operator-only); suggestions everywhere now load
in after first paint instead of blocking it.
- Client ticket view: shows assigned operator + team; page widened to
match the operator's.
- Notification bell shows unread only; read notifications disappear
instead of just dimming.
- Stats dashboard: sectioned layout, new breakdowns (by subcategory, CSAT
by team/operator, top clients, client x subcategory cross-tab).
- Mobile: nav dropdowns (theme/notifications/profile) now expand full
width instead of overflowing off-screen below 640px.
- Fixed two bugs that silently disabled all real-time updates (missing
CSRF header on Echo's private-channel auth; a script-load-order race
that could miss the livewire:init event) and the mariadb healthcheck
(world-writable credentials file on this stack's NFS mount).
- Assorted test-suite fixes (roles virtual attribute needs the roles
table seeded; a few missing seeds/wrong assertions found along the way).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>