refactor: 基于 upstream/Erotica 重新整合本地功能(来源选择/合并详情/计数/窗口/首页)

将本地在 upstream !408(已安装应用合并+统计)之上的后续改动重新整合到最新 upstream/Erotica:
- 已安装应用:卸载/打开按 APM/Spark 来源选择;计数总数=APM+Spark 包数(双来源计为独立包)
- 查看详情:已安装页复用所有应用页合并详情视图(单来源优先已装类型,双来源自动模式)
- 窗口:恢复阈值改为 1600x900,过大回退默认尺寸并居中,不自动最大化
- 首页推荐:致谢卡片移至其他内容下方,加大标题/卡片/致谢间距
- 隐藏排行榜/荣耀榜侧栏入口(代码保留,v-if=false)
- 新增 scripts/test-build.sh 测试打包脚本(版本末段+1 加 -test)并更新 AGENTS.md

冲突文件(index.ts/App.vue/InstalledAppsModal.vue)均取本地完整实现(为上游版本的超集)。
This commit is contained in:
xiyidaiwa
2026-08-03 11:06:28 +08:00
parent 77b4244f1d
commit b89c001401
25 changed files with 1750 additions and 299 deletions
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/env bash
#
# 测试打包脚本
#
# 用途:本地测试打包时,自动将 deb 版本号(位于 debian/changelog 顶部)的
# 最后一段数字 +1,并追加 "-test" 标签,随后执行 dpkg-buildpackage。
#
# 示例:
# 当前 debian/changelog 顶部版本为 5.2.1.0
# 运行一次 -> 5.2.1.1-test(产物 spark-store_5.2.1.1-test_amd64.deb
# 再运行一次 -> 5.2.1.2-test
#
# 注意:
# - 此脚本仅用于本地测试,不会修改 package.jsonelectron-builder 的 dir 产物版本)。
# - 每次运行都会改写 debian/changelog,属于未跟踪的工作区改动,按需自行还原。
# - 如需恢复正式版本,将 debian/changelog 顶部版本改回即可。
set -euo pipefail
# 定位仓库根目录(脚本位于 scripts/ 下)
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
CHANGELOG="debian/changelog"
if [ ! -f "$CHANGELOG" ]; then
echo "错误:未找到 $CHANGELOG" >&2
exit 1
fi
# 读取 changelog 首行并解析版本号,形如:
# spark-store (5.2.1.0) UNRELEASED; urgency=medium
# spark-store (5.2.1.1-test) UNRELEASED; urgency=medium
top_line="$(head -n1 "$CHANGELOG")"
# 提取括号内的版本号,避免使用 [[ =~ ]] 处理字面括号引发的语法问题
old_ver="$(printf '%s' "$top_line" | sed -E 's/^[^ ]+ \(([^)]+)\).*/\1/')"
if [[ -z "$old_ver" || "$old_ver" == "$top_line" ]]; then
echo "错误:无法从 $CHANGELOG 首行解析版本号: $top_line" >&2
exit 1
fi
# 分离上游版本与 Debian 修订号:
# Debian 版本格式为 "上游版本-修订号",修订号以最后一个 '-' 分隔。
# 上游版本只允许点号(如 5.2.1.0),'-test' 这类标签属于修订号,每次测试覆盖为固定 "test"。
if [[ "$old_ver" == *-* ]]; then
upstream="${old_ver%-*}"
else
upstream="$old_ver"
fi
# 上游版本形如 X.Y.Z.W,将最后一个点号分隔的数字段 +1
if [[ "$upstream" =~ ^(.*)\.([0-9]+)$ ]]; then
prefix="${BASH_REMATCH[1]}"
last="${BASH_REMATCH[2]}"
# 10# 强制按十进制解析,避免以 0 开头的段被当作八进制
new_last=$((10#$last + 1))
new_upstream="${prefix}.${new_last}"
else
echo "错误:上游版本号不符合 X.Y.Z.W 格式: $upstream" >&2
exit 1
fi
new_ver="${new_upstream}-test"
echo "版本号: ${old_ver} -> ${new_ver}"
# 仅替换首行括号内的版本号(转义点号,避免被正则当作任意字符)
old_ver_esc="${old_ver//./\\.}"
sed -i -E "1s/\\(${old_ver_esc}\\)/(${new_ver})/" "$CHANGELOG"
# Electron 二进制下载镜像(本机到 GitHub 不通,使用 npmmirror 镜像)
export ELECTRON_MIRROR="${ELECTRON_MIRROR:-https://registry.npmmirror.com/-/binary/electron/}"
echo "开始测试打包(版本 ${new_ver}..."
dpkg-buildpackage -us -uc -b
echo "完成。产物: ../spark-store_${new_ver}_amd64.deb"