# 优化欢迎框诗句排版效果

## 问题分析

当前 `welcome_box()` 函数中诗句排版存在以下可优化点：

### 1. 断行逻辑不够智能
- 当前标点断行条件是 `cur_w * 2 >= text_area`（已积累超过半行宽度），对于古诗词来说过于严格
- 例如「若教眼底无离恨，不信人间有白头」在逗号处应该自然断句为两行，但如果逗号前文字宽度不到框体半宽就不会断行
- 对于古诗词，逗号/分号是最自然的断句点，不应受宽度限制

### 2. 框体宽度偏窄
- `inner` 限制在 30~50 字符，而很多诗句超过 14 个字（28 显示宽度），在较窄框体内会被强制换行
- 建议将最大宽度从 50 提升到 60，给诗句更多呼吸空间

### 3. 诗句行间距
- 多行诗句之间紧密排列，视觉上比较拥挤

## 优化方案

### 改动文件：`src/command/chat/ui/components.rs`

#### 改动 1：优化断行逻辑
- 对中文标点（`，`、`；`、`！`、`？`、`。`）做优先断行，不受「半行」宽度限制
- 英文标点（`,`、`.`、`!`、`?`）保留原有的半行宽度限制
- 这样古诗词自然断句会正确工作

```rust
// 中文标点：直接断行（不受宽度限制）
let cn_break = ['，', '。', '！', '？', '；', '：'];
// 英文标点：需已累积至半行以上
let en_break = [',', '.', '!', '?'];

if cn_break.contains(&ch) {
    // 中文标点：无条件断行
    lines_chars.push(std::mem::take(&mut cur));
    cur_w = 0;
} else if en_break.contains(&ch) && cur_w * 2 >= text_area {
    // 英文标点：保留原逻辑
    lines_chars.push(std::mem::take(&mut cur));
    cur_w = 0;
}
```

#### 改动 2：增大框体最大宽度
```rust
// 从 50 提升到 60
let inner = ((width as usize) / 2).clamp(30, 60);
```

#### 改动 3：多行诗增加行间距
在每行诗句之间插入一个细空行（用更矮的分隔符），让多行诗视觉上更通透。具体做法是在 `quote_lines` 构建时，每行之间插入一行空的边框行（与现有 padding 一致）。

## 影响范围
- 仅影响 `src/command/chat/ui/components.rs` 中的 `welcome_box()` 函数
- 不影响 quotes.rs、palette.rs 等其他文件
- 纯 UI 优化，不影响任何业务逻辑
