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
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
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
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
46f79ca6fc
refactor(sidebar): 优化侧边栏加载逻辑,支持按来源仓库过滤请求
...
1. 新增SidebarEntry的origins字段标记入口所属仓库
2. 合并多仓库共享的侧边栏入口配置
3. 仅向实际存在的仓库发起分类和应用加载请求,减少无效404请求
4. 并行加载分类数据避免串行等待,调整预加载顺序优化网络资源占用
2026-07-16 00:40:38 +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
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
34551fce7b
fix(sync): isolate installed sync state
2026-05-19 02:03:29 +08:00
momen
bbd9cbccb7
feat(account): add user management view
2026-05-19 01:17:58 +08:00
momen
63dac217c2
feat(account): add forum login and sidebar account entry
2026-05-18 22:34:14 +08:00
momen
c24c88458c
fix(account): default backend api base url
2026-05-18 22:21:18 +08:00
momen
881aceb78c
feat(account): add client account api foundation
2026-05-18 22:02:39 +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
momen
0b784af3d7
fix(sources): hide unavailable update and management entries
2026-04-16 13:04:54 +08:00
momen
f044c6c3df
修复更新中心发送的下载项和普通下载故障覆盖的问题
2026-04-13 13:29:58 +08:00
momen
180b88b5c0
fix(update-center): cascade local and remote icon fallbacks
...
Keep update list icons from dropping straight to placeholders by retrying the remote store icon after local load failures. Align the update-center IPC and renderer types with the split local/remote icon contract.
2026-04-11 11:41:01 +08:00
momen
c16ba5536f
feat(update-center): add update list icons
2026-04-10 21:15:43 +08:00
momen
0b17ada45a
feat(update-center): 实现集中式软件更新中心功能
...
新增更新中心模块,支持管理 APM 和传统 deb 软件更新任务
- 添加更新任务队列管理、状态跟踪和日志记录功能
- 实现更新项忽略配置持久化存储
- 新增更新确认对话框和迁移提示
- 优化主窗口关闭时的任务保护机制
- 添加单元测试覆盖核心逻辑
2026-04-09 08:19:51 +08:00
shenmo7192
4e9fc30616
feat(storeConfig): 添加配置文件存在标记并调整默认优先级规则
...
添加 hasPriorityConfigFile 标记以区分服务器是否存在配置文件
当没有配置文件时默认优先 Spark,有配置文件但规则为空时默认优先 APM
移除未使用的 matchesRule 方法并添加 isConfigEmpty 方法
2026-04-05 09:55:47 +08:00
shenmo7192
d74e05a327
feat(store): 实现混合仓库优先级配置功能
...
添加优先级配置文件支持,根据配置决定默认展示的仓库版本
新增优先级规则匹配逻辑,支持包名、分类和标签匹配
修改应用详情和合并应用的默认来源判断逻辑
2026-04-05 09:52:06 +08:00
shenmo7192
7ff079276e
feat: 添加 APM 应用管理功能并优化界面
...
- 新增 APM 应用管理功能,支持显示已安装应用及其依赖项
- 优化已安装应用列表界面,增加应用图标和名称显示
- 调整顶部操作栏布局,将设置和关于按钮移至搜索框旁
- 修复类型定义,增加 isDependency 字段和更多应用信息
- 改进暗色模式下的界面显示效果
2026-03-24 20:47:55 +08:00
vmomenv
034f86b82f
fix: add origin property to DownloadResult and update test config
...
- Updated `src/global/typedefinition.ts` to include optional `origin` property in `DownloadResult` to fix TypeScript compilation error where `remove-complete` payload didn't have it defined.
- Added `origin` payload in `electron/main/backend/install-manager.ts`.
- Updated `e2e/basic.spec.ts` URL to `/` and expecting title including `星火应用商店` to match E2E setup.
2026-03-12 08:27:37 +00: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
5bc68f5a9a
update:修复github工作流问题
2026-03-11 09:38:28 +08:00
momen
d24a5225de
update:在商店混合模式下,同包名的软件合并在同一个详情页面并加入切换开关
2026-03-11 09:18:59 +08:00
momen
edd9368c56
update:添加apm与普通商店双支持
2026-03-11 08:36:24 +08:00
momen
6ea628d869
feat: 修改应用信息界面,对于已安装应用,安装按钮变为打开按钮,并添加卸载按钮
2026-02-27 23:03:10 +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
6622e70033
refactor: improve code formatting and consistency across components
...
- Updated button and span elements in ThemeToggle.vue and TopActions.vue for better readability.
- Enhanced UninstallConfirmModal.vue and UpdateAppsModal.vue with consistent indentation and spacing.
- Refactored downloadStatus.ts and storeConfig.ts for improved code clarity.
- Standardized string quotes and spacing in typedefinition.ts and processInstall.ts.
- Ensured consistent use of arrow functions and improved variable declarations throughout the codebase.
2026-02-12 18:32:41 +08:00
Delta1035 and GitHub
b43c6117ec
fix: 修复应用还没有安装完,按钮就重新变成可安装状态 ( #11 )
...
fix:先用比较简单的方案解决安装之后卸载了还是显示已安装的问题
fix: 在安装成功的ipc信息之后再删除安装队列的任务
删除pnpm workspace
2026-02-04 13:06:01 +08:00
Elysia
39e40ff946
feat: enhance application type definitions and improve app management logic
2026-01-31 17:48:06 +08:00
Elysia
3221cb6d5e
refactor: standardize app property names and improve TypeScript definitions
...
- Updated property names in AppCard.vue, AppDetailModal.vue, AppGrid.vue, and other components to use camelCase for consistency.
- Enhanced TypeScript definitions for props and emits in various components to improve type safety.
- Refactored download status handling in processInstall.ts to align with updated App interface.
- Improved error handling and type definitions in DownloadDetail.vue and related components.
- Added optional properties and refined existing interfaces in typedefinition.ts for better clarity and usability.
2026-01-31 17:16:02 +08:00
Elysia
5b09dfb3d9
feat(preload): expose architecture detection to renderer process
...
add multiarch support
2026-01-31 10:26:52 +08:00
Elysia
ea0261a192
feat: 添加已安装应用和可更新应用的管理功能,支持卸载和升级操作
2026-01-28 18:14:04 +08:00
Elysia
ac0dc225bc
feat(install): add app uninstall functionality
2026-01-26 00:57:15 +08:00
Elysia
bdf51a1037
feat(download): 支持重试下载功能并更新相关逻辑
2026-01-25 23:29:58 +08:00
Elysia
50fb1a0065
feat(install): added basis install process
...
Now it is able to install apps from the render process and properly display logs on the app detial page.
2026-01-25 22:30:39 +08:00
Elysia
0d16434374
添加环境配置文件,更新 Vite 配置以支持本地代理,优化 AppCard 组件的懒加载逻辑
2026-01-17 21:00:21 +08:00