cbb
|
ca2fb7e735
|
feat: v1.5.0 — GitHub 账号添加/编辑改为弹窗式(带✏️编辑按钮)
- 「添加 GitHub 账号」改为卡片里的按钮,点击弹出填写弹窗
(模态:备注/用户名/Token/私有,含取消/验证并添加/ESC/点背景关闭)
- 表格每行新增 ✏️ 编辑按钮:弹出编辑弹窗,预填当前值
(Token 字段空着+占位符显示当前掩码,留空则保留原 Token,
只改备注/私有时无需重新输入 Token)
- 后端新增 /api/accounts/edit 端点(按 id 改备注/私有/Token),
add 改为严格新增(gh_user 重复则拒绝并引导用编辑功能)
- 顶部横幅「去添加 Token」直接打开当前账号的编辑弹窗并聚焦 Token
- 移除了原来表内的「添加 Token」按钮(编辑弹窗已覆盖该流程)
- manifest 1.4.1 → 1.5.0
|
2026-10-15 01:03:47 +08:00 |
|
cbb
|
43b4d757bb
|
feat: v1.4.1 — 数值设置改动即生效,去掉保存按钮
- 同步间隔/并发数/重试次数三个数值输入改 onchange 自动保存:
改完失焦或按回车即生效并显示「✓ 已生效」(2 秒后淡出),
不再需要点保存按钮
- 非法值(超范围/非数字)自动回滚成服务器值并红字提示原因
- 防重复保存:值没变不触发请求;空值前端拦截不发请求
- 修复 saveInterval 等包装函数未 return 内部 Promise 导致调用方
无法等待保存完成的问题
- manifest 1.4.0 → 1.4.1
|
2026-10-13 21:58:18 +08:00 |
|
cbb
|
62f059921d
|
feat: v1.4.0 — 同步失败自动重试(每 60s 一次,次数可调默认 5)
- 独立重试线程:整轮同步有仓库失败时,把失败仓库排入重试队列,
每隔 60 秒并行重试一次(复用并行度设置),与同步间隔无关——
即使同步间隔是 1 天,网络抖动也能在几分钟内自愈
- 重试计数:每个仓库连续失败计数,达到上限(默认 5,可调 0~20,
0=不重试)后放弃并记日志,等下一轮同步或手动同步再次尝试;
手动同步成功立即退出重试队列;被其他同步占用(busy)不计次数
- 设置页新增「失败重试次数」;状态页新增「失败重试」统计卡片,
重试中的仓库显示「⏳ 重试中 x/N」;日志记录排程/重试/放弃全过程
- 修复 retry_next_at 缺少 global 声明导致重试每 2 秒空转的 bug
(线上实测发现:next_in 显示 0 而非 60)
- manifest 1.3.0 → 1.4.0
|
2026-10-13 20:32:46 +08:00 |
|
cbb
|
1acd60894f
|
feat: v1.3.0 — 多项目同时同步(并行度可调 1~8,默认 3)
- run_sync 改线程池并行:每轮最多 N 个项目同时克隆/推送,项目多时
显著缩短单轮耗时(实测 6 个仓库 3 并发 3 倍加速)
- 按仓库防重入:同一仓库同时只允许一个同步,后到者提示
「该仓库正在同步中,请稍候」,避免并发 git 操作损坏镜像
- 状态页单仓库「同步」按钮不再被整轮同步全局拦截(旧版报
「已有同步任务正在进行」),与进行中的整轮真正并行
- 新增「同时同步项目数」设置(1~8),设置页可调,立即生效
- 统计计数与日志写入加锁,修正并行下的计数漂移与日志交错风险
- 首页/状态页显示当前并行数;manifest 1.2.0 → 1.3.0
|
2026-10-13 20:14:57 +08:00 |
|
cbb
|
870612ff93
|
feat: v1.2.0 — Gitea 地址可更改(默认 http://127.0.0.1:3000)
- 设置页新增「Gitea 地址」输入:同步引擎的 API/克隆/拉取全部改用该地址,
适配 Gitea 换了端口或部署在别处的场景
- 地址规范化:自动补 http://、去尾部斜杠,校验 scheme/主机名,非法值明确拒绝
- 保存前探测连通性(/api/v1/version),连不上拒绝保存并提示
- 改地址后自动把已有镜像仓库的 origin 重指到新地址,无需重新克隆
- 「打开 Gitea」按钮随设置端口 + 访问面板的主机名自适应(不再写死 3000)
- 改地址/用户名不再误清 Gitea 密码(密码仅在密码行保存时提交)
- 启动日志记录当前 Gitea 地址,便于排障
- manifest 1.1.2 → 1.2.0
|
2026-10-13 19:59:45 +08:00 |
|
cbb
|
7260f402d3
|
fix: v1.1.2 — 设置页改版:解释 SSH 账号为何不能自动建库 + 排版优化
- 顶部新增提示横幅:当前账号无 Token 时说明「GitHub 创建仓库接口只认
Token 认证,SSH 私钥只能推已存在的仓库」,并给出「去添加 Token」入口
- 账号表格:「不支持」改为「需 Token」徽章(带悬停说明),推送方式改用
徽章区分(Token·HTTPS / SSH 私钥),自动建库显示 私有/公开 徽章
- 每个 SSH 账号行新增「添加 Token」按钮:一键预填添加表单并聚焦
- 排版优化:表单加字段标签、开关/间隔收进选项框、表格列宽/悬停/操作列对齐
- manifest 1.1.1 → 1.1.2
|
2026-10-13 19:50:46 +08:00 |
|
cbb
|
6661354bfa
|
fix: 安装脚本版本号改为从 manifest 动态读取,避免升级后忘记改硬编码
|
2026-10-13 19:43:51 +08:00 |
|
cbb
|
3ec3fd01c0
|
feat: v1.1.1 — 同步间隔可调(5 秒 ~ 1 天,默认 10 秒,改完立即生效)
- 间隔存入 settings.json,带范围校验(5~86400 秒),非法值明确拒绝
- 设置页新增「同步间隔」输入框,附人性化时长提示(秒/分钟/小时)
- 同步循环每轮读取最新间隔,保存后下一轮生效,无需重启
- 首页/状态页的间隔文案改为动态显示(原来硬编码 10 秒)
- manifest 1.1.0 → 1.1.1
|
2026-10-13 19:37:06 +08:00 |
|
cbb
|
6dcd246567
|
feat: v1.1.0 — GitHub 多账号切换 + 自动创建仓库 + 私有 Gitea 仓库支持
面向大众使用的三项核心能力:
1. GitHub 多账号(设置页)
- 添加多个 GitHub 账号(用户名 + Personal Access Token),一键切换推送目标
- Token 自动识别账号名;添加时先调 /user 验证,失败给出明确原因
- 每个账号独立记录同步进度(状态目录 .last-pushed/<账号>/<仓库>),
切回原账号不会重复推送
- 旧版「默认(SSH 私钥)」账号自动迁移生成,升级后行为不变;
首次添加 Token 账号会自动切换
2. 自动创建 GitHub 仓库
- 添加/同步时 GitHub 上不存在同名仓库,自动按账号设置建为私有/公开
- 「自动创建」可开关;无 Token 时提示去设置页配置
3. 私有 Gitea 仓库支持
- 设置页新增 Gitea 用户名/密码;密码经 git credential store 文件
(.gitcreds,600)供 clone/fetch 使用,镜像仓库 remote 不落密码
- API 查询同步改用 Basic Auth,私有仓库可被列出和克隆
其他:
- 首页/状态页显示当前 GitHub 目标账号与推送方式
- GitHub Token、Gitea 密码在日志和报错中自动打码
- accounts.json / settings.json / .gitcreds 均 600 权限
- manifest 版本 1.0.0 → 1.1.0,README 补充大众用法说明
|
2026-10-13 19:30:18 +08:00 |
|
cbb
|
4d6f71af5b
|
feat: GiteaHubSync v1.0.0 — fnOS 原生应用:Gitea→GitHub 镜像同步
- 每次推送到飞牛 Gitea(3000 端口)的代码 10 秒内自动镜像到 GitHub 7 个私有仓库
(SMB_Android / DCU_APP / GD32E50X_BOOT / DCU_DesktopController / Motor_v2 /
DCU_ECAT_Master / GD32_BOOT),真镜像语义(删分支/标签同步删)
- 标准 .fpk 原生应用:不进 Docker,依赖 python312,安装后进入应用中心已安装列表
和桌面启动台,支持启动/停止/重启/卸载,NAS 重启自动恢复
- 控制面板(:8899):自动同步开关、立即同步、仓库状态、同步日志、打开 Gitea
- GitHub 推送走 SSH 22 端口直连(HTTPS 443 本地网络被断),部署私钥随应用本地分发
- 附 fnos-install.js(命令行自动安装)、build.sh(重新构建 fpk)、genicon.py(图标生成)
注意:GitHub 部署私钥(GiteaHubSync/app/ssh/id_ed25519)与打包产物 .fpk
按 .gitignore 规则不进仓库,仅保留在工作目录本地分发。
|
2026-10-13 19:12:49 +08:00 |
|