Skip to content

Commit 43cc39b

Browse files
xgopilotpionxe
andcommitted
merge: sync latest origin/main and resolve update.go conflict
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: pionxe <148670367+pionxe@users.noreply.github.com>
2 parents a69dc32 + 60a0cce commit 43cc39b

15 files changed

Lines changed: 1408 additions & 30 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: "issue-rfc-architecture"
3+
description: "用于创建架构类 Issue(RFC 风格)。当用户需要明确模块边界、核心设计和落地路线时使用。"
4+
---
5+
6+
# Issue RFC Architecture
7+
8+
适用于“架构类”议题,强调边界、职责和关键设计选择。
9+
10+
## 使用步骤
11+
12+
1. 先确认目标问题和影响模块。
13+
2. 运行命令创建 issue:
14+
15+
```bash
16+
./scripts/create_issue.sh --type architecture --title "<架构标题>"
17+
```
18+
19+
3. 如需自定义正文,先准备 markdown 文件,再执行:
20+
21+
```bash
22+
./scripts/create_issue.sh --type architecture --title "<架构标题>" --body-file <path>
23+
```
24+
25+
## 质量要求
26+
27+
- 正文必须包含:目标问题、现状与边界、核心设计、落地清单、验收标准、风险与回滚。
28+
- 设计必须说明“为什么是这个方案”,并给出边界分工。
29+
- 验收项应覆盖正常路径、异常路径、恢复路径。
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: "issue-rfc-implementation"
3+
description: "用于创建实现类 Issue(RFC 执行单风格)。当用户要把已确认提案/架构落地成可执行任务时使用。"
4+
---
5+
6+
# Issue RFC Implementation
7+
8+
适用于“实现类”议题,强调关联上游 RFC、改动范围和验证闭环。
9+
10+
## 使用步骤
11+
12+
1. 先确认已关联的提案/架构 issue。
13+
2. 运行命令创建 issue:
14+
15+
```bash
16+
./scripts/create_issue.sh --type implementation --title "<实现标题>"
17+
```
18+
19+
3. 如需自定义正文,先准备 markdown 文件,再执行:
20+
21+
```bash
22+
./scripts/create_issue.sh --type implementation --title "<实现标题>" --body-file <path>
23+
```
24+
25+
## 质量要求
26+
27+
- 正文必须包含:关联 RFC、目标问题、实现设计、任务清单、测试验证、风险与回滚。
28+
- 任务清单要可执行且可追踪,不接受抽象口号。
29+
- 测试清单至少覆盖正常路径、边界条件、异常分支。
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: "issue-rfc-proposal"
3+
description: "用于创建提案类 Issue(RFC 风格)。当用户希望在本仓库发起‘目标问题 -> 设计 -> 落地清单’的提案讨论时使用。"
4+
---
5+
6+
# Issue RFC Proposal
7+
8+
适用于“提案类”议题,要求输出遵循:目标问题(Why)-> 设计方案(How)-> 落地清单(What)。
9+
10+
## 使用步骤
11+
12+
1. 先让用户明确提案标题与核心痛点。
13+
2. 运行命令创建 issue:
14+
15+
```bash
16+
./scripts/create_issue.sh --type proposal --title "<提案标题>"
17+
```
18+
19+
3. 如需自定义正文,先准备 markdown 文件,再执行:
20+
21+
```bash
22+
./scripts/create_issue.sh --type proposal --title "<提案标题>" --body-file <path>
23+
```
24+
25+
## 质量要求
26+
27+
- 正文必须包含:目标问题、设计方案、落地清单、验收标准、风险与回滚。
28+
- 非目标必须明确,避免提案发散。
29+
- 验收标准必须可验证,避免空泛表述。

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.PHONY: install-skills
2+
3+
install-skills:
4+
@./scripts/install_skills.sh

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,47 @@ Gateway 转发与自动拉起说明:
179179
- 不提交明文密钥、个人配置或会话数据
180180
- 不提交无关改动与临时文件
181181

182+
## 在仓库内直接创建 Issue(Skills + 自动化)
183+
184+
仓库提供三类同前缀 skill(位于 `.skills/`):
185+
186+
- `issue-rfc-proposal`(提案类,RFC 风格)
187+
- `issue-rfc-architecture`(架构类,RFC 风格)
188+
- `issue-rfc-implementation`(实现类,执行单风格)
189+
190+
先安装 skills 到仓库内常见 AI Coding 工具目录:
191+
192+
```bash
193+
make install-skills
194+
```
195+
196+
默认会安装到以下目录(均在仓库内):
197+
198+
- `.codex/skills`
199+
- `.claude/skills`
200+
- `.cursor/skills`
201+
- `.windsurf/skills`
202+
203+
如需自定义安装目标,可设置环境变量 `SKILL_INSTALL_TARGETS`(冒号分隔目录):
204+
205+
```bash
206+
SKILL_INSTALL_TARGETS=".codex/skills:.claude/skills" make install-skills
207+
```
208+
209+
Skill 内部调用脚本 `scripts/create_issue.sh` 创建 issue。你也可以直接执行脚本:
210+
211+
```bash
212+
./scripts/create_issue.sh --type proposal --title "统一会话中断恢复语义"
213+
./scripts/create_issue.sh --type architecture --title "Runtime 与 Session 账本边界梳理"
214+
./scripts/create_issue.sh --type implementation --title "补齐流式中断持久化" --labels "bug,priority-high"
215+
```
216+
217+
脚本可选参数:
218+
219+
- `--repo <owner/repo>`:指定目标仓库(默认自动识别当前仓库)
220+
- `--body-file <path>`:自定义 issue 正文文件(不传则使用内置模板)
221+
- `--labels <a,b,c>`:追加标签(逗号分隔)
222+
182223
## 网关运维与安全(GW-06)
183224

184225
- 静默认证(Silent Auth):

internal/tui/core/app/app.go

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,19 @@ type appRuntimeState struct {
136136
logPersistVersion int
137137
transcriptContent string
138138
transcriptScrollbarDrag bool
139-
footerErrorLast string
140-
footerErrorText string
141-
footerErrorUntil time.Time
139+
140+
textSelection struct {
141+
active bool
142+
dragging bool
143+
startLine int
144+
startCol int
145+
endLine int
146+
endCol int
147+
}
148+
149+
footerErrorLast string
150+
footerErrorText string
151+
footerErrorUntil time.Time
142152
}
143153

144154
type pendingImageAttachment struct {
@@ -259,6 +269,23 @@ func newApp(container tuibootstrap.Container) (App, error) {
259269

260270
h := help.New()
261271
h.ShowAll = false
272+
h.ShortSeparator = " • "
273+
h.Styles.ShortKey = lipgloss.NewStyle().
274+
Foreground(lipgloss.Color(selectionFg)).
275+
Bold(true).
276+
Underline(true)
277+
h.Styles.ShortDesc = lipgloss.NewStyle().
278+
Foreground(lipgloss.Color(lightText)).
279+
Bold(true)
280+
h.Styles.ShortSeparator = lipgloss.NewStyle().
281+
Foreground(lipgloss.Color(coralAccent)).
282+
Bold(true)
283+
h.Styles.FullKey = h.Styles.ShortKey.Copy()
284+
h.Styles.FullDesc = h.Styles.ShortDesc.Copy()
285+
h.Styles.FullSeparator = h.Styles.ShortSeparator.Copy()
286+
h.Styles.Ellipsis = lipgloss.NewStyle().
287+
Foreground(lipgloss.Color(warningYellow)).
288+
Bold(true)
262289

263290
commandMenu := newCommandMenuModel(uiStyles)
264291

0 commit comments

Comments
 (0)