## ADDED Requirements

### Requirement: 折叠树目录展示

目录界面 SHALL 以「卷 → 章」两级折叠树呈现含分卷的小说：卷为可展开/收起的父节点，章为叶节点。无分卷的小说 SHALL 将所有章节平铺在根层级（与现有扁平体验一致）。

#### Scenario: 含分卷的小说显示为树

- **WHEN** 打开一本含多卷的小说的目录
- **THEN** 每个卷显示为可折叠的父节点，其下挂载该卷的章节作为叶节点

#### Scenario: 无分卷的小说显示为平铺列表

- **WHEN** 打开一本无卷的小说的目录
- **THEN** 所有章节平铺显示，无多余的分组层级

### Requirement: 树节点导航不改变底层导航语义

叶节点（章）的标识 MUST 携带其在扁平章节列表中的索引；选中叶节点 MUST 触发与现有相同的「按扁平索引设置当前章节」逻辑。卷父节点 MUST NOT 进入章节阅读序列（仅用于展开/收起与分组）。

#### Scenario: 选中章节叶节点开始阅读

- **WHEN** 用户在树中选中某个章节叶节点并确认
- **THEN** 阅读器跳转到该章节，行为与改造前选中扁平列表项一致

#### Scenario: 展开/收起卷节点

- **WHEN** 用户对一个卷父节点执行展开/收起操作
- **THEN** 该卷下的章节叶节点相应显示或隐藏，且不改变当前阅读位置

### Requirement: 目录搜索与定位

目录 SHALL 保留搜索能力：按标题子串过滤，并支持以 `$` 前缀输入索引数字直接定位。搜索激活时 SHALL 塌缩为扁平过滤结果；清空搜索 SHALL 回到折叠树。目录打开时 SHALL 定位/高亮当前正在阅读的章节。

#### Scenario: 子串搜索塌缩为扁平结果

- **WHEN** 用户输入标题关键字进行搜索
- **THEN** 目录显示所有匹配标题的扁平列表，清空后恢复为折叠树

#### Scenario: 打开目录定位当前章节

- **WHEN** 用户在阅读中打开目录
- **THEN** 当前阅读章节被高亮，且其所属卷处于展开状态
