xiyidaiwa
5e7d88ecc5
fix(审计修复): 缓存穿透TTL共享 + 预刷新网络/超时 + 最大化/APM优先设计注释
...
- 新增 cacheBusterInterceptor.ts:createCacheBusterInterceptor(ttl=5min) 带 TTL 复用戳,
解决同会话频繁击穿缓存(B1)并将 App.vue/storeConfig 两处重复逻辑合并为共享工厂(I3)
- storeConfig.ts: priorityConfigAxios 改用共享拦截器;HYBRID_DEFAULT_PRIORITY 加注释
明确「主推 APM 是既定产品方向」(B2,非缺陷)
- App.vue: axiosInstance 改用共享拦截器(带 TTL)
- index.ts: 预刷新 startSourcePreRefreshOnce 加 net.isOnline() 检查 + 60s 超时兜底,
避免离线/卡死触发 pkexec 弹窗困惑(I1);createWindow 恢复逻辑加注释明确
「最大化后恢复重置为默认尺寸是有意设计,非缺陷」(I2)
- vue-tsc + eslint 通过
2026-08-12 21:02:48 +08:00
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
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
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
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
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
e8a2bb921b
refactor(electron+vue): 优化窗口拖拽和激活逻辑
...
1. 为提交窗口标题栏添加拖拽支持,同时关闭关闭按钮的拖拽区域
2. 重构窗口激活显示逻辑为复用函数showAndFocusMainWindow
3. 修复窗口实例管理和托盘图标点击的逻辑问题
2026-07-17 21:39:34 +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
gfdgd-xi
337c7b8200
修复因表单错误导致无法正常审核的问题
...
Signed-off-by: gfdgd_xi <3025613752@qq.com >
2026-06-17 17:28:27 +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
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
momen
c2e8b9a1b4
fix(account): route forum login through ipc
2026-05-18 22:55:21 +08:00
Elysia
6a9091b2ec
feat(build): add loong64
...
- Downgrad electron for the sake of loong64
- Add my project to CREDIT.md
Signed-off-by: Elysia <a.elysia@proton.me >
2026-04-19 09:37:21 +08:00
shenmo7192
120233cf56
feat(settings): 添加安装设置模态框及配置管理功能
...
实现安装设置功能,包括更新检测通知和自动创建桌面启动器的开关配置
重构原有的安装设置逻辑,使用模态框替代直接调用脚本
新增 IPC 接口用于获取和保存设置配置
2026-04-16 00:35:37 +08:00
shenmo7192
c46bb03e3f
fix: 将host-spawn替换为systemd-run --user以提升兼容性
2026-04-12 21:01:33 +08:00
momen
0b17ada45a
feat(update-center): 实现集中式软件更新中心功能
...
新增更新中心模块,支持管理 APM 和传统 deb 软件更新任务
- 添加更新任务队列管理、状态跟踪和日志记录功能
- 实现更新项忽略配置持久化存储
- 新增更新确认对话框和迁移提示
- 优化主窗口关闭时的任务保护机制
- 添加单元测试覆盖核心逻辑
2026-04-09 08:19:51 +08:00
shenmo7192
308f5b7ce6
feat: 通过 IPC 实现应用版本号获取功能
...
移除预加载脚本中的版本号获取逻辑,改为通过 IPC 从主进程获取
2026-03-24 20:58:15 +08:00
shenmo7192
7ff079276e
feat: 添加 APM 应用管理功能并优化界面
...
- 新增 APM 应用管理功能,支持显示已安装应用及其依赖项
- 优化已安装应用列表界面,增加应用图标和名称显示
- 调整顶部操作栏布局,将设置和关于按钮移至搜索框旁
- 修复类型定义,增加 isDependency 字段和更多应用信息
- 改进暗色模式下的界面显示效果
2026-03-24 20:47:55 +08:00
shenmo7192
cd43f34cbd
feat: 添加关于对话框并优化主题切换按钮样式
...
- 新增 AboutModal 组件显示应用版本和相关信息
- 重构 ThemeToggle 组件为更简洁的图标按钮
- 在侧边栏添加关于按钮并实现打开对话框功能
- 通过预加载脚本获取 package.json 版本号
- 支持命令行参数 --version/-v 显示版本号
2026-03-22 19:18:19 +08:00
shenmo7192
6729e321a6
去除界面优化
2026-03-15 17:00:58 +08:00
shenmo7192
dbfe86aa64
feat: enhance UI and functionality across components
...
- Added Google Fonts preconnect and stylesheet link in `index.html` for improved typography.
- Updated version in `package.json` to `4.9.9alpha3`.
- Refined launch configuration by removing deprecated arguments.
- Improved app detail modal and card components for better accessibility and visual consistency.
- Enhanced download queue and sidebar components with updated styles and functionality.
- Implemented new utility classes for better styling control in CSS.
- Adjusted various components for improved responsiveness and user experience.
2026-03-15 15:21:29 +08:00
shenmo7192
6e725e25c8
refactor: update tray icon handling and add APM installation checks
...
- Removed the deprecated `--no-spark` argument from launch configuration.
- Enhanced tray icon management by introducing a new function to resolve icon paths based on application packaging status.
- Implemented APM installation checks in the install manager, prompting users to install APM if not available, with appropriate dialog messages and handling for installation success or failure.
- Added a new shell script for executing the Spark Store with environment checks for container and architecture compatibility.
2026-03-15 14:20:28 +08:00
shenmo7192
b3ca2973f1
feat: implement store filter based on launch arguments
...
- Added a new function to determine the store filter based on the `--no-apm` and `--no-spark` launch arguments.
- Integrated IPC to retrieve the store filter in the main process and updated the Vue component to reflect the selected filter.
- Adjusted logic in the app loading functions to conditionally display apps based on the determined filter.
2026-03-15 11:04:22 +08:00
momen
d206c79c24
fix:通过E2E测试
2026-03-10 00:52:59 +08:00
momen
21ea334e79
feat:修复基础格式问题
2026-03-09 23:56:44 +08:00
shenmo7192
21b069d7ef
添加主页功能,支持加载和展示首页数据,包括链接和推荐应用列表
2026-02-25 20:46:28 +08:00
shenmo7192
3165304016
修改应用名称
2026-02-19 19:27:19 +08:00
shenmo7192
1cf729e7fd
优化启动速度
2026-02-19 19:22:18 +08:00
shenmo7192
44a55249db
更换安装指令为 aptss
2026-02-19 18:01:16 +08:00
Elysia
c27c1f1697
feat: add sidebar toggle functionality
...
Signed-off-by: Elysia <a.elysia@proton.me >
2026-02-17 23:23:20 +08:00
Elysia
d45d5082f4
fix(main): use app.getVersion() for packaged app
...
Signed-off-by: Elysia <a.elysia@proton.me >
2026-02-17 22:08:51 +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
c4ffc880e4
chore(main): clean up temp dir on quit
2026-02-14 19:06:58 +08:00
Elysia
7aeb3d5dd4
feat(theme): add system theme support
...
close #13
2026-02-13 14:49:41 +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
Elysia
e11740ad4c
feat: 添加 ESLint 配置并优化代码风格,移除未使用的功能
2026-02-12 18:31:09 +08:00
Elysia
92d1573cf0
feat: 现在仅在有任务时才会到托盘
2026-01-31 20:13:05 +08:00