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
xiyidaiwa and shenmo7192
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
shenmo7192 and Gitee
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
shenmo7192 and Gitee
98296fa8a3
update tool/ssinstall.
...
Signed-off-by: shenmo <jifengshenmo@outlook.com >
2026-07-20 03:11:55 +00:00
shenmo7192 and Gitee
96541cc13e
update tool/aptss.
...
Signed-off-by: shenmo <jifengshenmo@outlook.com >
2026-07-20 03:09:13 +00:00
shenmo7192 and Gitee
b84f82e7bb
上游标准化
...
Signed-off-by: shenmo <jifengshenmo@outlook.com >
2026-07-20 03:07:55 +00:00
shenmo7192 and Gitee
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
shenmo7192 and Gitee
3157714776
!406 fix: 仅在使用loonggpu时禁用显卡加速
...
Merge pull request !406 from AAA Elysia 猫猫侠 ~喵/N/A
2026-07-18 04:30:26 +00:00
AAA Elysia 猫猫侠 ~喵 and Gitee
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
shenmo7192
9323c368d6
style: 统一文件名小写处理并格式化代码
...
1. 对deb包名、打包文件名统一转为小写格式,避免大小写不一致问题
2. 格式化多处代码换行和缩进,提升代码可读性
2026-07-18 10:37:52 +08:00
shenmo7192
1f9971f7aa
chore(gitignore): ignore Debian build intermediates under debian/
2026-07-18 10:34:56 +08:00
shenmo7192
d67f7b3666
feat(submitter): 完善提交表单功能,优化交互与体验
...
1. 新增electronUtils接口用于获取文件路径,支持拖拽上传deb包
2. 交换贡献者与官网地址表单字段
3. 重构架构选择UI,按来源和架构排序并添加来源标识
4. 新增截图和图标上传格式校验,限制仅支持PNG
5. 优化截图上传区域样式,支持拖放上传
6. 拆分重置表单和提交成功后的状态清理逻辑
7. 重构架构排序逻辑,兼容新旧存储格式
2026-07-18 00:22:45 +08:00
shenmo7192
c2ba273ca2
update 5.2.1.0
2026-07-17 23:47:22 +08:00
shenmo7192
361dad1a64
feat(submitter): 新增自动获取git用户名并填充提交信息
...
扩展了提交器的自动填充能力,新增通过git config获取本地git用户名的能力,和原有邮箱获取逻辑结合,自动按照格式填充贡献者字段,优化用户提交体验
2026-07-17 23:12:10 +08:00
shenmo7192
5730c0bfea
feat(SubmitterWindow): add view submission queue button
...
add a button to open the submission queue page in new tab, alongside the close button in the header
2026-07-17 22:52:03 +08:00
shenmo7192
e8a2bb921b
refactor(electron+vue): 优化窗口拖拽和激活逻辑
...
1. 为提交窗口标题栏添加拖拽支持,同时关闭关闭按钮的拖拽区域
2. 重构窗口激活显示逻辑为复用函数showAndFocusMainWindow
3. 修复窗口实例管理和托盘图标点击的逻辑问题
5.2.1-0
2026-07-17 21:39:34 +08:00
shenmo7192
ca5e7b98ac
build: 更新版本号为5.2.1-0以准备 Debian 包发布
...
同步修改了debian changelog和package相关文件的版本字段,适配 Debian 软件包的版本命名规范,完成初始打包准备工作
2026-07-17 21:18:37 +08:00
shenmo7192
5a01d95e0f
feat(SubmitterWindow): add screenshot paste shortcut and refactor upload logic
...
新增截图粘贴上传功能,重构了截图上传的处理逻辑,将公共上传逻辑提取为importScreenshots方法,同时支持通过Ctrl+V粘贴截图直接上传,优化了截图文件的筛选和上传流程
2026-07-17 21:17:40 +08:00
shenmo7192
37217cd6fb
chore: 发布v5.2.1版本并优化布局交互
...
1. 调整AppGrid和主容器的高度样式,替换calc(100vh - 140px)为100%适配布局
2. 为下载队列添加滚轮隐藏/显示动画和交互逻辑
3. 优化主内容区域的flex布局结构,修复滚动和容器收缩问题
2026-07-17 21:12:50 +08:00
shenmo7192
61f5cc954c
修改 makefile 适配构建
2026-07-16 17:37:28 +08:00
shenmo7192
7278153ec9
删除无用代码和工具
2026-07-16 16:56:40 +08:00
shenmo7192
2f93ff9727
修复打包问题
2026-07-16 16:55:05 +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
5.2.1
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
b06966c0a7
chore: 移除systemd定时器相关的安装和文件
...
删除了spark-update-notifier.timer文件,同时移除Makefile中对应systemd目录的安装拷贝步骤
2026-07-16 14:18:24 +08:00
shenmo7192
e496449c31
refactor(app): adjust loading sequence of app data
...
调整了初始化时的数据加载顺序,将侧边栏预加载移至全部应用加载完成后执行,避免网络连接被抢占,同时简化了Promise调用逻辑
2026-07-16 14:04:27 +08:00