Skip to content

Commit 6b5eafc

Browse files
committed
chore: sync with dev
2 parents e228c8c + f5ffb94 commit 6b5eafc

25 files changed

Lines changed: 1790 additions & 48 deletions

File tree

Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
---
2+
name: release-notes
3+
description: >-
4+
Generate and publish formatted GitHub Release Notes for opentiny/genui-sdk.
5+
Compares the new tag with the previous stable release, fetches PRs, polishes
6+
titles, formats notes by area and change type, and writes the result to
7+
releaseNote.md at the repo root. Use when the user asks to create release
8+
notes, publish a release, or prepare a changelog for genui-sdk.
9+
---
10+
11+
# Genui SDK Release Notes
12+
13+
[opentiny/genui-sdk](https://github.com/opentiny/genui-sdk) 生成并发布 Release Notes。
14+
15+
## 前置检查
16+
17+
执行前确认:
18+
19+
1. **GitHub CLI**`gh auth status` 已通过。若未安装或未登录,用 AskQuestion 询问用户:
20+
- 是否安装并登录 `gh`(推荐,可自动拉取 PR 与发布)
21+
- 或手动提供:新 tag、上一正式版 tag、GitHub 自动生成的 Release notes 原文
22+
2. **Tag 信息**:明确本次发布的 tag(如 `v1.3.0`
23+
3. **上一正式版**:不含 `alpha` / `beta` 的最近 tag(如 `v1.2.0`)。用 `git tag --sort=-v:refname` 筛选
24+
25+
```text
26+
正式版判定:匹配 ^v\d+\.\d+\.\d+$,排除 alpha/beta 预发布
27+
```
28+
29+
## 工作流
30+
31+
```text
32+
进度:
33+
- [ ] 1. 确定 new_tag 与 previous_tag
34+
- [ ] 2. 拉取 PR 列表与原始 Release notes
35+
- [ ] 3. 修复 PR 标题的语法错误并进行适当润色
36+
- [ ] 4. 提炼 Highlights、按规则分类并格式化
37+
- [ ] 5. 写入 releaseNote.md 并请用户确认
38+
- [ ] 6. 发布 Release
39+
```
40+
41+
### Step 1:确定版本
42+
43+
```bash
44+
git fetch --tags
45+
git tag --merged <new_tag> --sort=-v:refname \
46+
| grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' \
47+
| grep -vx '<new_tag>'
48+
```
49+
50+
- `new_tag`:用户指定或最新待发布 tag
51+
- `previous_tag`:上述列表第一条(已合入 new_tag、且排除自身的最近正式版)
52+
53+
### Step 2:拉取 PR 数据
54+
55+
优先用本 skill 目录下的脚本:
56+
57+
```bash
58+
scripts/fetch-release-data.sh <new_tag> <previous_tag>
59+
```
60+
61+
脚本输出 JSON,包含 `new_tag``previous_tag``full_changelog_url``new_contributors``github_notes`,以及 `pull_requests` 数组,其中每个 PR 含 `number``title``author``url``files``commits`
62+
63+
若无 `gh`,备选方案:
64+
65+
```bash
66+
git log <previous_tag>..<new_tag> --pretty=format:'%s%n%b'
67+
```
68+
69+
或请用户从 [新建 Release 页](https://github.com/opentiny/genui-sdk/releases/new) 选择 tag、对比 `previous_tag` 后,将 GitHub 自动生成的 notes 粘贴到对话中。
70+
71+
也可用 GitHub API(需 `GH_TOKEN`):
72+
73+
```bash
74+
gh api repos/opentiny/genui-sdk/releases/generate-notes \
75+
-f tag_name='<new_tag>' -f previous_tag_name='<previous_tag>' \
76+
-f configuration_file_path='.github/release.yml' 2>/dev/null || true
77+
```
78+
79+
### Step 3:语法修复与润色
80+
81+
对每条 PR 标题做英文语法纠正,规则:
82+
83+
- 保持 conventional commit 前缀与 scope 不变(如 `feat(playground):``fix(core):`
84+
- 只修正语法、大小写、措辞,不改变技术含义
85+
- 同一 PR 多条 commit 时,分别润色每条描述
86+
87+
### Step 4:分类与格式化
88+
89+
#### Highlights 摘要
90+
91+
在标题之后、Features 之前撰写 3–7 条 Highlights,提炼本版本的主线变更:
92+
93+
- 每条以 **粗体主题** 起头,简述变更与影响,末尾用括号附主要 PR 编号
94+
- 将关联 PR 归并为一组(如「多框架渲染」「生命周期增强」),不要逐条罗列所有 PR
95+
- 仅收录有用户可见影响或架构意义的变更;纯 chore / ci 不进 Highlights
96+
- 格式:`- **{主题}** - {描述} (#xxx, #yyy).`
97+
98+
#### 变更类型(第一级)
99+
100+
| 前缀 / 类型 | 章节 |
101+
|------------|------|
102+
| `feat` | ✨ Features |
103+
| `fix` | 🐛 Bug Fixes |
104+
| `refactor` | ♻️ Refactor |
105+
| `docs``ci``build``test`、纯测试描述 | 🔧 Other Changes |
106+
107+
**例外**(不论前缀,归入 Other Changes 对应子区):
108+
109+
- `sites/homepage` 或 scope 含 `homepage`**Site**
110+
- `packages/benchmarks` 或标题含 `benchmarks`**Benchmarks**
111+
- `docs/``docs:`**Docs**
112+
- `.github/``ci:``build(`**Build**
113+
- 测试相关 → **Test**
114+
115+
#### 区域(第二级子标题)
116+
117+
按 PR 改动路径与标题 scope 判定,优先级从高到低:
118+
119+
| 子区 | 判定条件 |
120+
|------|---------|
121+
| **Benchmarks** | `packages/benchmarks` |
122+
| **Site** | `sites/homepage``(homepage)` |
123+
| **Docs** | `docs/``docs:` |
124+
| **Build** | `.github/``ci:``build(` |
125+
| **Test** | 测试文件或标题为测试用例补充 |
126+
| **Playground** | `sites/playground``(playground)``genui-template``template`(非 homepage) |
127+
| **Components** | `packages/``projects/` 中其余改动 |
128+
129+
#### 条目格式
130+
131+
```text
132+
- {润色后的标题} by @{author} in https://github.com/opentiny/genui-sdk/pull/{number}
133+
```
134+
135+
同一 PR 有多条独立 commit 需分别列出时,末尾追加 commit hash:
136+
137+
```text
138+
- {标题} by @{author} in https://github.com/opentiny/genui-sdk/pull/{number} - {full_sha}
139+
```
140+
141+
注意:`in` 与 URL 之间保留空格;有 hash 时用 ` - ` 分隔。
142+
143+
#### 文档结构
144+
145+
```markdown
146+
# Genui SDK v{version} Release Notes
147+
148+
## 🚀 Highlights
149+
150+
- **{主题}** - {描述} (#xxx, #yyy).
151+
- ...
152+
153+
---
154+
155+
## ✨ Features
156+
157+
**Components**
158+
- ...
159+
160+
**Playground**
161+
- ...
162+
163+
---
164+
165+
## 🐛 Bug Fixes
166+
167+
**Components**
168+
- ...
169+
170+
---
171+
172+
## ♻️ Refactor
173+
174+
...
175+
176+
---
177+
178+
## 🔧 Other Changes
179+
180+
**Test**
181+
- ...
182+
183+
**Build**
184+
- ...
185+
186+
**Docs**
187+
- ...
188+
189+
**Site**
190+
- ...
191+
192+
**Benchmarks**
193+
- ...
194+
195+
---
196+
197+
## 🎉 New Contributors
198+
199+
- @{login} made their first contribution in https://github.com/opentiny/genui-sdk/pull/{number}
200+
201+
**Full Changelog**: https://github.com/opentiny/genui-sdk/compare/{previous_tag}...{new_tag}
202+
```
203+
204+
规则:
205+
206+
- 标题保留 `v` 前缀(如 `Genui SDK v1.2.0 Release Notes`
207+
- 子区按固定顺序:Components → Playground → Test → Build → Docs → Site → Benchmarks
208+
- 空子区省略;空章节省略
209+
- 大章节之间用 `---` 分隔
210+
- **Highlights**:标题后、Features 前放 3–7 条主线变更;每条以 **粗体主题** 起头,简述影响并附主要 PR 编号;仅收录有用户可见影响或架构意义的变更,纯 chore / ci 不进 Highlights
211+
- **New Contributors**:取自脚本输出的 `new_contributors`(字段为 `login``number`),格式为 `- @{login} made their first contribution in https://github.com/opentiny/genui-sdk/pull/{number}`;无首次贡献者则省略整个章节
212+
- **Full Changelog**:固定取脚本输出的 `full_changelog_url`,置于文档最末
213+
214+
完整示例见 [examples.md](examples.md)
215+
216+
### Step 5:写入文件并确认
217+
218+
将格式化后的 Release Notes **写入仓库根目录 `releaseNote.md`**(覆盖已有内容),并在对话中展示全文请用户确认。
219+
220+
```bash
221+
# 输出路径(固定)
222+
releaseNote.md
223+
```
224+
225+
规则:
226+
227+
- 每次整理完成后必须写入 `releaseNote.md`,不要只输出到对话或 `/tmp`
228+
- 用户反馈调整后,同步更新 `releaseNote.md`
229+
- 确认无误后再进入发布步骤
230+
231+
### Step 6:发布
232+
233+
**CLI 发布(推荐)**
234+
235+
```bash
236+
git push origin <new_tag>
237+
238+
gh release create <new_tag> \
239+
--verify-tag \
240+
--title "Genui SDK <new_tag>" \
241+
--notes-file releaseNote.md \
242+
--repo opentiny/genui-sdk
243+
```
244+
245+
预发布版本加 `--prerelease`
246+
247+
**网页发布**:用户确认后,引导打开 [releases/new](https://github.com/opentiny/genui-sdk/releases/new),选择 tag、粘贴 `releaseNote.md` 内容、点击 Publish。
248+
249+
## 常见问题
250+
251+
| 情况 | 处理 |
252+
|------|------|
253+
| `gh` 未安装 | 询问用户安装,或用手动粘贴 GitHub 生成的 notes;整理结果仍写入 `releaseNote.md` |
254+
|`.github/release.yml` | 直接用 `fetch-release-data.sh``git log` 从提交信息提取 PR 编号 |
255+
| 同一 PR 跨多个区域 | 按主要改动区域归类;多 commit 可拆成多条 |
256+
| dependabot 等机器人 PR | 归入 Other Changes > Build,或按用户要求忽略 |
257+
| `releaseNote.md` 已存在 | 直接覆盖为本次整理结果 |
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Release Notes 示例
2+
3+
以下为 `v1.3.0`(对比 `v1.2.0`)的格式参考。
4+
5+
```markdown
6+
# Genui SDK v1.3.0 Release Notes
7+
8+
## 🚀 Highlights
9+
10+
- **Core package release** - `@opentiny/genui-sdk-core` is now published to npm as a standalone package, exposing the protocols, prompt generation, stream schema extraction, delta patching, and JSON repair modules (#206).
11+
- **Materials decoupling & new material packages** - materials are split into independently publishable packages, including the new `@opentiny/genui-sdk-materials-vue-element-plus` (#174) alongside the decoupled `vue-opentiny-vue` and `angular-opentiny-ng` material packages (#125, #206, #213).
12+
- **Multi-framework rendering** - framework switching in the playground (#143), and mixin renderer support (#208).
13+
- **A2A protocol v1.0** - added support for A2A protocol v1.0, with automatic fallback to 0.3 when a 1.0 invoke fails (#187, #219).
14+
- **Lifecycle enhancements** - lifeCycles are now deferred until schema streaming completes (#182), backed by an explicit Zod schema (#194), with `onMounted`/`onUnmounted` support for the ng-renderer (#197).
15+
- **Custom actions & refs** - custom actions now support return values and async (#184), plus a new refs feature (#183) and prompt variants (#202).
16+
- **Default props apply** - unified across the Vue and Angular renderers (#149, #196, #218).
17+
- **Internationalization** - playground and docs/site i18n with persisted locale settings (#172, #176, #189, #192).
18+
19+
---
20+
21+
## ✨ Features
22+
23+
**Components**
24+
- feat: materials decoupling by @yy-wow in https://github.com/opentiny/genui-sdk/pull/125
25+
- feat: add apply default props by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/149
26+
- feat: add new vue-element-plus package by @lhuans in https://github.com/opentiny/genui-sdk/pull/174
27+
- feat: defer lifeCycles until schema streaming is complete by @yy-wow in https://github.com/opentiny/genui-sdk/pull/182
28+
- feat: add refs feature and form validate demo by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/183
29+
- feat: add returns and async support to custom actions by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/184
30+
- feat(core): add explicit Zod schema for lifeCycles hooks by @yy-wow in https://github.com/opentiny/genui-sdk/pull/194
31+
- feat(genui-sdk-angular): add default props apply to angular renderer by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/196
32+
- feat(ng-renderer): add page onMounted/onUnmounted lifecycle support by @yy-wow in https://github.com/opentiny/genui-sdk/pull/197
33+
- feat: add prompt variants by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/202
34+
- feat(genui-sdk-vue): add legacy components by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/209
35+
- feat(genui-sdk-vue): materials support change value by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/214
36+
- feat(genui-sdk-angular): add legacy component and update docs by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/215
37+
- feat(core): add ICustomMessageItem type and optimize custom response handler by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/226
38+
39+
**Playground**
40+
- feat(playground): support switch framework by @yy-wow in https://github.com/opentiny/genui-sdk/pull/143
41+
- feat(playground): add OpenAPI-to-AI-SDK tools pipeline with service configuration UI by @gargameljyh in https://github.com/opentiny/genui-sdk/pull/175
42+
- feat(playground): implement language switcher and add English translations by @lhuans in https://github.com/opentiny/genui-sdk/pull/176
43+
- feat(playground): enhance chat template by adding extra body options by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/177
44+
- feat(playground/template): add schema manual editing functionality and version history panel by @yy-wow in https://github.com/opentiny/genui-sdk/pull/185
45+
- feat(playground): add support for A2A protocol v1.0 by @yy-wow in https://github.com/opentiny/genui-sdk/pull/187
46+
- feat(playground): improve i18n and persist locale settings by @lhuans in https://github.com/opentiny/genui-sdk/pull/192
47+
- feat(playground/server): add new MaaS models at dev mode by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/205
48+
- feat(playground): allow mixin renderer by @rhlin in https://github.com/opentiny/genui-sdk/pull/208
49+
50+
---
51+
52+
## 🐛 Bug Fixes
53+
54+
**Components**
55+
- fix: replace chart components with huicharts and add apply default props by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/94
56+
- fix(genui-sdk-vue): set isJsonComplete default value to true by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/180
57+
- fix: fix grid events dynamic change do not work by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/186
58+
- fix(genui-sdk-vue): optimize notification event payload and toolcall result by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/190
59+
- fix: delete useless defaultValue by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/203
60+
- fix(genui-sdk-vue): move inject token to shared folder and export in ConfigProvider by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/211
61+
- fix(genui-sdk-angular): apply default properties in attribute parsing by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/218
62+
- fix(genui-sdk-vue): fix jsonrepair dependency and add export by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/223
63+
- fix(playground, genui-sdk-angular): fix genui-renderer-ng-element style by @rhlin in https://github.com/opentiny/genui-sdk/pull/227
64+
- fix(genui-sdk-vue): change image content type to openai by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/228
65+
- fix(genui-sdk-vue): optimize assistant display for markdown-only scene by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/229
66+
- fix(genui-sdk-vue): fix ref error when ref is empty object at streaming scene by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/232
67+
- fix(core,materials): add eventName to prompt and optimize materials by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/233
68+
- fix(core): add API rule and optimize prompt for params use by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/234
69+
70+
**Playground**
71+
- fix(playground): only show prompt variants in vue framework by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/217
72+
- fix(playground): fall back to A2A 0.3 when 1.0 invoke fails by @yy-wow in https://github.com/opentiny/genui-sdk/pull/219
73+
- fix(playground): harden jsonPatch apply and component id assignment by @yy-wow in https://github.com/opentiny/genui-sdk/pull/222
74+
75+
---
76+
77+
## ♻️ Refactor
78+
79+
**Components**
80+
- refactor(materials): restructure vue materials package and fix playground template preview by @yy-wow in https://github.com/opentiny/genui-sdk/pull/191
81+
- refactor: add new packages and refactor export by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/206
82+
- refactor(ng): decouple OpenTiny NG materials from schema renderer by @yy-wow in https://github.com/opentiny/genui-sdk/pull/213
83+
84+
---
85+
86+
## 🔧 Other Changes
87+
88+
**Components**
89+
- chore: update submodule to enhance vue renderer apply default props by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/204
90+
- chore: delete opentiny ng checkbox patch by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/225
91+
92+
**Build**
93+
- chore: add multi-AI skill sync script by @gargameljyh in https://github.com/opentiny/genui-sdk/pull/212
94+
- build: add element-plus and angular external config to workflow builds by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/220
95+
- ci: fix GitHub Pages check-openapi-tools URL error by @gimmyhehe in https://github.com/opentiny/genui-sdk/pull/221
96+
97+
**Docs**
98+
- docs: add internationalization by @lhuans in https://github.com/opentiny/genui-sdk/pull/189
99+
- docs: add logo and DeepWiki badge to README by @chilingling in https://github.com/opentiny/genui-sdk/pull/195
100+
- docs: add copy page markdown button to VitePress docs by @lhuans in https://github.com/opentiny/genui-sdk/pull/198
101+
- fix(docs): keep top nav highlight when switching sidebar pages by @lhuans in https://github.com/opentiny/genui-sdk/pull/199
102+
- fix(docs): use onContentUpdated for copy-page title anchor by @yy-wow in https://github.com/opentiny/genui-sdk/pull/201
103+
104+
**Site**
105+
- feat(homepage): implement language switcher and add English translations by @lhuans in https://github.com/opentiny/genui-sdk/pull/172
106+
107+
---
108+
109+
## 🎉 New Contributors
110+
111+
- @chilingling made their first contribution in https://github.com/opentiny/genui-sdk/pull/195
112+
113+
**Full Changelog**: https://github.com/opentiny/genui-sdk/compare/v1.2.0...v1.3.0
114+
```
115+
116+
> 注:有首次贡献者时,于 `## 🔧 Other Changes` 之后、`**Full Changelog**` 之前插入 `## 🎉 New Contributors` 章节,每行格式为 `- @{login} made their first contribution in https://github.com/opentiny/genui-sdk/pull/{number}`。无首次贡献者则省略整个章节。

0 commit comments

Comments
 (0)