Chat — scitex-todo v{{ scitex_cards_version }}
{% comment %}
No favicon link here: scitex-ui's shell supplies the shared SciTeX brand mark
as its default (>=0.7.1). One source, not two copies that drift. Do NOT re-add
a local — if the mark is wrong, fix it in scitex-ui, which
owns the asset.
NB: this MUST be a {% templatetag openblock %} comment {% templatetag closeblock %}
block, not Django's single-hash syntax — that one is single-line only, and a
multi-line hash block leaks its body into the rendered page.
{% endcomment %}
{% comment %}
Operator↔agent DM view — minimal slice (card
fleet-agent-direct-message-board-pane-20260707). Mobile-first: the agent
list is a slide-in drawer on narrow screens, a fixed left column on wide
ones. All behavior lives in static/scitex_cards/chat/ — chat_diff.js (pure
render planning) then chat.js (DOM + network); load order matters, chat.js
reads window.ChatDiff. Line-limit discipline: template <1024 lines, js
<512; this file is layout + CSS.
{% endcomment %}
{% comment %}
Mount-aware API base (same contract as board_v3.html's API_BASE const):
`api_base` is the include root chat_page derived from request.path ("/"
standalone, "/apps/cards/" on the hub). chat.js reads this marker, strips
trailing slashes (so a root mount yields "" and the calls stay
"/dm/…"-shaped) and THROWS when the attribute is absent — a missing marker
is an integration bug, never a silently-guessed root mount. This attribute
must therefore ALWAYS be rendered.
{% endcomment %}