From 7260f402d33090677b6bfd51b04609e25cde7b74 Mon Sep 17 00:00:00 2001 From: cbb Date: Tue, 13 Oct 2026 19:50:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20v1.1.2=20=E2=80=94=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E6=94=B9=E7=89=88=EF=BC=9A=E8=A7=A3=E9=87=8A=20SSH=20?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E4=B8=BA=E4=BD=95=E4=B8=8D=E8=83=BD=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=BB=BA=E5=BA=93=20+=20=E6=8E=92=E7=89=88=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 顶部新增提示横幅:当前账号无 Token 时说明「GitHub 创建仓库接口只认 Token 认证,SSH 私钥只能推已存在的仓库」,并给出「去添加 Token」入口 - 账号表格:「不支持」改为「需 Token」徽章(带悬停说明),推送方式改用 徽章区分(Token·HTTPS / SSH 私钥),自动建库显示 私有/公开 徽章 - 每个 SSH 账号行新增「添加 Token」按钮:一键预填添加表单并聚焦 - 排版优化:表单加字段标签、开关/间隔收进选项框、表格列宽/悬停/操作列对齐 - manifest 1.1.1 → 1.1.2 --- GiteaHubSync/app/backend/panel.py | 142 +++++++++++++++++++++--------- GiteaHubSync/manifest | 2 +- 2 files changed, 101 insertions(+), 43 deletions(-) diff --git a/GiteaHubSync/app/backend/panel.py b/GiteaHubSync/app/backend/panel.py index 9e6d723..5acf757 100644 --- a/GiteaHubSync/app/backend/panel.py +++ b/GiteaHubSync/app/backend/panel.py @@ -660,6 +660,32 @@ pre{background:#0d1117;color:#c9d1d9;border-radius:10px;padding:14px;font-size:1 input[type=checkbox]{accent-color:#7c3aed;cursor:pointer} .addrow input[type=password]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.5px} td .pill{font-size:12px} +/* ---------- 设置页 ---------- */ +h2 .h2sub{font-size:12px;font-weight:400;color:#8a919e;margin-left:10px} +.banner{border-radius:10px;padding:12px 16px;font-size:13px;line-height:1.75;margin-bottom:14px;display:flex;gap:10px;align-items:flex-start} +.banner.warn{background:#fffaeb;border:1px solid #fec84b;color:#92400e} +.banner .ic{font-size:16px;line-height:1.5;flex:none} +.badge{display:inline-block;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap;line-height:1.5} +.badge.b-ok{background:#e3f5e9;color:#0a7d34} +.badge.b-warn{background:#fef0c7;color:#b45309} +.badge.b-mute{background:#f0f2f5;color:#646a73} +.badge.b-info{background:#e8f0fe;color:#1f6feb} +.flabel{display:block;font-size:13px;font-weight:600;color:#374151;margin:16px 0 6px} +.flabel:first-child{margin-top:0} +.flabel .sub{font-weight:400;color:#8a919e;font-size:12px;margin-left:8px} +.chk{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;padding:4px 0} +.chk input{width:18px;height:18px} +.optbox{background:#f6f8fa;border-radius:10px;padding:6px 16px;margin-top:16px} +.optrow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0} +.optrow+.optrow{border-top:1px solid #eef0f3} +.opttext{flex:1;min-width:200px} +.opttext .swlabel{font-size:14px;font-weight:600} +.opttext .swsub{font-size:12px;color:#646a73;margin-top:2px;line-height:1.6} +.numin{flex:none;width:110px;border:1px solid #d0d5dd;border-radius:10px;padding:10px 12px;font-size:14px;outline:none;text-align:center} +.numin:focus{border-color:#7c3aed} +table.hover tbody tr:hover{background:#f8fafc} +td.ops{white-space:nowrap} +td.ops button,td.ops .pill{margin:2px 4px 2px 0} /* ---------- 窄屏(手机 / 飞牛桌面小窗口):表格转卡片 ---------- */ @media (max-width:760px){ .wrap{padding:14px 10px 40px} @@ -899,30 +925,30 @@ refresh();setInterval(refresh,5000); PAGE_SETTINGS = """
-

GitHub 账号(推送目标)

+

GitHub 账号推送目标 · 可添加多个,随时切换

+
- - +
备注GitHub 用户名Token推送方式新建仓库操作
+ +
备注GitHub 用户名Token推送方式自动建库操作
-
切换账号后,所有项目改推到该账号名下;每个账号独立记录同步进度,切回原账号不会重复推送。无 Token 的旧账号通过 SSH 私钥推送,无法自动创建仓库。
+
切换账号后,所有项目改推到该账号名下;每个账号独立记录同步进度,切回原账号不会重复推送。
-

添加 / 更新 GitHub 账号

-
- - +

添加 / 更新 GitHub 账号Token 验证通过后自动识别用户名

+ +
+ +
+ +
+ +
+
-
- -
-
- -
-
+
@@ -935,24 +961,33 @@ PAGE_SETTINGS = """

Gitea 与同步设置

+
- - +
-
面板按此用户名列出你可添加同步的 Gitea 仓库(本地 Gitea 地址 __GITEAURL__)。 - 密码只保存在 NAS 本地,仅用于读取私有仓库;仓库全部公开可留空,留空保存可清除已存密码。
-
- -
-
GitHub 上不存在同名仓库时自动创建
-
需要当前账号已配置 Token;关闭后添加不存在的仓库会提示手动创建
-
+ +
+ +
-
- - - +
本地 Gitea 地址 __GITEAURL__;密码只保存在 NAS 本地,仅用于读取私有仓库。
+
+
+ +
+
GitHub 上不存在同名仓库时自动创建
+
需要当前账号已配置 Token;关闭后添加不存在的仓库会提示手动创建
+
+
+
+ + +
+
同步间隔(秒)
+
+
+
@@ -967,26 +1002,49 @@ async function refresh(){ document.getElementById('giteaPass').placeholder=s.gitea_pass_set ?'Gitea 密码(已设置;留空保存可清除)':'Gitea 密码(私有仓库必填)'; document.getElementById('swAuto').checked=!!s.auto_create; - document.getElementById('syncInterval').value=s.interval||10; - document.getElementById('syncInterval').min=s.min_interval||5; - document.getElementById('syncInterval').max=s.max_interval||86400; + const iv=document.getElementById('syncInterval'); + iv.value=s.interval||10;iv.min=s.min_interval||5;iv.max=s.max_interval||86400; document.getElementById('intervalTip').textContent='每隔 '+fmtInterval(s.interval||10)+' 检查一次 Gitea 是否有新提交('+(s.min_interval||5)+'~'+(s.max_interval||86400)+' 秒),改完立即生效'; + const cur=(s.accounts||[]).find(a=>a.id===s.active); + // 当前账号无 Token 时,顶部提示为什么不能自动建库、怎么解锁 + document.getElementById('accBanner').innerHTML=(cur&&!cur.has_token) + ?`` + :''; document.getElementById('tbAcc').innerHTML=(s.accounts||[]).map(a=>{ - const cur=a.id===s.active; - const ops=cur - ? '当前使用' + const isCur=a.id===s.active; + const ops=isCur + ? '当前使用' : ``; const verify=a.has_token?``:''; - const del=a.has_token||(s.accounts||[]).length>1 + const upgrade=a.has_token?'':``; + const del=(a.has_token||(s.accounts||[]).length>1) ? ``:''; - return `${esc(a.label)}${esc(a.gh_user)}` + const method=a.has_token + ?'Token · HTTPS' + :'SSH 私钥'; + const create=a.has_token + ?`${a.private?'私有':'公开'}` + :'需 Token'; + return `${esc(a.label)}${esc(a.gh_user)}` +`${esc(a.token||'(未配置)')}` - +`${a.has_token?'Token(HTTPS)':'SSH 私钥'}` - +`${a.has_token?(a.private?'私有':'公开'):'不支持'}` - +`${ops} ${verify} ${del}`; + +`${method}` + +`${create}` + +`${ops} ${verify} ${upgrade} ${del}`; }).join('')||'暂无账号'; }catch(e){showMsg('msgAcc','刷新失败: '+e,false)} } +function upgradeAcc(id,ghUser){ + // 预填「添加/更新账号」表单并滚动过去,引导给旧账号补 Token + document.getElementById('accLabel').value=''; + document.getElementById('accUser').value=ghUser||''; + document.getElementById('accToken').value=''; + document.getElementById('accToken').focus(); + document.getElementById('accToken').scrollIntoView({behavior:'smooth',block:'center'}); + showMsg('msgAcc','已为你填好用户名 '+ghUser+',把 Token 粘贴进去点「验证并添加」即可(会更新原账号)',true); +} async function addAccount(){ const label=document.getElementById('accLabel').value.trim(); const gh_user=document.getElementById('accUser').value.trim(); diff --git a/GiteaHubSync/manifest b/GiteaHubSync/manifest index ef752d6..029dbe3 100644 --- a/GiteaHubSync/manifest +++ b/GiteaHubSync/manifest @@ -1,5 +1,5 @@ appname = GiteaHubSync -version = 1.1.1 +version = 1.1.2 display_name = Gitea→GitHub 同步助手 desc = 每次推送到飞牛 Gitea 的代码,10 秒内自动镜像到 GitHub 的 7 个私有仓库。内置控制面板:自动同步开关、立即同步、仓库状态、同步日志,一键打开 Gitea。数据全部保存在 NAS 本地。 platform = all