fix(agents): stop falsely reporting saved agent edits on external OpenCode; make model-selector shortcut customizable (#1839)

* feat(shortcuts): make 'Open model selector' shortcut customizable

Lets users remap the model selector shortcut (e.g. to Ctrl+M) via
Settings > OpenChamber > Shortcuts, matching OpenCode's quick
model-switch keybinding workflow.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* fix(agents): surface manual-restart needed when on external OpenCode

Agent prompt/permission/settings edits are written to disk, but an
external OpenCode server (skip-start or auto-detected on the default
port) is not owned by OpenChamber and is only health-probed on config
change, so it keeps serving its startup-cached config until restarted.
The API previously claimed a successful reload, so the UI silently
reverted the edit to the stale/default value on refresh.

Now refreshOpenCodeAfterConfigChange reports whether a real reload
happened; agent routes return requiresManualRestart for external mode;
and the agents UI keeps the saved values and warns the user to restart
their OpenCode server instead of showing a false success. Managed mode
behavior is unchanged (process is restarted and reload is live).

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

---------

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
This commit is contained in:
Serhii Dziupin
2026-06-26 19:37:45 +03:00
committed by GitHub
co-authored by Serhii Dziupin
parent 3e3cd82a47
commit f4e90ca232
15 changed files with 155 additions and 53 deletions
@@ -362,12 +362,14 @@
'settings.agents.sidebar.toast.agentExists': '已存在同名 agent',
'settings.agents.sidebar.toast.removeOldAfterRenameFailed': '重新命名後移除舊 agent 失敗',
'settings.agents.sidebar.toast.renameFailed': '重新命名 agent 失敗',
'settings.agents.sidebar.toast.agentRenamed': 'Agent 已重新命名為 "{name}"',
'settings.agents.page.toast.permissionNameRequired': '權限名稱為必填項',
'settings.agents.page.toast.created': 'Agent 建立成功',
'settings.agents.page.toast.updated': 'Agent 更新成功',
'settings.agents.page.toast.createFailed': '建立 agent 失敗',
'settings.agents.page.toast.updateFailed': '更新 agent 失敗',
'settings.agents.page.toast.saveUnexpectedError': '儲存時發生錯誤',
'settings.agents.page.toast.savedManualRestart': '已儲存到磁碟。請重新啟動已連線的 OpenCode 伺服器以套用變更。',
'settings.agents.page.empty.title': '從側邊欄選擇一個 agent',
'settings.agents.page.empty.description': '或建立一個 agent',
'settings.agents.page.title.new': '新增 Agent',
@@ -848,6 +850,7 @@
'settings.openchamber.keyboardShortcuts.action.cycle_agent.label': '輪換 agent',
'settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_forward.label': '向前輪換收藏模型',
'settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_backward.label': '向後輪換收藏模型',
'settings.openchamber.keyboardShortcuts.action.open_model_selector.label': '開啟模型選擇器',
'settings.openchamber.keyboardShortcuts.action.expand_input.label': '展開輸入方塊',
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': '開啟對話時間軸',
'settings.projects.sidebar.total': '總計 {count}',