refactor(daily-news): 重构每日资讯采集流程并添加用户交互确认

- 重构核心流程,添加用户交互确认步骤
- 新增微信公众号发布支持
- 更新文档和任务说明以反映新流程
- 优化各平台内容生成模板
This commit is contained in:
2026-03-31 23:47:41 +08:00
parent 190ab414db
commit 3cfdc23a2f
9 changed files with 309 additions and 317 deletions

View File

@@ -5,12 +5,13 @@ description: "采集星火项目每日资讯检查GitHub新tags并生成文
# 每日资讯采集 # 每日资讯采集
根据优先级自动检查星火项目更新,生成待审核的每日资讯文档。 根据优先级自动检查星火项目更新,生成待审核的每日资讯文档,并通过交互确认后发布到微信公众号
## 核心流程 ## 核心流程
``` ```
1. 检查 GitHub Tags → 2. 分析变更 → 3. 生成文档 → 4. 更新记录 1. 检查 GitHub Tags → 2. 分析变更 → 3. 生成草稿
→ 4. 交互确认(用户审核)→ 5. 发布到微信 → 6. 更新记录
``` ```
## 内容优先级 ## 内容优先级
@@ -55,20 +56,55 @@ git tag -l | sort -V
- Bug 修复 (Bug Fixes) - Bug 修复 (Bug Fixes)
- 性能优化 (Performance) - 性能优化 (Performance)
### Step 4: 生成文档 ### Step 4: 生成草稿文档
创建 `Daily_News/Pending/{日期}/{日期}_raw_news.md` 创建 `Daily_News/Pending/{日期}/{日期}_raw_news.md`
### Step 5: 更新记录 ### Step 5: 交互确认(关键步骤)
覆盖 `Daily_News/Tags_Record/apm-app-store_tags.txt` **必须向用户展示草稿内容并询问:**
1. 内容是否准确?
2. 是否需要修改?
3. 修改建议是什么?
**使用 AskUserQuestion 工具询问用户:**
- 问题1: 内容确认
- 选项1: 确认无误,可继续
- 选项2: 需要修改
- 问题2如选修改: 具体修改内容
- 让用户提供具体修改建议
**等待用户回复后再继续。**
### Step 6: 发布到微信公众号
**前提条件检查:**
- 确认用户已配置微信公众号发布方式
- 询问用户是否需要立即发布
**发布方式选项:**
1. 提供草稿内容供用户手动复制发布
2. 使用用户提供的 API/工具自动发布
**询问用户:**
- 是否立即发布到微信公众号?
- 发布方式选择(手动复制/自动发布)
### Step 7: 更新 Tags 记录
仅在用户确认内容无误后,更新 `Daily_News/Tags_Record/apm-app-store_tags.txt`
## 输出位置 ## 输出位置
- 原始文档:`Daily_News/Pending/YYYY-MM-DD/YYYY-MM-DD_raw_news.md` - 草稿文档:`Daily_News/Pending/YYYY-MM-DD/YYYY-MM-DD_raw_news.md`
- Tags 记录:`Daily_News/Tags_Record/{repo}_tags.txt` - Tags 记录:`Daily_News/Tags_Record/{repo}_tags.txt`
- 审核后版本:`Daily_News/Reviewed/{WeChat,Xiaohongshu,Zhihu,Bilibili}/` - 审核后版本:`Daily_News/Reviewed/{WeChat,Xiaohongshu,Zhihu,Bilibili}/`
## 后续处理 ## 重要提醒
原始文档需人工审核,审核通过后改写为各平台版本。 1. **Step 5 是必须步骤**,未获用户确认不得继续后续步骤
2. 如用户要求修改,先修改文档再重新展示,确认无误后再继续
3. 微信公众号发布需要用户授权确认

View File

@@ -2,7 +2,7 @@
## 1. 概述与目标 ## 1. 概述与目标
本 Skill 旨在自动化采集星火项目每日资讯,按照优先级生成结构化文档,支持多平台发布。 本 Skill 旨在自动化采集星火项目每日资讯,按照优先级生成结构化文档,支持多平台发布,并通过用户交互确认后发布到微信公众号
## 2. 功能范围 ## 2. 功能范围
@@ -12,6 +12,8 @@
- 对比本地记录,识别新版本 - 对比本地记录,识别新版本
- 分析 CHANGELOG/提交记录,提取更新内容 - 分析 CHANGELOG/提交记录,提取更新内容
- 按日期自动存档到 `Daily_News/Pending/` - 按日期自动存档到 `Daily_News/Pending/`
- **交互式用户确认**
- **微信公众号发布支持**
### 2.2 内容优先级 ### 2.2 内容优先级
@@ -52,9 +54,52 @@ Daily_News/
- 审核清单 - 审核清单
- 各平台内容调整建议 - 各平台内容调整建议
## 5. 约束条件 ## 5. 工作流程
```
┌─────────────────────────────────────────────────────────┐
│ 1. 克隆/更新仓库到 ./repos/ │
│ ↓ │
│ 2. 检查 Git tags │
│ ↓ │
│ 3. 对比 Tags_Record/ 中的记录 │
│ ↓ │
│ 4. 如有新版本,生成 Pending/日期/ 草稿 │
│ ↓ │
│ 5. 【交互确认】展示草稿,等待用户审核 │
│ ↓ │
│ 6. 用户确认后,写入 Reviewed/{Platform}/ │
│ ↓ │
│ 7. 【可选】发布到微信公众号 │
│ ↓ │
│ 8. 更新 Tags_Record/ │
└─────────────────────────────────────────────────────────┘
```
## 6. 交互确认要求
### 6.1 必须确认的内容
- 草稿内容是否准确
- 是否需要修改
- 修改建议是什么
### 6.2 确认后的操作
- 用户确认 → 写入 Reviewed/ 目录
- 用户要求修改 → 修改后重新展示 → 再次确认
### 6.3 微信公众号发布
- 需要用户明确授权
- 支持两种模式:
1. 手动模式:提供内容供用户复制发布
2. 自动模式:使用用户提供的 API/工具发布
## 7. 约束条件
- 首次使用需克隆仓库 - 首次使用需克隆仓库
- tags 记录文件不可删除 - tags 记录文件不可删除
- 仅检测已配置仓库 - 仅检测已配置仓库
- 不自动发布,仅生成存档 - **草稿必须经用户确认才能发布**
- **微信公众号发布需要用户授权**

View File

@@ -3,7 +3,7 @@
## Task 1: 检查 GitHub Tags ## Task 1: 检查 GitHub Tags
### 步骤 ### 步骤
1. 进入仓库目录 `../apm-app-store` 1. 进入仓库目录 `./repos/apm-app-store`
2. 执行 `git fetch --all --tags` 获取最新 tags 2. 执行 `git fetch --all --tags` 获取最新 tags
3. 执行 `git tag -l | sort -V` 获取当前所有 tags 3. 执行 `git tag -l | sort -V` 获取当前所有 tags
4. 读取本地记录 `Daily_News/Tags_Record/apm-app-store_tags.txt` 4. 读取本地记录 `Daily_News/Tags_Record/apm-app-store_tags.txt`
@@ -32,7 +32,7 @@
--- ---
## Task 3: 生成每日资讯文档 ## Task 3: 生成每日资讯草稿
### 步骤 ### 步骤
1. 创建目录 `Daily_News/Pending/{日期}/` 1. 创建目录 `Daily_News/Pending/{日期}/`
@@ -44,7 +44,65 @@
--- ---
## Task 4: 更新 Tags 记录 ## Task 4: 【交互】用户确认
### 步骤
1. **展示草稿内容**给用户
2. **询问用户**
- 内容是否准确?
- 是否需要修改?
- 修改建议是什么?
3. **等待用户回复**
4. 根据用户反馈:
- 如果需要修改 → 修改文档 → 重新展示 → 再次确认
- 如果确认无误 → 进入下一步
### 使用工具
- `AskUserQuestion` 询问用户确认
- 根据用户回复决定下一步
### 输出
- 用户确认后的草稿文档
- 或修改后的草稿文档(需再次确认)
---
## Task 5: 写入平台版本
### 步骤
1. 确认用户内容无误后
2. 改写为微信公众号版本 → `Reviewed/WeChat/`
3. 改写为小红书版本 → `Reviewed/Xiaohongshu/`
4. 改写为知乎版本 → `Reviewed/Zhihu/`
5. 改写为B站版本 → `Reviewed/Bilibili/`
### 审核标准
- [ ] 技术细节准确
- [ ] 功能描述清晰
- [ ] 语言风格符合平台调性
---
## Task 6: 【可选】发布到微信公众号
### 步骤
1. 询问用户是否需要发布到微信公众号
2. 如果需要:
- 确认发布方式(手动复制/自动发布)
- 提供内容供用户发布
- 或使用用户提供的 API/工具自动发布
### 前提条件
- 需要用户明确授权
- 需要用户提供发布方式
### 输出
- 发布内容准备就绪
- 或已完成发布
---
## Task 7: 更新 Tags 记录
### 步骤 ### 步骤
1. 覆盖写入 `Daily_News/Tags_Record/apm-app-store_tags.txt` 1. 覆盖写入 `Daily_News/Tags_Record/apm-app-store_tags.txt`
@@ -55,16 +113,8 @@
--- ---
## Task 5: 人工审核后改写平台版本 ## 重要提醒
### 步骤 1. **Task 4 是必须步骤**,未获用户确认不得继续后续步骤
1. 审核 `Pending/` 中的原始文档 2. 如用户要求修改,先修改文档再重新展示,确认无误后再继续
2. 改写为微信公众号版本 → `Reviewed/WeChat/` 3. Task 6 需要用户明确授权才能执行
3. 改写为小红书版本 → `Reviewed/Xiaohongshu/`
4. 改写为知乎版本 → `Reviewed/Zhihu/`
5. 改写为B站版本 → `Reviewed/Bilibili/`
### 审核标准
- [ ] 技术细节准确
- [ ] 功能描述清晰
- [ ] 语言风格符合平台调性

View File

@@ -1,6 +1,6 @@
# 每日资讯草稿 - 2026-03-31 # 每日资讯草稿 - 2026-03-31
> 自动生成时间2026-03-31 23:15:00 > 自动生成时间2026-03-31
> 状态:待审核 > 状态:待审核
--- ---
@@ -21,9 +21,13 @@
**仓库**https://github.com/shenmo7192/apm-app-store **仓库**https://github.com/shenmo7192/apm-app-store
**技术栈**Electron + Vue 3 + TypeScript **技术栈**Electron + Vue 3 + TypeScript
### 重大更新:从 v1.x 到 v5.x 架构升级 ### 重大更新:Electron 重构版本来袭
本次更新是 APM 应用商店的一次重大版本升级,从 v1.1.1 跨越到 v5.0.0-beta.1,带来了多项核心功能改进 星火应用商店 4.8.4 是 Qt 版本,本次 5.0.0-beta.1 是全新 Electron + Vue 3 重构版本
技术演进路径:星火应用商店 Qt 版4.8.4)→ APM 应用商店 Electron 版1.0.2)→ 5.0.0-beta.1(版本号顺延 Qt 版)
本次更新带来了多项核心功能改进。
### 更新亮点 ### 更新亮点
@@ -35,10 +39,11 @@
2. **应用商店过滤功能** 2. **应用商店过滤功能**
- 新增来源标识显示 - 新增来源标识显示
- 支持按来源筛选应用 - 支持按来源筛选应用Spark / APM
3. **Deep Link 协议支持** 3. **Deep Link 协议支持**
- 支持通过 `store://` 协议直接打开应用详情 - 支持通过 `spk://` 协议直接打开应用详情
- 协议格式:`spk://search/pkgname``spk://store/category/pkgname`
- 方便外部链接直接跳转 - 方便外部链接直接跳转
4. **安装 APM 体验优化** 4. **安装 APM 体验优化**
@@ -53,6 +58,9 @@
- 优化应用详情页功能和代码格式 - 优化应用详情页功能和代码格式
- 提升信息展示效果 - 提升信息展示效果
7. **首页内容模块**
- 新增 HomeView 组件,展示首页内容和应用推荐
#### 🔧 功能修复 #### 🔧 功能修复
- 修复安装弹窗支持点击遮罩层关闭 - 修复安装弹窗支持点击遮罩层关闭
@@ -70,22 +78,20 @@
--- ---
### 近期提交记录(从 v1.1.1 到 5.0.0-beta.1 ### 近期提交记录(Electron 版从 1.0.2 到 5.0.0-beta.1
``` ```
b836392 update:应用列表中spark软件列表加入图标
fdb5f4a update:apm管理改为应用管理
5741037 feat(apm): 在安装和更新应用前检查并提示安装APM
dd7e4ad beta3
845904c build: 更新版本号至5.0.0beta2
0dedd0f feat(组件): 添加虚拟滚动优化应用网格性能
f382e6d feat(组件): 添加应用商店过滤功能并优化来源标识显示
dd0a17d style(组件): 优化应用详情模态框按钮样式和布局
cbea474 fix(InstalledAppsModal): 添加点击遮罩层关闭模态框功能
29460e7 feat(组件): 添加搜索结果为空时的提示界面 29460e7 feat(组件): 添加搜索结果为空时的提示界面
e7fb8e6 feat(应用详情): 增强应用详情页功能并优化代码格式 e7fb8e6 feat(应用详情): 增强应用详情页功能并优化代码格式
94f4307 perf(安装日志): 优化安装日志处理性能 94f4307 perf(安装日志): 优化安装日志处理性能
a8d4623 chore: 更新版本号至5.0.0beta1 a8d4623 chore: 更新版本号至5.0.0beta1
2d02e2a fix(install-manager): 取消安装时删除下载目录
ad55627 feat: 优化应用商店界面布局和交互体验
5b2d96c feat: 实现搜索结果的分类计数功能
3f9447d feat(deep-link): 支持通过 store 协议直接打开应用详情
1e6e776 fix(install-manager): 改进已安装应用列表的解析逻辑
7ff0792 feat: 添加 APM 应用管理功能并优化界面
cd43f34 feat: 添加关于对话框并优化主题切换按钮样式
... ...
``` ```
@@ -102,7 +108,7 @@ a8d4623 chore: 更新版本号至5.0.0beta1
| 平台 | 内容调整建议 | | 平台 | 内容调整建议 |
|------|-------------| |------|-------------|
| 微信公众号 | 偏重技术解读虚拟滚动、Deep Link强调性能优化 | | 微信公众号 | 偏重技术解读(Electron 重构、虚拟滚动、Deep Link强调性能优化 |
| 小红书 | 强调"流畅度飙升"、"功能更贴心"等用户体验 | | 小红书 | 强调"流畅度飙升"、"功能更贴心"等用户体验 |
| B站 | 玩梗向,"5.0 大版本更新"、"性能拉满" | | B站 | 玩梗向,"5.0 大版本更新"、"性能拉满" |
| 知乎 | 深度分析 Electron + Vue 3 的技术演进 | | 知乎 | 深度分析 Electron + Vue 3 的技术演进 |

View File

@@ -1,62 +1,17 @@
【技术发布】⚡ APM 应用商店 5.0 来啦! 【技术发布】✌️
前方高能APM 应用商店 v5.0 正式发布!🎉 星火应用商店 v5.0.0-beta.1 正式发布!🎉
次更新有点猛,从 1.x 直接跳到 5.x 次更新亮点:
各位彦祖们,让我给你们捋捋这次更新了什么 👇 🔹 全新 Electron + Vue 3 重构,架构全面升级
🔹 虚拟滚动优化,流畅度拉满
🔹 支持 spk:// 协议一键直达应用详情
🔹 来源筛选、搜索计数等贴心功能
--- 作为一个 Linux 用户,最让我惊喜的是虚拟滚动优化——万人同时刷列表都不带卡的(夸张了但真的很流畅)
**虚拟滚动 + 性能拉满** 📥 下载体验https://github.com/shenmo7192/apm-app-store/releases
应用网格重写!虚拟滚动技术上线! 各位彦祖们,这个更新你们打几分?👀
之前列表一长就卡的问题从此成为历史 🙌
--- #Linux #开源 #程序员 #技术发布
**Deep Link 协议来了**
以后可以用 `store://` 协议直接打开应用详情了!
脚本党狂喜!自动化程度直接拉满 🔗
---
**安装 APM 体验优化**
安装/更新应用前会检查 APM 是否安装
没装?一键提示安装!
这个细节优化真的好评 💯
---
**搜索增强**
搜索结果会显示分类计数了
空结果也有友好提示
懂的都懂,这个优化很贴心 👀
---
**一堆 Bug 修复**
- 弹窗终于可以点外面关了
- 修复了下载重试的各种 bug
- 修复了重复下载的问题
---
支持发行版Arch / Fedora / 银河麒麟 / 统信 UOS / Debian / Ubuntu / deepin
wine 应用、安卓应用,一个都不能少 🍷📱
---
📥 GitHubhttps://github.com/shenmo7192/apm-app-store
一键三连!评论区说说你们用什么发行版 👇
#Linux #开源 #APM #星火应用商店 #程序员 #技术发布 #5.0
---
悄悄说5.0 正式版也在路上了,敬请期待 😏

View File

@@ -1,85 +1,71 @@
# 【版本更新】APM 应用商店 5.0.0-beta.1 正式发布 【版本更新】星火应用商店 v5.0.0-beta.1 正式发布
各位开发者、用户朋友们: 各位开发者、用户朋友们:
APM 应用商店正式发布 5.0.0-beta.1 版本这是一次从 v1.x 到 v5.x 的重大架构升级,带来了多项核心功能改进和性能优化。 星火应用商店于 2026 年 3 月 31 日正式发布 v5.0.0-beta.1 版本这是全新 Electron + Vue 3 重构版本,感谢大家一直以来的支持!
--- ### 📌 版本亮点
## 一、版本概述 **1. 技术架构全面升级**
本次更新历时数月,团队对应用商店进行了全面重构优化。从界面交互到底层性能,均有显著提升。特别值得一提的是虚拟滚动技术的应用,让大型应用列表的浏览终于告别卡顿。 本次更新完成了从 Qt 到 Electron + Vue 3 + TypeScript 的技术架构重构标志着星火应用商店进入新的发展阶段。技术演进路径Qt 版4.8.4)→ Electron 版1.0.2)→ 5.0.0-beta.1
--- **2. 虚拟滚动优化应用网格性能**
## 二、核心更新 使用虚拟滚动技术优化大型应用列表的渲染性能,解决滚动卡顿问题,流畅度大幅提升。
### 1. 虚拟滚动优化 **3. Deep Link 协议支持**
应用网格采用虚拟滚动技术优化大型应用列表的渲染性能。用户滚动列表时,浏览器只渲染可见区域的元素,大幅降低 CPU 和内存占用。 支持通过 `spk://` 协议直接打开应用详情:
- 格式:`spk://search/pkgname``spk://store/category/pkgname`
- 方便外部链接、脚本调用直接拉起应用详情页
**实测效果**:包含数百款应用的长列表滚动流畅度提升显著。 **4. 应用商店过滤功能**
### 2. Deep Link 协议支持 新增来源标识显示支持按来源筛选应用Spark / APM快速定位目标应用。
新版支持通过 `store://` 协议直接打开应用详情页。外部链接、脚本调用均可直接拉起应用商店并定位到指定应用。 **5. 搜索结果分类计数**
```bash 显示搜索结果各分类的数量,一目了然。
# 示例
store://app/detail/com.qq.office
```
### 3. 安装体验优化 **6. 应用详情页增强**
优化应用详情页布局和交互体验,提升信息展示效果。
**7. 安装体验优化**
安装和更新应用前自动检查并提示安装 APM简化用户操作流程。
### 🔧 问题修复
- 修复安装弹窗支持点击遮罩层关闭
- 修复取消下载后无法重试的问题
- 修复重复下载包时删除已有包的问题
- 修复安装管理命令替换问题ssaudit → ssinstall
- 修复已安装应用列表解析逻辑
### ⚡ 性能优化
- 安装和更新应用前自动检查 APM 是否已安装
- 未安装时提示用户一键安装
- 优化安装日志处理性能 - 优化安装日志处理性能
- 优化应用加载体验和界面样式
- APM 应用管理界面不再随滚轮滚动
### 4. 搜索功能增强 ### 📥 更新方式
- 搜索结果分类计数显示 - **星火应用商店**:直接更新
- 空结果友好提示界面 - **GitHub 下载**https://github.com/shenmo7192/apm-app-store/releases
- 更精准的匹配算法
### 🔄 兼容性说明
本版本支持以下操作系统:
- Ubuntu 20.04+
- Debian 10+
- 其他主流 Linux 发行版
--- ---
## 三、问题修复
本次更新还修复了以下问题:
- 安装弹窗支持点击遮罩层关闭
- 取消下载后无法重试的问题
- 重复下载包时未删除已有包的问题
- 安装管理命令替换ssaudit → ssinstall
- 下载重试后无日志输出问题
---
## 四、技术细节
本版本基于 **Electron + Vue 3 + TypeScript** 构建,核心改进包括:
- **虚拟滚动**:基于 `vue-virtual-scroller` 或自研方案
- **Deep Link**:自定义 URL Scheme 处理
- **性能优化**:批量处理、懒加载、防抖节流
---
## 五、获取与反馈
- **GitHub**https://github.com/shenmo7192/apm-app-store
- **官网**https://amber-pm.spark-app.store/
欢迎通过 GitHub Issues 反馈问题!
---
**关于 APM 应用商店**
APM (AmberPM) 是基于 fuse-overlayfs + dpkg + AmberCE 的容器化兼容层,为多发行版提供轻量级的应用运行方案。支持 Arch Linux、Fedora、银河麒麟、统信 UOS 等主流发行版。
**关于星火应用商店** **关于星火应用商店**
星火应用商店是一个致力于改善 Linux 桌面应用生态的开源社区项目。"星星之火,可以燎原"——每一步改进,都是 Linux 生态的一束光。 星火应用商店是一个致力于改善 Linux 桌面应用生态的开源社区项目。
点击在看,与星火一起成长 ✨ 点击在看,与星火一起成长 ✨

View File

@@ -1,55 +1,21 @@
🔥 APM 应用商店 5.0 来了!这波更新真的绝了✨ 🔥 Linux 用户看过来!星火应用商店 5.0 重磅更新!
姐妹们,APM 应用商店刚刚更新了 5.0.0-beta.1 姐妹们,发现一个 Linux 用户刚需神器!😤
作为一个 Linux 用户,我真的太难了😭 以前每次在新电脑上装软件都要找半天,软件源兼容性也是个头疼的问题...
之前软件列表一长就卡,用着太痛苦了
但是!这次更新直接解决了所有问题!👇 但是!自从用了星火应用商店 5.0,我直接告别命令行恐惧症!🚀
## 5.0 版本亮点 ✨ 亮点速览:
• 全新 Electron 重构,界面流畅度飙升 💯
• 虚拟滚动技术,万人同时刷都不卡
• 支持 `spk://` 协议一键直达应用详情
• 来源筛选功能Spark/APM 应用一目了然
• 搜索结果分类计数,找应用快人一步
### 1⃣ 流畅度飙升! 👉 适用人群Linux 新手、追求效率的开发者
虚拟滚动技术加持,应用列表再长都不卡 💻 支持平台Ubuntu、Debian 等主流发行版
之前滚动列表转圈圈的问题彻底没了!🚀
### 2⃣ 搜索更好用了 家人们谁懂啊,用过之后真的回不去了!😭
搜索结果会显示分类数量
再也不用一个个翻了,找软件效率翻倍!🔍
### 3⃣ 安装 APM 更方便了 #Linux #开源 #星火应用商店 #技术分享 #效率神器
安装软件前会自动检查 APM
没安装会提示一键安装,小白友好!👍
### 4⃣ 细节优化超多
- 点击遮罩层就能关闭弹窗了
- 修复了各种小问题
- 界面样式也更好看了
---
## 支持这么多发行版!
• Arch Linux
• Fedora
• 银河麒麟
• 统信 UOS
• Debian / Ubuntu
• deepin
wine 应用、安卓应用都能装!🍷
---
## 安装方法
直接去 GitHub 下载:
https://github.com/shenmo7192/apm-app-store
或者通过星火应用商店更新!
---
你们的 Linux 系统用的是哪个发行版呀?评论区告诉我!👇
#Linux #开源 #星火应用商店 #APM #效率工具 #软件推荐 #技术分享 #5.0更新

View File

@@ -1,138 +1,86 @@
# APM 应用商店 5.0 发布:虚拟滚动与 Deep Link 技术解析 【技术解读】星火应用商店 5.0Electron + Vue 3 重构带来的技术革新
## 前言 ## 背景
APM 应用商店近期发布了 5.0.0-beta.1 版本,这是一次重大的版本跨越。本文将从技术视角深度解析这次更新的核心改进 星火应用商店从 Qt 版本4.8.4)演进到 Electron 版1.0.2),再到最新的 5.0.0-beta.1,完成了技术架构的全面升级。本文深入分析本次重构的技术亮点
--- ---
## 一、版本背景 ### 一、虚拟滚动:大型列表渲染的性能优化
APM (AmberPM) 是星火应用商店的跨发行版包管理解决方案,基于 fuse-overlayfs + dpkg + AmberCE 容器化兼容层构建 **问题背景**:当应用列表达到数百甚至上千个应用时,传统的渲染方式会导致严重的性能问题
**技术栈**Electron + Vue 3 + TypeScript **解决方案**采用虚拟滚动技术,只渲染可视区域内的应用卡片,结合懒加载机制,大幅降低 DOM 节点数量。
**支持发行版**Arch Linux、Fedora、银河麒麟、统信 UOS、Debian、Ubuntu、deepin 等
---
## 二、核心技术改进
### 2.1 虚拟滚动技术应用
**问题背景**
应用商店需要展示大量应用条目,传统渲染方式将所有元素挂载到 DOM导致
- 首屏加载缓慢
- 滚动时帧率下降
- 内存占用持续增长
**解决方案**
引入虚拟滚动Virtual Scrolling技术核心原理
```
┌─────────────────────────────────┐
│ Viewport可视区域
│ ┌───────────────────────────┐ │
│ │ Visible Items (N个) │ │
│ └───────────────────────────┘ │
│ │
│ ← Buffer (缓冲区域) → │
└─────────────────────────────────┘
仅渲染可见区域 + 缓冲区域的元素
```
关键实现:
- 计算可视区域高度
- 动态计算需渲染的起始/结束索引
- 使用 `translateY` 定位已渲染元素
- 滚动时更新可视区域,触发重新渲染
### 2.2 Deep Link 协议设计
**URL Scheme 设计**
```typescript ```typescript
// store://app/detail/{package_name} // AppGrid.vue 中的搜索结果为空提示
const deepLinkPattern = /^store:\/\/app\/detail\/(.+)$/; <div v-if="!loading && apps.length === 0" class="flex flex-col items-center...">
<i class="fas fa-search text-3xl text-slate-400"></i>
<h3></h3>
</div>
```
// 处理函数 ### 二、Deep Link 协议:外部跳转的桥梁
function handleDeepLink(url: string) {
const match = url.match(deepLinkPattern); **技术实现**:新版支持 `spk://` 协议实现应用详情的直接跳转。
if (match) {
const packageName = match[1]; ```typescript
router.push(`/app/${packageName}`); // electron/main/deeplink.ts
} const protocols = ["spk"];
if (action === "search") {
// 格式: spk://search/pkgname
const pkgname = url.pathname.split("/").filter(Boolean)[0];
query.pkgname = pkgname;
listeners.emit(action, query);
} }
``` ```
**Electron 中的处理** **协议格式**
- `spk://search/pkgname` - 搜索并打开应用详情
- `spk://store/category/pkgname` - 兼容旧格式
### 三、来源筛选:多源应用管理
```typescript ```typescript
// main/handle-url-scheme.ts // AppDetailModal.vue 中的来源切换
import { app } from 'electron'; <button
v-if="app.sparkApp"
:class="viewingOrigin === 'spark' ? 'bg-orange-500 text-white' : 'bg-slate-100'"
@click="viewingOrigin = 'spark'"
>
Spark
</button>
```
app.setAsDefaultProtocolClient('store'); 支持在同一界面切换 Spark 和 APM 两个来源的应用,简化多源管理流程。
app.on('open-url', (event, url) => { ### 四、搜索结果分类计数
event.preventDefault();
handleDeepLink(url); ```typescript
const categoryCounts = computed(() => {
const counts: Record<string, number> = { all: apps.value.length };
for (const app of filteredApps.value) {
const cat = app.category || "other";
counts[cat] = (counts[cat] || 0) + 1;
}
return counts;
}); });
``` ```
### 2.3 安装体验优化 ### 五、总结
```typescript 5.0.0-beta.1 版本是星火应用商店的重要里程碑,通过 Electron + Vue 3 重构,实现了:
// 安装前检查 APM - 更好的开发体验TypeScript、组件化
async function preInstallCheck() { - 更好的用户体验(性能优化、交互增强)
const apmInstalled = await checkAPMInstalled(); - 更好的扩展性Deep Link、来源筛选
if (!apmInstalled) {
showAPMInstallPrompt();
return false;
}
return true;
}
```
--- ---
## 三、其他改进 **关于星火应用商店**
| 改进类型 | 内容 | 星火应用商店是一个致力于改善 Linux 桌面应用生态的开源社区项目。
|----------|------|
| 搜索增强 | 分类计数、空结果提示 |
| 界面优化 | 模态框交互、按钮样式 |
| Bug 修复 | 下载重试、列表解析、命令替换 |
--- 欢迎大家体验交流!👀
## 四、版本变更统计 #Linux #开源 #Electron #Vue3 #TypeScript
| 变更类型 | 数量 |
|----------|------|
| Features | 10+ |
| Bug Fixes | 8+ |
| Performance | 3+ |
---
## 五、获取与反馈
- **GitHub**https://github.com/shenmo7192/apm-app-store
- **官网**https://amber-pm.spark-app.store/
---
## 结语
从 1.x 到 5.0 的跨越体现了项目在技术和体验上的持续投入。虚拟滚动和 Deep Link 的引入标志着应用商店向成熟商业产品迈进的决心。
期待 5.0 正式版的发布。
---
**相关链接**
- 星火应用商店https://www.spark-app.store/
- 星火社区https://bbs.spark-app.store/

View File

@@ -1,7 +1,7 @@
5.0.0beta1
v1.0.2 v1.0.2
v1.0.3 v1.0.3
v1.0.3-beta.1 v1.0.3-beta.1
v1.0.4 v1.0.4
v1.0.4-beta.0 v1.0.4-beta.0
v1.0.4-beta.1 v1.0.4-beta.1
5.0.0beta1