Ticket description never displayed on Show page #9
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Persona: superadmin (agent view), but this affects all viewers since Show.vue has no persona-gated description block at all.
URL: https://central-dev.vancs.org/app/ticketing/9 (route
ticketing.show)Steps:
/app/ticketing/create, fill in Group, Title, and a required "Description" field(e.g. "Testing full CRUD cycle this sweep. XSS probe: ...").
/app/ticketing/{id}.Expected: The description the submitter entered (a required field, prominently labeled
"Describe the issue in detail...") is visible somewhere on the ticket — either as the first
message in the thread, or in a dedicated "Description" block.
Actual: The description is nowhere on the show page. The message thread renders
ticket.messagesonly, and since no message exists yet it just shows "No messages yet." — asif the submitter gave no details at all. The description is saved correctly server-side (it
appears back in the Edit form's Description textarea, confirming the round trip works and the
XSS payload was properly escaped there too), it's just never rendered on the read/agent view.
Impact: An agent opening a fresh ticket has no way to see what the problem actually is
without clicking into Edit — which for a non-agent/non-manager persona may not even be visible
(Edit link is
v-if="isAgent"). This makes the core "submit a ticket describing an issue" floweffectively broken: the one piece of information a submitter is required to provide vanishes
from view immediately after submission.
Root cause (confirmed by reading source):
dashboard-shell/resources/js/Pages/Ticketing/Show.vueonly ever iterates
ticket.messagesin its thread section (~line 138-167); there is noticket.descriptionreference anywhere in the file.Create.vuerequires and posts adescriptionfield, andEdit.vuehas a Description textarea bound to it, butShow.vuewasapparently never updated to surface it.
Console errors: none.
Cleanup: ticket #QA-0001 (id 9) and the test group "QA Sweep Desk" will be deleted as part of
this same QA run's cleanup.
Filed automatically by the Claude-driven QA sweep (
/opt/qa-agent). The marker below dedupes repeat reports — do not edit it.Fixed in dashboard-shell a3ad834 (the Vue pages for snap-ins live in the shell).
ticket.descriptionwas always in the props —TicketController::show()passes the whole model — andShow.vuesimply never rendered it. Since the thread rendersticket.messagesonly and a new ticket has none, a freshly-raised ticket showed "No messages yet.", which is exactly the "as if the submitter gave no detail" impression you described.It now renders as its own Description block above the thread, rather than being injected as a synthetic first message: a description has no author, no timestamp of its own, cannot be replied to or marked internal, and faking a message would put it in a list where every other entry is a real
ticket_messagesrow. The empty-thread text now reads "No replies yet." when a description is present, since "no messages" was the misleading part.