diff --git a/static/i18n.js b/static/i18n.js index 315753a7..b7a1aa77 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -1648,12 +1648,15 @@ const LOCALES = { session_move_project_desc_has: 'Cambia il progetto per questa conversazione', session_move_project_desc_none: 'Assegna un progetto a questa conversazione', session_archive: 'Archivia conversazione', + session_hide_external: 'Nascondi dalla lista', session_restore: 'Ripristina conversazione', session_archive_desc: 'Nascondi questa conversazione fino a mostrare archiviate', session_archive_worktree_desc: 'Nascondi questa conversazione; mantieni il suo worktree su disco', + session_hide_external_desc: 'Nascondi questa sessione importata dalla WebUI senza eliminare lo storico originale.', session_restore_desc: 'Riporta questa conversazione nella lista principale', session_archived: 'Sessione archiviata', session_archived_worktree: 'Sessione archiviata. Il worktree rimane su disco.', + session_hidden: 'Sessione nascosta dalla lista', session_restored: 'Sessione ripristinata', session_archive_failed: 'Archiviazione fallita: ', session_duplicate: 'Duplica conversazione', @@ -1764,6 +1767,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_previous_messaging_sessions: 'Mostra sessioni di messaggistica precedenti', settings_label_sync_insights: 'Sincronizza con insights', settings_label_check_updates: 'Verifica aggiornamenti', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -1994,6 +1998,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_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.', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -2853,12 +2858,15 @@ const LOCALES = { session_move_project_desc_has: 'この会話のプロジェクトを変更', session_move_project_desc_none: 'この会話にプロジェクトを割り当て', session_archive: '会話をアーカイブ', + session_hide_external: 'リストから非表示', session_restore: '会話を復元', session_archive_desc: 'アーカイブを表示するまでこの会話を非表示にする', session_archive_worktree_desc: 'この会話を非表示にし、worktree はディスク上に残します', + session_hide_external_desc: '元の履歴を削除せずに、この取り込んだセッションを WebUI のリストから非表示にします。', session_restore_desc: 'この会話をメイン一覧に戻す', session_archived: 'セッションをアーカイブしました', session_archived_worktree: 'セッションをアーカイブしました。Worktree はディスク上に残ります。', + session_hidden: 'セッションをリストから非表示にしました', session_restored: 'セッションを復元しました', session_archive_failed: 'アーカイブ失敗: ', session_duplicate: '会話を複製', @@ -2969,6 +2977,7 @@ const LOCALES = { settings_label_sidebar_density: 'サイドバー密度', cmd_reasoning: '思考表示の切り替え (表示/非表示)、努力レベル設定、現在状態の確認', settings_label_external_sessions: '非WebUIセッションを表示', + settings_label_previous_messaging_sessions: '以前のメッセージングセッションを表示', settings_label_sync_insights: 'インサイトに同期', settings_label_check_updates: 'アップデートを確認', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -3204,6 +3213,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_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 を実行します。', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -3988,6 +3998,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_previous_messaging_sessions: 'Показывать предыдущие сеансы обмена сообщениями', settings_label_sync_insights: 'Синхронизировать с Insights', settings_label_check_updates: 'Проверять обновления', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -4172,6 +4183,7 @@ const LOCALES = { settings_auto_title_refresh_20: 'Каждые 20 обменов', settings_desc_auto_title_refresh: 'Автоматически переформулирует заголовок сессии на основе последнего обмена, чтобы он оставался актуальным по мере развития беседы. Требует настроенную модель генерации заголовков.', settings_desc_external_sessions: 'Показать беседы из CLI, Telegram, Discord, Slack и других каналов в списке сеансов. Нажмите для импорта и продолжения.', + 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 в фоне.', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -4566,11 +4578,14 @@ const LOCALES = { // Session management and settings keys (en fallback — pending translation) session_archive: 'Archive conversation', + session_hide_external: 'Скрыть из списка', session_archive_desc: 'Hide this conversation until archived is shown', session_archive_worktree_desc: 'Hide this conversation; keep its worktree on disk', + session_hide_external_desc: 'Скрыть эту импортированную сессию из WebUI без удаления исходной истории.', session_archive_failed: 'Archive failed: ', session_archived: 'Session archived', session_archived_worktree: 'Session archived. Worktree remains on disk.', + session_hidden: 'Сессия скрыта из списка', session_delete: 'Delete conversation', session_delete_desc: 'Permanently remove this conversation', session_delete_confirm: 'Delete this conversation?', @@ -5122,6 +5137,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_previous_messaging_sessions: 'Mostrar sesiones de mensajería anteriores', settings_label_sync_insights: 'Sincronizar con insights', settings_label_check_updates: 'Buscar actualizaciones', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -5317,6 +5333,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_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.', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -5698,11 +5715,14 @@ const LOCALES = { cmd_status: 'Show session info', // Session management and settings keys (en fallback — pending translation) session_archive: 'Archive conversation', + session_hide_external: 'Ocultar de la lista', session_archive_desc: 'Hide this conversation until archived is shown', session_archive_worktree_desc: 'Ocultar esta conversación; conservar su worktree en disco', + session_hide_external_desc: 'Ocultar esta sesión importada de WebUI sin eliminar el historial original.', session_archive_failed: 'Archive failed: ', session_archived: 'Session archived', session_archived_worktree: 'Sesión archivada. El worktree permanece en disco.', + session_hidden: 'Sesión ocultada de la lista', session_delete: 'Delete conversation', session_delete_desc: 'Permanently remove this conversation', session_delete_confirm: '¿Eliminar esta conversación?', @@ -6249,6 +6269,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_previous_messaging_sessions: 'Vorherige Messaging-Sitzungen anzeigen', settings_label_sync_insights: 'Mit Insights synchronisieren', settings_label_check_updates: 'Nach Updates suchen', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -6434,6 +6455,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_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.', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -6561,11 +6583,14 @@ const LOCALES = { // Session management and settings keys (en fallback — pending translation) session_archive: 'Archive conversation', + session_hide_external: 'Aus Liste ausblenden', session_archive_desc: 'Hide this conversation until archived is shown', session_archive_worktree_desc: 'Diese Konversation ausblenden; den Worktree auf der Festplatte behalten', + session_hide_external_desc: 'Diese importierte Sitzung aus der WebUI-Liste ausblenden, ohne den ursprünglichen Verlauf zu löschen.', session_archive_failed: 'Archive failed: ', session_archived: 'Session archived', session_archived_worktree: 'Sitzung archiviert. Der Worktree bleibt auf der Festplatte.', + session_hidden: 'Sitzung aus Liste ausgeblendet', session_delete: 'Delete conversation', session_delete_desc: 'Permanently remove this conversation', session_delete_confirm: 'Diese Konversation löschen?', @@ -7426,6 +7451,7 @@ const LOCALES = { settings_label_sidebar_density: '侧边栏密度', cmd_reasoning: '切换思维可见性(显示/隐藏)、设置工作强度或查看当前状态', settings_label_external_sessions: '显示外部会话', + settings_label_previous_messaging_sessions: '显示以前的消息会话', settings_label_sync_insights: '同步到 insights', settings_label_check_updates: '检查更新', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -7684,6 +7710,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_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。', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -7992,11 +8019,14 @@ const LOCALES = { // Session management and settings keys (en fallback — pending translation) session_archive: '归档会话', + session_hide_external: '从列表中隐藏', session_archive_desc: '隐藏此会话,直到显示归档', session_archive_worktree_desc: '隐藏此会话;保留磁盘上的 worktree', + session_hide_external_desc: '从 WebUI 列表中隐藏此导入的会话,不删除原始历史记录。', session_archive_failed: '归档失败:', session_archived: '会话已归档', session_archived_worktree: '会话已归档。Worktree 仍保留在磁盘上。', + session_hidden: '已从列表中隐藏会话', session_delete: '删除会话', session_delete_desc: '永久删除此会话', session_delete_confirm: '删除此会话?', @@ -8462,12 +8492,15 @@ const LOCALES = { session_move_project_desc_has: '變更此對話的專案', session_move_project_desc_none: '為此對話指定專案', session_archive: '封存對話', + session_hide_external: '從列表中隱藏', session_restore: '還原對話', session_archive_desc: '隱藏此對話,直到開啟顯示封存', session_archive_worktree_desc: '隱藏此對話;保留磁碟上的 worktree', + session_hide_external_desc: '從 WebUI 列表中隱藏此匯入的對話,不刪除原始歷史記錄。', session_restore_desc: '將此對話移回主清單', session_archived: '對話已封存', session_archived_worktree: '對話已封存。Worktree 仍保留在磁碟上。', + session_hidden: '已從列表中隱藏對話', session_restored: '對話已還原', session_archive_failed: '封存失敗:', session_duplicate: '複製對話', @@ -8578,6 +8611,7 @@ const LOCALES = { settings_label_sidebar_density: '側邊欄密度', cmd_reasoning: '切換思考區塊可見性(顯示/隱藏)或設定努力等級', settings_label_external_sessions: '顯示外部會話', + settings_label_previous_messaging_sessions: '顯示以前的訊息對話', settings_label_sync_insights: '\u540c\u6b65\u5230 insights', settings_label_check_updates: '\u6aa2\u67e5\u66f4\u65b0', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -8760,6 +8794,7 @@ const LOCALES = { settings_auto_title_refresh_20: '\u6bcf 20 \u8f2a\u5c0d\u8a71', settings_desc_auto_title_refresh: '\u57fa\u65bc\u6700\u65b0\u5c0d\u8a71\u81ea\u52d5\u91cd\u65b0\u751f\u6210\u6703\u8a71\u6a19\u984c\uff0c\u4f7f\u5176\u968f\u5c0d\u8a71\u767c\u5c55\u4fdd\u6301\u76f8\u95dc\u3002\u9700\u8981\u914d\u7f6e LLM \u6a19\u984c\u751f\u6210\u6a21\u578b\u3002', settings_desc_external_sessions: '在會話列表中顯示來自 CLI、Telegram、Discord、Slack 等管道的對話。點擊可導入並繼續對話。', + 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。', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -9759,12 +9794,15 @@ const LOCALES = { session_move_project_desc_has: 'Mudar projeto desta conversa', session_move_project_desc_none: 'Atribuir projeto a esta conversa', session_archive: 'Arquivar conversa', + session_hide_external: 'Ocultar da lista', session_restore: 'Restaurar conversa', session_archive_desc: 'Esconder conversa até mostrar arquivados', session_archive_worktree_desc: 'Esconder esta conversa; manter o worktree no disco', + session_hide_external_desc: 'Ocultar esta sessão importada do WebUI sem excluir o histórico original.', session_restore_desc: 'Trazer conversa de volta à lista principal', session_archived: 'Sessão arquivada', session_archived_worktree: 'Sessão arquivada. O worktree permanece no disco.', + session_hidden: 'Sessão ocultada da lista', session_restored: 'Sessão restaurada', session_archive_failed: 'Falha ao arquivar: ', session_duplicate: 'Duplicar conversa', @@ -9871,6 +9909,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_previous_messaging_sessions: 'Mostrar sessões de mensagens anteriores', settings_label_sync_insights: 'Sincronizar para insights', settings_label_check_updates: 'Verificar atualizações', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -10059,6 +10098,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_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.', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", @@ -11997,12 +12037,15 @@ const LOCALES = { session_move_project_desc_has: 'Changer le projet pour cette conversation', session_move_project_desc_none: 'Attribuer un projet à cette conversation', session_archive: 'Archiver une conversation', + session_hide_external: 'Masquer de la liste', session_restore: 'Restaurer la conversation', session_archive_desc: 'Masquer cette conversation jusqu\'à ce que l\'archive soit affichée', session_archive_worktree_desc: 'Cachez cette conversation ; garder son arbre de travail sur le disque', + session_hide_external_desc: 'Masquer cette session importée du WebUI sans supprimer l\'historique d\'origine.', session_restore_desc: 'Ramenez cette conversation dans la liste principale', session_archived: 'Séance archivée', session_archived_worktree: 'Séance archivée. Worktree reste sur le disque.', + session_hidden: 'Session masquée de la liste', session_restored: 'Session restaurée', session_archive_failed: 'Échec de l\'archivage :', session_duplicate: 'Conversation en double', @@ -12109,6 +12152,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_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', settings_label_whats_new_summary: "Summarize What's New with AI", @@ -12306,6 +12350,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_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.', settings_desc_whats_new_summary: "Changes the What's New action from opening the raw diff first to generating a short, human-readable summary. The regular diff comparison stays available after the summary.", diff --git a/tests/test_1466_sidebar_cancel_clarify.py b/tests/test_1466_sidebar_cancel_clarify.py index cc87bbf2..ee182a4c 100644 --- a/tests/test_1466_sidebar_cancel_clarify.py +++ b/tests/test_1466_sidebar_cancel_clarify.py @@ -23,12 +23,12 @@ class TestSidebarCancelAction: """Running sessions need a context-menu cancel action even when not active pane.""" # Window bumped from 3200 → 4400 in #1764 to accommodate the new # Rename action item, then to 5200 in #2111 for response-aware archive - # toast handling inside _openSessionActionMenu before the stop/delete - # actions. + # toast handling, then to 6400 in #2294 for the new "Hide from list" + # action prepended for external sessions. # The `session.active_stream_id` / cancelSessionStream / delete checks # are positional further down in the function, so growing the prefix # required growing this read window. - body = _function_body(SESSIONS_JS, "_openSessionActionMenu", 5200) + body = _function_body(SESSIONS_JS, "_openSessionActionMenu", 6400) assert "session.active_stream_id" in body, ( "sidebar action menu must detect per-session active_stream_id instead of S.activeStreamId" ) @@ -75,8 +75,9 @@ class TestSidebarCancelAction: def test_cli_sessions_hide_duplicate_and_delete_in_action_menu(self): """Session action menu should hide duplicate/delete for CLI-origin sessions.""" # Window bumped 3600 → 4800 in #1764 (Rename action prepended), then - # to 5200 in #2111 for response-aware archive toast handling. - body = _function_body(SESSIONS_JS, "_openSessionActionMenu", 5200) + # to 5200 in #2111 for response-aware archive toast handling, then + # to 6400 in #2294 for the "Hide from list" action on external sessions. + body = _function_body(SESSIONS_JS, "_openSessionActionMenu", 6400) assert "const isCliSession = _isCliSession(session);" in body assert "const isExternalSession = isMessagingSession || isCliSession;" in body assert "if(!isExternalSession)" in body diff --git a/tests/test_issue1611_session_profile_filtering.py b/tests/test_issue1611_session_profile_filtering.py index 8da491ff..c3a6d8d5 100644 --- a/tests/test_issue1611_session_profile_filtering.py +++ b/tests/test_issue1611_session_profile_filtering.py @@ -164,7 +164,11 @@ def test_keep_latest_messaging_runs_after_profile_filter(): block = src[handler_idx:next_handler] filter_idx = block.find('_profiles_match(s.get("profile"), active_profile)') - dedupe_idx = block.find('_keep_latest_messaging_session_per_source(scoped)') + # The dedupe call can be either single-line `(scoped)` or multi-line + # `(\n scoped,\n show_previous_messaging_sessions=…,\n)`; match the + # function name + the first arg position rather than coupling to the call + # shape. (#2294 added the keyword-arg form.) + dedupe_idx = block.find('_keep_latest_messaging_session_per_source(') assert filter_idx > 0, "Profile filter not found in /api/sessions handler" assert dedupe_idx > 0, "Messaging dedupe must run on the scoped list" assert filter_idx < dedupe_idx, (