feat: ClassIsland / ClassHelper 灵动岛提示词套件
- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构) - ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本) - 投喂指南、分卷、逐节文件 - 调研记录、一致性基线、生成与质检脚本
This commit is contained in:
commit
22c1784bab
117 files changed
+47759
No files matched your search
@@ -0,0 +1,69 @@
|
||||
# Round 2 总简报:重构 ClassHelper 灵动岛 → 给 ChatGPT 的完整提示词
|
||||
|
||||
## 0. 目标变化(以本轮用户要求为准)
|
||||
|
||||
用户的新要求:**基于 ClassIsland 项目反推出完整提示词,用它来重构 ClassHelper 的灵动岛**。
|
||||
即:不是从零新建一个 ClassIsland 克隆,而是让 ChatGPT 在 **ClassHelper 现有仓库**(pnpm monorepo,`packages/desktop-client` 等)里,参照 ClassIsland 的灵动岛(主界面)实现,把 ClassHelper 的灵动岛重构到位;技术栈、工程约定、既有数据与服务全部沿用 ClassHelper。
|
||||
|
||||
最终交付:`D:\clword\ClassHelper灵动岛重构-给ChatGPT的完整提示词.md`(简体中文,给 ChatGPT 的实现任务书,可直接投喂)。
|
||||
|
||||
## 1. 关键事实(已核对,必须遵守)
|
||||
|
||||
### 1.1 ClassHelper 灵动岛现状(详见 `docs/app/island.md` 与源码)
|
||||
- 独立透明窗口、不占任务栏;`config.json.islandLayout.layout` 为 `fixed`(经典)或 `custom`(自定义常驻),默认 `fixed`;两种布局共用一个原生窗口(`src/main/island.ts`)。
|
||||
- 经典 fixed:胶囊 + 详情卡,消息分普通/紧急、上课时普通通知暂存、普通叫人可点、紧急立即展开;支持细缝、触摸、失焦宽限、鼠标穿透/避让淡化。
|
||||
- 自定义 custom:多行 rows + expandedRows(无消息展开内容)、组件方案 schemes(多方案、JSON 导入导出)、组件树 nodes(`shared/src/island-layout.ts` 的 `IslandComponentNode`:id/kind/settings/appearance/advanced/children);行有 main / allowNotifications / gap;组件有 hideRules(in-class/no-message/no-class)、align、width、maxWidth;方案级 scale/color/foreground/opacity/radius/separated/spacing。
|
||||
- 组件种类:`ISLAND_COMPONENTS = date, clock, weather, countdown, schedule, text, separator, slide, rolling, group, stack, notification, homework, call`。`notification/homework/call` 为消息入口组件;组件库只展示前 11 类(消息类走铃铛/面板)。
|
||||
- 渲染入口:`island.html` → `LayoutIslandApp.vue`(选择经典 `IslandApp.vue` 或自定义 `CustomIslandRuntime.vue`),共用 `src/island/ComponentNode.vue`、`ComponentIcon.vue`、`ClassicNotifications.vue`、`LessonReminderContent.vue`、`CoursewareTransfer.vue`、`spring.ts`、`squircle.ts`、`classic-island.css`、`custom-island.css`、`custom-runtime.css`。
|
||||
- 主进程状态:`src/main/island.ts`(窗口几何/命中/触摸/消息队列/课程提醒/天气/课件);preload:`src/preload/island.ts`;渲染→主进程 IPC 走 contextBridge 白名单。
|
||||
- 课表数据来自服务端解析结果(`ScheduleDto`、`IslandTimePointDto` 等),天气用 Open-Meteo(15 分钟刷新、断网缓存标"缓存"),课程提醒含准备/上课/课间/下课前倒数/课中进度,下课前秒数徽标显示在课程名右侧(蓝色圆形,剩余一秒显示 `-1`)。
|
||||
- 课件传输状态优先覆盖岛内容(`CoursewareTransfer.vue`)。
|
||||
- 既有硬约束(`AGENTS.md` §4):保留经典岛连续圆角、投影常驻、触摸输入、失焦宽限、固定窗口几何护栏;**禁止** `setBackgroundMaterial()` 破坏逐像素透明;消息按 id 去重;通知/叫人双播不得重复;编辑预览不创建额外桌面窗口;默认后台验证不创建可见岛或托盘,只有显式 `--visual` 才做桌面像素/动画验收。
|
||||
|
||||
### 1.2 ClassIsland 灵动岛基准(上一轮已整理,可直接复用 `parts/03,04,05,07,14`)
|
||||
- 无边框/透明/不抢焦点/默认鼠标穿透;行高 40;行内容 `margin 0 12`、`min-width 20`;行间距默认 5;圆角 RadiusX 默认 8(0–20);背景不透明度 0.5、行整体不透明度 1.0;背景 1px 描边 + `0 4 8 2 #48000000`;字号 14/16/18/20;进度条 3px;选择框 1.5px 虚线 1/1.5;Fluent/Classic 两套主题;遮罩斜切 5 区权重 `[0,0.1,0.2,0.4,0.2,0.1]`、区段 360ms + 错峰 120ms、开 QuarticEaseOut / 关 QuadraticEaseIn、文字 delay 260/250ms + scale 1.1→1.0/750ms、退出 200ms `(0.5,0,0.75,0)`;行宽过渡 Fluent 300ms `(0.65,0,0.35,1)` / Classic 550ms `(0,1,0.5,1.1)`;通知队列优先级、强提醒全屏特效、音效/TTS;组件系统 11 类 + 容器;编辑模式(选择框/拖动/行设置抽屉/添加行/组件库);隐藏规则;多显示器停靠;壁纸取色已停用(P2)。
|
||||
- 完整细节在 `parts/`(上一轮产出):03 tokens、04 主界面、05 组件、07 提醒、14 动画(99 条)、10 设置、11 窗口。可裁剪/改写后复用。
|
||||
|
||||
## 2. 本轮重构决策(Lead 定,所有 part 必须一致)
|
||||
|
||||
1. **在现有仓库内重构,不新建工程、不引入新框架**:pnpm@11.8.0 monorepo;Electron ^44.3.0、Vue ^3.5.42、Element Plus ^2.14.5、Pinia ^4.0.3、Vue Router ^5.3.1、Vite ^8.3.0、TS ~5.9.3 原样沿用;不引入 ClassIsland 的 C#/Avalonia、不引入服务端新依赖。
|
||||
2. **目标视觉默认改为 ClassIsland 规格**:岛可见行高 40、行内边距 12、行间距 5、圆角 8、背景不透明度 0.5、字号 14/16/18/20、进度条 3px、通知气泡/强提醒按 ClassIsland 参数。**保留 ClassHelper 经典 WinIsland 外观作为可选风格**(`islandAppearance.style: 'classisland' | 'winisland'`,默认 `classisland`;经典胶囊交互在 `winisland` 下不变),用于老用户与回退。
|
||||
3. **两种模式的定位**(最终以 parts-r/01 为准):
|
||||
- `fixed`(默认风格 `classisland`):**重定义为 ClassIsland 风格的信息行**——默认 1 行 = 日期 + 课程表,行高 40、圆角 8、背景不透明度 0.5、底部 3px 进度条;消息到来时在同一行内展开 ClassIsland 风格气泡,保留 ClassHelper 的暂存/紧急/叫人/已读规则。原「胶囊 + 详情卡」形态**只在 `winisland` 兼容风格下保留**(`appearance.family='winisland'`)。
|
||||
- `custom`(常驻):保留现有 schemes/rows/nodes/expandedRows/编辑器的数据模型,按 ClassIsland 的行/组件/编辑模式/隐藏规则/动画规格重构渲染与交互;行高 40、组件间距、行设置抽屉、组件库拖拽、主行/允许提醒/淡出规则与 ClassIsland 对齐。
|
||||
4. **数据来源不迁移到 ClassIsland 本地档案**:继续使用 ClassHelper 服务端解析后的 `ScheduleDto`/`IslandTimePointDto`/通知/作业/叫人/课件数据;ClassIsland 的 Profile/TimeLayout 只作为"语义参考",不引入其本地 JSON 档案体系。
|
||||
5. **消息/提醒**:保留 ClassHelper 的优先级、去重、上课暂存、紧急展开、已读回执、安静模式等业务规则;在此基础上叠加 ClassIsland 的气泡两阶段、强提醒特效(Topmost)、倒计时进度条、行内进度条等视觉/交互;两者冲突时以"ClassHelper 业务语义优先,ClassIsland 视觉表现优先"为裁决。
|
||||
6. **ClassIsland 的自动化/插件/主题市场/管理端/Excel 导入/更新器不在本轮范围**(最多作为附录说明不实现);主题只做岛内样式(CSS 变量 + 两套内置风格)。
|
||||
7. **配置兼容**:`config.json.islandLayout` 增加 `version` 字段与迁移函数;旧 `fixed`/`custom` 配置必须无损升级(组件节点、方案、外观值、编辑器行为保持),失败可回滚;旧字段 `residentEnabled` 继续兼容。
|
||||
8. **不打扰纪律**:所有验证必须无头/离屏(`verify:desktop` 默认后台快速检查,不创建可见岛/托盘;只有显式 `--visual` 才做视觉验证),禁止自动弹窗、发声、占用真实桌面。
|
||||
|
||||
## 3. 文档结构(最终提示词)
|
||||
|
||||
| Part | 内容 | 负责人 | 文件 |
|
||||
|---|---|---|---|
|
||||
| 0 | 使用说明 + 给 ChatGPT 的任务声明(重构、约束、交付、工作方式) | Lead | parts-r/00-preamble.md |
|
||||
| 1 | 重构目标与范围(背景、目标态、Keep/Change/Add、非目标) | Lead | parts-r/01-objective.md |
|
||||
| 2 | ClassHelper 灵动岛现状基线(文件、进程、数据、交互、既有规则) | stack | parts-r/02-current-state.md |
|
||||
| 3 | ClassIsland 灵动岛基准规格(行为语义:行/组件/提醒/课程/隐藏/课程表/天气) | features | parts-r/03-classisland-baseline.md |
|
||||
| 4 | 目标架构与文件级改造清单(模块划分、文件、接口、IPC、改动类型) | stack | parts-r/04-file-plan.md |
|
||||
| 5 | 数据契约、schema 扩展与配置迁移(islandLayout v2、DTO 映射、迁移/回滚) | stack | parts-r/05-data-migration.md |
|
||||
| 6 | 设计 tokens 与视觉基线(颜色/字体/圆角/间距/阴影/层级/DPI;两套风格) | design | parts-r/06-tokens.md |
|
||||
| 7 | 岛结构与组件规格(窗口/几何/行/背景/进度/遮罩/编辑模式/11+ 组件逐个) | ui-island | parts-r/07-island-components.md |
|
||||
| 8 | 消息、提醒、课程提醒、强提醒特效、天气、课件覆盖(含像素与动画) | features | parts-r/08-messages-lessons.md |
|
||||
| 9 | 编辑器与设置页重构(IslandSettingsView / IslandEditorView / IslandComponentSettings / 设置页) | windows | parts-r/09-editor-settings.md |
|
||||
| 10 | 动画与动效映射(ClassHelper 现状 → 目标;逐项 ms/曲线/延迟/实现;含降级) | design | parts-r/10-animations.md |
|
||||
| 11 | 兼容性、性能、平台与测试基线(迁移回滚、无头验证、性能预算) | Lead | parts-r/11-compat-tests.md |
|
||||
| 12 | 验收清单(逐项可勾选) | Lead | parts-r/12-acceptance.md |
|
||||
| 13 | 重构里程碑(M0–M7) | Lead | parts-r/13-milestones.md |
|
||||
|
||||
## 4. 写作规范(与上一轮一致)
|
||||
- 简体中文、祈使句、面向 ChatGPT;不是分析报告。
|
||||
- 证据:`packages/...:行号`(ClassHelper 仓库相对路径);ClassIsland 侧写 `repos/ClassIsland/...:行号`(相对本工作区),无法确认标【推断】。
|
||||
- 必须写清「改哪个文件、改成什么样、为什么、如何验证」;每个 part 末尾含「验收标准」。
|
||||
- 不建新工程、不改服务端、不引入新框架;坚持"重构"措辞。
|
||||
- **禁止构建/运行/截图/冒烟/启动 Electron**,只读分析。用户明确要求后台静默,不要打扰。
|
||||
- 不要修改 `repos/`;只写 `parts-r/`、`analysis/`、最终由 Lead 汇总。
|
||||
|
||||
## 5. 待读清单(关键)
|
||||
ClassHelper:`docs/app/island.md`、`docs/dev/implementation.md`、`docs/dev/winisland-design-tokens.md`、`packages/shared/src/{island-layout,constants,motion}.ts`、`packages/desktop-client/src/main/island.ts`、`src/island/{LayoutIslandApp,IslandApp,CustomIslandRuntime,ComponentNode,ComponentIcon,ClassicNotifications,LessonReminderContent,CoursewareTransfer,spring,squircle}.ts/vue`、`src/island/{classic-island,custom-island,custom-runtime,lesson-ending}.css`、`src/preload/island.ts`、`src/renderer/island/bridge.ts`、`src/renderer/views/settings/{IslandSettingsView,IslandEditorView}.vue`、`src/renderer/components/IslandComponentSettings.vue`、`src/main/config.ts`、`src/types/desktop.d.ts`。
|
||||
ClassIsland:上一轮 `parts/03,04,05,07,10,11,14` 与 `analysis/40-baseline.md` 已整理,可直接引用;必要时回查 `repos/ClassIsland` 源码。
|
||||
Reference in new issue
Block a user