Adds the Console chat view: project and thread lists, named create forms,
per-thread drafts, explicit Resume, paging and signed-in sends. The one
HTTP-to-bus seam is packages/webui/src/chat.mjs, with fixed routes in
chat-http.mjs: exact HTTPS Origin, same-origin fetch site, JSON content
type, and 403 for each. Every label and message body renders inert,
including bidi controls. CSP unchanged, no inline script.
Owner Rocko. Reviewer Filbert: r1 changes (comment 28933), r2 approve
(comment 28950) on candidate manifest 9a665434...4034, with the four r1
survivors killed by new assertions. Mos decision 123 go on the public/
diff, sha 78574095 (mos-0780). Sage gate on 19fe85c3e: 25 steps, node
2216/0, scripts 422/0, webui 179/179.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
20 lines
1.5 KiB
CSS
20 lines
1.5 KiB
CSS
/* Row 129: local chat styles, using the Console's existing palette and type. */
|
|
.chat-area { max-width: 72rem; margin-inline: auto; }
|
|
.chat-projects { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: 1rem; }
|
|
.chat-thread-list { display: grid; gap: .65rem; padding-inline-start: 1.25rem; }
|
|
.chat-thread-list li { overflow-wrap: anywhere; }
|
|
.chat-create { display: grid; gap: .75rem; margin-block: 1.5rem; max-width: 34rem; }
|
|
.chat-create label, #chat-send-form { display: grid; gap: .5rem; }
|
|
.chat-create input, .chat-create select, #chat-body { width: 100%; min-width: 0; box-sizing: border-box; font: inherit; }
|
|
.chat-create button, #chat-send-form button { justify-self: start; }
|
|
.chat-conversation { min-width: 0; }
|
|
.chat-log { list-style: none; padding: .75rem; margin-block: 1rem; max-height: 56vh; overflow: auto; overflow-anchor: none; border: 1px solid var(--border); border-radius: .5rem; }
|
|
.chat-log li { padding-block: .8rem; border-bottom: 1px solid var(--border); }
|
|
.chat-log li:last-child { border-bottom: 0; }
|
|
.chat-message-meta { font-size: .85rem; opacity: .8; overflow-wrap: anywhere; }
|
|
.chat-body { white-space: pre-wrap; overflow-wrap: anywhere; margin-top: .4rem; unicode-bidi: plaintext; }
|
|
#chat-body { resize: vertical; min-height: 6rem; padding: .75rem; }
|
|
.chat-paging { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; margin-bottom: 1rem; }
|
|
#chat-receipt { min-height: 1.5em; overflow-wrap: anywhere; }
|
|
@media (max-width: 40rem) { .chat-log { max-height: 48vh; padding: .5rem; } }
|