Co nowego: - Wsparcie Active Directory dla LDAP (obok LLDAP/OpenLDAP), przełącznik typu katalogu w Admin > Integracje. - Wyszukiwarka klientów dla operatora (Operator > Klienci). - Stronicowanie kolejki operatora (50/stronę) i dashboardu klienta (20/stronę). - Globalna wyszukiwarka zgłoszeń (Ctrl+K/Cmd+K) z operatorami w stylu Gmaila (od:, temat:, treść:, numer:), plus przycisk "Szukaj" w panelu bocznym. - Ostatnio przeglądane zgłoszenia w panelu bocznym operatora. - Przeprojektowany pasek nawigacji: suwak Klient/Operator/Administrator zamiast rozwijanego menu, bogatsze menu profilu (nazwa/e-mail/role), dynamiczne tytuły kart przeglądarki na każdej podstronie. - Narzędzie do jednorazowego importu historii zgłoszeń z Heska 3.x (scripts/hesk-import/). - Poprawka: paginacja pokazywała surowe klucze tłumaczeń zamiast tekstu (brakujący lang/pl/pagination.php). Zaktualizowana dokumentacja: README, CLAUDE.md, install.md, ARCHITECTURE.md, CHANGELOG.md, wiki/*. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.5 KiB
Contributing
Internal helpdesk project for a single production deployment — this guide covers the practical local workflow, not an open-source contribution process.
Local setup
See install.md for full environment setup (Docker Compose or
bare-metal). For day-to-day development the app container mounts ./src
directly, so PHP/Blade/route changes apply immediately — no rebuild or restart
needed. CSS/JS changes need a Vite build (see the "Local/dev notes" section of
README.md); Node isn't installed on the host or in the app image, so
build through a throwaway node:22 container as documented there.
Before opening a PR / merging
- Run the test suite — see TESTING.md for details:
docker compose exec app php artisan test - Run Pint (Laravel's code-style fixer, default preset, no project overrides):
docker compose exec app ./vendor/bin/pint - If you changed anything under
resources/, rebuild the frontend bundle and commit the result ifpublic/build/is tracked, or confirm the deploy step will rebuild it (see install.md). - If you touched the data model, add/update a migration rather than editing an existing one that has already shipped, and update ARCHITECTURE.md if the change affects the ticket lifecycle or role/permission model.
Commit messages
Short, imperative summary line (e.g. Add SLA breach email toggle); add a body
only when the why isn't obvious from the diff.
Code organization
Follow the existing structure rather than introducing new patterns:
app/Livewire/{Client,Operator,Admin,Auth}/— one component per screen/area, gated by the matching route middleware (role:client,role:operator,role:admin).app/Services/TicketService.php— ticket lifecycle logic (create/transition/ notify) lives here, not in Livewire components.app/Models/— one Eloquent model per table; keep query scopes and display/ formatting helpers (labels, style/color helpers) on the model as done forTicket(statusLabel(),slaInfo(), etc.) rather than duplicating them in views.database/migrations/— one migration per table group, representing final shape (not an incremental history to replay for intuition).routes/web.php/routes/api.php— keep role/ability gating at the route group level, matching the existing pattern.
See ARCHITECTURE.md for how these pieces fit together.