Commit Graph

192 Commits

Author SHA1 Message Date
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
momen
7aa51746c4 Merge pull request #8 from vmomenv/fix/apm-uninstall-origin-15839187749437554166
fix: pass app origin to remove-installed ipc in UninstallConfirmModal
2026-03-12 15:41:51 +08:00
vmomenv
3677019543 test: fix playwright timeout due to localhost resolution
Playwright tests were timing out on CI because the Vite dev server was
listening on `http://localhost:5173/` but `playwright.config.ts` was
configured to wait for `http://127.0.0.1:5173/`. Node 17+ resolves
`localhost` to IPv6 (`::1`), causing Playwright's strict IPv4 wait
to time out.

This commit updates `playwright.config.ts` to use `http://localhost:5173`
for both `baseURL` and the `webServer.url`.

The e2e tests were left unmodified, as previous attempts to mock them out
broke intended test behavior. This fix correctly targets only the underlying
network connection refusal between Playwright and Vite.
2026-03-12 07:32:36 +00:00
vmomenv
6cbcf6fae3 test: fix playwright e2e connection refused error
The e2e test was hardcoded to navigate to `http://127.0.0.1:3344` instead
of using the configured `baseURL` in `playwright.config.ts` which points
to the Vite dev server (`http://localhost:5173`). This caused tests to
fail with `net::ERR_CONNECTION_REFUSED`.

This commit replaces the hardcoded URL with `/` so that Playwright
correctly uses the `baseURL` setting. It also updates the title assertion
to include "星火应用商店".
2026-03-12 07:06:28 +00:00
vmomenv
fa990cb974 test: fix playwright timeout due to localhost resolution
Playwright tests were timing out on CI because the Vite dev server was
listening on `http://localhost:5173/` but `playwright.config.ts` was
configured to wait for `http://127.0.0.1:5173/`. Node 17+ resolves
`localhost` to IPv6 (`::1`), causing Playwright's strict IPv4 wait
to time out.

This commit updates `playwright.config.ts` to use `http://localhost:5173`
for both `baseURL` and the `webServer.url`.
2026-03-12 07:01:40 +00:00
vmomenv
3995d2bbc0 fix: pass app origin to remove-installed ipc in UninstallConfirmModal
When triggering the uninstall process from the uninstall confirmation modal,
only the package name string was passed. This caused the backend to
default the origin to 'spark', which meant APM applications were incorrectly
attempted to be uninstalled using `aptss remove` instead of `apm remove`.

This commit changes the `remove-installed` ipc payload in
`UninstallConfirmModal.vue` to an object containing both `pkgname` and
`origin`, ensuring the backend correctly routes the uninstallation
through the APM package manager with `pkexec` when needed.
2026-03-12 06:55:48 +00:00
c81871f00b update:提权支持apm命令 2026-03-12 12:32:40 +08:00
momen
b90b7afc28 Merge pull request #7 from vmomenv/feat/apm-install-uninstall-logic-2595854606713089615
feat: improve apm install and uninstall logic with correct privilege escalation
2026-03-12 11:26:34 +08:00
vmomenv
a1c5db3a11 feat: implement apm app install and uninstall logic with pkexec elevation
- Modify `queue-install` logic to wrap `apm` commands with `superUserCmd` and `SHELL_CALLER_PATH` when origin is apm.
- Update `remove-installed` to correctly execute `apm remove -y pkgname` with required privilege elevation when origin is apm.
- Add payload parsing logic in `uninstall-installed` handler to identify origin and apply correct `apm` uninstall command dynamically.
2026-03-12 03:23:16 +00:00
momen
cb8ac768a6 Merge pull request #6 from vmomenv/remove-store-mode-and-fix-arch-3296001085136830138
保留混合模式并根据架构调整网页请求路径
2026-03-12 09:41:51 +08: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
16f7b62491 fix:修复商店无法调起apm软件的问题 2026-03-11 16:08:51 +08:00
19b96c93f6 update:添加apm启动脚本 2026-03-11 15:54:02 +08:00
b3cef63bf5 feat:混合模式下,当点击“Spark”或“APM”的子开关时,也会刷新是否已安装逻辑 2026-03-11 14:24:14 +08:00
207334608c fix:已安装的软件不显示打开软件的按钮问题 2026-03-11 14:20:23 +08:00
e3134afbfb feat:加入查找apm包脚本 2026-03-11 13:15:38 +08:00
momen
a68638ef51 Merge pull request #4 from vmomenv/cleanup-process-install-dead-code-708801762184763180
🧹 [code health improvement] Remove dead code in processInstall.ts
2026-03-11 10:36:43 +08:00
google-labs-jules[bot]
51bf8b9304 refactor(modules): remove commented-out console.log in IPC listener
This block of code in `src/modules/processInstall.ts` was leftover debug
code and is no longer needed. Removing it improves the maintainability
and readability of the file.

Co-authored-by: vmomenv <51269338+vmomenv@users.noreply.github.com>
2026-03-11 02:34:36 +00:00
5bc68f5a9a update:修复github工作流问题 2026-03-11 09:38:28 +08:00
a2671e2968 udpate:新增构建软件包工作流 2026-03-11 09:23:20 +08:00
d24a5225de update:在商店混合模式下,同包名的软件合并在同一个详情页面并加入切换开关 2026-03-11 09:18:59 +08:00
66bf0124bd fix:修复混合模式下计数器问题 2026-03-11 08:51:10 +08:00
257065018b fix:当用户切换商店模式(星火、APM、混合)时,目前应用会通过 window.location.reload() 重新加载整个页面。这会导致性能损耗和重复的网络请求。本计划旨在取消页面重载,并实现模式数据的缓存。 2026-03-11 08:45:28 +08:00
edd9368c56 update:添加apm与普通商店双支持 2026-03-11 08:36:24 +08:00
8f2c758bf5 update:更新服务器接口规范 2026-03-11 08:04:43 +08:00
momen
876a3715bf Merge pull request #2 from vmomenv/feat-improve-download-status-tests-11721872646402320389
🧪 Improve removeDownloadItem tests
2026-03-11 00:13:34 +08:00
google-labs-jules[bot]
4dafedec12 test: improve removeDownloadItem tests
Expanded the test suite for `removeDownloadItem` in `src/__tests__/unit/downloadStatus.test.ts` to include:
- Removing multiple items with the same pkgname.
- Handling non-matching and non-existent pkgnames.
- Removing from an empty list.
- Ensuring exact string matching.
- Removing items from the start, middle, and end of the list.

Introduced a `createMockDownload` helper to reduce boilerplate in tests.

Co-authored-by: vmomenv <51269338+vmomenv@users.noreply.github.com>
2026-03-10 16:09:31 +00:00
momen
7dc8b7f77f Merge pull request #1 from vmomenv/security-fix-command-injection-install-manager-3820575162219224633
🔒 [security fix] Fix Command Injection in install-manager.ts
2026-03-11 00:08:50 +08:00
google-labs-jules[bot]
1270405907 🔒 fix: Command Injection in install-manager.ts and CI failures
- Set `shell: false` in `spawn` calls in `install-manager.ts` to prevent command injection.
- Updated `AGENTS.md` to use the secure `shell: false` pattern in examples.
- Removed `package-lock.json` from `.gitignore` to support reproducible builds.
- Updated GitHub Actions workflows to use `npm install` instead of `npm ci` as a robust fallback.

Co-authored-by: vmomenv <51269338+vmomenv@users.noreply.github.com>
2026-03-10 16:08:16 +00:00
google-labs-jules[bot]
828ffd86e8 🔒 fix: Command Injection vulnerability in install-manager.ts
- Changed `shell: true` to `shell: false` in `spawn` calls within `electron/main/backend/install-manager.ts`.
- Updated `AGENTS.md` documentation to reflect the security best practice.
- Verified that the fix prevents command injection using a reproduction script.

Co-authored-by: vmomenv <51269338+vmomenv@users.noreply.github.com>
2026-03-10 15:53:44 +00:00
4fd280cf85 修复 check-is-installed 无法正确检查在主机是否安装的问题 2026-03-10 18:47:35 +08:00
bee046dcf2 修复编译不通过的问题 2026-03-10 18:46:56 +08:00
a98b3ec5b1 不再使用dpkg-query检测是否安装 2026-03-10 18:36:35 +08:00
3231a3ced7 update:更新下载量统计接口信息 2026-03-10 17:34:53 +08:00
3cea59f47b update:更新服务器接口信息 2026-03-10 17:34:35 +08:00
94392c0f72 update:加入项目运行工作流 2026-03-10 09:23:22 +08:00
762c2f550d update:更新readme 2026-03-10 09:13:58 +08:00
522af7c3a3 update:主页更换图标 2026-03-10 09:03:24 +08:00
105563fe1d update:忽略test-results.json 2026-03-10 00:53:44 +08:00
d206c79c24 fix:通过E2E测试 2026-03-10 00:52:59 +08:00
cef68a95d9 chore: add comprehensive documentation and testing infrastructure
## 文档(全部中文)
- AGENTS.md - 完整的 AI 编码指南(中文版)
- CONTRIBUTING.md - 贡献指南
- DEVELOPMENT.md - 开发文档
- DEPLOYMENT.md - 部署文档
- TESTING.md - 测试文档
- TROUBLESHOOTING.md - 问题排查指南
- FAQ.md - 常见问题
- WORKFLOW.md - 标准开发流程文档
## AI 工作流(9个详细工作流)
- feature-development.md - 新功能开发流程
- bug-fix.md - Bug 修复流程
- code-review.md - 代码审查流程
- testing.md - 测试编写流程
- release.md - 发布流程
- refactoring.md - 代码重构流程
- documentation.md - 文档更新流程
- performance-optimization.md - 性能优化流程
- security-audit.md - 安全审计流程
## 测试基础设施
- vitest.config.ts - Vitest 单元测试配置
- playwright.config.ts - Playwright E2E 测试配置
- src/__tests__/setup.ts - 测试环境设置
- src/__tests__/unit/downloadStatus.test.ts - 示例单元测试
- e2e/basic.spec.ts - 示例 E2E 测试
## CI/CD
- .github/workflows/test.yml - 新建测试 CI 工作流
- .github/workflows/build.yml - 更新构建工作流,添加测试步骤
## Issue 模板
- 更新 bug_report.md 为标准 Bug 报告模板
- 更新 help_wanted.md 为标准功能请求模板
## 配置更新
- package.json - 添加测试依赖和 7 个新的 npm 脚本
- .gitignore - 添加测试相关忽略项
## 新增 npm 脚本
- test - 运行单元测试
- test:watch - 监听模式
- test:coverage - 生成覆盖率报告
- test:e2e - 运行 E2E 测试
- test:e2e:ui - E2E UI 模式
- test:e2e:debug - E2E 调试模式
- test:all - 运行所有测试
## 新增测试依赖
- @playwright/test ^1.40.0
- @testing-library/jest-dom ^6.1.5
- @testing-library/vue ^8.0.1
- @vitest/coverage-v8 ^1.0.0
- @vue/test-utils ^2.4.3
- jsdom ^23.0.1
- vitest ^1.0.0
2026-03-10 00:42:56 +08:00
0035b3000d feat:修改1.md改为代码审查.md 2026-03-09 23:58:05 +08:00
2df695fca1 feat:添加代码审查工作流 2026-03-09 23:57:29 +08:00
21ea334e79 feat:修复基础格式问题 2026-03-09 23:56:44 +08:00
shenmo
1e2047e7f1 Merge pull request #6 from vmomenv/momen-dev
Momen dev
2026-03-09 11:32:40 +08:00
a9a6b6bdc6 fix:首页推荐软件安装失败问题 2026-02-28 02:28:50 +08:00
749cf3d3bf feat:引入懒加载,防止弱网情况下无法正常加载应用图标或详情页图片 2026-02-27 23:25:38 +08:00
88670be15e feat:针对弱网环境,侧边栏添加并行加载,重试机制,初始化优化 2026-02-27 23:18:06 +08:00
6ea628d869 feat: 修改应用信息界面,对于已安装应用,安装按钮变为打开按钮,并添加卸载按钮 2026-02-27 23:03:10 +08:00
3a9c9dda22 Merge remote-tracking branch 'refs/remotes/origin/main' 2026-02-25 20:47:13 +08:00