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
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
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
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
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
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
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
shenmo7192
7420466d92
style: 统一代码格式与字符串引号风格
...
1. 替换单引号为双引号统一字符串格式
2. 拆分过长的函数调用与条件判断行提升可读性
3. 简化多行console.log调用为单行格式
4. 为侧边栏添加条目计数标签展示功能
2026-07-14 13:59:55 +08:00
shenmo7192
7c6bdf0e55
feat(submitter,update-center): add multiple features and optimize submission flow
...
1. add shell caller ssupdate command support
2. add pre-update system refresh for update center
3. add get-git-email IPC handler and auto-fill email
4. optimize deb submission UI and category handling
5. disable and auto-fill package name/version fields
6. add loading and error states for category list
7. fix category value matching for history data
2026-07-13 22:07:01 +08:00
momen
439af8c26f
feat(account): polish reviews favorites and account UI
2026-05-29 21:34:42 +08:00
momen
8d80a02316
fix(account): polish sidebar favorites and sync feedback
2026-05-19 23:48:41 +08:00
momen
fd17fc127d
fix(reviews): restore modal detail review gating
2026-05-19 12:22:52 +08:00
momen
deff1c20c4
fix(auth): clarify flarum login failures
2026-05-19 10:50:42 +08:00
momen
34551fce7b
fix(sync): isolate installed sync state
2026-05-19 02:03:29 +08:00
momen
acffb6c5ee
feat(sync): add installed app cloud sync
2026-05-19 01:43:28 +08:00
momen
78a04fb51f
feat(account): record downloads and show reviews
2026-05-19 00:25:57 +08:00
momen
3a8baf606c
fix(favorites): refresh installed apps across origins
2026-05-18 23:53:44 +08:00
momen
58789ecd1f
fix(favorites): honor source priority and installed state
2026-05-18 23:40:28 +08:00
momen
e116dcee63
feat(favorites): add cloud favorite management
2026-05-18 23:27:56 +08:00
momen
75df598bc0
fix(detail): normalize review store arch
2026-05-18 23:14:10 +08:00
momen
e607e4991b
feat(detail): move app details into content view
2026-05-18 23:08:29 +08:00
momen
c2e8b9a1b4
fix(account): route forum login through ipc
2026-05-18 22:55:21 +08:00
momen
63dac217c2
feat(account): add forum login and sidebar account entry
2026-05-18 22:34:14 +08:00
momen
881aceb78c
feat(account): add client account api foundation
2026-05-18 22:02:39 +08:00
shenmo7192
8a5f8d154f
feat: 添加APM安装确认弹窗并重构APM检查流程
...
1. 新增全局状态控制APM安装弹窗显示
2. 新建ApmInstallConfirmModal弹窗组件
3. 将主进程的APM安装弹窗逻辑迁移到前端Vue组件
4. 更新package.json版本到5.1.0
5. 简化安装和升级流程中的APM检查逻辑
2026-05-12 21:54:47 +08:00
shenmo7192
42046caf2c
feat(update-center): 添加加载状态处理及UI优化
...
为更新中心添加加载状态管理,包括:
- 在打开和刷新操作时显示加载状态
- 禁用刷新按钮防止重复操作
- 添加加载中的动画效果和提示文本
- 优化加载时的UI显示
2026-04-16 14:00:33 +08:00
momen
309b9bc003
fix(update-center): load aptss updates reliably
2026-04-16 13:32:23 +08:00
momen
0b784af3d7
fix(sources): hide unavailable update and management entries
2026-04-16 13:04:54 +08:00
momen
36f5d3831e
fix(update): 统一忽略更新配置到用户目录
2026-04-15 11:44:18 +08:00
momen
f044c6c3df
修复更新中心发送的下载项和普通下载故障覆盖的问题
2026-04-13 13:29:58 +08:00
shenmo7192
763af5c37e
feat(update-center): 添加全选功能及状态管理
...
添加全选复选框组件及相关状态管理逻辑
实现全选/取消全选功能
添加部分选中状态显示
更新工具栏组件以支持新功能
2026-04-12 22:02:01 +08:00
momen
60628ff1fa
test: 支持更新下载时展示图标
2026-04-12 19:11:11 +08:00
momen
68ab999eed
update 尝试修复点击更新后无法推送到下载列表的问题
2026-04-12 19:00:14 +08:00
shenmo7192
e2f59b3cdf
复用下载中心(1/2)
2026-04-12 17:53:16 +08:00
momen
fa2689c753
feat(search): prioritize app name matches
2026-04-11 16:47:51 +08:00
momen
0b17ada45a
feat(update-center): 实现集中式软件更新中心功能
...
新增更新中心模块,支持管理 APM 和传统 deb 软件更新任务
- 添加更新任务队列管理、状态跟踪和日志记录功能
- 实现更新项忽略配置持久化存储
- 新增更新确认对话框和迁移提示
- 优化主窗口关闭时的任务保护机制
- 添加单元测试覆盖核心逻辑
2026-04-09 08:19:51 +08:00
shenmo7192
57410370b7
feat(apm): 在安装和更新应用前检查并提示安装APM
...
添加APM可用性检查逻辑,在安装或更新APM应用时,若检测到APM未安装,则弹出对话框提示用户安装
安装流程完成后显示成功提示并告知需要重启电脑
2026-03-30 18:39:03 +08:00
shenmo7192
e7fb8e689a
feat(应用详情): 增强应用详情页功能并优化代码格式
...
重构应用详情页逻辑,支持从首页和深度链接直接打开应用时自动获取完整信息
优化应用卡片来源标识显示,支持同时显示多个来源
统一代码格式,修复多行字符串和模板字符串的换行问题
2026-03-29 17:21:17 +08:00
shenmo7192
94f4307783
perf(安装日志): 优化安装日志处理性能
...
添加日志缓冲和批量发送机制以减少IPC通信次数
限制前端日志条目数量防止内存泄漏
2026-03-29 16:36:58 +08:00
shenmo7192
aec1faf964
fix(install): 允许添加不同来源的安装相同包名任务
...
改进任务重复检查逻辑,现在会同时检查软件包名称和来源
修复取消下载时未正确处理任务状态的问题
```
```msg
ci: 添加测试和构建的GitHub Actions配置文件
添加test.yml和build.yml的备份文件,包含单元测试、E2E测试和构建流程
2026-03-29 12:23:32 +08:00
vmomenv
1fb81c0409
feat: display cross-version installation status in app detail modal
...
- Replaced single `currentAppIsInstalled` boolean with `currentAppSparkInstalled` and `currentAppApmInstalled` in global store.
- Updated `checkAppInstalled` logic in `App.vue` to fetch the installation status for both Spark and APM versions via `ipcRenderer`.
- Passed both flags to `AppDetailModal.vue` as props.
- Enhanced `AppDetailModal.vue` to compute the "install" button text dynamically: if viewing Spark and APM is installed, it displays `(已安装apm版)`; if viewing APM and Spark is installed, it displays `(已安装spark版)`. The button is also disabled in these scenarios to prevent duplicate cross-version installations.
2026-03-12 08:19:37 +00:00
vmomenv
70cab0182d
feat: 仅保留混合模式并根据架构动态构建请求路径
...
- 删除 AppSidebar.vue 中的 StoreModeSwitcher 引入并删除该组件。
- 强制设置当前商店模式为 'hybrid'。
- 修复了因为 `window.apm_store.arch` 包含 `-store` 或 `-apm` 后缀导致路径替换异常的问题,现在会通过动态添加后缀来构建资源请求路径,以兼容 Spark Store 和 APM Store 服务器不同的资源组织结构。
2026-03-12 01:39:00 +00:00
momen and GitHub
a68638ef51
Merge pull request #4 from vmomenv/cleanup-process-install-dead-code-708801762184763180
...
🧹 [code health improvement] Remove dead code in processInstall.ts
2026-03-11 10:36:43 +08:00
google-labs-jules[bot] and vmomenv
51bf8b9304
refactor(modules): remove commented-out console.log in IPC listener
...
This block of code in `src/modules/processInstall.ts` was leftover debug
code and is no longer needed. Removing it improves the maintainability
and readability of the file.
Co-authored-by: vmomenv <51269338+vmomenv@users.noreply.github.com >
2026-03-11 02:34:36 +00:00
momen
d24a5225de
update:在商店混合模式下,同包名的软件合并在同一个详情页面并加入切换开关
2026-03-11 09:18:59 +08:00
momen
edd9368c56
update:添加apm与普通商店双支持
2026-03-11 08:36:24 +08:00
Elysia
a3f18bb593
feat(app): add download count display
2026-02-14 23:22:41 +08:00