# Changelog — 文件管理二期（递归 chmod + 不可读提示）

| 项 | 内容 |
|----|------|
| 日期 | 2026-06-01 |
| 类型 | 功能 |

## 摘要

- `POST /sync/chmod` 支持 `recursive`：仅目录、`test -d` 校验，禁止对 `/` 等系统路径递归；超时 300s。
- 权限对话框：目录可勾选「同时修改子项」并二次确认。
- 文件页：根据 `files-capability`、读失败与 ls 权限显示顶部提示条；不可读文件行内 `mdi-shield-lock`。

## 动机

完成设计文档 §4.5 二期与 L1 不可读场景可观测性。

## 涉及文件

- `server/utils/files_chmod_policy.py`（新建）
- `server/api/schemas.py`、`server/api/sync_v2.py`
- `frontend/src/utils/fileMode.ts`
- `frontend/src/components/FilePermissionDialog.vue`
- `frontend/src/pages/FilesPage.vue`
- `tests/test_file_permissions.py`
- `docs/design/plans/2026-06-01-files-phase2-recursive-read-hint.md`

## 迁移 / 重启

- 无 DB 变更；需重启后端并重新构建前端。

## 验证

```bash
pytest tests/test_file_permissions.py -q
```

浏览器：选非 root 服务器 → 顶栏提示；目录 chmod 勾选递归；打开无读权限文件触发提示更新。
