Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
27b8749
docs: tighten project documentation structure
Wing900 May 31, 2026
cb42f2d
docs: record runtime release asset conventions
Wing900 May 31, 2026
3089db5
docs(runtime): add slimming plan
Wing900 Jun 6, 2026
d47e32b
feat(runtime): persist workspace state and track runtime bridge
Wing900 Jun 6, 2026
d4e5d25
feat(editor): add in-editor code search
Wing900 Jun 6, 2026
5e30610
fix(subscription): persist resolved device id
Wing900 Jun 6, 2026
b872998
fix(editor): refine inline code search bar
Wing900 Jun 7, 2026
7596c0c
refactor(editor): simplify inline search bar
Wing900 Jun 7, 2026
d06dc9b
build(runtime): add staged runtime trim profiles
Wing900 Jun 7, 2026
24ca0ad
build(runtime): switch release archive to 7z
Wing900 Jun 7, 2026
8738bfc
build(runtime): vendor 7zip extractor binaries
Wing900 Jun 7, 2026
e94fd46
chore(prompts): relax optimize prompt fallback
Wing900 Jun 7, 2026
b97f420
chore(prompts): relax repair prompt fallback
Wing900 Jun 7, 2026
a72b8f6
fix(runtime): include libwinpthread for surface fastpath
Wing900 Jun 7, 2026
f0dcaec
fix(runtime): vendor libwinpthread for fastpath
Wing900 Jun 7, 2026
bc4e48e
feat(ai): add auto check-and-repair execution loop
Wing900 Jun 7, 2026
973cdc8
fix: bind note ai tasks to scene context
Wing900 Jun 7, 2026
0cbe308
refactor: move AI code workflow into backend service
Wing900 Jun 8, 2026
2e3813e
订阅激活后购买按钮改为可点击,文字显示为'再次购买'
Wing900 Jun 8, 2026
1b25408
feat: add workspace package export and bump version
Wing900 Jun 8, 2026
b2722aa
feat: add runtime extraction progress and release v0.0.3.0
Wing900 Jun 9, 2026
21f56c2
Remove matplotlib fastpath and target 3.11.0rc2
Wing900 Jun 11, 2026
add78da
Lower runtime archive memory usage
Wing900 Jun 11, 2026
001d884
feat: add screening mode architecture and UI
Wing900 Jun 12, 2026
ab0b3e8
fix: stabilize screening window transitions
Wing900 Jun 12, 2026
5002f1b
chore: remove unused screening helpers
Wing900 Jun 12, 2026
eb97992
feat: finalize screening interaction flow
Wing900 Jun 12, 2026
92c78df
chore: update prompt templates
Wing900 Jun 12, 2026
9ffe7b9
feat: update default scene template
Wing900 Jun 14, 2026
451a53c
chore: refresh ai prompt presets
Wing900 Jun 14, 2026
d22dc25
fix: stabilize scene list drag targets
Wing900 Jun 14, 2026
839a7bb
chore: bump version to 0.0.3.5
Wing900 Jun 15, 2026
cb1bfd2
feat: add screeningzoom helper integration
Wing900 Jun 16, 2026
7bdbd51
fix: enforce content-driven window sizing
Wing900 Jun 16, 2026
246a297
refactor(screening): simplify ScreeningZoom helper runtime integration
Wing900 Jun 16, 2026
9907d95
feat(screeningzoom): adapt ZoomIt helper behavior for screening mode
Wing900 Jun 16, 2026
49c508f
docs(screeningzoom): replace planning notes with developer guide
Wing900 Jun 16, 2026
8e45991
docs(screeningzoom): tighten developer documentation
Wing900 Jun 16, 2026
4a8885b
docs: remove screening planning documents from root
Wing900 Jun 16, 2026
36962f5
docs: polish and deduplicate root-level documentation
Wing900 Jun 16, 2026
89a1468
docs: add ZoomIt acknowledgement to README
Wing900 Jun 16, 2026
445f6cf
docs: restore 开发初衷 section with origin story
Wing900 Jun 16, 2026
bf3e7e2
refactor: smooth persistent scene panel transitions
Wing900 Jun 16, 2026
3675db0
chore: refresh prompt guidance for design cards
Wing900 Jun 16, 2026
c42f252
build: include screening zoom helper in release package
Wing900 Jun 16, 2026
627c6a7
build: exclude screening zoom pdb from release package
Wing900 Jun 16, 2026
9b2b542
chore: replace ZoomIt with zoomit-next, remove old thirdparty/tools/r…
Wing900 Jun 19, 2026
308334f
feat(screeningzoom): replace ZoomIt with zoomit-next, add right-click…
Wing900 Jun 19, 2026
6191ed3
fix(screening): add global mouse hook as reliable fallback for right-…
Wing900 Jun 19, 2026
6db20a8
fix(screening): use dedicated menu window thread to fix TrackPopupMen…
Wing900 Jun 20, 2026
12b76af
Merge branch 'zoomin'
Wing900 Jun 20, 2026
efc07de
chore: remove debug logging residuals and fix GitHub language detection
Wing900 Jun 20, 2026
80fae93
chore: mark wailsjs auto-generated JS as linguist-generated
Wing900 Jun 20, 2026
4510489
fix: package screening zoom executable consistently
Wing900 Jun 22, 2026
41840db
fix: adapt window sizing for small displays
Wing900 Jun 23, 2026
66f7959
feat: add script safety guard and release workflow
Wing900 Jun 25, 2026
e80e85c
chore: prepare 0.0.4.0 release automation
Wing900 Jun 25, 2026
e233c66
fix: fallback runtime download from release zip
Wing900 Jun 25, 2026
ac32f67
fix: include cmath for screening zoom build
Wing900 Jun 25, 2026
e605b79
release: 0.0.4.1
Wing900 Jul 4, 2026
8df501f
style: switch editor font to Cascadia Code
Wing900 Jul 4, 2026
aaaa54c
style: refine settings and notebook chrome
Wing900 Jul 5, 2026
6ba96df
style: refine notebook split interactions
Wing900 Jul 5, 2026
1b645dd
feat: add workspace layout modes
Wing900 Jul 5, 2026
5d21a0d
style: polish notebook editor chrome
Wing900 Jul 5, 2026
717a76d
style: polish markdown prose and design card editor
Wing900 Jul 5, 2026
e5af01c
style: soften markdown blockquote surface
Wing900 Jul 5, 2026
c036d7b
feat: smooth loading progress and bump version to 0.0.4.2
Wing900 Jul 5, 2026
d7da8df
feat: polish loading screen motion
Wing900 Jul 5, 2026
4193c6d
fix: remove loading screen enter transition
Wing900 Jul 5, 2026
c1ad251
chore: bump version to 0.0.4.21
Wing900 Jul 5, 2026
f13ee45
feat: refine search bar and reset update button state
Wing900 Jul 6, 2026
459b14c
feat: polish sidebar and menu interactions
Wing900 Jul 6, 2026
7c2e21d
feat(sidebar): redesign footer tool icons with rounded SVG + soften r…
Wing900 Jul 9, 2026
e9e7435
feat(note): redesign context-menu icons with clear semantics
Wing900 Jul 9, 2026
a1d01c7
feat(updater): 重写更新安装逻辑 + 修复 BOM 解析
Wing900 Jul 11, 2026
8d62dbc
feat(ai): 为 AI 工作流补停止按钮与二次确认对话框
Wing900 Jul 11, 2026
e370ec0
refactor(theme): 解耦色系为算法+端点+权重三层架构
Wing900 Jul 12, 2026
2f2cfb9
统一右键菜单图标与文案 + 强化设计卡片遵循提示词
Wing900 Jul 18, 2026
014ee39
feat(designcards): 可取消的 designcards 会话 + 清理 Placement
Wing900 Jul 18, 2026
2629628
feat(designCard): 前端会话镜像 aiworkflow + workspace 拆分
Wing900 Jul 18, 2026
811d545
feat(ui): AI 覆盖层 + 流体星球 + 可拖拽 Rive 猫咪
Wing900 Jul 18, 2026
2a71b6c
refactor: 移除 EnvironmentIndicator AI 灯 + 清理死代码
Wing900 Jul 18, 2026
7ad4e82
feat(ui): 统一中断 AI 确认 + 覆盖层路由 + 对话框 z-index
Wing900 Jul 18, 2026
58ddac2
chore(deps): 新增 @rive-app/canvas 依赖
Wing900 Jul 18, 2026
feca7c8
prompts: designcard 段改为全部实现,禁难度借口
Wing900 Jul 18, 2026
9191013
feat(ui): 右下角 AI 按钮升级为药丸 + 覆盖层语义区分
Wing900 Jul 18, 2026
4807bc0
prompts: designcard 生成 theory 段小重构 + 错别字修复
Wing900 Jul 18, 2026
b1af528
refactor: 抽 sessionMirror 骨架 + usePlotWorkspace 拆成 workspace/ 目录
Wing900 Jul 19, 2026
ff00e2d
chore: 将 .tmp/ 实验沙箱加入 .gitignore
Wing900 Jul 19, 2026
4050fd0
refactor: bridge/app.go 按职责拆成 6 个文件
Wing900 Jul 19, 2026
132b5bb
refactor: bridge/scripts.go 按职责拆成 4 个文件
Wing900 Jul 19, 2026
756e2ef
feat(ui): 流体纱调色板柔化 + corner-pocket 覆盖层进入动画
Wing900 Jul 19, 2026
268b217
refactor: 8 个对话框收进 components/dialogs/ + 删 4 个空壳目录
Wing900 Jul 19, 2026
44c6da8
chore(test): 引入测试基础设施 (前后端隔离)
Wing900 Jul 19, 2026
8fe6ebc
test: Phase 1 第一块 (前后端单元测试)
Wing900 Jul 19, 2026
76ae0ab
test: Phase 1 第二块 (Go 三兄弟 + 前端纯函数)
Wing900 Jul 19, 2026
50a520d
test: Phase 2 余下 + subscription/settings 纯函数
Wing900 Jul 19, 2026
ebefb68
test+refactor: Phase 3 第一解耦 — filestore 抽 WorkspaceResolver 接口
Wing900 Jul 19, 2026
51fb877
test: 7 个纯逻辑包单元测试
Wing900 Jul 19, 2026
2c50f8b
test: env + instancelock + startupdiag 单元测试
Wing900 Jul 19, 2026
2b9e32a
test+refactor: device 解耦 + bridge 纯映射函数测试
Wing900 Jul 19, 2026
2a6526a
test+refactor: workspaces 解耦 scriptsRoot + StateStore 路径 + 24 用例
Wing900 Jul 19, 2026
5b938e6
test: runner 纯函数单元测试 (13 用例)
Wing900 Jul 19, 2026
40530c7
test: screening 纯函数 + operations 单元测试
Wing900 Jul 19, 2026
2cb51d0
chore(test): 补提 vitest 装依赖产生的 package-lock + md5 校验
Wing900 Jul 19, 2026
ee77953
test(frontend): 补完 features 纯逻辑 composable 单元测试
Wing900 Jul 19, 2026
90e6481
test: add script workspace integration coverage
Wing900 Jul 22, 2026
d05c3c5
test: expand isolated unit coverage
Wing900 Jul 22, 2026
ccf4e82
test: stabilize workspace test fixtures
Wing900 Jul 22, 2026
53836b9
feat: add free experience option
Wing900 Jul 22, 2026
b0f67d2
feat: route free AI requests through bridge
Wing900 Jul 22, 2026
b14cfd5
feat: link free mode sponsorship
Wing900 Jul 22, 2026
3a58192
feat: differentiate free/custom/subscription AI error messages by HTT…
Wing900 Jul 23, 2026
9e238c9
feat: 完善首次启动新手引导
Wing900 Jul 25, 2026
bbfea85
feat: refine onboarding and update delivery
Wing900 Jul 26, 2026
1990991
refactor: 重构代码/卡片生成 prompt
Wing900 Jul 26, 2026
171772b
docs: refresh bilingual project readme
Wing900 Jul 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
thirdparty/screeningzoom/**/*.cpp linguist-vendored=false
thirdparty/screeningzoom/**/*.h linguist-vendored=false
thirdparty/screeningzoom/**/*.hpp linguist-vendored=false

# Wails auto-generated bindings
frontend/wailsjs/**/*.js linguist-generated=true
182 changes: 182 additions & 0 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
name: Build Release

on:
push:
branches:
- master
workflow_dispatch:

permissions:
contents: write

jobs:
build-windows:
runs-on: windows-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: Install frontend dependencies
working-directory: frontend
run: npm ci

- name: Install Wails CLI
shell: pwsh
run: |
go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2
"$(go env GOPATH)\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

- name: Read version
id: version
shell: pwsh
run: |
$version = (Get-Content version.json -Raw | ConvertFrom-Json).appVersion
if ([string]::IsNullOrWhiteSpace($version)) {
throw "version.json appVersion is empty"
}
"app_version=$($version.Trim())" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append

- name: Download runtime archive
shell: pwsh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
$appVersion = "${{ steps.version.outputs.app_version }}"
$repo = "${{ github.repository }}"
$runtimeDir = Join-Path $PWD "resources/runtime"
$runtimeArchive = Join-Path $runtimeDir "runtime.7z"
New-Item -ItemType Directory -Path $runtimeDir -Force | Out-Null
$downloaded = $false

$candidates = @(
"https://github.com/$repo/releases/download/v$appVersion/runtime.7z"
)

$apiHeaders = @{
Authorization = "Bearer $env:GITHUB_TOKEN"
"User-Agent" = "plotkitycat-actions"
}

try {
$latestRelease = Invoke-RestMethod -Uri "https://api.github.com/repos/$repo/releases/latest" -Headers $apiHeaders
$latestRuntime = $latestRelease.assets | Where-Object { $_.name -eq "runtime.7z" } | Select-Object -First 1
if ($null -ne $latestRuntime -and -not [string]::IsNullOrWhiteSpace($latestRuntime.browser_download_url)) {
$candidates += $latestRuntime.browser_download_url
}

$latestZip = $latestRelease.assets | Where-Object { $_.name -like "PlotKityCat-v*.zip" } | Select-Object -First 1
if ($null -ne $latestZip -and -not [string]::IsNullOrWhiteSpace($latestZip.browser_download_url)) {
$zipPath = Join-Path $env:RUNNER_TEMP "latest-release.zip"
$extractDir = Join-Path $env:RUNNER_TEMP "latest-release"
Write-Host "Downloading fallback release zip from $($latestZip.browser_download_url)"
Invoke-WebRequest -Uri $latestZip.browser_download_url -OutFile $zipPath
if (Test-Path -LiteralPath $extractDir) {
Remove-Item -LiteralPath $extractDir -Recurse -Force
}
Expand-Archive -LiteralPath $zipPath -DestinationPath $extractDir -Force
$embeddedRuntime = Get-ChildItem -Path $extractDir -Recurse -Filter runtime.7z | Select-Object -First 1
if ($null -ne $embeddedRuntime) {
Copy-Item -LiteralPath $embeddedRuntime.FullName -Destination $runtimeArchive -Force
$downloaded = $true
}
}
} catch {
Write-Host "Latest release lookup failed: $($_.Exception.Message)"
}

if (-not $downloaded) {
foreach ($url in $candidates | Select-Object -Unique) {
try {
Write-Host "Downloading runtime from $url"
Invoke-WebRequest -Uri $url -OutFile $runtimeArchive
$downloaded = $true
break
} catch {
Write-Host "Runtime download failed from $url : $($_.Exception.Message)"
}
}
}

if (-not $downloaded) {
throw "Unable to download runtime.7z from release assets."
}

- name: Bootstrap vcpkg
shell: pwsh
run: |
$vcpkgRoot = Join-Path $env:RUNNER_TEMP "vcpkg"
git clone https://github.com/microsoft/vcpkg.git $vcpkgRoot
& (Join-Path $vcpkgRoot "bootstrap-vcpkg.bat") -disableMetrics
$vcpkgExe = Join-Path $vcpkgRoot "vcpkg.exe"
& $vcpkgExe install nlohmann-json:x64-windows-static
"VCPKG_ROOT=$vcpkgRoot" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

- name: Build screening zoom helper
shell: pwsh
run: |
$toolchain = Join-Path $env:VCPKG_ROOT "scripts/buildsystems/vcpkg.cmake"
cmake -S thirdparty/screeningzoom `
-B thirdparty/screeningzoom/build `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_TOOLCHAIN_FILE="$toolchain" `
-DVCPKG_TARGET_TRIPLET=x64-windows-static
cmake --build thirdparty/screeningzoom/build --config Release

- name: Build versioned app
shell: pwsh
run: .\tools\build-versioned-app.ps1 -Version "${{ steps.version.outputs.app_version }}"

- name: Prepare update artifacts
shell: pwsh
run: .\tools\prepare-update-release.ps1 -Version "${{ steps.version.outputs.app_version }}"

- name: Package full release
shell: pwsh
run: .\tools\package-release.ps1 -Version "${{ steps.version.outputs.app_version }}"

- name: Upload app binary
uses: actions/upload-artifact@v4
with:
name: PlotKityCat-build-${{ steps.version.outputs.app_version }}
path: build/bin/PlotKityCat.exe
if-no-files-found: error

- name: Upload update artifacts
uses: actions/upload-artifact@v4
with:
name: PlotKityCat-update-${{ steps.version.outputs.app_version }}
path: build/update/${{ steps.version.outputs.app_version }}
if-no-files-found: error

- name: Upload full release package
uses: actions/upload-artifact@v4
with:
name: PlotKityCat-release-${{ steps.version.outputs.app_version }}
path: build/release/PlotKityCat-v${{ steps.version.outputs.app_version }}.zip
if-no-files-found: error

- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.version.outputs.app_version }}
name: v${{ steps.version.outputs.app_version }}
generate_release_notes: true
fail_on_unmatched_files: true
files: |
build/release/PlotKityCat-v${{ steps.version.outputs.app_version }}.zip
build/update/${{ steps.version.outputs.app_version }}/PlotKityCat-${{ steps.version.outputs.app_version }}-windows-amd64.exe
build/update/${{ steps.version.outputs.app_version }}/manifest.json
resources/runtime/runtime.7z
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ build/release/
build/update/
/runtime/
/runtime.tmp/
/Scripts/
*.exe
*.dll
*.zip
!/resources/runtime/
!/resources/runtime/.gitkeep
/resources/runtime/runtime.7z
.runtime-staging/
.runtime-staging.7z
.tools_py/
Expand All @@ -25,9 +25,11 @@ nul
.DS_Store
Thumbs.db
/.gocache/
/.cache/
/.runtime-pack/
__pycache__/
*.py[cod]
thirdparty/screeningzoom/build/

# Legacy root docs
Tec.md
Expand All @@ -36,3 +38,6 @@ tec.md
prd.md
designcard.md
designcard-tec.md

# Local experiment sandbox (prompt eval / card gen)
.tmp/
59 changes: 35 additions & 24 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# PlotKityCat Development

本地开发启动、runtime 与构建发布、Git 仓库约定。

## 环境

- Windows
- Go 1.21+
- Go 1.22+
- Node.js 18+
- Wails v2

Expand All @@ -23,61 +25,64 @@ wails dev

## 版本

应用版本唯一来源:
应用版本唯一来源为 `version.json` 中的 `appVersion`。构建与发布脚本默认都读取这里的值。

- `version.json`
## 本地状态

相关脚本都会默认读取这里的 `appVersion`。
- `config/app-state.json` 保存版本化的应用状态,新手引导使用 `onboarding` 字段。
- 新发布包不携带 `config/`;应用创建 Store 时先检查既有 `config/`,早于本次启动写入状态。
- 历史用户写入 `suppressed / existing-user`,不自动显示教程。
- 教程模板缺失时写入 `suppressed / template-missing`,后续启动不再重复尝试。
- 新用户依次记录 `unseen`、`started`、`dismissed`、`completed`;后三者均停止自动启动。
- `Scripts/新手引导/` 保存教程内容,状态与内容采用独立生命周期。

## Runtime

项目运行依赖便携 Python runtime:
项目运行依赖便携 Python runtime。约定如下

- runtime 占位目录:`resources/runtime/`
- 发布输入:本地放置的 `resources/runtime/runtime.zip`
- 占位目录:`resources/runtime/`
- 本地发布输入:`resources/runtime/runtime.7z`
- 本地展开目录:`runtime/`
- 临时展开目录:`runtime.tmp/`
- 元数据文件:`runtime.version.json`

约定:

- `resources/runtime/runtime.zip` 默认不提交到 Git
- 该文件应通过 GitHub Release asset 或其他制品存储分发
- 仓库仅跟踪 runtime 脚本、元数据和第三方补丁源码
- runtime 通过 GitHub Release asset 分发
- 仓库仅跟踪 runtime 脚本和元数据

准备 runtime 压缩包:

```powershell
.\tools\prepare-runtime.ps1 -SourceRuntimeDir <你的 runtime 目录>
```

当前默认应保留的核心库
默认核心库

- Python 标准库
- numpy
- matplotlib
- scipy
- PyQt5

`runtime.version.json` 应同步填写实际 Python 与核心库版本,不要长期保留 `pending`。
`runtime.version.json` 必须填写真实版本,`pending` 仅为占位值

从零重建 runtime 的完整说明见 [RUNTIME_BUILD.md](D:/projects/plotkitycat/RUNTIME_BUILD.md)。

## 打包入口
## 构建与打包

构建 exe:

```powershell
.\tools\build-versioned-app.ps1
```

生成发布 zip:
构建成功会同时生成 `build/bin/build-metadata.json`。打包与在线更新产物脚本会强制核对其中的版本,禁止复用旧 EXE。

生成完整发布包:

```powershell
.\tools\package-release.ps1
```

生成自动更新发布物
生成在线更新产物

```powershell
.\tools\prepare-update-release.ps1
Expand All @@ -86,15 +91,17 @@ wails dev
如果要覆盖默认版本:

```powershell
.\tools\build-versioned-app.ps1 -Version 0.0.2.1
.\tools\package-release.ps1 -Version 0.0.2.1
.\tools\prepare-update-release.ps1 -Version 0.0.2.1
.\tools\build-versioned-app.ps1 -Version 0.0.3.5
.\tools\package-release.ps1 -Version 0.0.3.5
.\tools\prepare-update-release.ps1 -Version 0.0.3.5
```

## 发布前检查

- 确认 `version.json` 版本正确
- 确认 `resources/runtime/runtime.zip` 存在
- 确认 `resources/runtime/runtime.7z` 存在
- 确认 `zoomit.exe` 已经准备好,优先放在 `resources/screeningzoom/zoomit.exe`
- 如果还没放到 `resources/screeningzoom/zoomit.exe`,至少确认存在开发构建产物 `thirdparty/screeningzoom/build/Release/zoomit.exe`
- 确认 `runtime.version.json` 已填写真实版本
- 确认 `Scripts/` 中示例内容就是准备随包分发的内容
- 确认 `config/` 没有本机账号、缓存、更新状态等脏数据
Expand All @@ -107,21 +114,25 @@ wails dev
- `frontend/`
- `tools/`
- `build/windows/`
- `resources/` 下需要随项目维护的静态资源
- `resources/` 下需要随项目维护的静态资源与占位文件
- `resources/runtime/.gitkeep`
- `resources/screeningzoom/.gitkeep`
- `README.md`
- `DEVELOPMENT.md`
- `UPDATE_RELEASE.md`
- `RUNTIME_BUILD.md`
- `version.json`
- `runtime.version.json`
- `Scripts/` 下随产品发布的预制工作区

不应跟踪:

- `config/`
- `runtime/`
- `runtime.tmp/`
- `Scripts/`
- `build/bin/`
- `build/release/`
- `build/update/`
- `packaging/`

发布服务器更新步骤见 [UPDATE_RELEASE.md](D:/projects/plotkitycat/UPDATE_RELEASE.md)。
Loading
Loading