Commit Graph
50 Commits
Author SHA1 Message Date
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
momenandGitHub 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]andvmomenv 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
Elysia 5ac9376200 feat: support download statistics
close #15
2026-02-14 23:11:43 +08:00
Elysia 74c4eb4fbc feat(install): add metalink download support and progress tracking
close #12
2026-02-14 00:16:18 +08:00
Elysia 9a2d3a8ac1 refactor: fix typo in module path 2026-02-12 19:21:17 +08:00