Files
Nexus/docs/design/plans/2026-06-11-browser-nav-bookmarks.md
T

44 lines
1.6 KiB
Markdown
Raw Normal View History

# 实施说明 — 浏览器网站导航(收藏)
> 设计:`docs/design/specs/2026-06-11-browser-nav-bookmarks-design.md`
## 涉及文件(计划)
| 文件 | 动作 |
|------|------|
| `server/utils/browser_ui_state.py` | ✅ `nav_links` 解析与上限 |
| `server/api/browser.py` | ✅ `BrowserNavLinkState` / PUT 字段 |
| `tests/test_browser_ui_state.py` | ✅ `test_parse_nav_links` |
| `frontend/src/composables/useGlobalBrowser.ts` | `navLinks` + add/update/remove + persist |
| `frontend/src/components/GlobalBrowserPanel.vue` | 侧栏 Tab、列表、添加/编辑对话框、空白页快捷入口 |
| `docs/changelog/2026-06-11-browser-nav-bookmarks.md` | 完成后记录 |
## 前端步骤
1. `BrowserNavLink` 类型与 `applyServerState` / `persistState` 带上 `nav_links`
2. `addNavLink(title, url)` · `updateNavLink(id, …)` · `removeNavLink(id)`
3. `addCurrentPageToNav()` — 取 `activeTab.url``addressDraft`
4. 侧栏:`sidebarMode: 'nav' | 'history' | null`
5. 对话框:`v-dialog` 名称 + URL`normalizeBrowserUrl` 校验
6. 空白页:`v-chip` / 列表展示 `navLinks`,点击 `openUrl`
## 测试要点
```bash
pytest tests/test_browser_ui_state.py -q
cd frontend && npm run type-check
```
- 添加 3 条导航 → PUT → GET 往返一致
- 超 64 条截断;非法 URL 过滤
- UI:编辑后刷新仍显示
## 回滚
- 前端未发版:仅后端多返回空 `nav_links`,兼容
- 回滚前端:导航 UI 消失,DB 中 JSON 保留无害
## 依赖
- 全局浮动浏览器(`GlobalBrowserPanel` + `/api/browser/state`)已上线