${modelProvider}` : ''}${esc(script || '—')}${modelProvider}` : ''}diff --git a/CHANGELOG.md b/CHANGELOG.md index dfd5d62c..2afea7cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ ## [Unreleased] +## [v0.51.332] — 2026-06-08 — Release KV (distinguish script cron jobs in Tasks) + +### Fixed +- **Script cron jobs (`no_agent`) in the Tasks panel no longer show an empty Prompt card that looked like missing configuration.** Script jobs now display a 📜 script badge (next to the agent 🤖 badge), a "Script" banner, the script path + working directory, and "Script output" run-history labels distinct from agent jobs. (#3589, @pamnard) + ## [v0.51.331] — 2026-06-08 — Release KU (dismissible error toasts) ### Fixed diff --git a/static/i18n.js b/static/i18n.js index c0778181..9ffb9830 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -1148,6 +1148,16 @@ const LOCALES = { cron_collapse_prompt: 'Collapse prompt', cron_expand_output: 'Expand output', cron_collapse_output: 'Collapse output', + cron_mode_agent: 'Agent', + cron_mode_script: 'Script', + cron_mode_label: 'Mode', + cron_script_job_banner: 'Runs a script on schedule — stdout is delivered to the target. No agent, prompt, or skills.', + cron_script_card_title: 'Script', + cron_script_output: 'Script output', + cron_script_path_label: 'Script path', + cron_script_path_hint: 'Resolved under ~/.hermes/scripts/ unless an absolute path. Edit the script file on the server to change behavior.', + cron_script_badge_title: 'Script job (no agent)', + cron_workdir_label: 'Working directory', cron_view_full_output: 'View full output', cron_all_runs: 'All runs', cron_hide_runs: 'Hide runs', @@ -2513,6 +2523,16 @@ const LOCALES = { cron_collapse_prompt: 'Comprimi prompt', cron_expand_output: 'Espandi output', cron_collapse_output: 'Comprimi output', + cron_mode_agent: 'Agente', + cron_mode_script: 'Script', + cron_mode_label: 'Modalità', + cron_script_job_banner: 'Esegue uno script a intervalli — stdout viene consegnato alla destinazione. Nessun agente, prompt o skill.', + cron_script_card_title: 'Script', + cron_script_output: 'Output script', + cron_script_path_label: 'Percorso script', + cron_script_path_hint: 'Risolto sotto ~/.hermes/scripts/ salvo percorso assoluto. Modifica lo script sul server per cambiare il comportamento.', + cron_script_badge_title: 'Job script (senza agente)', + cron_workdir_label: 'Directory di lavoro', cron_view_full_output: 'View full output', cron_all_runs: 'Tutte le esecuzioni', cron_hide_runs: 'Nascondi esecuzioni', @@ -3883,6 +3903,16 @@ const LOCALES = { cron_collapse_prompt: 'プロンプトを折りたたむ', cron_expand_output: '出力を展開', cron_collapse_output: '出力を折りたたむ', + cron_mode_agent: 'エージェント', + cron_mode_script: 'スクリプト', + cron_mode_label: 'モード', + cron_script_job_banner: 'スケジュールでスクリプトを実行し、stdout を配信先へ送ります。エージェント・プロンプト・スキルは使いません。', + cron_script_card_title: 'スクリプト', + cron_script_output: 'スクリプト出力', + cron_script_path_label: 'スクリプトパス', + cron_script_path_hint: '絶対パスでない限り ~/.hermes/scripts/ から解決されます。動作を変えるにはサーバー上のスクリプトを編集してください。', + cron_script_badge_title: 'スクリプトジョブ(エージェントなし)', + cron_workdir_label: '作業ディレクトリ', cron_view_full_output: '全出力を表示', cron_all_runs: 'すべての実行', cron_hide_runs: '実行履歴を隠す', @@ -4967,6 +4997,16 @@ const LOCALES = { cron_collapse_prompt: 'Свернуть промпт', cron_expand_output: 'Развернуть вывод', cron_collapse_output: 'Свернуть вывод', + cron_mode_agent: 'Агент', + cron_mode_script: 'Скрипт', + cron_mode_label: 'Режим', + cron_script_job_banner: 'По расписанию запускается скрипт — stdout доставляется в канал. Агент, промпт и skills не используются.', + cron_script_card_title: 'Скрипт', + cron_script_output: 'Вывод скрипта', + cron_script_path_label: 'Путь к скрипту', + cron_script_path_hint: 'Ищется в ~/.hermes/scripts/, если не указан абсолютный путь. Логику меняй в файле скрипта на сервере.', + cron_script_badge_title: 'Скриптовая задача (без агента)', + cron_workdir_label: 'Рабочая директория', cron_view_full_output: 'View full output', cron_all_runs: 'Все запуски', cron_hide_runs: 'Скрыть запуски', @@ -6274,6 +6314,16 @@ const LOCALES = { cron_collapse_prompt: 'Collapse prompt', cron_expand_output: 'Expand output', cron_collapse_output: 'Collapse output', + cron_mode_agent: 'Agent', + cron_mode_script: 'Script', + cron_mode_label: 'Mode', + cron_script_job_banner: 'Runs a script on schedule — stdout is delivered to the target. No agent, prompt, or skills.', + cron_script_card_title: 'Script', + cron_script_output: 'Script output', + cron_script_path_label: 'Script path', + cron_script_path_hint: 'Resolved under ~/.hermes/scripts/ unless an absolute path. Edit the script file on the server to change behavior.', + cron_script_badge_title: 'Script job (no agent)', + cron_workdir_label: 'Working directory', cron_view_full_output: 'View full output', cron_all_runs: 'All runs', cron_hide_runs: 'Hide runs', @@ -7784,6 +7834,16 @@ const LOCALES = { cron_collapse_prompt: 'Prompt einklappen', cron_expand_output: 'Ausgabe erweitern', cron_collapse_output: 'Ausgabe einklappen', + cron_mode_agent: 'Agent', + cron_mode_script: 'Skript', + cron_mode_label: 'Modus', + cron_script_job_banner: 'Führt ein Skript nach Plan aus — stdout wird zugestellt. Kein Agent, Prompt oder Skills.', + cron_script_card_title: 'Skript', + cron_script_output: 'Skriptausgabe', + cron_script_path_label: 'Skriptpfad', + cron_script_path_hint: 'Wird unter ~/.hermes/scripts/ aufgelöst, sofern kein absoluter Pfad. Verhalten über die Skriptdatei auf dem Server ändern.', + cron_script_badge_title: 'Skript-Job (ohne Agent)', + cron_workdir_label: 'Arbeitsverzeichnis', cron_view_full_output: 'View full output', cron_all_runs: 'Alle Ausführungen', cron_hide_runs: 'Ausführungen ausblenden', @@ -8890,6 +8950,16 @@ const LOCALES = { cron_collapse_prompt: '收起提示词', cron_expand_output: '展开输出', cron_collapse_output: '收起输出', + cron_mode_agent: '代理', + cron_mode_script: '脚本', + cron_mode_label: '模式', + cron_script_job_banner: '按计划运行脚本,stdout 会投递到目标。不使用代理、提示词或技能。', + cron_script_card_title: '脚本', + cron_script_output: '脚本输出', + cron_script_path_label: '脚本路径', + cron_script_path_hint: '除非是绝对路径,否则在 ~/.hermes/scripts/ 下解析。请在服务器上编辑脚本文件以更改行为。', + cron_script_badge_title: '脚本任务(无代理)', + cron_workdir_label: '工作目录', cron_view_full_output: 'View full output', cron_all_runs: '全部运行记录', cron_hide_runs: '隐藏记录', @@ -10460,6 +10530,16 @@ const LOCALES = { cron_collapse_prompt: '收起提示詞', cron_expand_output: '展開輸出', cron_collapse_output: '收起輸出', + cron_mode_agent: '代理', + cron_mode_script: '腳本', + cron_mode_label: '模式', + cron_script_job_banner: '依排程執行腳本,stdout 會送到交付目標。不使用代理、提示詞或技能。', + cron_script_card_title: '腳本', + cron_script_output: '腳本輸出', + cron_script_path_label: '腳本路徑', + cron_script_path_hint: '除非為絕對路徑,否則會在 ~/.hermes/scripts/ 下解析。請在伺服器上編輯腳本檔以變更行為。', + cron_script_badge_title: '腳本任務(無代理)', + cron_workdir_label: '工作目錄', cron_view_full_output: '檢視完整輸出', cron_all_runs: '所有執行', cron_hide_runs: '隱藏執行記錄', @@ -11647,6 +11727,16 @@ const LOCALES = { cron_collapse_prompt: 'Contraer prompt', cron_expand_output: 'Expandir saída', cron_collapse_output: 'Contraer saída', + cron_mode_agent: 'Agente', + cron_mode_script: 'Script', + cron_mode_label: 'Modo', + cron_script_job_banner: 'Executa um script no agendamento — stdout é entregue ao destino. Sem agente, prompt ou skills.', + cron_script_card_title: 'Script', + cron_script_output: 'Saída do script', + cron_script_path_label: 'Caminho do script', + cron_script_path_hint: 'Resolvido em ~/.hermes/scripts/ salvo caminho absoluto. Edite o script no servidor para alterar o comportamento.', + cron_script_badge_title: 'Tarefa script (sem agente)', + cron_workdir_label: 'Diretório de trabalho', cron_view_full_output: 'View full output', cron_all_runs: 'Todas execuções', cron_hide_runs: 'Esconder execuções', @@ -12912,6 +13002,16 @@ const LOCALES = { cron_collapse_prompt: 'Collapse prompt', cron_expand_output: 'Expand output', cron_collapse_output: 'Collapse output', + cron_mode_agent: 'Agent', + cron_mode_script: 'Script', + cron_mode_label: 'Mode', + cron_script_job_banner: 'Runs a script on schedule — stdout is delivered to the target. No agent, prompt, or skills.', + cron_script_card_title: 'Script', + cron_script_output: 'Script output', + cron_script_path_label: 'Script path', + cron_script_path_hint: 'Resolved under ~/.hermes/scripts/ unless an absolute path. Edit the script file on the server to change behavior.', + cron_script_badge_title: 'Script job (no agent)', + cron_workdir_label: 'Working directory', cron_view_full_output: 'View full output', cron_all_runs: 'All runs', cron_hide_runs: 'Hide runs', @@ -14218,6 +14318,16 @@ const LOCALES = { cron_collapse_prompt: 'Réduire le prompt', cron_expand_output: 'Développer la sortie', cron_collapse_output: 'Réduire la sortie', + cron_mode_agent: 'Agent', + cron_mode_script: 'Script', + cron_mode_label: 'Mode', + cron_script_job_banner: 'Exécute un script selon l\'horaire — stdout est livré à la cible. Pas d\'agent, prompt ni skills.', + cron_script_card_title: 'Script', + cron_script_output: 'Sortie du script', + cron_script_path_label: 'Chemin du script', + cron_script_path_hint: 'Résolu sous ~/.hermes/scripts/ sauf chemin absolu. Modifiez le script sur le serveur pour changer le comportement.', + cron_script_badge_title: 'Tâche script (sans agent)', + cron_workdir_label: 'Répertoire de travail', cron_view_full_output: 'View full output', cron_all_runs: 'Toutes les courses', cron_hide_runs: 'Masquer les courses', @@ -15577,6 +15687,16 @@ const LOCALES = { cron_collapse_prompt: 'İstemi daralt', cron_expand_output: 'Çıktıyı genişlet', cron_collapse_output: 'Çıktıyı daralt', + cron_mode_agent: 'Ajan', + cron_mode_script: 'Betik', + cron_mode_label: 'Mod', + cron_script_job_banner: 'Zamanlanmış betiği çalıştırır — stdout hedefe iletilir. Ajan, istem veya beceri yok.', + cron_script_card_title: 'Betik', + cron_script_output: 'Betik çıktısı', + cron_script_path_label: 'Betik yolu', + cron_script_path_hint: 'Mutlak yol değilse ~/.hermes/scripts/ altında çözülür. Davranışı değiştirmek için sunucudaki betiği düzenleyin.', + cron_script_badge_title: 'Betik işi (ajan yok)', + cron_workdir_label: 'Çalışma dizini', cron_view_full_output: 'View full output', cron_all_runs: 'Tüm koşular', cron_hide_runs: 'Çalıştırmaları gizle', @@ -17013,6 +17133,16 @@ const LOCALES = { cron_collapse_prompt: 'Zwiń zapytanie', cron_expand_output: 'Rozwiń wyjście', cron_collapse_output: 'Zwiń wyjście', + cron_mode_agent: 'Agent', + cron_mode_script: 'Skrypt', + cron_mode_label: 'Tryb', + cron_script_job_banner: 'Uruchamia skrypt według harmonogramu — standardowe wyjście jest dostarczane do celu. Bez agenta, promptu ani umiejętności.', + cron_script_card_title: 'Skrypt', + cron_script_output: 'Wyjście skryptu', + cron_script_path_label: 'Ścieżka skryptu', + cron_script_path_hint: 'Rozwiązywana względem ~/.hermes/scripts/, chyba że podano ścieżkę bezwzględną. Edytuj plik skryptu na serwerze, aby zmienić działanie.', + cron_script_badge_title: 'Zadanie skryptowe (bez agenta)', + cron_workdir_label: 'Katalog roboczy', cron_view_full_output: 'Wyświetl pełne wyjście', cron_all_runs: 'Wszystkie uruchomienia', cron_hide_runs: 'Ukryj uruchomienia', diff --git a/static/panels.js b/static/panels.js index bc1d2ad0..9fa938ea 100644 --- a/static/panels.js +++ b/static/panels.js @@ -516,7 +516,7 @@ async function loadCrons(animate) { item.innerHTML = `
${esc(workdir)}${modelProvider}` : ''}${esc(script || '—')}${modelProvider}` : ''}