feat: v3.0.0-beta - 切换到 portable-config 脱敏仓库 + Phase 4.5 License 激活

This commit is contained in:
bookworm 2026-04-18 23:04:40 +08:00
parent 1b97332239
commit 1aa2c3e6ef

View File

@ -16,7 +16,7 @@ param(
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
# ─── 版本号 (每次更新递增, build.ps1 自动读取) ────── # ─── 版本号 (每次更新递增, build.ps1 自动读取) ──────
$BWVersion = "2.3.1" $BWVersion = "3.0.0-beta"
# ─── B4: 单实例保护 (防止双击两次导致竞态) ───────── # ─── B4: 单实例保护 (防止双击两次导致竞态) ─────────
$mutexCreated = $false $mutexCreated = $false
@ -40,7 +40,7 @@ $ScriptDir = if ($PSScriptRoot) {
} }
$ClaudeDir = Join-Path $env:USERPROFILE ".claude" $ClaudeDir = Join-Path $env:USERPROFILE ".claude"
$BackupDir = Join-Path $env:USERPROFILE ".claude.bw-backup" $BackupDir = Join-Path $env:USERPROFILE ".claude.bw-backup"
$GitUrl = "https://code.letcareme.com/bookworm/bookworm-config.git" $GitUrl = "https://code.letcareme.com/bookworm/bookworm-portable-config.git" # v3.0: 脱敏分发仓库
$BootUrl = "https://code.letcareme.com/bookworm/bookworm-boot.git" $BootUrl = "https://code.letcareme.com/bookworm/bookworm-boot.git"
$BootDir = Join-Path $ScriptDir "bookworm-boot" $BootDir = Join-Path $ScriptDir "bookworm-boot"
$SecretsEnc = Join-Path $BootDir "secrets.enc" $SecretsEnc = Join-Path $BootDir "secrets.enc"
@ -1261,6 +1261,41 @@ else {
} }
} # end if (-not $secretsDecrypted) } # end if (-not $secretsDecrypted)
# ========================================================================
# Phase 4.5: License 激活 (v3.0 新增, 可选)
# ========================================================================
# 检查 ~/.claude/.bw-token 是否存在且未过期; 不存在则引导激活
$bwTokenFile = Join-Path $ClaudeDir ".bw-token"
$bwActivateJs = Join-Path $ClaudeDir "lib\activate.js"
$needLicenseActivate = $true
if (Test-Path $bwTokenFile) {
try {
$tok = Get-Content $bwTokenFile -Raw | ConvertFrom-Json
if ($tok.expires_at -gt ((New-TimeSpan -Start (Get-Date "1970-01-01") -End (Get-Date).ToUniversalTime()).TotalMilliseconds + 86400000)) {
Log-OK "License token 有效 (UUID: $($tok.license_uuid))"
$needLicenseActivate = $false
}
} catch {}
}
if ($needLicenseActivate -and (Test-Path $bwActivateJs) -and (Test-Cmd "node")) {
$activateChoice = Show-MsgBox "是否激活 Bookworm License (用于加载 Skill 专家)`n`n如果有 License Key (BW-XXXX-XXXX-...), 点是`n如果没有, 点否 (可后续用 change-key.bat 激活)" "License 激活" "YesNo" "Information"
if ($activateChoice -eq "Yes") {
$licKey = Show-ApiKeyDialog 1 1 "" # 复用现有对话框
if ($licKey) {
try {
$licKey | & node $bwActivateJs 2>&1 | Out-Null
if ($LASTEXITCODE -eq 0) {
Log-OK "License 激活成功"
} else {
Log-Warn "License 激活失败 (可用 change-key.bat 重试)"
}
} catch { Log-Warn "License 激活异常: $_" }
}
} else {
Log-Info "已跳过 License 激活"
}
}
# ======================================================================== # ========================================================================
# Phase 5: 配置渲染 # Phase 5: 配置渲染
# ======================================================================== # ========================================================================