Files
classhelper-island-refactor…/analysis/design.md
T
ClassIsland Prompt Kit 22c1784bab feat: ClassIsland / ClassHelper 灵动岛提示词套件
- 重构版主提示词(14 parts,面向 ClassHelper 灵动岛重构)
- ClassIsland 全量规格提示词(20 parts,含分卷与逐章版本)
- 投喂指南、分卷、逐节文件
- 调研记录、一致性基线、生成与质检脚本
2026-11-12 21:59:58 +08:00

16 KiB
Raw Blame History

设计组分析记录(design)

本文件记录 part 03 / 09 / 14 / 15 的源码依据、已读文件清单、token 对照表与未决问题。写作纪律:只读源码、未构建/未运行任何程序、未修改 repos/ 下文件。

1. 已读文件清单

1.1 ClassIsland(应用层)

文件 读取范围 用途
ClassIsland/Themes/Generic.xaml 全文 467 行 资源字典、时间线模板、FocusVisual 描边、DropShadow 参数
ClassIsland/Themes/LightTheme.axaml 全文 21 行 亮色覆盖:Rainy/AQI/CustomizedAccentBar/InformativeSecondary/LuminousClass
ClassIsland/Themes/DarkTheme.axaml 全文 21 行 深色覆盖
ClassIsland/XamlThemes/FluentTheme/Styles.axaml 全文 457 行 Fluent 主题行模板、遮罩动画、过渡、分体岛
ClassIsland/XamlThemes/ClassicTheme/Styles.axaml 全文 375 行 经典主题行模板、下压/上滑遮罩、过冲曲线
ClassIsland/App.axaml 全文 57 行 FluentAvaloniaTheme、ThemeDictionaries、字体资源
ClassIsland/App.axaml.cs 512-513、725-727 行(grep) 强制 zh-CN、AnimationLevel 同步
ClassIsland/App.Services.xaml.cs 240-326 行 天气图标模板、主题注册、教程注册、TTS provider
ClassIsland/MainWindow.axaml 全文 686 行 窗口透明/圆角/缩放/编辑操作条/层级/ZoomBorder/选择描边
ClassIsland/MainWindow.axaml.cs 160-220、370-519、700-819、840-979(grep 全量) 主题色分支、DPI/安全区/缩放、窗口层级、通知特效缩放
ClassIsland/Controls/MainWindowLine.axaml 全文 79 行 行可见性、不透明度、悬停淡化、坞位伪类
ClassIsland/Controls/MainWindowLine.cs 300-815 行 通知状态机、遮罩/覆盖、行淡入、鼠标命中
ClassIsland/Controls/SlantedMaskControl.cs 全文 346 行 斜切遮罩几何与分块动画参数
ClassIsland/Controls/OobeIntroAnimationControl.axaml / .cs 全文 OOBE 入场编排与缓动
ClassIsland/Controls/WorkflowProgressIndicatorItemControl.axaml 全文 进度条/呼吸/颜色过渡
ClassIsland/Controls/Tutorial/TutorialHighlightControl.axaml 全文 教程高亮入场 + 循环
ClassIsland/Controls/Tutorial/TutorialSpotlightControl.axaml 全文 聚光灯遮罩与入场
ClassIsland/Controls/Components/SlideComponent.axaml 全文 滑动组件 250ms 切换动画
ClassIsland/Controls/Components/RollingComponent.axaml.cs 80-179 行 滚动速度/暂停/重置
ClassIsland/Controls/Components/CountDownComponent.axaml.cs 280-312 行 倒计时进度精度取整
ClassIsland/Controls/NotificationEffects/RippleEffect.axaml / .cs 全文 强提醒涟漪几何与 600ms 动画
ClassIsland/Controls/WelcomeWindowIntroControl.xaml 全文(218 行) 欢迎覆盖层 Storyboard(WPF 遗留,仅取数值)
ClassIsland/Views/SplashWindow.axaml / .cs 全文 现行启动闪屏布局与 composition 动画
ClassIsland/Views/TopmostEffectWindow.axaml / .cs 全文 特效窗口显示/隐藏与缩放
ClassIsland/Views/WelcomePages/WelcomePage.axaml 全文 欢迎页淡入与布局
ClassIsland/Views/SettingPages/AppearanceSettingsPage.axaml 全文 595 行 外观设置全部控件、范围、默认值
ClassIsland/Views/SettingPages/ThemesSettingsPage.axaml 全文 368 行 主题市场卡片、警告、抽屉、排序
ClassIsland/Views/SettingPages/GeneralSettingsPage.axaml 动画级别/闪屏段(grep) AnimationLevel 三档文案
ClassIsland/Views/SettingPages/UpdateSettingsPage.axaml 78-107 行 旋转图标 1s 无限动画
ClassIsland/Views/SettingPages/AboutSettingsPage.axaml 118-157 行 头部 250ms 延迟淡入、品牌渐变色
ClassIsland/Models/Settings.cs 字段区(grep 全量默认值)+ 760-1320 行 颜色/字体/圆角/透明度/动画级别默认值
ClassIsland/Services/ThemeService.cs 全文 76 行 主题变体、强调色、强调淡底 10%
ClassIsland/Services/XamlThemeService.cs 全文 467 行 主题包安装/加载/市场/安全区
ClassIsland/Services/WallpaperPickingService.cs 全文 379 行(整文件 #if false) 取色算法(停用实现,仅参考)
ClassIsland/Assets/Fonts/Fonts.xaml、Fonts.axaml、LICENSE.txt 全文/头部 字体族与许可
ClassIsland/Assets/Tutorials/classisland.getStarted.json 1-120 行 + 结构 教程数据结构
ClassIsland/Assets/XiaomiWeather/xiaomi_weather_status.json 全文 40 个天气代码→中文名
ClassIsland/Assets/default-subjects.json 头部 默认 23 科目与固定 GUID
ClassIsland/Assets/AsciiLogo.txt、Tellings.txt、LICENSE.txt 全文/头部 彩蛋与许可
ClassIsland/Assets/AppLogo.ico、ClassIsland.Desktop/Assets/AppLogo.ico ICO 头解析 图标尺寸条目
ClassIsland/Models/NugetLicenseInfo.cs 头部 依赖许可清单结构

1.2 ClassIsland.Core

ThemeBase.axaml(全文)、StylesBase.axaml(全文)、AppBase.cs(字体族 grep)、Abstractions/Services/IThemeService.cs(全文)、Abstractions/Services/IXamlThemeService.cs(全文)、Abstractions/Controls/MainWindowCustomizableNodeHelper.cs(全文)、Assists/MainWindowStylesAssist.cs(全文)、Assists/WrapPanelResizingAnimationAssist.cs(全文)、Behaviors/StackPanelIntroAnimationBehavior.cs(全文)、Behaviors/PopupIntroAnimationBehavior.cs(全文)、Controls/DrawerHost.axaml(全文)、Controls/VerticalDrawer.axaml(全文)、Controls/AnimatedIconButton.axaml(全文)、Controls/Shimmer.axaml(全文)、Controls/ComponentPresenter.axaml.cs(190-279 行)、Controls/NotificationTemplates/RollingTextTemplate.axaml / .axaml.cs、TwoIconsMaskTemplate.axaml(全文)、Converters/SizeDoubleToCornerRadiusConverter.cs、Converters/IntToFontWeightConverter.cs、Helpers/UI/ControlColorHelper.cs(全文)、Models/Components/MainWindowLineSettings.cs(全文)、Models/XamlTheme/{ThemeInfo,ThemeManifest,ThemeIndex,ThemeIndexInfo,ThemeRepoManifest}.cs、Models/Notification/Templates/RollingTextTemplateData.cs、Themes/{Generic,Layers,PopupAnimations,WrapPanelResizingAnimation,StackPanelIntroAnimation,SlidingListBox}.axaml(全文)、Themes/MyTeachingTipStyles.axaml(200-269 行)、Controls/LessonsControls/LessonsListBox.axaml(grep)。

1.3 ClassIsland.Shared

Enums/AppColorSource.cs(全文,3 个值:Custom/Wallpaper/System)。

1.4 ClassHelper(映射目标栈)

packages/ui/src/tokens.css(全文)、packages/ui/src/theme.css(全文)、packages/desktop-client/src/renderer/styles/index.css(1-160、560-1012 行 + token/keyframes grep)、renderer/composables/motion.ts(全文)、island/spring.ts(全文)、island/squircle.ts(全文)、island/classic-island.css(1-120 行 + grep)、island/custom-island.css(1-120 行)、island/IslandApp.vue(grep)、main/island.ts(1655-1734 行 + grep)、packages/shared/src/motion.ts(全文)。

1.5 全仓库检索

  • AnimationLevel 全部 12 处命中(App.axaml.cs、IThemeService、GeneralSettingsPage、StackPanelIntroAnimationBehavior、PopupIntroAnimationBehavior、WrapPanelResizingAnimationAssist、MainWindowLine、ComponentPresenter、DrawerHost、VerticalDrawer)→ part 14 §14.0.1。
  • Animation/Transition/KeyFrame/Easing/Duration/Transitions 共 249 处 axaml 命中 → 逐条筛选出 99 条有效动效。
  • 全仓库 #RRGGBB 共 46 处命中 → part 03 §3.1。
  • Storyboard/BeginStoryboard 46 处命中,其中多数为 #if false 的 WPF 遗留代码(SplashControl、WelcomeWindowIntroControl、LoadingMask、ExcelImportWindow 等),仅作为动画数值参考。

2. Token 对照表(ClassIsland → 建议 CSS 变量 → ClassHelper 既有变量)

ClassIsland 资源/设置 值/默认 建议 CSS 变量 ClassHelper 既有 落点
强调色 PrimaryColor #00BFFF --ci-accent --ch-ui-primary / --ch-accent / --el-color-primary ui/src/theme.css
强调淡底 CustomizedAccentBarBackground1Brush accent@10% --ci-accent-soft --ch-accent-soft theme.css
强调色(深色) 系统/accent 同变量 --ch-accent: #5aabec(深色示例) renderer/styles/index.css:109
文本 5 级 255/218/197/135/93 alpha --ci-text-1..5 --ch-text / --ch-text-secondary / --ch-text-tertiary 需新增 2 级
表面基色 SolidBackgroundFillColorBase --ci-bg-base --ch-bg(#f3f3f3 / #161719) index.css:27,114
表面次级 ...Secondary --ci-bg-secondary --ch-layer index.css:28,115
表面三级 ...Tertiary --ci-bg-tertiary --ch-layer-alt index.css:30,117
描边 ControlElevationBorderBrush --ci-stroke-island --ch-border / --ch-border-strong index.css:34-35
分隔线 DividerStrokeColorDefaultBrush --ci-stroke-divider --ch-divider index.css:36
雾面/遮罩 SmokeFillColorDefaultBrush --ci-smoke (无,需新增) 新增
岛圆角 8px(0–20 可调) --ci-radius-island --ch-radius-card: 8px index.css:51
卡片圆角 4px --ci-radius-card --ch-radius-control: 4px index.css:52
岛高度 40px --ci-island-height (无;ClassHelper 岛高由外观配置) 新增
岛行间距 5px --ci-line-gap --ch-ui-gap: 16px(不适用) 新增
背景不透明度 0.5 --ci-island-bg-opacity (无) 新增
淡出态 0.05 --ci-island-fade-opacity (无) 新增
投影(Fluent) 0 4 8 2 #48000000 --ci-shadow-island --ch-shadow-card / --ch-shadow-flyout 需新增更强投影
文本主色(深色) #e8e8ea --ci-text-1 --ch-text: #e8e8ea index.css:124
环境背景(深色) #161719 --ci-bg-base --ch-bg index.css:114
字号 4 档 14/16/18/20 --ci-fs-secondary/body/emphasized/large --el-font-size-base:13px、--ch-font-scale index.css:97-103
字重 500 --ci-font-weight(或行内覆盖) (无) 新增
字体族 HarmonyOS Sans SC 栈 --ci-font 岛用 --island-font、外壳用系统字体 classic-island.css:22-25
动效时长 90/140/200/320 --ci-dur-* --ch-dur-instant/fast/base/slow/page shared/src/motion.ts:169-175
缓动 多条 --ci-ease-* --ch-ease-out/in-out/drawer motion.ts:24-28
弹簧 stiffness .10 / damping .68 JS SpringValue 同左 island/spring.ts
层级哨兵 33550336 --ci-z-sentinel 无(ClassHelper 用 10000 引导层) 新增
安全区 0 / 20px(Fluent) --ci-safe-area-y 无 新增

冲突提醒(供 Lead 汇总时统一):--ci-shadow-island 与 ClassHelper 的 --ch-shadow-card 语义不同(前者是「悬浮岛投影」,后者是「卡片微投影」),不得合并;--ci-accent-soft 与 --ch-accent-soft 可统一,但 alpha 不同(ClassIsland 10%,ClassHelper 8%),建议取 10% 并在 part 09 说明。

3. 与其他 part 的一致性约定(已核对)

  • 岛高度 40px、圆角默认 8px、背景不透明度 0.5、行间距默认 5px、字号 14/16/18/20、动画级别默认 1:part 03/04/10 必须与此一致。
  • 提醒遮罩动画的时长/延迟(Fluent:360/120/260/250/750/600/100ms;Classic:200/100/200/100ms)只在 part 14 定义,part 07 引用时不得改数值。
  • 主题包 manifest.yml 字段与 part 09 §9.3.2 为准;part 12(插件)如需复用市场索引结构,应引用该表而不是另立字段。
  • 窗口透明/亚克力规则:part 04 的窗口规格必须遵守 part 03 §3.5 的「禁止 setBackgroundMaterial」约束。

4. 未决问题与缺口

编号 问题 影响 建议处理
Q1 FluentAvalonia 的具体色值(SolidBackgroundFillColorBaseMemo、TextFillColorPrimaryBrush、ControlElevationBorderBrush 等)不在本仓库(NuGet 依赖),part 03 中相关值标注【推断】 颜色实现可能与真实 ClassIsland 有肉眼差异 由 stack 组拉取 FluentAvalonia 对应版本源码/主题字典核对;或由用户提供截图取色
Q2 WallpaperPickingService 整文件 #if false,DI 与调用点均被注释,设置页「系统壁纸/屏幕主题色」两项被禁用隐藏 壁纸取色是否属于必做功能存在歧义 建议 Lead 在总纲明确:默认不实现,或按 part 09 §9.6 实现为实验特性;算法已给出可复现公式
Q3 教程内容 RightButtonActions[].Kind 枚举值(2/5/6/8…)语义未在本次读取的源码中确认(属 part 11 教程章节) 教程按钮行为实现需要枚举映射 由 windows 组在 part 11 补齐 TutorialActionKind 映射表;part 15 只声明结构
Q4 部分 Avalonia 缓动(Sine/Quadratic/Cubic/Exponential)到 CSS cubic-bezier 的换算为近似 动画手感有细微差异 已逐条标注【推断】;如需精确可改用 linear() 采样或 WAAPI 自定义缓动函数
Q5 ClassicTheme 的 Easing="0,0 0,1" 是 Avalonia KeySpline 二元组语法,换算为 cubic-bezier(0,0,0,1);个别处(DrawerHost/VerticalDrawer/关于页)语义需实机验证 抽屉动效可能偏「硬」 实现后与截图/录屏对照,偏硬可回退为 ease-out
Q6 贴纸(HoYoStickers)与 SF Symbols 字体的许可边界未在仓库内声明 分发合规风险 由 Lead 在交付说明中标注:贴纸为同人彩蛋、SF Symbols 需授权;或替换为可自由分发的图标集
Q7 源码部分动画存在于 #if false 的 WPF 遗留实现(SplashControl、WelcomeWindowIntroControl、LoadingMask) 数值可信度低于现行 Avalonia 实现 part 14 已优先采用现行 Avalonia composition 实现(SplashWindow、OobeIntroAnimationControl)数值;遗留 Storyboard 仅作参考
Q8 RootLayoutTransformControl 的缩放补偿在 NewWindowPosUpdateImpl 中赋值但未参与布局(GridRootLeft/Top 只在 Old 实现使用) 界面缩放时岛的水平偏移算法需要重新定 由 ui-island 在 part 04 给出最终窗口缩放算法,part 03 §3.7 只给约束
Q9 主题预览图 1920×350 与主题卡 328×150 的裁切策略未在源码明确(UniformToFill + 渐变遮罩) 卡片可能裁掉主题名称区域 part 09 已给渐变遮罩方案;实现时以「名称/作者永远可见」为准
Q10 --ci-* 与 --ch-* 是否合并、以谁为单一来源 可能出现两套 token 并存 建议:--ch-* 为应用外壳唯一来源,--ci-* 引用 --ch-* 派生岛层;由 stack 在 part 02 定稿
Q11 part 04 §4.4 的别名表把 --island-opacity(默认 0.5)映射为 --ci-line-opacity;但源码里「背景不透明度 0.5」与「行整体不透明度 1.0」是两个不同字段(Settings.Opacity vs MainWindowLineSettings.Opacity) Lead 汇总时会出现语义混淆 已在 part 03 §3.5 定义 --ci-island-opacity(=0.5,背景)与 --ci-line-opacity(=1.0,行级);建议 Lead 把 part 04 别名表该行改为 --ci-island-opacity
Q12 part 04 引入了 --ci-progress-height: 3px,而 part 03 初稿未定义;--ci-component-gap 在 part 04 被当作「12px 相邻间距」使用 两处 token 命名/语义不一致 已在 part 03 §3.4 补 --ci-progress-height: 3px,并把 --ci-component-gap 改为 12px(相邻间距,单侧 margin = 6px),与 part 04 的 calc(/2) 用法一致

5. 产出与自检

文件 中文字数(CJK) 条目数 验收小节
parts/03-design-tokens.md 4531 — §3.11 共 12 条
parts/09-themes.md 4499 — §9.12 共 12 条
parts/14-animations.md 6123 99 条动效 §14.9 共 10 条
parts/15-assets.md 4098 — §15.12 共 11 条

自检结论:

  • 未执行任何构建/运行/截图/安装命令;未修改 repos/ 下文件。
  • 所有关键数值均标注 相对路径:行号;无法从仓库确认的值标注【推断】并在 §4 记录。
  • 术语与 analysis/00-brief.md §5 一致(主界面/主界面行/组件/档案/课表/时间表/提醒/主题/设置)。
  • 每份 part 均以简体中文祈使句写成,含「验收标准」,可直接作为 ChatGPT 实现任务书的一部分。