From f9ab618c9b8b8c774bb5a16b252b6f0c18d698f1 Mon Sep 17 00:00:00 2001 From: nesquena-hermes <[email protected]> Date: Sat, 6 Jun 2026 00:05:38 +0000 Subject: [PATCH 1/5] feat(sidebar): add show_cron_sessions toggle to surface cron sessions (#3514, #2841) Co-authored-by: Rod Boev --- api/config.py | 2 + api/models.py | 4 +- api/routes.py | 7 +- static/i18n.js | 24 ++++++ static/index.html | 7 ++ static/panels.js | 9 ++ ...est_issue2841_show_cron_sessions_toggle.py | 82 +++++++++++++++++++ 7 files changed, 130 insertions(+), 5 deletions(-) create mode 100644 tests/test_issue2841_show_cron_sessions_toggle.py diff --git a/api/config.py b/api/config.py index 16f031ec4c2..ae41d29bb8a 100644 --- a/api/config.py +++ b/api/config.py @@ -5076,6 +5076,7 @@ def _get_session_agent_lock(session_id: str) -> threading.Lock: "show_tps": False, # show tokens-per-second chip in assistant message headers "fade_text_effect": False, # animate newly streamed words with a lightweight fade-in effect "show_cli_sessions": False, # merge CLI sessions from state.db into the sidebar + "show_cron_sessions": False, # surface cron sessions in the sidebar (subordinate to show_cli_sessions) "show_previous_messaging_sessions": False, # show older Telegram/Discord/etc. reset segments "sync_to_insights": False, # mirror WebUI token usage to state.db for /insights "check_for_updates": True, # check if webui/agent repos are behind upstream @@ -5242,6 +5243,7 @@ def load_settings() -> dict: "show_tps", "fade_text_effect", "show_cli_sessions", + "show_cron_sessions", "show_previous_messaging_sessions", "sync_to_insights", "check_for_updates", diff --git a/api/models.py b/api/models.py index 97372b318da..b322feb3b83 100644 --- a/api/models.py +++ b/api/models.py @@ -2369,11 +2369,11 @@ def new_session(workspace=None, model=None, profile=None, model_provider=None, p s.save() return s -def _hide_from_default_sidebar(session: dict) -> bool: +def _hide_from_default_sidebar(session: dict, *, show_cron: bool = False) -> bool: """Return True for internal/background sessions hidden from the default list.""" sid = str(session.get('session_id') or '') source = session.get('source_tag') or session.get('source') - if source == 'cron' or sid.startswith('cron_'): + if not show_cron and (source == 'cron' or sid.startswith('cron_')): return True if bool(session.get('pre_compression_snapshot')): return not bool(session.get('_show_pre_compression_snapshot')) diff --git a/api/routes.py b/api/routes.py index 2feb17fb080..52f48950df7 100644 --- a/api/routes.py +++ b/api/routes.py @@ -2716,7 +2716,7 @@ def _is_duplicate_webui_state_projection(session: dict, represented_webui_ids: s return bool(_session_lineage_ids(session) & represented_webui_ids) -def _dedupe_cli_sidebar_sessions_for_api(cli: list[dict], represented_webui_ids: set[str]) -> list[dict]: +def _dedupe_cli_sidebar_sessions_for_api(cli: list[dict], represented_webui_ids: set[str], *, show_cron_sessions: bool = False) -> list[dict]: """Return CLI/state sidebar rows while preserving project-hidden cron rows. Agent-side cron sessions come from state.db rather than the WebUI session @@ -2735,7 +2735,7 @@ def _dedupe_cli_sidebar_sessions_for_api(cli: list[dict], represented_webui_ids: and not _is_duplicate_webui_state_projection(s, represented_webui_ids) and is_cli_session_row_visible(s) ] - visible = [s for s in candidates if not _cron_hide(s)] + visible = [s for s in candidates if not _cron_hide(s, show_cron=show_cron_sessions)] return _include_project_hidden_background_sidebar_sessions(candidates, visible) @@ -5395,7 +5395,8 @@ def handle_get(handler, parsed) -> bool: represented_webui_ids = set() for s in webui_sessions: represented_webui_ids.update(_session_lineage_ids(s)) - deduped_cli = _dedupe_cli_sidebar_sessions_for_api(cli, represented_webui_ids) + show_cron_sessions = bool(settings.get("show_cron_sessions")) + deduped_cli = _dedupe_cli_sidebar_sessions_for_api(cli, represented_webui_ids, show_cron_sessions=show_cron_sessions) else: diag.stage("filter_webui_sessions") webui_sessions = [s for s in webui_sessions if not _is_cli_session_for_settings(s)] diff --git a/static/i18n.js b/static/i18n.js index 6dd3db32361..f20e599ef26 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -613,6 +613,7 @@ const LOCALES = { settings_label_sidebar_density: 'Sidebar density', cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status', settings_label_external_sessions: 'Show non-WebUI sessions', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Show previous messaging sessions', settings_label_sync_insights: 'Sync to insights', settings_label_check_updates: 'Check for updates', @@ -875,6 +876,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Every 20 exchanges', settings_desc_auto_title_refresh: 'Automatically re-generates the session title based on the latest exchange, keeping it relevant as the conversation evolves. Requires an LLM title generation model to be configured.', settings_desc_external_sessions: 'Show conversations from CLI, Telegram, Discord, Slack, and other channels in the session list. Click to import and continue.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Show older Discord, Telegram, Slack, and Weixin sessions that were replaced by reset or compression.', settings_desc_sync_insights: 'Mirrors WebUI token usage to state.db so hermes /insights includes browser session data. Off by default.', settings_desc_check_updates: 'Show a banner when newer versions of the WebUI or Agent are available. Runs a background git fetch periodically.', @@ -1951,6 +1953,7 @@ const LOCALES = { settings_label_sidebar_density: 'Densità sidebar', cmd_reasoning: 'Mostra/nascondi ragionamento, imposta livello sforzo o controlla stato attuale', settings_label_external_sessions: 'Mostra sessioni non-WebUI', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Mostra sessioni di messaggistica precedenti', settings_label_sync_insights: 'Sincronizza con insights', settings_label_check_updates: 'Verifica aggiornamenti', @@ -2205,6 +2208,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Ogni 20 scambi', settings_desc_auto_title_refresh: 'Rigenera automaticamente il titolo della sessione in base all\'ultimo scambio, mantenendolo pertinente mentre la conversazione evolve. Richiede un modello LLM per la generazione titoli.', settings_desc_external_sessions: 'Mostra conversazioni da CLI, Telegram, Discord, Slack e altri canali nella lista sessioni. Clicca per importare e continuare.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Mostra sessioni Discord, Telegram, Slack e Weixin più vecchie sostituite da reset o compressione.', settings_desc_sync_insights: 'Rispecchia l\'uso token WebUI su state.db così hermes /insights include i dati delle sessioni browser. Disattivato per impostazione predefinita.', settings_desc_check_updates: 'Mostra un banner quando sono disponibili versioni più recenti della WebUI o dell\'Agente. Esegue un git fetch in background periodicamente.', @@ -3281,6 +3285,7 @@ const LOCALES = { settings_label_sidebar_density: 'サイドバー密度', cmd_reasoning: '思考表示の切り替え (表示/非表示)、努力レベル設定、現在状態の確認', settings_label_external_sessions: '非WebUIセッションを表示', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: '以前のメッセージングセッションを表示', settings_label_sync_insights: 'インサイトに同期', settings_label_check_updates: 'アップデートを確認', @@ -3540,6 +3545,7 @@ const LOCALES = { settings_auto_title_refresh_20: '20 回ごと', settings_desc_auto_title_refresh: '最新のやり取りに基づいてセッションタイトルを自動再生成し、会話の進行に合わせて適切に保ちます。LLM タイトル生成モデルの設定が必要です。', settings_desc_external_sessions: 'CLI、Telegram、Discord、Slack その他のチャネルからの会話をセッション一覧に表示します。クリックでインポートして続行できます。', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'reset または compression によって置き換えられた以前の Discord、Telegram、Slack、Weixin セッションを表示します。', settings_desc_sync_insights: 'WebUI のトークン使用量を state.db にミラーし、hermes /insights にブラウザセッションのデータを含めます。デフォルトはオフ。', settings_desc_check_updates: 'WebUI または Agent の新しいバージョンが利用可能な時にバナーを表示します。バックグラウンドで定期的に git fetch を実行します。', @@ -4413,6 +4419,7 @@ const LOCALES = { settings_label_sidebar_density: 'Плотность боковой панели', cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status', settings_label_external_sessions: 'Показывать внешние сеансы', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Показывать предыдущие сеансы обмена сообщениями', settings_label_sync_insights: 'Синхронизировать с Insights', settings_label_check_updates: 'Проверять обновления', @@ -4603,6 +4610,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Каждые 20 обменов', settings_desc_auto_title_refresh: 'Автоматически переформулирует заголовок сессии на основе последнего обмена, чтобы он оставался актуальным по мере развития беседы. Требует настроенную модель генерации заголовков.', settings_desc_external_sessions: 'Показать беседы из CLI, Telegram, Discord, Slack и других каналов в списке сеансов. Нажмите для импорта и продолжения.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Показывать предыдущие сеансы Discord, Telegram, Slack и Weixin, замененные сбросом или сжатием.', settings_desc_sync_insights: 'Синхронизирует использование токенов WebUI в state.db, чтобы Hermes /insights включал данные браузерных сеансов. Выключено по умолчанию.', settings_desc_check_updates: 'Показывает баннер, когда доступны более новые версии WebUI или Agent. Периодически выполняет git fetch в фоне.', @@ -5670,6 +5678,7 @@ const LOCALES = { settings_label_sidebar_density: 'Densidad de la barra lateral', cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status', settings_label_external_sessions: 'Mostrar sesiones externas', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Mostrar sesiones de mensajería anteriores', settings_label_sync_insights: 'Sincronizar con insights', settings_label_check_updates: 'Buscar actualizaciones', @@ -5871,6 +5880,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Cada 20 intercambios', settings_desc_auto_title_refresh: 'Regenera automáticamente el título de la sesión basándose en el último intercambio, manteniéndolo relevante a medida que evoluciona la conversación. Requiere un modelo LLM de generación de títulos configurado.', settings_desc_external_sessions: 'Mostrar conversaciones de CLI, Telegram, Discord, Slack y otros canales en la lista de sesiones. Haz clic para importar y continuar.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Mostrar sesiones antiguas de Discord, Telegram, Slack y Weixin reemplazadas por reset o compresión.', settings_desc_sync_insights: 'Refleja el uso de tokens de la WebUI en state.db para que hermes /insights incluya datos de sesiones del navegador. Desactivado por defecto.', settings_desc_check_updates: 'Muestra un banner cuando haya versiones más nuevas de la WebUI o del Agent. Ejecuta periódicamente un git fetch en segundo plano.', @@ -6921,6 +6931,7 @@ const LOCALES = { settings_label_sidebar_density: 'Seitenleistendichte', cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status', settings_label_external_sessions: 'Externe Sitzungen anzeigen', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Vorherige Messaging-Sitzungen anzeigen', settings_label_sync_insights: 'Mit Insights synchronisieren', settings_label_check_updates: 'Nach Updates suchen', @@ -7112,6 +7123,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Alle 20 Antworten', settings_desc_auto_title_refresh: 'Generiert den Sitzungstitel automatisch anhand des letzten Austauschs neu und hält ihn so aktuell, während sich das Gespräch entwickelt. Erfordert ein konfiguriertes LLM-Titelgenerierungsmodell.', settings_desc_external_sessions: 'Zeigt Gespräche von CLI, Telegram, Discord, Slack und anderen Kanälen in der Sitzungsliste an. Klicken zum Importieren und Fortsetzen.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Zeigt ältere Discord-, Telegram-, Slack- und Weixin-Sitzungen, die durch Reset oder Compression ersetzt wurden.', settings_desc_sync_insights: 'Spiegelt den WebUI-Token-Verbrauch in die state.db, sodass hermes /insights Browser-Sitzungsdaten enthält. Standardmäßig aus.', settings_desc_check_updates: 'Zeigt ein Banner an, wenn neuere Versionen der WebUI oder des Agenten verfügbar sind. Führt regelmäßig einen Git-Fetch im Hintergrund aus.', @@ -8225,6 +8237,7 @@ const LOCALES = { settings_label_sidebar_density: '侧边栏密度', cmd_reasoning: '切换思维可见性(显示/隐藏)、设置工作强度或查看当前状态', settings_label_external_sessions: '显示外部会话', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: '显示以前的消息会话', settings_label_sync_insights: '同步到 insights', settings_label_check_updates: '检查更新', @@ -8499,6 +8512,7 @@ const LOCALES = { settings_auto_title_refresh_20: '每 20 轮对话', settings_desc_auto_title_refresh: '基于最新对话自动重新生成会话标题,使其随对话发展保持相关。需要配置 LLM 标题生成模型。', settings_desc_external_sessions: '在会话列表中显示来自 CLI、Telegram、Discord、Slack 等渠道的对话。点击可导入并继续对话。', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: '显示被 reset 或 compression 替换的较旧的 Discord、Telegram、Slack 和 Weixin 会话。', settings_desc_sync_insights: '将 WebUI token 使用情况同步到 state.db,使 hermes /insights 包含浏览器会话数据。默认关闭。', settings_desc_check_updates: '当有更新的 WebUI 或助手版本时显示横幅。会在后台定期执行 git fetch。', @@ -9680,6 +9694,7 @@ const LOCALES = { settings_label_sidebar_density: '側邊欄密度', cmd_reasoning: '切換思考內容可見性(顯示/隱藏)、設定推理強度,或檢查目前狀態', settings_label_external_sessions: '顯示外部對話', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: '顯示以前的訊息對話', settings_label_sync_insights: '同步至 insights', settings_label_check_updates: '檢查更新', @@ -9942,6 +9957,7 @@ const LOCALES = { settings_auto_title_refresh_20: '每 20 輪對話', settings_desc_auto_title_refresh: '根據最新對話自動重新產生對話標題,讓標題隨對話發展保持相關。需要設定 LLM 標題產生模型。', settings_desc_external_sessions: '在對話清單中顯示來自 CLI、Telegram、Discord、Slack 等管道的對話。點選即可匯入並繼續對話。', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: '顯示被 reset 或 compression 替換的較舊的 Discord、Telegram、Slack 和 Weixin 對話。', settings_desc_sync_insights: '將 WebUI token 用量鏡射到 state.db,讓 hermes /insights 納入瀏覽器工作階段資料。預設為關閉。', settings_desc_check_updates: '有較新版 WebUI 或 Agent 時顯示橫幅。系統會定期在背景執行 git fetch。', @@ -10901,6 +10917,7 @@ const LOCALES = { settings_label_sidebar_density: 'Densidade da sidebar', cmd_reasoning: 'Alternar visibilidade do pensamento (mostrar/ocultar)', settings_label_external_sessions: 'Mostrar sessões externas', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Mostrar sessões de mensagens anteriores', settings_label_sync_insights: 'Sincronizar para insights', settings_label_check_updates: 'Verificar atualizações', @@ -11095,6 +11112,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'A cada 20 trocas', settings_desc_auto_title_refresh: 'Re-gera título da sessão baseado na última troca.', settings_desc_external_sessions: 'Mostrar conversas de CLI, Telegram, Discord, Slack e outros canais na lista de sessões. Clique para importar e continuar.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Mostrar sessões antigas de Discord, Telegram, Slack e Weixin substituídas por reset ou compressão.', settings_desc_sync_insights: 'Espelha uso de tokens para state.db.', settings_desc_check_updates: 'Mostrar banner quando versões mais novas estiverem disponíveis.', @@ -12132,6 +12150,7 @@ const LOCALES = { settings_label_sidebar_density: '사이드바 밀도', cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status', settings_label_external_sessions: '외부 세션 표시', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: '이전 메시징 세션 표시', settings_label_sync_insights: 'Insights에 동기화', settings_label_check_updates: '업데이트 확인', @@ -12325,6 +12344,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Every 20 exchanges', settings_desc_auto_title_refresh: '최신 대화를 바탕으로 세션 제목을 자동으로 다시 생성해 대화가 진행되어도 제목을 관련 있게 유지합니다. LLM 제목 생성 모델 설정이 필요합니다.', settings_desc_external_sessions: 'CLI, Telegram, Discord, Slack 및 기타 채널의 대화를 세션 목록에 표시합니다. 클릭하여 가져오고 계속하세요.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'reset 또는 compression으로 교체된 이전 Discord, Telegram, Slack, Weixin 세션을 표시합니다.', settings_desc_sync_insights: 'WebUI 토큰 사용량을 state.db에 반영하여 hermes /insights에 브라우저 세션 데이터가 포함되도록 합니다. 기본값은 꺼짐입니다.', settings_desc_check_updates: 'WebUI 또는 Agent의 새 버전이 있으면 배너를 표시합니다. 백그라운드에서 주기적으로 git fetch를 실행합니다.', @@ -13380,6 +13400,7 @@ const LOCALES = { settings_label_sidebar_density: 'Densité de la barre latérale', cmd_reasoning: 'Basculez la visibilité de la réflexion (afficher/masquer), définir le niveau d\'effort ou vérifier l\'état actuel', settings_label_external_sessions: 'Afficher les sessions non-WebUI', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Afficher les sessions de messagerie précédentes', settings_label_sync_insights: 'Synchroniser avec les insights', settings_label_check_updates: 'Vérifier les mises à jour', @@ -13601,6 +13622,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Tous les 20 échanges', settings_desc_auto_title_refresh: 'Régénère automatiquement le titre de la session en fonction du dernier échange, le gardant ainsi pertinent à mesure que la conversation évolue. Nécessite la configuration d’un modèle de génération de titres LLM.', settings_desc_external_sessions: 'Affichez les conversations de CLI, Telegram, Discord, Slack et d\'autres chaînes dans la liste des sessions. Cliquez pour importer et continuer.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Affichez les anciennes sessions Discord, Telegram, Slack et Weixin remplacées par reset ou compression.', settings_desc_sync_insights: 'Met en miroir l\'utilisation du jeton WebUI dans state.db afin que Hermes /insights inclut les données de session du navigateur. Désactivé par défaut.', settings_desc_check_updates: 'Afficher une bannière lorsque des versions plus récentes de WebUI ou de l\'agent sont disponibles. Exécute périodiquement une récupération git en arrière-plan.', @@ -14729,6 +14751,7 @@ const LOCALES = { settings_label_sidebar_density: 'Kenar çubuğu yoğunluğu', cmd_reasoning: 'Düşünme görünürlüğünü değiştirin (göster/gizle), çaba düzeyini ayarlayın veya mevcut durumu kontrol edin', settings_label_external_sessions: 'WebUI olmayan oturumları göster', + settings_label_cron_sessions: 'Show cron sessions', settings_label_previous_messaging_sessions: 'Önceki mesajlaşma oturumlarını göster', settings_label_sync_insights: 'Analizlerle senkronize edin', settings_label_check_updates: 'Güncellemeleri kontrol edin', @@ -14921,6 +14944,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Her 20 değişimde bir', settings_desc_auto_title_refresh: 'Oturum başlıklarını en son konuşmaya göre otomatik olarak yeniden oluşturarak konuşma ilerledikçe başlıkların alakalı kalmasını sağlar. LLM başlık oluşturma modeli yapılandırması gerektirir.', settings_desc_external_sessions: 'Oturum listesinde CLI, Telegram, Discord, Slack ve diğer kanallardan gelen konuşmaları gösterin. İçe aktarmak ve devam etmek için tıklayın.', + settings_desc_cron_sessions: 'Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.', settings_desc_previous_messaging_sessions: 'Sıfırlama veya sıkıştırmayla değiştirilen eski Discord, Telegram, Slack ve Weixin oturumlarını gösterin.', settings_desc_sync_insights: 'WebUI belirteci kullanımını state.db\'ye yansıtır, böylece hermes /insights tarayıcı oturum verilerini içerir. Varsayılan olarak kapalıdır.', settings_desc_check_updates: 'WebUI veya Agent\'ın daha yeni sürümleri mevcut olduğunda bir banner gösterin. Periyodik olarak bir arka plan git getirme işlemi çalıştırır.', diff --git a/static/index.html b/static/index.html index 3697ff3a0d3..91abde0c710 100644 --- a/static/index.html +++ b/static/index.html @@ -1199,6 +1199,13 @@

What can I help with?

Show conversations from CLI, Telegram, Discord, Slack, and other channels in the session list. Click to import and continue.
+
+ +
Surface cron job output as conversations in the sidebar. Only active when non-WebUI sessions are enabled. Defaults off; high-frequency jobs can flood the sidebar.
+