- version: 0.7.0 date: 2026-06-22 type: feature summary: Add database-backed user-specific ticket timer controls. changes: - Added a Helpdesk TicketTimer Livewire component using the established Modules/Helpdesk/Livewire path. - Added persistent started_at, ended_at, and duration_seconds fields to existing helpdesk time logs where available. - Added a reusable Blade include for placing the timer above the existing manual time log form. - Added regression tests for module path, Livewire view root safety, and non-session timer state. - version: 1.9.30 date: 2026-06-23 type: bugfix summary: Clean up Helpdesk timer UI state and remove duplicate timer display code. changes: - Replaced the oversized timer display with a compact professional ticket timer panel. - Hid the elapsed timer before start and after end so it only displays while a timer is active. - Added an inline loaded browser timer updater in the Livewire view instead of an unused standalone JavaScript file. - Removed duplicate running timer summary and MutationObserver logic from ticket controls. - Registered the timer Livewire component with the helpdesk.ticket-timer alias. - Removed duplicate Resources/views/views timer files and macOS artefacts from the clean module. - Added file-level regression coverage for the timer UI cleanup. - version: 1.9.31 date: 2026-06-23 type: bugfix summary: Reduce Helpdesk start timer button size. changes: - Made the inactive-state Start timer button more compact while preserving accessible focus and loading states. - Kept the timer display hidden before start and after end, with no new standalone JavaScript files. - version: 1.9.32 date: 2026-06-23 type: bugfix summary: Widen Helpdesk start timer button so the label fits on one line. changes: - Updated the inactive Start timer action with a minimum width and no-wrap text so the label does not split. - Preserved the clean inline timer display behaviour with no unused standalone JavaScript file. - version: 1.9.33 date: 2026-06-23 type: bugfix summary: Widen Helpdesk end timer button so the label fits on one line. changes: - Updated the active End timer action with the same minimum width and no-wrap text treatment as the Start timer button. - Preserved the inline timer updater and avoided adding unused standalone JavaScript files. - version: 1.9.34 date: 2026-06-23 type: bugfix summary: Add explicit public/internal response controls to Helpdesk ticket conversations. changes: - Added a clear Public reply versus Internal note visibility selector to the main ticket response form. - Added the same visibility selector to threaded response forms so replies can be made public deliberately. - Added public/internal badges to conversation entries so response visibility is obvious after posting. - Preserved append-only changelog history and avoided adding unused JavaScript or orphan files. - version: 1.9.35 date: 2026-06-23 type: bugfix summary: Fix Helpdesk first-response SLA status after public replies. changes: - Updated public Helpdesk responses so they satisfy the first-response SLA state instead of only increasing the public reply counter. - Added first-response SLA synchronisation for existing tickets that already have public replies but a missing first_response_at value. - Improved the SLA card wording so pending tickets say Awaiting public reply and responded tickets show Responded. - Added regression coverage for public response SLA state and preserved append-only changelog history. - version: 1.9.36 date: 2026-06-23 type: feature summary: Add operational SLA status detail to Helpdesk ticket pages. changes: - Added first-response SLA wording that shows Responded, Responded late, Due soon, Breached, or Awaiting public reply as appropriate. - Added responded-in duration, first responder name, and first public response timestamp to the SLA panel. - Added resolution SLA wording with resolved-in duration and matching met, due-soon, and breached colour states. - Added a compact SLA audit trail showing recorded SLA events, due times, breach/met state, and actor details where available. - Updated public reply counting to include threaded public replies as well as root comments. - Preserved append-only changelog history. - version: 1.9.37 date: 2026-06-23 type: documentation summary: Add Helpdesk module README instructions for closing tickets and SLA response handling. changes: - Added a base module README documenting how to close tickets with a mandatory closure comment. - Documented Public Reply versus Internal Note usage for responses and SLA handling. - Documented recommended close-ticket UI behaviour, closure templates, SLA meanings, audit expectations, reopening guidance, and Helpdesk development standards. - Preserved append-only changelog history. - version: 1.9.38 date: 2026-06-23 type: bugfix summary: Enforce mandatory closure comments when closing Helpdesk tickets. changes: - Added a close-ticket confirmation dialog that opens when a closed status is selected without a closure comment. - Added server-side validation so closed statuses cannot be saved without a meaningful closure comment. - Stored the closure comment as a Helpdesk response with Public Reply as the default visibility and Internal Note as an explicit option. - Updated the status control UI with closed-status metadata and accessible modal controls. - Added regression tests for blocked closure without a comment and successful closure with an auditable comment. - Preserved append-only changelog history. - version: 1.9.39 date: 2026-06-23 type: bugfix summary: Fix Helpdesk ticket create editor body synchronisation. changes: - Updated the ticket creation rich-text Details editor so content is pushed into the Livewire body property before validation. - Added Livewire navigation-safe editor initialisation so the sync logic works after wire:navigate page changes. - Added input, keyup, paste, blur, and submit-capture synchronisation to prevent false "body field is required" validation failures. - Changed the hidden body field to live Livewire binding so the server receives the latest editor content without requiring a page reload. - Preserved append-only changelog history. - version: 1.9.40 date: 2026-06-23 type: bugfix summary: Prevent duplicate Helpdesk ticket references during ticket creation. changes: - Updated Helpdesk ticket reference generation to use the highest existing yearly reference suffix instead of the latest database row id. - Added a PostgreSQL transaction-level advisory lock around reference generation to reduce concurrent ticket creation collisions. - Added retry handling around ticket creation so reference unique-index collisions do not produce a user-facing 500 error. - Added regression coverage for out-of-order ticket references so lower references cannot be reused accidentally. - Preserved append-only changelog history. - version: 1.9.41 date: 2026-06-23 type: bugfix summary: Fix Helpdesk ticket reference collisions caused by soft-deleted references and remove category agent N+1 queries. changes: - Updated ticket reference generation to include soft-deleted tickets and bypass global scopes when calculating the highest yearly reference suffix. - Preserved the PostgreSQL advisory transaction lock and collision retry behaviour while preventing deleted references from being reused against the unique index. - Eager-loaded category agents where categories are used by ticket creation/editing and agent assignment logic to remove the detected N+1 query warning. - Added regression coverage to ensure soft-deleted ticket references are never reused. - Preserved append-only changelog history. - version: 1.9.42 date: 2026-06-23 type: bugfix summary: Stop premature Helpdesk ticket create validation and single-click submit failures. changes: - Moved TicketCreate validation from Livewire attribute-based live validation to submit-only rules so errors appear only after Create Ticket is clicked. - Changed the hidden rich-text Details body field away from live model updates to prevent a pre-submit $commit request from racing the save action. - Kept the editor submit synchronisation so the latest rich-text content is copied into the Livewire body property before validation. - Added an isSaving guard and save-target loading state so duplicate clicks cannot create duplicate submit attempts. - Added regression coverage proving draft edits do not fire validation before submit. - Preserved append-only changelog history. - version: 1.9.43 date: 2026-06-23 type: feature summary: Add Helpdesk stabilisation pack for spellcheck, durable ticket references, workflow documentation and regression coverage. changes: - Added a dedicated helpdesk_ticket_sequences migration so ticket references use a durable yearly sequence instead of relying only on scanning existing tickets. - Updated TicketReferenceService to lock and increment the yearly sequence row inside the ticket creation transaction while still seeding the initial value from active and soft-deleted ticket references. - Enabled browser-native spell checking on ticket creation, public replies, threaded replies, timer notes and closure comments. - Added README workflow instructions for create, public reply, internal note, close, reopen, SLA, timers, attachments, spell checking and ticket reference sequencing. - Added regression coverage for the sequence implementation, spellcheck wiring and documented stabilised workflows. - Preserved append-only changelog history. - version: 1.9.44 date: 2026-06-23 type: bugfix summary: Make Helpdesk ticket create spellcheck visible and repair Clear button DOM reset behaviour. changes: - Added a visible Spellcheck on badge and explanatory helper text to the ticket Details editor so users can see browser spellcheck is active. - Updated the Create Ticket Clear action with a loading state and Dusk hook. - Added inline reset handling for the rich-text editor, hidden body field, subject field, attachments, Select2 controls and date picker controls after the Livewire clear event. - Added regression coverage to prevent the visible spellcheck marker and clear-form reset wiring from being removed accidentally. - Preserved append-only changelog history. - version: 1.9.45 date: 2026-06-23 type: bugfix summary: Make Helpdesk spellcheck suggestions available through native text areas. changes: - Replaced the ticket create Details rich contenteditable surface with a native spellcheck text area so browser spelling suggestions are available from the context menu. - Replaced the main ticket reply rich contenteditable surface with a native spellcheck text area for consistent right-click and Ctrl-click spelling suggestions. - Kept hidden Livewire body synchronisation for ticket creation so submit-only validation and single-click create behaviour are preserved. - Updated README guidance to explain how browser spellcheck suggestions are accessed. - Updated regression coverage for visible spellcheck suggestion guidance. - Preserved append-only changelog history. - version: 1.9.46 date: 2026-06-23 changes: - Restored rich text HTML controls for ticket details and main ticket replies. - Enabled inline browser spellcheck on contenteditable rich editor areas without replacing the editor with plain textareas. - Fixed ticket create clear action so configured defaults are preserved while subject, details, tags and attachments are cleared. - Fixed close-ticket modal so selecting a closed status opens the professional closure prompt on the first interaction. - Preserved the mandatory closure comment workflow and public/internal closure visibility behaviour. - Added regression coverage notes for rich editor, clear defaults and close-modal workflow. - version: 1.9.47 date: 2026-06-23 changes: - Preserved the rich HTML editor controls while keeping browser-native spellcheck enabled. - Documented that fake inline spellcheck must not replace the rich editor. - Refreshed ticket time aggregates and the time-log modal after timer start and stop without requiring a page reload. - Added regression coverage for timer refresh and spellcheck/editor boundary behaviour.