# 审计 — 移除内置浏览器 + 推送页服务器 UI

**Changelog**: `docs/changelog/2026-06-11-remove-embedded-browser.md` · `docs/changelog/2026-06-11-push-server-name-display.md`  
**Commit**: `5407125`

## 范围（文件清单）

| 文件 | 变更 |
|------|------|
| `frontend/src/App.vue` | 移除浏览器侧栏与 GlobalBrowserPanel |
| `frontend/src/router/index.ts` | 移除 `/browser` |
| `frontend/src/pages/ServersPage.vue` | 站点 → 新标签打开 |
| `frontend/src/components/GlobalBrowserPanel.vue` | 删除 |
| `frontend/src/composables/useGlobalBrowser.ts` | 删除 |
| `frontend/src/pages/BrowserPage.vue` | 删除 |
| `server/api/browser.py` | 删除 |
| `server/utils/browser_ui_state.py` | 删除 |
| `server/main.py` | 注销 browser 路由 |
| `frontend/src/components/push/PushServerGrid.vue` | 卡片/列表切换、名称复制 |
| `frontend/src/composables/push/usePushServerViewMode.ts` | 视图偏好 localStorage |
| `frontend/src/components/push/PushProgressList.vue` | 名称 truncate + title |
| `frontend/src/components/push/PushHistoryTable.vue` | 服务器列 slot |
| `frontend/src/components/push/PushPreviewDialog.vue` | 名称 truncate + title |
| `frontend/src/composables/push/usePushLogs.ts` | 列宽 |

## Step 3 规则扫描

| H | 规则 | 结论 |
|---|------|------|
| H1 | SSRF / 安全 | PASS — 删除 iframe 浏览器 API |
| H2 | 无静默吞错 | PASS |
| H3 | clipboard | PASS — copy 失败有 snackbar |
| H4 | CUD 审计 | N/A |

## Closure

| H | 判定 | 依据 |
|---|------|------|
| H1–H4 | PASS | 前端 UI + 删除 dead code |

## DoD

- [x] type-check · import server.main
- [ ] 生产推送页验证

## 验证

侧栏无浏览器；推送页卡片/列表；点击名称复制。
