{# CREW ACTIVITY STRIP — the always-present shell-header indicator that surfaces the orchestrator's in-memory activity ring buffer PROMINENTLY + PERSISTENTLY, so "watch the crew work" works from ANY center view (not buried in the Dispatch tab). Polled by #crew-activity-slot (HTMX every ~4s); the whole partial is replaced each poll, so the feed stays live without JS state. A native
drives the expand/collapse (HTMX-swap-safe — no JS). The collapsed SUMMARY is ALWAYS the at-a-glance line: a status dot (live/watching/off — it PULSES when live), the newest crew action inline, a live count, and a prominent "Watch" DOORWAY that lands the operator on the full /crew view. Expanding reveals the recent feed. The newest action is never hidden behind the collapse — it shows in the always-visible summary line. Context (main._activity_strip_context): act_status : "live" | "watching" | "off" act_items : [{kind, level, text, agent, handoff_short, ago}, ...] newest-first act_count : len(act_items) act_latest : act_items[0] or None act_autonomous_on, act_inflight, act_cap, act_project, act_no_orch #}
{# The standalone /crew page is retired (the agent-detail center pane owns live transcripts now). "Watch" lands on whoever is currently working — that agent's live transcript in the center — and falls back to the Dispatch fleet feed when nothing is active. #} {% set watch_url = ('/agents/' ~ act_project ~ '/' ~ act_latest.agent) if (act_latest and act_latest.agent and act_project) else ('/views/dispatch?project=' ~ act_project) %} Crew {% if act_latest %} {{ act_latest.kind | replace('_', ' ') }} {{ act_latest.text }} {% if act_latest.ago %}{{ act_latest.ago }}{% endif %} {% else %} {% if act_status == 'off' %}idle · autonomous OFF{% else %}watching — no activity yet{% endif %} {% endif %} {% if act_count %}{{ act_count }}{% endif %} {# DOORWAY → the full "watch the crew work" view. Stop the click from toggling the
(we want to navigate, not expand) and fire the HTMX swap into the center region. Always present so the crew view is one click from any header. #} {% if act_status == 'live' %}{% endif %} Watch
Orchestrator · crew activity {% if act_autonomous_on %} {{ 'live' if act_status == 'live' else 'watching' }} · {{ act_inflight }}/{{ act_cap }} running {% else %} idle · autonomous OFF {% endif %} open live view
{% if act_items %}
    {% for a in act_items %}
  • {{ a.kind | replace('_', ' ') }} {{ a.text }} {% if a.handoff_short %}{{ a.handoff_short }}{% endif %} {% if a.ago %}{{ a.ago }}{% endif %}
  • {% endfor %}
{% else %}

{% if act_no_orch %} The autonomous orchestrator didn't start — the console is running without the crew loop. No live activity to show. {% elif act_project %} {% if act_autonomous_on %} The orchestrator is watching {{ act_project }}'s handoff feed. Picked-up · running · completed events appear here the instant they happen. {% else %} Nothing running — project dispatch is OFF for {% if act_project %}{{ act_project }}{% else %}this project{% endif %}. Flip Project dispatch ON to let the orchestrator auto-run agents on new handoffs. {% endif %} {% else %} Select a project to watch its crew. The orchestrator picks up new handoffs and runs the resolved agents — every action shows up here, live. {% endif %}

{% endif %}