- 智能体配置新增「记忆」标签页,支持查看/编辑 MEMORY.md 和浏览每日记忆日志 - 智能体侧边信息面板新增记忆摘要展示 - 启动页补偿加载渲染前已输出的 Gateway 日志 - NSIS 安装器改用 ExecToStack,隐藏详情面板,修复中文乱码(UTF-8 BOM)
58 lines
2.6 KiB
JavaScript
58 lines
2.6 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* apply-branding.mjs
|
|
*
|
|
* 从 app.config.mjs 读取品牌配置,同步到:
|
|
* 1. src/shared/branding.ts — TypeScript 常量(main + renderer 通用)
|
|
* 2. resources/installer.nsh — NSIS 安装脚本(从模板生成)
|
|
* 3. package.json — description / build.appId / build.productName
|
|
*
|
|
* 用法:node scripts/apply-branding.mjs
|
|
* pnpm run brand
|
|
*/
|
|
|
|
import { readFileSync, writeFileSync } from 'fs'
|
|
import { resolve, dirname } from 'path'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
const root = resolve(__dirname, '..')
|
|
|
|
const { default: cfg } = await import(resolve(root, 'app.config.mjs'))
|
|
|
|
// ── 1. src/shared/branding.ts ────────────────────────────────────────────────
|
|
const brandingTs = [
|
|
`// ⚠️ Auto-generated by scripts/apply-branding.mjs — do not edit directly.`,
|
|
`// To update branding, edit app.config.mjs and run: pnpm run brand`,
|
|
``,
|
|
`export const APP_NAME = '${cfg.appName}'`,
|
|
`export const APP_ID = '${cfg.appId}'`,
|
|
`export const FIREWALL_RULE_NAME = '${cfg.firewallRuleName}'`,
|
|
``,
|
|
].join('\n')
|
|
|
|
writeFileSync(resolve(root, 'src/shared/branding.ts'), brandingTs)
|
|
console.log('✓ src/shared/branding.ts')
|
|
|
|
// ── 2. resources/installer.nsh(从模板生成)──────────────────────────────────
|
|
const tpl = readFileSync(resolve(root, 'resources/installer.nsh.template'), 'utf8')
|
|
const nsh = tpl
|
|
.replace(/\{\{APP_NAME\}\}/g, cfg.appName)
|
|
.replace(/\{\{PRODUCT_NAME\}\}/g, cfg.productName)
|
|
// NSIS Unicode 模式需要 UTF-8 BOM 才能正确显示中文 DetailPrint
|
|
const UTF8_BOM = '\uFEFF'
|
|
const nshWithBom = nsh.startsWith(UTF8_BOM) ? nsh : UTF8_BOM + nsh
|
|
writeFileSync(resolve(root, 'resources/installer.nsh'), nshWithBom)
|
|
console.log('✓ resources/installer.nsh')
|
|
|
|
// ── 3. package.json ──────────────────────────────────────────────────────────
|
|
const pkgPath = resolve(root, 'package.json')
|
|
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
|
|
pkg.description = cfg.description
|
|
pkg.build.appId = cfg.appId
|
|
pkg.build.productName = cfg.productName
|
|
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')
|
|
console.log('✓ package.json (description / build.appId / build.productName)')
|
|
|
|
console.log('\n🎉 Branding applied from app.config.mjs')
|