Initial TrueGrowth source import

This commit is contained in:
2026-07-07 09:36:36 +08:00
commit 3b6781d695
2283 changed files with 691996 additions and 0 deletions

85
docs/PWA_ICONS.md Normal file
View File

@@ -0,0 +1,85 @@
# PWA 图标生成指南
要从基础 SVG 生成 PWA 图标,您可以使用以下任一工具:
## 方法 1: 使用 ImageMagick (convert)
```bash
# 首先安装 ImageMagick
brew install imagemagick # macOS
sudo apt install imagemagick # Ubuntu/Debian
# 生成所有需要的尺寸
for size in 72 96 128 144 152 192 384 512; do
convert -background transparent -resize ${size}x${size} icon-base.svg icon-${size}x${size}.png
done
```
## 方法 2: 使用 Inkscape
```bash
# 首先安装 Inkscape
brew install inkscape # macOS
sudo apt install inkscape # Ubuntu/Debian
# 生成所有需要的尺寸
for size in 72 96 128 144 152 192 384 512; do
inkscape --export-width=${size} --export-height=${size} --export-filename=icon-${size}x${size}.png icon-base.svg
done
```
## 方法 3: 使用 rsvg-convert
```bash
# 首先安装 librsvg
brew install librsvg # macOS
sudo apt install librsvg2-bin # Ubuntu/Debian
# 生成所有需要的尺寸
for size in 72 96 128 144 152 192 384 512; do
rsvg-convert -w ${size} -h ${size} -o icon-${size}x${size}.png icon-base.svg
done
```
## 方法 4: 在线工具
您也可以使用在线 SVG 转 PNG 工具,例如:
- https://cloudconvert.com/svg-to-png
- https://convertio.co/svg-png/
- https://www.iloveimg.com/convert-svg-to-png
## 必需的图标尺寸
- 72x72px
- 96x96px
- 128x128px
- 144x144px
- 152x152px
- 192x192px (maskable)
- 384x384px
- 512x512px (maskable)
# Service Worker 升级指南
## 版本管理
Service Worker (`sw.js`) 使用版本常量来管理缓存失效和更新。
```javascript
// apps/web/public/sw.js
const APP_VERSION = '0.2.13'; // 增加此值以触发更新
```
## 升级步骤
当部署需要用户更新缓存的更改时(例如错误修复、新功能或静态资源更新):
1. **修改 `sw.js`**
* 在文件顶部找到 `const APP_VERSION`
* 增加版本号(例如从 `0.2.12``0.2.13`)。
2. **更新如何工作**
* **安装阶段**:当浏览器检测到 `sw.js` 存在字节差异时(由于版本号增加),它会在后台安装新的 Service Worker。
* **激活阶段**
* 安装完成后,新的 Service Worker 会等待所有客户端标签页关闭(或调用 `skipWaiting()`)。
* 激活后,它会创建带有新版本后缀的新缓存(例如 `drawnix-v0.2.13`)。
* 它会识别旧版本的缓存(例如 `drawnix-v0.2.12`)。
* **迁移**:它会自动将有价值的数据(如缓存的图片)从旧缓存迁移到新缓存,以节省带宽。
* **清理**迁移和短暂的安全延迟30秒它会删除旧缓存。
3. **强制更新**
* `index.html` 使用 `cache: 'reload'` 方式获取,确保始终加载最新版本,防止因 HTML 过期指向丢失的 JS 哈希而导致的“白屏”问题。
* 在开发模式(`localhost`)下,静态资源缓存会被绕过,以避免调试困扰。