create-dwy 0.14.6 → 0.14.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # create-dwy
2
2
 
3
+ ## 0.14.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 平台选择交互默认按当前项目本地目录回填:存在 `.claude`、`.codex` / `.agents` / `AGENTS.md`、`.cursor`、`.opencode` 时,自动勾选对应平台;无本地目录时退回默认 `Claude Code + Codex`。
8
+ - 将跨语言通用基础约束并入 `CLAUDE.md`,删除重复的 `rules/Global/dwy-common-code-baseline.md`,减少全局规则分散。
9
+ - 将 Docker 规则从 `rules/Global/dwy-docker.md` 调整到 `rules/Docker/dwy-docker.md`,按技术域归类。
10
+ - 为 Android 与 Flutter 规则补充全面屏、刘海屏、挖孔屏适配约束,统一要求基于安全区域与响应式布局实现。
11
+
3
12
  ## 0.14.6
4
13
 
5
14
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-dwy",
3
- "version": "0.14.6",
3
+ "version": "0.14.7",
4
4
  "description": "项目脚手架与多平台 AI 配置同步工具",
5
5
  "type": "module",
6
6
  "bin": {
package/src/sync-all.js CHANGED
@@ -119,7 +119,32 @@ async function shouldInitialize(projectDir, existing) {
119
119
  return !isCancel(ok) && ok
120
120
  }
121
121
 
122
- async function selectPlatforms() {
122
+ export async function buildPlatformDefaultsFromLocalState(projectDir) {
123
+ const defaults = []
124
+
125
+ if (await fs.pathExists(path.join(projectDir, '.claude'))) {
126
+ defaults.push('claude')
127
+ }
128
+ if (
129
+ await fs.pathExists(path.join(projectDir, '.codex'))
130
+ || await fs.pathExists(path.join(projectDir, '.agents'))
131
+ || await fs.pathExists(path.join(projectDir, 'AGENTS.md'))
132
+ ) {
133
+ defaults.push('codex')
134
+ }
135
+ if (await fs.pathExists(path.join(projectDir, '.cursor'))) {
136
+ defaults.push('cursor')
137
+ }
138
+ if (await fs.pathExists(path.join(projectDir, '.opencode'))) {
139
+ defaults.push('opencode')
140
+ }
141
+
142
+ return defaults.length > 0 ? defaults : ['claude', 'codex']
143
+ }
144
+
145
+ async function selectPlatforms(projectDir) {
146
+ const initialValues = await buildPlatformDefaultsFromLocalState(projectDir)
147
+
123
148
  console.log(chalk.gray('\n平台能力预览:'))
124
149
  console.log(chalk.gray(' Claude Code → rules / skills / commands / hooks'))
125
150
  console.log(chalk.gray(' Codex → rules / skills / hooks'))
@@ -129,7 +154,7 @@ async function selectPlatforms() {
129
154
  const result = await multiselect({
130
155
  message: '选择要同步的平台',
131
156
  options: PLATFORM_OPTIONS,
132
- initialValues: ['claude', 'codex'],
157
+ initialValues,
133
158
  required: true,
134
159
  maxItems: 6,
135
160
  })
@@ -575,7 +600,7 @@ export async function syncAll({
575
600
  return
576
601
  }
577
602
 
578
- const selectedPlatforms = selectedPlatformsOverride || await selectPlatforms()
603
+ const selectedPlatforms = selectedPlatformsOverride || await selectPlatforms(projectDir)
579
604
  if (selectedPlatforms === null) {
580
605
  console.log(chalk.yellow('\n已取消同步。'))
581
606
  return
@@ -10,6 +10,23 @@
10
10
 
11
11
  任务执行必须使用多 Agent 或 agent team 并行提高效率。
12
12
 
13
+ ## 代码注释
14
+
15
+ - 所有代码都必须有注释。
16
+ - 类、接口、私有方法、函数、重要参数与重要字段都必须写明用途、约束与边界。
17
+ - 每个类顶部要有简短功能说明。
18
+ - 注释重点写“为什么”和“约束”,避免仅复述代码实现。
19
+
20
+ ## 图标规范
21
+
22
+ - 图标优先使用成熟稳定的图标库,不使用 emoji 作为功能性图标。
23
+ - 优先选择项目已有成熟依赖;无可用依赖时再补充稳定方案。
24
+
25
+ ## 发布与打包基础准则
26
+
27
+ - PyPI 与 npm 的发布必须走 GitHub Actions,使用 OIDC 完成鉴权,禁止使用长期静态发布凭据。
28
+ - 多平台打包必须走 GitHub Actions 工作流执行,不使用本地手工打包作为唯一流程。
29
+
13
30
  ## 减少常见 LLM 编码错误的行为指南
14
31
 
15
32
  与项目特定指令合并使用。
@@ -15,6 +15,14 @@ paths:
15
15
 
16
16
  不限制构建工具、UI 框架、架构模式、SDK 版本、依赖库选型 —— 与老项目兼容。
17
17
 
18
+ ## 全面屏 / 刘海屏适配
19
+
20
+ - Android 端默认按全面屏、刘海屏、挖孔屏适配实现,不要使用固定上下左右边距硬编码内容区。
21
+ - 优先使用 `WindowInsets`、系统栏 inset、约束布局和响应式容器处理状态栏、导航栏、手势区域占位。
22
+ - 顶部标题栏、底部操作栏、输入区、悬浮按钮必须显式考虑状态栏、导航栏和手势返回区域,避免被遮挡或贴边误触。
23
+ - 全屏背景、沉浸式遮罩可以延伸到系统栏区域,但前景可交互内容默认留在安全显示区内。
24
+ - 禁止写死状态栏高度、导航栏高度、刘海高度,统一通过系统 inset 获取。
25
+
18
26
  ## 一、命名规范
19
27
 
20
28
 
@@ -8,6 +8,14 @@ paths:
8
8
 
9
9
  # Flutter + Dart 基础风格规范
10
10
 
11
+ ## 全面屏 / 刘海屏适配
12
+
13
+ - Flutter 应用默认按 iOS 与 Android 全面屏、刘海屏、挖孔屏适配实现,不要依赖固定上下左右边距硬编码页面内容区。
14
+ - 优先使用 `SafeArea`、`MediaQuery.padding`、`MediaQuery.viewPadding`、`MediaQuery.viewInsets` 与响应式布局约束处理状态栏、底部手势区、键盘遮挡。
15
+ - 页面主体、底部操作栏、表单输入区、弹层内容必须显式处理安全区域,避免被刘海、Home Indicator、导航栏或软键盘遮挡。
16
+ - 全屏背景、沉浸式插画、遮罩层可以铺满屏幕,但前景可交互内容默认留在安全区域内。
17
+ - 禁止写死 iOS 状态栏高度、Android 导航栏高度或机型刘海尺寸,统一通过系统安全区域与 inset 信息计算。
18
+
11
19
  ## 一、项目结构
12
20
 
13
21
  ### 1.1 标准目录
@@ -1,27 +0,0 @@
1
- ---
2
- description: 跨语言通用代码基础规则(注释、图标、全面屏适配、发布与打包)
3
- ---
4
-
5
- # 跨语言通用代码基础规则
6
-
7
- ## 1. 代码注释
8
-
9
- - 所有代码都必须有注释。
10
- - 类、接口、私有方法、函数、重要参数与重要字段都必须写明用途、约束与边界。
11
- - 每个类顶部要有简短功能说明。
12
- - 注释重点写“为什么”和“约束”,避免仅复述代码实现。
13
-
14
- ## 2. 图标规范
15
-
16
- - 图标优先使用成熟稳定的图标库,不使用 emoji 作为功能性图标。
17
- - 优先选择项目已有成熟依赖;无可用依赖时再补充稳定方案。
18
-
19
- ## 3. iOS / Android 全面屏适配
20
-
21
- - iOS 与 Android 端默认按全面屏/刘海屏适配实现,不使用固定上下左右边距的“硬编码”方案。
22
- - 优先使用安全区域(Safe Area / Window Insets)与响应式布局约束。
23
-
24
- ## 4. 发布与打包基础准则
25
-
26
- - PyPI 与 npm 的发布必须走 GitHub Actions,使用 OIDC 完成鉴权,禁止使用长期静态发布凭据。
27
- - 多平台打包必须走 GitHub Actions 工作流执行,不使用本地手工打包作为唯一流程。