fix(browser): Agent 调用浏览器工具自动展开面板 + 页面区让出拖拽把手
This commit is contained in:
@@ -329,6 +329,32 @@ export default function App(): JSX.Element {
|
|||||||
// 浏览器插件(内置):面板 tab 按其启用态门控(禁用后 tab 与可开列表同步消失)
|
// 浏览器插件(内置):面板 tab 按其启用态门控(禁用后 tab 与可开列表同步消失)
|
||||||
const browserEnabled = plugins.find((p) => p.manifest.id === 'browser')?.enabled ?? true
|
const browserEnabled = plugins.find((p) => p.manifest.id === 'browser')?.enabled ?? true
|
||||||
|
|
||||||
|
// Agent 调用浏览器工具 → 自动展开侧面板并激活浏览器标签。
|
||||||
|
// 每回合(agent_start)只强制一次:回合中用户手动收起面板不被反复顶开。
|
||||||
|
const browserAutoOpenedRef = useRef(false)
|
||||||
|
useEffect(() => {
|
||||||
|
return window.api.onEvent((event) => {
|
||||||
|
if (event.type === 'agent_start') {
|
||||||
|
browserAutoOpenedRef.current = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
event.type === 'tool_start' &&
|
||||||
|
event.toolName.startsWith('browser_') &&
|
||||||
|
!browserAutoOpenedRef.current &&
|
||||||
|
browserEnabled
|
||||||
|
) {
|
||||||
|
browserAutoOpenedRef.current = true
|
||||||
|
setSide((s) => ({
|
||||||
|
...s,
|
||||||
|
open: true,
|
||||||
|
tabs: s.tabs.includes('browser') ? s.tabs : [...s.tabs, 'browser'],
|
||||||
|
active: 'browser'
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, [browserEnabled])
|
||||||
|
|
||||||
// 面板标签:browser(宿主内置组件)+ manifest 声明 panel 的外置插件(iframe 页)
|
// 面板标签:browser(宿主内置组件)+ manifest 声明 panel 的外置插件(iframe 页)
|
||||||
const panelTabs = sideTabIds.flatMap((id) => {
|
const panelTabs = sideTabIds.flatMap((id) => {
|
||||||
if (id === 'browser') {
|
if (id === 'browser') {
|
||||||
|
|||||||
@@ -384,8 +384,9 @@ export function BrowserPanel(props: BrowserPanelProps): JSX.Element {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* 页面区域:原生 WebContentsView 对齐到这里的矩形。
|
{/* 页面区域:原生 WebContentsView 对齐到这里的矩形。
|
||||||
* 让位期(菜单/浮层打开)以冻结快照占位,快照未就绪时短暂纯白 */}
|
* 让位期(菜单/浮层打开)以冻结快照占位,快照未就绪时短暂纯白。
|
||||||
<div className="relative min-h-0 flex-1 bg-page">
|
* 左内缩 4px:原生视图盖住一切 DOM,必须让出侧面板左缘的拖拽把手 */}
|
||||||
|
<div className="relative min-h-0 flex-1 bg-page pl-1">
|
||||||
{activeTab && !slotHidden ? (
|
{activeTab && !slotHidden ? (
|
||||||
<BrowserSlot key={activeTab.tabId} tabId={activeTab.tabId} />
|
<BrowserSlot key={activeTab.tabId} tabId={activeTab.tabId} />
|
||||||
) : activeTab ? (
|
) : activeTab ? (
|
||||||
|
|||||||
Reference in New Issue
Block a user