xiyidaiwa
|
e1edf1dcd5
|
fix: fetchWithRetry 对 429 限流增加指数退避与 Retry-After 尊重
- useHttp.calculateRetryDelay:优先读服务端 Retry-After 头;429 用指数退避
(1000*2^attempt, 封顶 30s);其余 5xx 仍固定延迟,避免限流场景频繁重试浪费带宽
- debian/changelog 测试版本号 5.2.1.2-test
- 验证:vue-tsc 0 / eslint 0 / dpkg-buildpackage 打包成功
审查项实证(其余 3 项均误报/已有防护,不改):
- ① install-manager pkgname 二次校验:已有 PKGNAME_PATTERN(/^[a-zA-Z0-9._+-]+$/)
在 parseAppPayload/addInstallTask/launch-app 三入口校验,且 spawn 全用 shell:false
参数逐元素传递,命令注入不可达;审查建议的 replace 属冗余纵深防御,不改
- ② InstalledAppsModal /var/lib/ 宽泛:误报,真实白名单(400-409行)已是
/var/lib/apm/ 与 /var/lib/dpkg/info/ 具体子目录,无宽泛 /var/lib/ 项
- ③ useAppState.ts 注入模式缺注册检查:误报,useAppState.ts 无 registerRequireLogin;
真实 registerRequireLogin 在 useFavorites/useAppDetail,默认 ()=>true 为刻意安全兜底
(未注册=放行),审查建议的 InjectionPoint 包装会破坏该语义,不改
|
2026-08-13 21:02:12 +08:00 |
|
xiyidaiwa
|
7be90f13ce
|
fix: 排序魔法数字提取常量 + sidebar-config 远程校验类型守卫
- InstalledAppsModal 提取 ORIGIN_PRIORITY 具名常量与 originPriority(),
消除排序比较函数中的 0/1 魔法数字(保留 hasOrigin 双来源语义)
- useCatalog.loadSidebarConfig 新增 isValidSidebarEntry 类型守卫,对远程
sidebar-config.json 入口做字段类型/长度/type 白名单校验,防止畸形数据进入
渲染层(type 白名单与 typedefinition.ts 的 SidebarEntry.type 严格一致)
- debian/changelog 测试版本号 5.2.1.1-test
- 验证:vue-tsc 0 / eslint 0 / dpkg-buildpackage 打包成功
审查项实证:
- 改进③(filteredApps 多次 filter) 误报:当前已为单 filter 遍历(.24 已改),
审查贴旧片段且退化 a.origin 会破坏双来源,不改
- 改进①/② 为真改进,已采纳并保真实现
|
2026-08-13 20:43:43 +08:00 |
|
xiyidaiwa
|
0f62a7e36a
|
feat(update-center): 支持被系统锁定(hold)包的强制安装与更新中心体验优化
- 标记 apt-mark hold 的 spark(aptss) 源包,默认禁用勾选并提示开启强制安装
- 更新中心发起更新时透传 forceHeld,后端 Spark 本地 deb 走 shell-caller
force-ssinstall 分支(单次免密 pkexec:unhold→ssinstall→hold),避免二次提权
- 无可选项时禁用全选并提示"无可更新项";更新选中后从列表中移除已启动项
- DownloadDetail 紧凑布局避免整页滚动;Toolbar 全选与更新选中按钮同行
- 继承 PKGNAME_PATTERN 与 metalinkUrl 白名单(https+*.spark-app.store+拒..)纵深防御
- apm 源无 hold 概念,forceHeld 在 apm 分支忽略(正确行为)
|
2026-08-13 16:42:21 +08:00 |
|
xiyidaiwa
|
b5c5ab04b5
|
fix(update-center): 修复更新中心点击更新后卡在"开始更新..."不动
- 根因:service.ts 用 webContents.send("queue-install") 向主下载队列发任务,
但 webContents.send 的目标对象是渲染进程,主进程 ipcMain 监听不到自己发出的消息,
导致任务从未进入 install-manager 的下载队列,UI 永远卡在 queued。
- 将 install-manager.ts 的 queue-install 处理逻辑抽为导出的 addInstallTask(payload, sender),
新增 QueueInstallPayload 类型,避免 any。
- 更新中心 service.ts 的 start() 改为直接 await addInstallTask(...),任务真正入队。
- 文档 docs/app-list-cache-analysis.md 新增第 9 节记录本修复。
|
2026-08-13 09:37:17 +08:00 |
|
xiyidaiwa
|
d7bdcf3680
|
fix: 标签策略启动初始化加固 + 已安装应用过滤/统计性能优化
- 标签优先显示策略 initTagPriorityStrategy 提到 App.vue onMounted 统一调用,
消除组件挂载顺序导致先读内存默认 auto 的竞态窗口(AppDetailModal 移除重复调用)
- InstalledAppsModal 过滤逻辑合并为单次遍历(保留 hasOrigin 双来源语义)
- 统计 apm/spark/total 改为基于 searchFilteredApps 单次遍历
- canOpenDetail 补充业务含义注释与可读性变量
- 将 App.vue 重构的 9 个 composable 纳入版本管理
- 验证:vue-tsc 0 / eslint 0 / dpkg-buildpackage 打包 spark-store_5.2.1.24-test 成功
|
2026-08-12 23:16:17 +08:00 |
|
xiyidaiwa
|
5e7d88ecc5
|
fix(审计修复): 缓存穿透TTL共享 + 预刷新网络/超时 + 最大化/APM优先设计注释
- 新增 cacheBusterInterceptor.ts:createCacheBusterInterceptor(ttl=5min) 带 TTL 复用戳,
解决同会话频繁击穿缓存(B1)并将 App.vue/storeConfig 两处重复逻辑合并为共享工厂(I3)
- storeConfig.ts: priorityConfigAxios 改用共享拦截器;HYBRID_DEFAULT_PRIORITY 加注释
明确「主推 APM 是既定产品方向」(B2,非缺陷)
- App.vue: axiosInstance 改用共享拦截器(带 TTL)
- index.ts: 预刷新 startSourcePreRefreshOnce 加 net.isOnline() 检查 + 60s 超时兜底,
避免离线/卡死触发 pkexec 弹窗困惑(I1);createWindow 恢复逻辑加注释明确
「最大化后恢复重置为默认尺寸是有意设计,非缺陷」(I2)
- vue-tsc + eslint 通过
|
2026-08-12 21:02:48 +08:00 |
|
xiyidaiwa
|
a7b8cd52af
|
fix(安全/性能): AI审查实证修复 - metalinkUrl SSRF校验 + withTimeout定时器泄漏 + 批量更新/初始加载守卫
- install-manager.ts: queue-install 增加 metalinkUrl 校验(仅允许相对路径或官方域名,防 SSRF)
- App.vue: withTimeout 用 finally(clearTimeout) 修复定时器泄漏
- App.vue: apps 批量更新改数组赋值替代 push(...),避免逐元素响应式重渲染
- App.vue: apps.length watcher 增加 initialCatalogLoaded 守卫,初始目录加载期间跳过已安装列表刷新 IPC
- 审计实证:①filename校验已有(误报) ④pauseDownload为历史TODO且后端不支持(不在此PR) ⑦⑧为可维护性大项(记录待后续)
注:AI审查4阻断项实证——①误报 ②真实加固 ③真实修复 ④历史遗留;4改进项 ⑤⑥真实已修 ⑦⑧记录
|
2026-08-12 20:28:27 +08:00 |
|
xiyidaiwa
|
30e1bc4840
|
refactor(更新中心): E方案重设计更新条目 + 已忽略沉底 + 复用app.update显示更新时间 + 安全加固
- UpdateCenterItem.vue: 改为单行紧凑卡片,显示 包名·当前→新版本、来源标签、更新时间(品牌色)、大小;已忽略项淡化
- updateCenter.ts: filteredItems 将已忽略项沉底到列表末尾
- UpdateCenterList/Modal + App.vue: 透传全局 apps,用 app.json 的 Update 字段(Date.parse)推算 updateTime,零额外网络请求
- typedefinition.ts + update-center/types.ts: 新增可选 updateTime 字段
- install-manager.ts: launch-app 补 pkgname.length > 256 长度限制(防 DoS)
- index.ts: close 事件先 clearTimeout 防抖定时器再同步保存窗口状态(消除竞态)
- App.vue: fetchWithRetry 重试 3→2、延迟 1000→500ms(体验优化)
- 7维审计通过;AI审查2阻断项(getIconUrl防护/fetchWithRetry泛型)经核实为误报
|
2026-08-11 23:54:00 +08:00 |
|
xiyidaiwa
|
aef9ccd1ec
|
fix(主题/UI): 修复标题栏主题按钮事件链、社区版徽标方案B、侧边栏顶部块清理
- App.vue: WindowTitleBar 补 :theme-mode 与 @toggle-theme 绑定,使标题栏主题按钮真正触发 toggleTheme;watch(themeMode) 补 syncThemePreference() 立即落地 dark 类
- WindowTitleBar.vue: 新增 ThemeToggle 主题切换按钮;社区版标签改为方案B描边霓虹徽章(亮/暗双态)
- AppSidebar.vue: 删除侧边栏顶部 logo/账户菜单/主题切换块,导航容器滚动条还原为 scrollbar-muted,清理相关 script 死代码
|
2026-08-11 22:45:37 +08:00 |
|
xiyidaiwa
|
7cafcc51f6
|
fix(download): 下载失败时补全日志,避免卡在"正在获取 Metalink"突兀退出
- 主进程 Metalink 下载请求失败显式 sendLog 并回传渲染端(原仅静默 logger.error)
- aria2c 拉起失败补 sendLog 日志
- Metalink 写入完成补 sendLog 提示
- 渲染端 install-complete 失败分支将错误原因写入 logs,并补成功/失败终止日志
- 配套: 缓存修复(C1 主进程 no-cache + C2 axios ?_t 版本戳) 已在上一提交实现
- 文档 docs/app-list-cache-analysis.md 新增第8节下载日志断层修复方案
|
2026-08-11 18:50:31 +08:00 |
|
xiyidaiwa
|
e0e6c50b89
|
fix(cache): 列表/分类请求禁用客户端缓存,根治新应用上架后搜不到
- C1: 主进程 onBeforeSendHeaders 对 .json 数据请求注入 Cache-Control: no-cache + Pragma
- C2: 渲染端 axiosInstance 与 priorityConfigAxios 对 .json GET 追加 ?_t 时间戳版本戳,穿透 CDN 边缘缓存
- 按去除 query 的 pathname 判断 .json,兼容 C2 自身追加的 ?_t,避免 C1/C2 交互失效
- 根因: nginx 无 Cache-Control 头 -> Chromium 启发式缓存(≈(now-LastModified)/10) 复用陈旧副本,重启仍命中旧 JSON,仅删 Cache 目录才生效
|
2026-08-11 18:44:32 +08:00 |
|
xiyidaiwa
|
8888afd4f5
|
fix: PR 审查真实缺陷修复(图标错位/定时器清理/并发/统计同步)
- AppDetailModal: iconPath 改用 viewingOrigin 动态计算,修复合并源切换时图标与数据错位
- App.vue: onUnmounted 清理 saveBoundsTimer 防抖定时器,避免组件销毁后悬空 IPC 调用
- App.vue: loadHomeListEntries 串行 for-of 改 Promise.all 并发拉取,缩短首页入口加载
- InstalledAppsModal: 顶部统计徽章基于搜索过滤结果实时计算,修复搜索时数字不同步
(审查误报项已核实未改: fetchAppFromStore 已有 encodeURIComponent + AbortSignal)
|
2026-08-11 00:20:19 +08:00 |
|
xiyidaiwa
|
44fa822146
|
fix: 排行榜日期比较鲁棒性 + 下载计数请求取消
- ranking.ts: topByUpdate 改用时戳数字比较,兼容后端不一致的日期格式
(如 2026-08-10 / 2026/08/10 / 带时分秒),无效日期兜底为 0 避免 NaN 乱序
- App.vue: fetchDownloadCount 的 fetch 加 rootAbortController.signal,
组件卸载时可取消未完成请求,避免内存泄漏
(注: 这两个真实缺陷由 PR 审查在错误 diff 下点名,本提交独立于 Erotica PR)
|
2026-08-10 23:59:15 +08:00 |
|
xiyidaiwa
|
102ac72d89
|
fix: 安全加固 + 首页推荐优先加载解耦
- install-manager: queue-install JSON.parse 加 try-catch 防异常 payload
- App.vue: openExternalUrl 协议白名单(http/https) 防恶意 scheme
- AppDetailModal: sanitizeMoreContent 改用 textContent 防 v-html XSS
- storeConfig: loadPriorityConfig 校验顶层结构,畸形数据回退 APM
- App.vue onMounted: 首页推荐(loadHome+preloadHomeListApps) 与全量
应用加载(loadApps) 解耦,进入软件即优先显示首页推荐
|
2026-08-10 23:40:21 +08:00 |
|
xiyidaiwa
|
5bd0a367c4
|
refactor(update-center): 消除刷新重试代码重复并加对称设计注释
- updateCenter.ts: 提取 getBackoffDelay,补充与主进程预刷新为对称设计的说明
- index.ts: 提取 getPreRefreshBackoffDelay,对齐命名与注释
- 仅消除重复拼写、补注释,刷新重试功能行为不变
- 超时保护仍只作用于刷新源路径,不波及列表加载与其他 IPC
验证: eslint + vue-tsc 通过,test-build 5.2.1.14-test 通过
|
2026-08-10 23:14:18 +08:00 |
|
xiyidaiwa
|
3f22207505
|
fix/refactor: 更新中心扫描与多项安全加固(经专业审计)
更新中心扫描修复:
- updateCenter.ts: 抽出 runSystemUpdateThenLoad, open/refresh 共用,
打开时即刷新双源(aptss ssupdate + apm update), 失败仅告警不阻断扫描
- shell-caller.sh: ssupdate 分支 exit $? 恒 0 吞掉刷新失败, 改为 exit $exit_code
- update-center/query.ts: 移除 nextVersion===currentVersion 误删真实更新项逻辑,
信任 aptss 上游 upgradable 判断
安全加固:
- AppDetailModal.vue: 新增 sanitizeMoreContent 剥除 HTML 标签后再 v-html, 防 XSS
- InstalledAppsModal.vue: ALLOWED_LOCAL_ICON_PREFIXES 收紧为具体子目录, 缩小
本地文件读取面
- install-manager.ts: filename 用 path.basename 防路径遍历; 包名/文件名 PKGNAME_PATTERN 校验
- index.ts: 临时目录改用 spark-store-${pid} 隔离, will-quit 清理对应目录
经 7 维度专业审计(安全/功能/类型/可维护/资源/性能/兼容)通过。
|
2026-08-10 21:42:36 +08:00 |
|
xiyidaiwa
|
0be6f8ad11
|
fix: 修复更新中心打开时扫描不到软件更新的问题
- shell-caller.sh: ssupdate 分支 exit $? 永远返回 0 会吞掉刷新失败,
改为 exit $exit_code 真实上报 aptss ssupdate 成败
- updateCenter.ts: 打开更新中心(open)时先执行 update-center-run-system-update
(pkexec aptss ssupdate) 刷新软件源, 与刷新按钮行为一致, 避免基于陈旧
apt 缓存扫描导致漏报可更新项
经多维度专业审查(安全/功能/类型/可维护/资源/性能/兼容)通过。
|
2026-08-10 21:21:40 +08:00 |
|
xiyidaiwa
|
800a92b419
|
fix: 处理 PR 审查意见(竞态/类型安全/冗余/日志泄露)
- App.vue fetchAppFromStore 的 fetch 接入 rootAbortController.signal,
组件卸载时取消请求,避免竞态与内存泄漏;catch 静默处理 AbortError。
- App.vue loadHome 远程字段由 `as string` 断言改为 typeof 运行时守卫,
避免非字符串数据注入响应式状态(非崩溃,属改进)。
- ranking.ts topUpdatedContributors 移除对 topByUpdate 已过滤结果的冗余 filter。
- storeConfig 加载成功日志改为仅打印规则条数,避免完整配置泄露且保留诊断价值。
- 未采纳:parseAppPayload 默认 origin=spark 维持不变(spark 为历史默认源,
盲改 apm 有反向误路由风险,且该字符串分支仅为极旧格式兜底)。
|
2026-08-10 17:19:55 +08:00 |
|
xiyidaiwa
|
9247fe8e63
|
fix: 合并应用子版相反命中时按 apmPriority 例外优先裁决
getHybridDefaultOrigin 原先对合并应用子版采用「spark 先于 apm」短路返回,
当 sparkApp 命中 sparkPriority 且 apmApp 命中 apmPriority(方向相反)时,
会错误返回 spark,违反 priority-config.json 中 apmPriority「例外优先」语义。
改为先收集两子版命中结果,方向相反时让 apm 胜出;仅单子版命中或同向时
维持原行为。已用 Node 复现验证(相反命中返回 apm、对照旧逻辑返回 spark)。
|
2026-08-10 08:27:18 +08:00 |
|
xiyidaiwa
|
7ac1b2f0b6
|
refactor: 按代码审查清理标签优先显示策略相关代码
- 移除 AppDetailModal auto 决策分支的调试 console.log(生产不残留调试日志)
- 删除 storeConfig 中无读取方的 isPriorityConfigLoaded/hasPriorityConfigFile
死变量,并修正 catch 分支借 resetPriorityConfig 误标 loaded 的语义矛盾
- getHybridDefaultOrigin 对合并应用子版匹配时,子版 category 为空则
回退顶层 app.category,避免分类规则漏匹配
- 补充 forceViewingOrigin 强制来源不随设置策略实时切换的注释(设计行为)
|
2026-08-10 08:11:13 +08:00 |
|
xiyidaiwa
|
b800f3164b
|
Merge branch 'Erotica' of gitee.com:xiyidaiwa/spark-store into Erotica
# Conflicts:
# src/App.vue
|
2026-08-07 18:23:35 +08:00 |
|
xiyidaiwa
|
b3eb1d01d9
|
fix: 标签优先显示策略 auto 模式按服务端优先级配置展示
- auto 模式用合并应用自身(含 sparkApp/apmApp)匹配 priority-config.json,
不再仅取单一子版,避免漏匹配。
- openDetail 区分「已安装页显式来源强制」与「其他页面按策略」;
非强制分支清除 forceViewingOrigin 粘性标志,避免跨入口状态泄漏。
- AppDetailModal 按 TagPriorityStrategy 响应式重算默认来源;
手动切标签仅本次会话预览,不持久。
- storeConfig.loadPriorityConfig 改用 axios(与渲染进程一致),
修复 Electron 下全局 fetch 失败导致配置为空、auto 全部回退 APM 的问题。
- 首页推荐列表 parseAppList 从 jsonUrl 提取分类,避免 category 误为 unknown。
|
2026-08-07 18:21:39 +08:00 |
|
xiyidaiwa
|
88499a56f8
|
feat: 新增「标签优先显示策略」设置(自动选择/Spark优先/APM优先,默认自动选择)
需求:在应用设置中新增标签优先显示策略配置,进入应用详情页时按所选策略决定
默认展示的来源(Spark/APM)标签;选中的标签即为安装时对应的来源。
实现:
- 新增 src/global/tagPriority.ts:策略('auto'|'spark'|'apm')共享模块,localStorage 持久化,
通过共享 ref 在设置页与详情页间同步(纯前端显示偏好,不触及后端安装脚本)。
- SettingsModal.vue:在「安装设置」中新增三选项分段控件(默认选中「自动选择」),
打开时加载、变更时即时保存。
- AppDetailModal.vue:新增 computeDefaultViewingOrigin,按策略计算默认 viewingOrigin:
自动选择→getHybridDefaultOrigin(应用配置优先级);Spark/APM 优先→优先选中对应标签,
若应用无该来源标签则回退优先级策略;仅有一个来源标签时默认展示该标签;
父组件显式指定的 viewingOrigin 仍具最高优先级。
vue-tsc --noEmit 通过。
|
2026-08-07 10:45:44 +08:00 |
|
xiyidaiwa
|
ae584730c4
|
refactor: 多维度代码审查修复(安全/清理/类型)
- src/App.vue:
- fetchAppFromStore 的 category/pkgname 路径参数 encodeURIComponent 编码(防路径穿越)
- img_urls JSON.parse 增加 try/catch,解析失败回退空数组(两处)
- onUnmounted 统一移除 hashchange/resize/keydown 及全部 IPC 监听,修复内存泄漏
- 提取 createFallbackApp 消除 openDetail 重复回退构造
- 收集并统一停止等待 loading 的一次性 watcher,闭环生命周期清理
- src/global/typedefinition.ts: 移除 CategoryInfo/HomeLink 宽泛索引签名,
CategoryInfo 改用显式 extra 字段
- electron/main/backend/install-manager.ts: 清理冗余 eslint-disable 并修正缩进
(remove-installed/check-installed 已通过 parseAppPayload 完成 pkgname 校验,无需改动)
|
2026-08-06 22:06:43 +08:00 |
|
xiyidaiwa
|
0d580c4d47
|
fix: 修复 before-quit 中 mainWindow 未定义报错,并优化排行榜加载
- electron/main/index.ts: flushSaveBounds 改用模块级 win 变量,
修复关闭应用时 mainWindow is not defined 的 ReferenceError
- src/App.vue: loadRanking 并发数降至 15;loadHome 多来源请求并行化
- src/modules/ranking.ts: parseContributors 增强异常格式边界处理
|
2026-08-06 20:51:47 +08:00 |
|
xiyidaiwa
|
c1d2bef38a
|
ui: 隐藏首页致谢卡片(代码保留,v-if=false)
|
2026-08-03 14:35:05 +08:00 |
|
xiyidaiwa
|
3816703303
|
fix: 安全加固——queue-install 路径遍历校验 + 首页远程数据显式字段
针对 PR 安全审查的修复:
1. queue-install 路径遍历(阻断项,真实风险):
install-manager.ts 直接用渲染进程传入的 pkgname 拼装下载目录
/tmp/spark-store/download/ 与 ssinstall 命令参数 /,
此前未做任何校验。复用模块顶部 PKGNAME_PATTERN 对 pkgname 与 filename 做白名单校验,
拦截含 ../、/ 或非法字符的输入,杜绝路径遍历。
2. 首页远程数据展开(阻断项,纵深防御):
App.vue loadHome 此前用 { ...l } 直接展开远程 homelinks.json 到响应式数组,
可能注入未知属性。改为显式提取 name/url/icon/more/imgUrl/type/origin 已知字段构造,
仅保留可信字段(url 仍做必需校验以保首页正常渲染)。
注:check-installed 白名单(审查第1项)此前已在 4f772ba7 通过 parseAppPayload 修复,本次无改动。
vue-tsc --noEmit 通过。
|
2026-08-03 14:17:45 +08:00 |
|
xiyidaiwa
|
1569dad866
|
fix: 修复首页内容因 icon 字段校验被全部过滤的回归
回顾:上轮健壮性修改中,loadHome 对 homelinks.json 的解析新增了
'if (!url || !icon) continue' 的硬性校验。但远程 homelinks.json 实际
仅提供 name/more/imgUrl/type/url,并不含 icon 字段(首页图片统一由
imgUrl 提供),导致所有链接因缺少 icon 被跳过,首页区域1 变空白。
修正:
- App.vue loadHome:移除对 icon 的强制校验,仅校验 url 必需;icon 缺省为空串以兼容类型
- typedefinition HomeLink.icon:由必需 string 改为可选,反映真实数据源契约
vue-tsc --noEmit 通过,已重新打包验证(5.2.1.2-test)。
|
2026-08-03 12:05:57 +08:00 |
|
xiyidaiwa
|
4f772ba7eb
|
fix: 安全与健壮性排查修复(IPC 类型校验/AbortSignal/空名去重/窗口 await)
阻断项:
- install-manager: uninstall-installed / remove-installed / check-installed 由 any 改为 unknown + parseAppPayload 严格解析(PKGNAME_PATTERN 校验 pkgname,origin 仅限 spark|apm),消除命令注入风险;parseAppPayload/PKGNAME_PATTERN 提升至模块顶部复用并避免 TDZ
- App.vue openDetail: 参数由 Record<string,unknown> 收紧为 App | OpenDetailInput,新增 pkgname 运行时校验,避免访问 undefined 属性
改进项:
- App.vue homeLinks 去重:跳过空名称避免污染 seenNames,并对 links 数组与 HomeLink 必需字段做校验
- App.vue fetchWithRetry: 新增 AbortSignal 参数,递归链路传递,组件卸载时 rootAbortController.abort() 取消未完成任务
- index.ts showAndFocusMainWindow: 改为 async 并 await createWindow,调用点用 void 修饰避免 floating promise
vue-tsc --noEmit 通过。
|
2026-08-03 11:24:32 +08:00 |
|
xiyidaiwa
|
b89c001401
|
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)均取本地完整实现(为上游版本的超集)。
|
2026-08-03 11:06:28 +08:00 |
|
 xiyidaiwaandshenmo7192
|
77b4244f1d
|
!408 refactor(已安装应用): 合并 APM/Spark 分页为列表标签并新增统计
Merge pull request !408 from xiyidaiwa/Erotica
|
2026-07-29 06:47:41 +00:00 |
|
gfdgd-xi
|
c1b89cab1a
|
支持从git提取贡献者信息
Signed-off-by: gfdgd_xi <3025613752@qq.com>
|
2026-07-27 16:22:57 +08:00 |
|
 shenmo7192andGitee
|
17cbb7cff2
|
!407 style: 统一滚动条外观并将投稿应用窗口改为圆角
Merge pull request !407 from xiyidaiwa/Erotica
|
2026-07-24 14:13:49 +00:00 |
|
shenmo7192
|
bcf3252e4a
|
style(app-detail): add tooltip text for install buttons
为应用详情页和详情弹窗的两个安装按钮分别添加了对应的提示文案,提升用户体验
|
2026-07-24 10:26:40 +08:00 |
|
xiyidaiwa
|
910aec6cce
|
fix(app): 修复应用计数统计问题
- 将应用总数统计从 apps.value.length 改为 baseApps.value.length
- 确保分类统计基于正确的基础应用数据
- 解决了应用过滤后计数不准确的问题
|
2026-07-23 18:41:19 +08:00 |
|
xiyidaiwa
|
3d28010797
|
fix: 处理 PR 评审意见(副作用清理、滚动条分层与变量化)
- SubmitterWindow: onMounted 修改 body/html 背景后,在 onUnmounted 中恢复原始值,避免副作用泄漏。
- appstyle.css: 全局滚动条基础几何/颜色移至 @layer base,使 .scrollbar-muted/.scrollbar-nowidth 工具类优先级更高;
暗色 thumb 改用专用变量 --color-scrollbar-thumb-dark (#15203b),保留比 surface 略亮的可辨识反差(未改用 --color-surface-dark)。
- 评审建议"margin 改 padding"与"改用 .scrollbar-muted"经分析不成立:padding 不会内移滚动条、无法避开圆角,margin 才能把容器连同滚动条推离圆角;
.scrollbar-muted 为 0.4rem 细条,与其他页面 0.75rem 全局不一致,故保持 mr-4 mb-4 全局样式。
|
2026-07-22 01:39:52 +08:00 |
|
xiyidaiwa
|
df8c2d7eaa
|
style: 统一滚动条外观并将投稿应用窗口改为圆角
- 滚动条:主进程对 Linux 关闭 overlay 滚动条
(disable-features=OverlayScrollbar),使 CSS ::-webkit-scrollbar 自定义生效;
全局统一定义亮色 #94a3b8 / 暗色 #15203b(带极淡描边),宽度 0.75rem,亮暗一致。
- 投稿页:修复滚动条贯穿整个窗口、侵入标题栏(改为 flex 分栏,
标题栏 shrink-0,内容区单独滚动)。
- 应用管理页:移除 scrollbar-nowidth 隐藏与 scrollbar-thumb-* 覆盖色,
改由全局规则统一,与其他页面一致。
- 圆角页面:投稿页与已安装应用页滚动容器内缩 (mr-4 mb-4),
避免滚动条滚入圆角被裁切。
- 投稿应用窗口:独立窗口改为透明圆角窗口 (transparent + rounded-3xl + shadow-2xl),
与弹框风格统一;挂载时 body 背景透明以露出圆角。
- 标题栏:左上角蓝色圆点替换为软件图标 spark-store.svg。
- 更新中心:搜索框对齐主页样式(左侧图标、统一圆角与配色)。
|
2026-07-22 01:19:52 +08:00 |
|
shenmo7192
|
e857ce67b3
|
move spark-store launcher from extra to tools
|
2026-07-20 11:20:20 +08:00 |
|
 shenmo7192andGitee
|
98296fa8a3
|
update tool/ssinstall.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
|
2026-07-20 03:11:55 +00:00 |
|
 shenmo7192andGitee
|
96541cc13e
|
update tool/aptss.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
|
2026-07-20 03:09:13 +00:00 |
|
 shenmo7192andGitee
|
b84f82e7bb
|
上游标准化
Signed-off-by: shenmo <jifengshenmo@outlook.com>
|
2026-07-20 03:07:55 +00:00 |
|
 shenmo7192andGitee
|
e7476f4bc3
|
update tool/aptss.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
|
2026-07-20 03:05:13 +00:00 |
|
shenmo7192
|
0a6fcd95c7
|
feat(install-manager): 安装成功时跳过APM快捷方式创建,仅针对升级任务
|
2026-07-19 23:27:19 +08:00 |
|
shenmo7192
|
99c6048295
|
修复 UOS 不识别 oneshot 的问题
|
2026-07-18 23:02:40 +08:00 |
|
shenmo7192
|
3b7f14862d
|
refactor(DownloadQueue): 移除无用的滚轮隐藏队列逻辑与相关依赖
移除了页面滚轮事件监听、isHidden状态和相关的DOM引用,简化组件逻辑
5.2.1.0
|
2026-07-18 22:11:54 +08:00 |
|
shenmo7192
|
367828f1f4
|
chore(vscode & download queue): 修复调试配置和下载面板交互问题
1. 给VSCode调试配置添加--no-sandbox参数以解决容器/权限问题
2. 修复下载队列面板收起时点击无响应的bug,调整隐藏状态的位移参数
3. 优化展开/收起切换逻辑,隐藏状态下点击会自动展开面板
|
2026-07-18 22:04:23 +08:00 |
|
shenmo7192
|
70250acc76
|
fix(submitter): 捕获打开输出文件夹失败的错误
新增错误捕获逻辑,避免打开打包完成的文件夹失败时导致程序报错
|
2026-07-18 12:48:49 +08:00 |
|
 shenmo7192andGitee
|
3157714776
|
!406 fix: 仅在使用loonggpu时禁用显卡加速
Merge pull request !406 from AAA Elysia 猫猫侠 ~喵/N/A
|
2026-07-18 04:30:26 +00:00 |
|
 AAA Elysia 猫猫侠 ~喵andGitee
|
bfd7626b8f
|
fix: 仅在使用loonggpu时禁用显卡加速
Signed-off-by: AAA Elysia 猫猫侠 ~喵 <elysia-best@simplelinux.cn.eu.org>
|
2026-07-18 04:27:53 +00:00 |
|
shenmo7192
|
5d512c4e86
|
add: 龙芯禁用GPU
|
2026-07-18 11:34:59 +08:00 |
|