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
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
xiyidaiwa
910aec6cce
fix(app): 修复应用计数统计问题
...
- 将应用总数统计从 apps.value.length 改为 baseApps.value.length
- 确保分类统计基于正确的基础应用数据
- 解决了应用过滤后计数不准确的问题
2026-07-23 18:41:19 +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
37217cd6fb
chore: 发布v5.2.1版本并优化布局交互
...
1. 调整AppGrid和主容器的高度样式,替换calc(100vh - 140px)为100%适配布局
2. 为下载队列添加滚轮隐藏/显示动画和交互逻辑
3. 优化主内容区域的flex布局结构,修复滚动和容器收缩问题
2026-07-17 21:12:50 +08:00
shenmo7192
e496449c31
refactor(app): adjust loading sequence of app data
...
调整了初始化时的数据加载顺序,将侧边栏预加载移至全部应用加载完成后执行,避免网络连接被抢占,同时简化了Promise调用逻辑
2026-07-16 14:04:27 +08:00
shenmo7192
387be920b1
refactor(apps): optimize home app list loading and grid layout
...
1. refactor home app list loading logic: use seen set instead of map, handle deduplication with spark priority
2. add vertical scrolling for small app grid when not using virtual scroll
3. remove unnecessary overflow-y-auto from main container
2026-07-16 10:27:18 +08:00
shenmo7192
c814c4b13d
fix: 修复重复应用显示问题,按来源优先级去重
...
1. 为首页链接和应用列表添加去重逻辑,spark 来源优先覆盖 apm
2. 优化数据处理方式,使用 Set 和 Map 避免重复数据
3. 更新日志输出的统计数字为去重后的实际数量
2026-07-16 10:14:32 +08:00
shenmo7192
46f79ca6fc
refactor(sidebar): 优化侧边栏加载逻辑,支持按来源仓库过滤请求
...
1. 新增SidebarEntry的origins字段标记入口所属仓库
2. 合并多仓库共享的侧边栏入口配置
3. 仅向实际存在的仓库发起分类和应用加载请求,减少无效404请求
4. 并行加载分类数据避免串行等待,调整预加载顺序优化网络资源占用
2026-07-16 00:40:38 +08:00
shenmo7192
c8783ed66c
chore(release): prepare v5.2.0 stable release
...
1. update debian changelog version from 5.2.0~alpha1 to 5.2.0
2. remove deprecated CI workflow backup files
3. fix duplicate loading issue by adding loadingTabs state
4. add effectiveLoading computed state to handle per-tab loading status
2026-07-15 20:25:04 +08:00
shenmo7192
0858797405
perf(App.vue): 修复首页列表N+1请求问题,优化加载性能
...
直接使用接口返回的列表数据构建应用对象,不再为每个应用单独请求app.json,应用详情将在用户点击时按需获取
2026-07-14 14:08:17 +08:00
shenmo7192
750e1d89e4
feat: add SPK share link support and optimize category count calculation
...
- add SPK share button in app detail pages and support parsing SPK links in search box
- fix category total count to exclude the all entry
- remove redundant count badge from sidebar tabs
- rewrite category count calculation with proper filtering of all entry
- update search category count logic to use base apps for all tab count
2026-07-14 13:39:20 +08:00
shenmo7192
6328f178d3
refactor(home): 重构首页与侧边栏,移除旧HomeList类型并支持首页列表侧边栏入口
...
1. 移除废弃的HomeList类型定义,新增homeList侧边栏类型
2. 重构AppGrid组件,添加showOrigin属性支持自定义显示来源标记
3. 简化HomeView组件,移除旧的列表展示逻辑与相关代码
4. 新增侧边栏首页列表入口加载与应用数据加载逻辑
5. 优化侧边栏计数与应用预加载逻辑,适配新的首页列表类型
2026-07-13 22:57:54 +08:00
shenmo7192
bfa959ca1d
style: 移除所有组件的backdrop-blur和半透明背景效果
...
统一调整多处UI元素的样式,去掉不必要的backdrop-blur滤镜以及bg的透明度后缀,让界面视觉风格更简洁统一
2026-07-13 18:31:14 +08:00
gfdgd-xi
5f2f07afbe
修复主窗口右侧有滚动条的问题
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-29 22:53:36 +08:00
gfdgd-xi
3aa96f27c7
新增投稿器
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-16 11:53:46 +08: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
8d80a02316
fix(account): polish sidebar favorites and sync feedback
2026-05-19 23:48:41 +08:00
momen
d03c8aab61
fix(ui): pin detail modal sidebar
2026-05-19 16:04:47 +08:00
momen
fd17fc127d
fix(reviews): restore modal detail review gating
2026-05-19 12:22:52 +08:00
momen
a8a00d8165
fix(account): gate reviews and stale refreshes
2026-05-19 08:16:57 +08:00
momen
839f4017f8
fix(sync): guard stale installed refreshes
2026-05-19 02:16:39 +08:00
momen
34551fce7b
fix(sync): isolate installed sync state
2026-05-19 02:03:29 +08:00
momen
753f91e837
fix(sync): resolve restore item edge cases
2026-05-19 01:50:34 +08:00
momen
acffb6c5ee
feat(sync): add installed app cloud sync
2026-05-19 01:43:28 +08:00
momen
ac1f46bd73
fix(account): ignore stale downloaded history
2026-05-19 01:33:34 +08:00
momen
bbd9cbccb7
feat(account): add user management view
2026-05-19 01:17:58 +08:00
momen
f280039874
fix(account): guard download record user races
2026-05-19 01:10:17 +08:00
momen
b839e0770c
fix(account): bind pending downloads to user
2026-05-19 01:02:53 +08:00
momen
4b81869b6e
fix(account): keep download record pending through retry
2026-05-19 00:54:36 +08:00
momen
4c2225290c
fix(account): record downloads after success
2026-05-19 00:44:36 +08:00
momen
78a04fb51f
feat(account): record downloads and show reviews
2026-05-19 00:25:57 +08:00
momen
8da044495a
fix(favorites): ignore stale account requests
2026-05-19 00:18:01 +08:00
momen
3a4aa7807a
fix(favorites): clear account data on logout
2026-05-19 00:07:26 +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
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
shenmo7192
c877f0551e
feat: 新增动态侧边栏配置功能,优化主题色与侧边栏样式
...
新增SidebarEntry类型定义与侧边栏配置加载逻辑,支持从服务器拉取sidebar-config.json动态配置侧边栏入口
替换原分类侧边栏为可配置样式,新增CategoryBar分类选择组件,更新品牌色为苹果风格蓝色
重构侧边栏状态管理,拆分activeTab与选中分类逻辑,新增侧边栏入口计数统计
添加SIDEBAR_CONFIG.md文档说明配置格式与使用方法,更新测试用例与组件props
2026-05-18 13:25:52 +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