Commit Graph

204 Commits

Author SHA1 Message Date
5d58f2a801 modified: .vscode/launch.json 2026-03-15 16:43:44 +08:00
7e1f85c058 修复切换页签时会清空搜索框的问题 2026-03-15 14:47:48 +08:00
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
7e18ba7981 update:修复无法创建托盘的问题 2026-03-15 11:27:53 +08:00
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
4ecea4a8b8 feat: enhance app detail modal to prioritize installed version based on installation status
- Updated `openDetail` function to check installation status for both Spark and APM versions, setting `viewingOrigin` accordingly.
- Modified logic to determine which app version to display in screenshots based on installation status.
- Improved handling of `viewingOrigin` in `AppDetailModal.vue` to default to Spark if no specific version is installed.
2026-03-15 10:54:33 +08:00
shenmo
b0ec3d50c4 Merge pull request #13 from vmomenv/main
将apm和spark合并显示
2026-03-15 08:52:53 +08:00
momen
cbaf55cbb9 Merge pull request #10 from vmomenv/fix-download-source-display-1703167915447601691
fix: correctly display download source based on app origin
2026-03-12 17:15:51 +08:00
vmomenv
16066d0b5f fix: correctly display download source based on app origin
When downloading applications, the download source was incorrectly
hardcoded to always show "APM Store" in the DownloadDetail component.
This changes it to use the `download.origin` property to accurately
display either "Spark Store" or "APM Store" based on the application's
origin, without altering any underlying download logic.
2026-03-12 09:12:38 +00:00
momen
006a5df550 Merge pull request #9 from vmomenv/feat/app-detail-version-install-status-3216925028679313814
feat: display cross-version installation status in app detail modal
2026-03-12 16:54:55 +08:00
vmomenv
7635697495 test(e2e): fix failing playwright tests by mocking electron ipc and api calls
- Updated `e2e/basic.spec.ts` to inject a mock `window.ipcRenderer` and `window.apm_store` on test startup. Playwright connects to the Vite dev server via standard Chromium, which previously caused the app to crash due to missing Electron contexts.
- Added `page.route` intercepts to return valid mock data for categories and apps, ensuring that components like `.app-card` actually render in the E2E environment instead of being stuck in a loading state or failing.
- Removed arbitrary timeouts and `127.0.0.1:3344` URL.
2026-03-12 08:46:49 +00: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
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