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
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
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
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
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
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
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
xiyidaiwa and shenmo7192
77b4244f1d
!408 refactor(已安装应用): 合并 APM/Spark 分页为列表标签并新增统计
...
Merge pull request !408 from xiyidaiwa/Erotica
2026-07-29 06:47:41 +00: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
0a6fcd95c7
feat(install-manager): 安装成功时跳过APM快捷方式创建,仅针对升级任务
2026-07-19 23:27:19 +08:00
shenmo7192
70250acc76
fix(submitter): 捕获打开输出文件夹失败的错误
...
新增错误捕获逻辑,避免打开打包完成的文件夹失败时导致程序报错
2026-07-18 12:48:49 +08:00
shenmo7192
9323c368d6
style: 统一文件名小写处理并格式化代码
...
1. 对deb包名、打包文件名统一转为小写格式,避免大小写不一致问题
2. 格式化多处代码换行和缩进,提升代码可读性
2026-07-18 10:37:52 +08:00
shenmo7192
361dad1a64
feat(submitter): 新增自动获取git用户名并填充提交信息
...
扩展了提交器的自动填充能力,新增通过git config获取本地git用户名的能力,和原有邮箱获取逻辑结合,自动按照格式填充贡献者字段,优化用户提交体验
2026-07-17 23:12:10 +08:00
shenmo7192
e8a2bb921b
refactor(electron+vue): 优化窗口拖拽和激活逻辑
...
1. 为提交窗口标题栏添加拖拽支持,同时关闭关闭按钮的拖拽区域
2. 重构窗口激活显示逻辑为复用函数showAndFocusMainWindow
3. 修复窗口实例管理和托盘图标点击的逻辑问题
2026-07-17 21:39:34 +08:00
shenmo7192
f585be0dcd
feat(submitter): add form validation tips and improve submission checks
...
1. add real-time form validation prompt component for submission page
2. add URL validation for official website and screenshot format checks
3. refactor form validity calculation and user input status judgment
4. replace mirror switch with configurable base URL, support dev proxy path handling
5. add processing logic for base64 format screenshots
6. optimize history search and form reset logic
2026-07-16 15:56:13 +08:00
shenmo7192
a8ea7bec34
refactor(submitter): 优化分类加载逻辑,支持按架构获取CDN分类
...
1. 提取公共的CDN分类获取函数,增加 fallback 兜底逻辑
2. 新增支持amd64、arm64等更多架构类型
3. 为每个架构单独加载对应的分类列表,适配不同架构的分类差异
4. 更新日志打印参数,更清晰展示各架构的分类数量
2026-07-16 14:27:26 +08:00
shenmo7192
0a908a31f6
chore: release v5.2.1 and improve submitter UI/UX
...
1. update version to 5.2.1 in changelog and package.json
2. add real-time upload progress display in submission window
3. optimize icon filename display and form reset logic
4. add success modal after successful submission
5. improve logging formatting in submitter backend
2026-07-16 14:03:40 +08:00
shenmo7192
68195a94f6
refactor(submitter): 重构分类处理逻辑,完善提交校验与安装包流程
...
1. 重构提交器的分类处理,移除硬编码的分类映射,改用后端返回的type字段
2. 添加categoryId同步逻辑,完善表单校验和提交数据
3. 优化图标处理逻辑,支持base64格式图标
4. 完善deb包元数据处理,自动生成规范的文件名
5. 新增更全面的提交字段校验和API业务错误处理
6. 补充安装脚本的目录复制规则
2026-07-16 13:57:39 +08:00
shenmo7192
5e120d03ae
refactor(installer): 更新下载重试策略为指数退避
...
将原来固定间隔的重试超时列表替换为指数退避的重试间隔,从首次3秒递增到末次1分钟,共10次重试,优化下载失败后的重试体验
2026-07-16 00:44:42 +08:00
shenmo7192
7420466d92
style: 统一代码格式与字符串引号风格
...
1. 替换单引号为双引号统一字符串格式
2. 拆分过长的函数调用与条件判断行提升可读性
3. 简化多行console.log调用为单行格式
4. 为侧边栏添加条目计数标签展示功能
2026-07-14 13:59:55 +08:00
shenmo7192
b233fea4d5
refactor(install): 重构下载安装队列逻辑,拆分并发控制
...
1. 将下载与安装流程分离,实现并发下载限制与单安装实例控制
2. 新增任务阶段枚举,替换原有activeDownloads计数逻辑
3. 优化取消任务的处理流程,区分运行中和排队中的任务
4. 修复下载队列显示的统计错误,改为展示已完成任务数
5. 调整日志格式与代码注释,提升可读性
2026-07-13 23:06:05 +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
gfdgd-xi and Gitee
8bef913f7a
!400 投稿器用自渲染对话框替换alert修复选择deb后无法编辑信息的问题、拆分投稿器源码
...
Merge pull request !400 from gfdgd xi/Erotica
2026-07-13 08:10:06 +00:00
MarcusPy827
2efea67a60
chore: APM桌面快捷方式补丁修正权限0755 -> 0644
2026-06-30 03:44:57 +08:00
MarcusPy827
51d7e1870c
chore: APM桌面快捷方式补丁改用异步读取+修复过早return
2026-06-30 03:43:21 +08:00
MarcusPy827
98d6ebd2b4
chore: APM桌面快捷方式补丁改用异步读取+从XDG拿路径
2026-06-30 03:27:36 +08:00
MarcusPy827
6921350878
fix: APM安装软件后无法自动创建快捷方式的问题
2026-06-30 03:13:28 +08:00
gfdgd-xi
ebede13b2c
修复tag列表无法正确加载的问题
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-29 22:26:19 +08:00
gfdgd-xi
2cab0b2161
投稿器用自渲染对话框替换alert修复选择deb后无法编辑信息的问题
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-27 18:45:22 +08:00
gfdgd-xi
8d642c43ef
拆分投稿器文件,增加可读性
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-22 14:04:28 +08:00
gfdgd-xi
8b00334dc8
feat: 投稿器支持导出tar包
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-22 13:47:30 +08:00
shenmo7192 and Gitee
274e086bb1
!397 支持使用debian脚本构建deb包、新增投稿器(初稿)
...
Merge pull request !397 from gfdgd xi/Erotica
2026-06-18 16:40:45 +00:00
gfdgd-xi
337c7b8200
修复因表单错误导致无法正常审核的问题
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-17 17:28:27 +08:00
sunnypai
399b59dae8
fix pkexec lookup for privilege escalation
2026-06-17 13:30:38 +08:00
sunnypai
601d3f51f4
add nixos support
2026-06-17 12:51:44 +08:00
gfdgd-xi
cd3e087cdf
修复投稿器加载多个异常程序截图的问题
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-17 11:21:38 +08:00
gfdgd-xi
3aa96f27c7
新增投稿器
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-16 11:53:46 +08:00
shenmo7192 and Gitee
c3ea2ddf1b
!396 !1 调整Lists 区域标题在dark模式下的字体颜色,使其和欢迎语颜色一致,增加下载队列切换展开按钮在dark下的hover效果
...
Merge pull request !396 from shenmo/Erotica
2026-06-13 11:05:49 +00:00
gitee-bot
9e8758b5f2
feat(deeplink): add support for apt:// protocol handling
...
- Register apt protocol handler in Electron main process
- Add x-scheme-handler/apt MIME type to electron-builder config
- Update desktop entry to include apt MIME type support
- apt://pkgname links are now converted to spk://search/pkgname
refs #IJTPFP
2026-06-10 11:50:21 +00:00
gitee-bot
e39525901e
feat(deeplink): add support for apt:// protocol conversion to spk://search
...
Add handling for apt://pkgname format links by converting them to
spk://search/pkgname protocol, allowing spark-store to process
apt package links seamlessly
refs #IJTPFP
2026-06-10 11:36:31 +00:00
shenmo7192
24d55d0997
refactor: 优化代码结构并新增多标签分类应用加载逻辑
...
1. 重构下载重试超时列表为多行格式提升可读性
2. 合并环境变量配置行简化代码
3. 新增多标签分类页面的应用加载能力,包括:
- 添加displayCategories和displayApps计算属性
- 实现loadTabCategories和loadTabApps加载子分类数据
- 抽离normalizeAppJson复用应用数据格式化逻辑
- 优化侧边栏分类切换的应用过滤逻辑
2026-05-30 20:41:59 +08:00
momen
439af8c26f
feat(account): polish reviews favorites and account UI
2026-05-29 21:34:42 +08:00
momen
deff1c20c4
fix(auth): clarify flarum login failures
2026-05-19 10:50:42 +08:00
momen
78a04fb51f
feat(account): record downloads and show reviews
2026-05-19 00:25:57 +08:00