# Changelog: 推送页 B5 架构拆分

**日期**: 2026-06-02

## 摘要

将单体 `PushPage.vue`（~1080 行）拆分为 composables + 8 个子组件，页面仅保留编排与生命周期，行为与 B4 一致。

## 动机

- 降低推送页维护成本，对齐 Files 页的 `useFilesPage` + `components/files/` 模式
- 为后续独立推送 WS 频道、预览策略等改动提供清晰边界

## 涉及文件

| 路径 | 说明 |
|------|------|
| `frontend/src/pages/PushPage.vue` | 重写为薄模板 |
| `frontend/src/composables/push/*` | 表单、服务器选择、进度 WS、预览、历史/诊断 |
| `frontend/src/components/push/*` | UI 子组件 |
| `docs/design/plans/2026-06-02-push-refactor.md` | B5 标记完成 |

## 迁移 / 重启

- 仅前端：需 `npm run build-only` 并部署 `web/app/` 静态资源
- 后端无变更，无需重启 `nexus`

## 验证

```bash
cd frontend && npm run build-only
```

本地已执行，构建成功（`PushPage-*.js` 约 33 kB gzip）。

## 回滚

`git revert` 本批提交或恢复 `PushPage.vue` 单体版本；删除 `composables/push/` 与 `components/push/` 目录。
