diff --git a/assets/css/ticket.css b/assets/css/ticket.css index 7ac6c0b..da5edaa 100644 --- a/assets/css/ticket.css +++ b/assets/css/ticket.css @@ -278,6 +278,10 @@ kbd { padding: 0.5rem 0.25rem; line-height: 1.75; color: var(--text-primary); + /* pre-wrap preserves newlines and multiple spaces so ASCII art aligns correctly. + font-mono is inherited from body, so box-drawing characters line up. */ + white-space: pre-wrap; + word-break: break-word; } .ticket-description-view p { color: var(--text-secondary); diff --git a/assets/js/ticket.js b/assets/js/ticket.js index 05925d8..427daf8 100644 --- a/assets/js/ticket.js +++ b/assets/js/ticket.js @@ -89,8 +89,9 @@ function renderDescriptionView() { if (!raw.trim()) { viewDiv.innerHTML = '
No description provided.
'; } else { - // Ticket descriptions are plain text — preserve line breaks, never run markdown. - viewDiv.innerHTML = lt.escHtml(raw).replace(/\n/g, '