fix: Release已读状态跨设备同步 + 仓库四字段持久化#141
Conversation
支持 release 发布和手动触发,前后端镜像分开构建并推送到 Docker Hub。
feat: 添加 Docker Build & Push GitHub Actions 工作流
fix: 前端 Dockerfile 升级 Node 18 → 22,修复 Actions 构建失败
Updated CodeRabbit configuration with new review settings and ignore patterns.
chore: build-desktop 改为仅手动触发
当后端可用时,WebDAVService 通过 POST /api/proxy/webdav 代理请求, 避免浏览器直接跨域访问 WebDAV 服务器。后端不可用时回退到浏览器直连。
fix: WebDAV 优先走后端代理,解决浏览器 CORS 跨域问题
Fix placeholder issue in PUT /api/releases for successful insertion
Fix parameter error for non-string values in settings API
后端新增 analysisService(README 获取 → AI 调用 → 解析入库)和 analysis 路由。 前端新增 backendAnalysisService 轮询服务,RepositoryList/RepositoryCard/ DiscoveryView/SubscriptionRepoCard 均采用后端优先、前端降级策略。 修复了 openai-responses 响应解析缺失、DiscoveryView 停止按钮无效、 批量分析 toast 不区分停止/完成 三个 bug。
- getAnalysisProgress 缺少认证头导致轮询失败 (Critical) - batches Map 无 TTL 清理导致内存泄漏 (Major) - JSON.parse(repo.topics) 无异常处理 (Minor) - 后端分析时暂停按钮行为误导,改为禁用 (Minor)
- AI API 错误消息不再暴露完整响应体,仅提取安全字段 (Minor) - 暂停按钮添加 aria-label 无障碍属性 (Minor)
feat: 将 AI 分析移到后端执行,前端仅发起和轮询
Fix/docker
Fix analysis stop button, category matching, and polling timeout
refactor: Star/Unstar、Fork、翻译操作统一迁移到后端代理 "后端为唯一数据源"架构整改: - Star/Unstar: 4处调用点改用 backend 代理 - Fork: 6种操作 (getUserForks/checkForkSyncNeeded/getBranches/ getRepositoryWorkflows/syncFork/triggerWorkflowRun) 迁移到后端 - 翻译: MS auth token 管理移到后端,前端仅保留 chunking/retry - 同步按钮: 优先使用 backend.fetchStarredRepos 代理 - 后端通配符代理支持 body 转发 @
Refactor Star/Unstar, Fork, and Translation operations to backend proxy
- ReleaseTimeline: 移除GitHubApiService, 改用backend.getMultipleRepositoryReleases走后端代理 - BackendAdapter: 新增fetchAllReleasesForRepo和getMultipleRepositoryReleases, getRepositoryReleases返回Release[] - ForkTimeline: 添加挂载时自动加载forks, 避免新开页面显示空状态 - ReleaseTimeline: 添加挂载时自动加载releases - RepositoryCard: 订阅发布按钮同步调用backend.updateRepository持久化 - useAppStore: setRepositories时从subscribed_to_releases自动重建releaseSubscriptions
- backendAdapter: releases.forEach 改 map 避免原地修改副作用 - backendAdapter: fetchAllReleasesForRepo 加 maxPages=50 上限和 try/catch - useAppStore: setRepositories 同时处理取消订阅 (subscribed_to_releases=false) - RepositoryCard: 订阅同步失败改为 console.warn 记录
refactor: Release迁移到后端代理, 添加Fork和Release自动加载, 订阅发布同步后端
后端新增备份调度服务,支持设置自动备份间隔和保留最近N份备份。 前端新增自动备份设置面板,可在设置中配置参数和手动触发。 - 新增 backupService.ts: 数据导出、自动备份、旧备份清理调度 - 新增 backup.ts 路由: settings CRUD / status / trigger 四个API - 提取 exportAllData 函数供 sync 和 backup 服务共用 - webdavService 新增 deleteFile 方法 - 前端新增 AutoBackupPanel 配置面板
- webdavDeleteFile 返回 boolean,清理逻辑根据实际删除结果计数 - backup settings 路由增加 req.body 类型检查和 Number.isInteger 校验 - AutoBackupPanel 开关和输入框添加 aria-labelledby/htmlFor 关联
防止字符串 "false" 被当作 truthy 存储为 'true'。
feat: WebDAV自动备份和自定义保留份数
- throwTranslatedError 优先使用 data.error 中的具体错误信息,避免校验失败原因被丢弃 - checkAndBackup 增加活跃配置变更检测,切换 WebDAV 配置后立即触发新备份 - 补充 VALIDATION_FAILED 及备份相关错误码映射
CodeRabbit 审查:data.error 若非字符串会变成 [object Object],增加 typeof 检查,仅当非空字符串时直抛,否则走 code 翻译回退。
fix: 自动备份400错误修复及配置切换调度缺陷
- 移除独立的自动备份标签页,功能整合进备份与恢复 - 恢复数据支持从备份文件列表中选择特定备份 - 立即备份优先使用后端触发,回退直传 WebDAV - 修复保存设置时后端不可用误报成功 - 修复上次备份时间取旧值的问题
Refactor backup settings and unify panel button styles
fix: 保存自动备份前置同步 WebDAV、恢复兼容后端格式、文件名加时间戳
fix: WebDAV 配置激活后 isActive 字段未同步,导致自动备份校验失败
fix: Release已读状态跨设备同步 + 仓库四字段持久化 - store markReleaseAsRead/markAllReleasesAsRead 同步设置 is_read - backendAdapter 添加 markReleaseAsRead/markAllReleasesAsRead 调用后端 - ReleaseTimeline onMarkAsRead fire-and-forget 推送后端 - autoSync 拉取时合并后端 is_read 到本地 readReleases Set - DB migration v2 添加 forks_count/forks/last_release_fetch_time/has_fetched_releases - repositories 路由 transformRepo/PUT/PATCH 支持新四字段 @
|
Caution Review failedPull request was closed or merged during review Warning Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories. 📝 WalkthroughWalkthroughAdds backend analysis batches and auto-backup services with routes/scheduler, DB/schema/type changes, frontend pivot to backend-first workflows (analysis, sync, forks, releases, backup), proxy endpoints (translate/WebDAV), CI/docker/version updates, and extensive skills/docs. ChangesEnd-to-end backend-first analysis/backup and frontend integration
Sequence Diagram(s)sequenceDiagram
participant Frontend (UI)
participant Backend Adapter
participant Analysis Routes
participant Analysis Service
Frontend (UI)->>Backend Adapter: Start batch analysis (repoIds, configId, lang, categories)
Backend Adapter->>Analysis Routes: POST /api/analysis/batch
Analysis Routes->>Analysis Service: createBatch -> run
loop Poll progress
Frontend (UI)->>Backend Adapter: Get batch status
Backend Adapter->>Analysis Routes: GET /api/analysis/batch/:id
end
Frontend (UI)->>Backend Adapter: Cancel (if needed)
Backend Adapter->>Analysis Routes: POST /api/analysis/batch/:id/cancel
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Warning |
@
Summary
Changes
前端
markReleaseAsRead/markAllReleasesAsRead同步设置is_read到 Release 对象backendAdapter添加markReleaseAsRead/markAllReleasesAsRead方法ReleaseTimelinefire-and-forget 调用后端标记已读autoSync拉取时合并后端is_read到本地readReleasesSet后端
transformRepo/PUT/PATCH 支持新四字段Test plan
@
Summary by CodeRabbit
New Features
Improvements
Chores