creditdaddy 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build.json +8 -0
- package/package.json +5 -3
- package/src/buildInfo.js +32 -0
- package/src/daemon.js +5 -1
- package/src/i18n/en.json +4 -0
- package/src/i18n/ja.json +4 -0
- package/src/i18n/ko.json +4 -0
- package/src/i18n/zh-TW.json +4 -0
- package/src/panel.html +8 -3
package/build.json
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "creditdaddy",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "CreditDaddy — Qoder / WorkBuddy / ZCode / mirasim / 妙手 / Trae / MiniMax 多账号本地管理与每日积分自动签到助手",
|
|
5
5
|
"homepage": "https://github.com/techysy/CreditDaddy",
|
|
6
6
|
"repository": {
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"bin",
|
|
16
16
|
"src",
|
|
17
17
|
"README.md",
|
|
18
|
-
"LICENSE"
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"build.json"
|
|
19
20
|
],
|
|
20
21
|
"engines": {
|
|
21
22
|
"node": ">=20"
|
|
@@ -23,7 +24,8 @@
|
|
|
23
24
|
"scripts": {
|
|
24
25
|
"start": "node bin/creditdaddy.js daemon",
|
|
25
26
|
"test": "node --test",
|
|
26
|
-
"release-check": "bash scripts/release-check.sh"
|
|
27
|
+
"release-check": "bash scripts/release-check.sh",
|
|
28
|
+
"prepack": "node scripts/gen-build-info.js build.json"
|
|
27
29
|
},
|
|
28
30
|
"license": "MIT",
|
|
29
31
|
"devDependencies": {
|
package/src/buildInfo.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** 构建身份(#21):读随包 build.json 与「同版本新构建」平局裁决。 */
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 读包根的 build.json(scripts/gen-build-info.js 生成)。文件不存在 / 损坏 → null,
|
|
9
|
+
* 调用方一律按「无构建身份」回退(不展示、不参与更新判定)。
|
|
10
|
+
*/
|
|
11
|
+
export function loadBuildInfo(baseDir) {
|
|
12
|
+
const root = baseDir || path.join(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
13
|
+
try {
|
|
14
|
+
const b = JSON.parse(fs.readFileSync(path.join(root, 'build.json'), 'utf8'));
|
|
15
|
+
if (!b || typeof b.commit !== 'string') return null;
|
|
16
|
+
return b;
|
|
17
|
+
} catch { return null; }
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* semver 相等时的平局裁决:线上是「同版本但更新的构建」吗?
|
|
22
|
+
* 仅在双侧都有构建身份、commit 不同、builtAt 更晚,且本机是 release 渠道时成立;
|
|
23
|
+
* 本地 dev / dirty / 缺元数据一律 false(永不误报「你有旧版」)。
|
|
24
|
+
*/
|
|
25
|
+
export function isNewerRebuild(installed, released) {
|
|
26
|
+
if (!installed || !released) return false;
|
|
27
|
+
if (installed.channel !== 'release') return false;
|
|
28
|
+
if (!installed.commit || !released.commit || installed.commit === released.commit) return false;
|
|
29
|
+
const tNew = Date.parse(released.builtAt || '');
|
|
30
|
+
const tOld = Date.parse(installed.builtAt || '');
|
|
31
|
+
return Number.isFinite(tNew) && Number.isFinite(tOld) && tNew > tOld;
|
|
32
|
+
}
|
package/src/daemon.js
CHANGED
|
@@ -54,6 +54,7 @@ import { addAccount, importAccounts, refreshContext } from './accounts.js';
|
|
|
54
54
|
import { productImpl } from './providers.js';
|
|
55
55
|
import { readWorkbuddySessions, writeWorkbuddySession, workbuddyAuthDir, currentWorkbuddyUid } from './workbuddyLocal.js';
|
|
56
56
|
import { refreshWorkbuddyToken } from './workbuddyClient.js';
|
|
57
|
+
import { loadBuildInfo } from './buildInfo.js';
|
|
57
58
|
import { liveToAccount as zcodeLiveAccount, switchTo as zcodeSwitchTo, currentZcodeUid, currentZcodeIdentity, detectZcode, ensureVirtualDeviceMid, terminateZcode, zcodeRunning } from './zcodeLocal.js';
|
|
58
59
|
import { liveToAccount as mirasimLiveAccount, switchTo as mirasimSwitchTo, currentMirasimUid, detectMirasim, terminateMirasim, mirasimRunning } from './mirasimLocal.js';
|
|
59
60
|
import { liveToAccount as catpawLiveAccount, switchTo as catpawSwitchTo, currentCatpawToken, detectCatpaw, terminateCatpaw } from './catpawLocal.js';
|
|
@@ -251,7 +252,9 @@ export function rejectForeignRequest(headers, bindHost) {
|
|
|
251
252
|
*/
|
|
252
253
|
async function handleSettingsPut(res, body) {
|
|
253
254
|
if (body?.disable === true) {
|
|
254
|
-
|
|
255
|
+
// 明文与 scrypt 哈希一起清——漏清 panelKeyHash 的话 initPanelKey 重读又把模式拉回 hash,
|
|
256
|
+
// 「关闭」永不生效,还会误报成「部署环境强制注入」。
|
|
257
|
+
await saveSettings({ panelKey: '', panelKeyHash: '' });
|
|
255
258
|
await initPanelKey(); // 环境变量部署(fnOS)下关闭后仍保留安装向导密码
|
|
256
259
|
logger.warn('DAEMON', panelKeyRequired() ? '面板访问密码已在设置里关闭,但部署环境仍注入密码(保持开启)' : '面板访问密码已关闭(导出账号仍需加密口令)', {});
|
|
257
260
|
return json(res, 200, { ok: true, panelKeyEnabled: panelKeyRequired() });
|
|
@@ -989,6 +992,7 @@ async function handleApi(req, res, url) {
|
|
|
989
992
|
ok: true,
|
|
990
993
|
app: 'CreditDaddy',
|
|
991
994
|
version: APP_VERSION,
|
|
995
|
+
build: loadBuildInfo() || undefined, // #21 构建身份(打包产物才有;无文件不返回该键)
|
|
992
996
|
homepage: PROJECT_URL,
|
|
993
997
|
accountsCount: accounts.length,
|
|
994
998
|
dataDir: dataDir(),
|
package/src/i18n/en.json
CHANGED
|
@@ -274,6 +274,7 @@
|
|
|
274
274
|
"/gateway/trae/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/trae/v1/messages</code> (replace 127.0.0.1 with this machine's IP when LAN access is enabled)",
|
|
275
275
|
"/gateway/zcode/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/zcode/v1/messages</code> (replace 127.0.0.1 with this machine's IP when LAN access is enabled)",
|
|
276
276
|
"</b> 个可用": "</b> available",
|
|
277
|
+
"</b>——可能包含修复,可直接下载安装覆盖当前构建。</div>": "</b> — it may include fixes; you can download and install it over the current build.</div>",
|
|
277
278
|
"</b>(": "</b> (",
|
|
278
279
|
"</span>一切正常": "</span>All normal",
|
|
279
280
|
"<br>尚未有调用": "<br>No calls yet",
|
|
@@ -314,6 +315,7 @@
|
|
|
314
315
|
"<div class=\"hint\"><span class=\"dot on\"></span> 已是最新版本(": "<div class=\"hint\"><span class=\"dot on\"></span> Up to date (",
|
|
315
316
|
"<div class=\"hint\">当前环境不支持应用内更新(开发模式 / Portable / 未签名的 macOS 版),请从 GitHub Releases 手动下载。</div>": "<div class=\"hint\">In-app updates are not supported in this environment (dev mode / Portable / unsigned macOS build). Please download manually from GitHub Releases.</div>",
|
|
316
317
|
"<div class=\"hint\">发现新版本 <b>v": "<div class=\"hint\">New version available <b>v",
|
|
318
|
+
"<div class=\"hint\">检测到同版本新构建 <b>v": "<div class=\"hint\">Newer build of the same version detected: <b>v",
|
|
317
319
|
"<div class=\"hint\">开启后每次打开面板都需要输入密码;密码可随时在此修改或关闭。": "<div class=\"hint\">Once enabled, the password is required every time the panel opens; you can change or turn it off here at any time.",
|
|
318
320
|
"<div class=\"hint\">填 10Router 的地址和一个<b>虚拟 key</b>(10Router 仪表盘 → API Keys 创建的 sk-…),就能在这里:</div>": "<div class=\"hint\">Enter the 10Router address and a <b>virtual key</b> (an sk-... created under API Keys in the 10Router dashboard), and you can do the following here:</div>",
|
|
319
321
|
"<div class=\"hint\">未发现已登录的 ": "<div class=\"hint\">No signed-in ",
|
|
@@ -675,6 +677,7 @@
|
|
|
675
677
|
"监听 0.0.0.0 且未设置 CREDITDADDY_PASSWORD —— 局域网内任何人可访问账号 API,建议设置访问密钥": "Listening on 0.0.0.0 without CREDITDADDY_PASSWORD set — anyone on the LAN can access the account API; set an access key",
|
|
676
678
|
"监听失败:{msg}": "Listen failed: {msg}",
|
|
677
679
|
"检测到本机客户端已轮换凭据,改用最新 refreshToken 刷新…": "Local client rotated credentials; refreshing with the latest refreshToken…",
|
|
680
|
+
"检测到同版本新构建 v{v}({commit}),可能包含修复,建议更新。": "A newer build of the same version v{v} ({commit}) was detected — it may include fixes; updating is recommended.",
|
|
678
681
|
"检查更新": "Check for updates",
|
|
679
682
|
"检查更新…": "Check for updates…",
|
|
680
683
|
"简体中文": "Simplified Chinese",
|
|
@@ -1074,6 +1077,7 @@
|
|
|
1074
1077
|
"下载 {pkg}@{version}({registry})": "Downloading {pkg}@{version} ({registry})",
|
|
1075
1078
|
"下载并安装新版本 v{v}…": "Download and install v{v}…",
|
|
1076
1079
|
"下载内容与 npm integrity 不一致": "Downloaded content does not match npm integrity",
|
|
1080
|
+
"下载同版本新构建…": "Download newer build of same version…",
|
|
1077
1081
|
"显示": "Display",
|
|
1078
1082
|
"项目主页": "Project home",
|
|
1079
1083
|
"项目主页(GitHub)": "Project homepage (GitHub)",
|
package/src/i18n/ja.json
CHANGED
|
@@ -274,6 +274,7 @@
|
|
|
274
274
|
"/gateway/trae/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/trae/v1/messages</code>(LAN 開放時は 127.0.0.1 をこのマシンの IP に置き換え)",
|
|
275
275
|
"/gateway/zcode/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/zcode/v1/messages</code>(LAN 開放時は 127.0.0.1 をこのマシンの IP に置き換え)",
|
|
276
276
|
"</b> 个可用": "</b> 個利用可能",
|
|
277
|
+
"</b>——可能包含修复,可直接下载安装覆盖当前构建。</div>": "</b>——修正が含まれる可能性があります。ダウンロードして現在のビルドに上書きインストールできます。</div>",
|
|
277
278
|
"</b>(": "</b>(",
|
|
278
279
|
"</span>一切正常": "</span>すべて正常",
|
|
279
280
|
"<br>尚未有调用": "<br>呼び出しはまだありません",
|
|
@@ -314,6 +315,7 @@
|
|
|
314
315
|
"<div class=\"hint\"><span class=\"dot on\"></span> 已是最新版本(": "<div class=\"hint\"><span class=\"dot on\"></span> 最新バージョンです(",
|
|
315
316
|
"<div class=\"hint\">当前环境不支持应用内更新(开发模式 / Portable / 未签名的 macOS 版),请从 GitHub Releases 手动下载。</div>": "<div class=\"hint\">この環境ではアプリ内アップデートに対応していません(開発モード / Portable / 署名なしの macOS 版)。GitHub Releases から手動でダウンロードしてください。</div>",
|
|
316
317
|
"<div class=\"hint\">发现新版本 <b>v": "<div class=\"hint\">新しいバージョンがあります <b>v",
|
|
318
|
+
"<div class=\"hint\">检测到同版本新构建 <b>v": "<div class=\"hint\">同一バージョンの新しいビルドを検出: <b>v",
|
|
317
319
|
"<div class=\"hint\">开启后每次打开面板都需要输入密码;密码可随时在此修改或关闭。": "<div class=\"hint\">有効にすると、パネルを開くたびにパスワードが必要になります。ここからいつでも変更またはオフにできます。",
|
|
318
320
|
"<div class=\"hint\">填 10Router 的地址和一个<b>虚拟 key</b>(10Router 仪表盘 → API Keys 创建的 sk-…),就能在这里:</div>": "<div class=\"hint\">10Router のアドレスと<b>仮想キー</b>(10Router ダッシュボード → API Keys で作成した sk-...)を入力すると、ここで次のことができます:</div>",
|
|
319
321
|
"<div class=\"hint\">未发现已登录的 ": "<div class=\"hint\">ログイン済みの ",
|
|
@@ -675,6 +677,7 @@
|
|
|
675
677
|
"监听 0.0.0.0 且未设置 CREDITDADDY_PASSWORD —— 局域网内任何人可访问账号 API,建议设置访问密钥": "0.0.0.0 で待ち受けていますが CREDITDADDY_PASSWORD が未設定です。LAN 内の誰でもアカウント API にアクセスできるため、アクセスキーの設定を推奨します",
|
|
676
678
|
"监听失败:{msg}": "リッスン失敗:{msg}",
|
|
677
679
|
"检测到本机客户端已轮换凭据,改用最新 refreshToken 刷新…": "ローカルクライアントが資格情報をローテーションしました。最新の refreshToken で更新中…",
|
|
680
|
+
"检测到同版本新构建 v{v}({commit}),可能包含修复,建议更新。": "同一バージョンの新しいビルド v{v}({commit})が検出されました。修正が含まれる可能性があります。更新をお勧めします。",
|
|
678
681
|
"检查更新": "アップデートを確認",
|
|
679
682
|
"检查更新…": "更新を確認…",
|
|
680
683
|
"简体中文": "简体中文",
|
|
@@ -1074,6 +1077,7 @@
|
|
|
1074
1077
|
"下载 {pkg}@{version}({registry})": "{pkg}@{version} をダウンロード中({registry})",
|
|
1075
1078
|
"下载并安装新版本 v{v}…": "新バージョン v{v} をダウンロードしてインストール…",
|
|
1076
1079
|
"下载内容与 npm integrity 不一致": "ダウンロード内容が npm integrity と一致しません",
|
|
1080
|
+
"下载同版本新构建…": "同一バージョンの新ビルドをダウンロード…",
|
|
1077
1081
|
"显示": "表示",
|
|
1078
1082
|
"项目主页": "プロジェクトページ",
|
|
1079
1083
|
"项目主页(GitHub)": "プロジェクトホーム (GitHub)",
|
package/src/i18n/ko.json
CHANGED
|
@@ -274,6 +274,7 @@
|
|
|
274
274
|
"/gateway/trae/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/trae/v1/messages</code>(LAN 개방 시 127.0.0.1을 이 컴퓨터의 IP로 변경)",
|
|
275
275
|
"/gateway/zcode/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/zcode/v1/messages</code>(LAN 개방 시 127.0.0.1을 이 컴퓨터의 IP로 변경)",
|
|
276
276
|
"</b> 个可用": "</b>개 사용 가능",
|
|
277
|
+
"</b>——可能包含修复,可直接下载安装覆盖当前构建。</div>": "</b> — 수정이 포함되었을 수 있습니다. 다운로드하여 현재 빌드 위에 설치할 수 있습니다.</div>",
|
|
277
278
|
"</b>(": "</b> (",
|
|
278
279
|
"</span>一切正常": "</span>모두 정상",
|
|
279
280
|
"<br>尚未有调用": "<br>호출 없음",
|
|
@@ -314,6 +315,7 @@
|
|
|
314
315
|
"<div class=\"hint\"><span class=\"dot on\"></span> 已是最新版本(": "<div class=\"hint\"><span class=\"dot on\"></span> 최신 버전입니다(",
|
|
315
316
|
"<div class=\"hint\">当前环境不支持应用内更新(开发模式 / Portable / 未签名的 macOS 版),请从 GitHub Releases 手动下载。</div>": "<div class=\"hint\">이 환경에서는 앱 내 업데이트를 지원하지 않습니다(개발 모드 / Portable / 서명되지 않은 macOS 빌드). GitHub Releases에서 수동으로 다운로드하세요.</div>",
|
|
316
317
|
"<div class=\"hint\">发现新版本 <b>v": "<div class=\"hint\">새 버전 사용 가능 <b>v",
|
|
318
|
+
"<div class=\"hint\">检测到同版本新构建 <b>v": "<div class=\"hint\">같은 버전의 새 빌드 감지: <b>v",
|
|
317
319
|
"<div class=\"hint\">开启后每次打开面板都需要输入密码;密码可随时在此修改或关闭。": "<div class=\"hint\">켜면 패널을 열 때마다 비밀번호가 필요합니다. 여기서 언제든지 변경하거나 끌 수 있습니다.",
|
|
318
320
|
"<div class=\"hint\">填 10Router 的地址和一个<b>虚拟 key</b>(10Router 仪表盘 → API Keys 创建的 sk-…),就能在这里:</div>": "<div class=\"hint\">10Router 주소와 <b>가상 키</b>(10Router 대시보드 → API Keys에서 만든 sk-...)를 입력하면 여기서 다음을 할 수 있습니다:</div>",
|
|
319
321
|
"<div class=\"hint\">未发现已登录的 ": "<div class=\"hint\">로그인된 ",
|
|
@@ -675,6 +677,7 @@
|
|
|
675
677
|
"监听 0.0.0.0 且未设置 CREDITDADDY_PASSWORD —— 局域网内任何人可访问账号 API,建议设置访问密钥": "CREDITDADDY_PASSWORD 없이 0.0.0.0에서 수신 중입니다. 같은 LAN의 누구나 계정 API에 접근할 수 있으니 접근 키를 설정하세요",
|
|
676
678
|
"监听失败:{msg}": "리슨 실패: {msg}",
|
|
677
679
|
"检测到本机客户端已轮换凭据,改用最新 refreshToken 刷新…": "로컬 클라이언트가 자격 증명을 교체했습니다. 최신 refreshToken으로 갱신 중…",
|
|
680
|
+
"检测到同版本新构建 v{v}({commit}),可能包含修复,建议更新。": "같은 버전의 새 빌드 v{v}({commit})가 감지되었습니다. 수정이 포함되었을 수 있으니 업데이트를 권장합니다.",
|
|
678
681
|
"检查更新": "업데이트 확인",
|
|
679
682
|
"检查更新…": "업데이트 확인…",
|
|
680
683
|
"简体中文": "简体中文",
|
|
@@ -1074,6 +1077,7 @@
|
|
|
1074
1077
|
"下载 {pkg}@{version}({registry})": "{pkg}@{version} 다운로드 중 ({registry})",
|
|
1075
1078
|
"下载并安装新版本 v{v}…": "새 버전 v{v} 다운로드 및 설치…",
|
|
1076
1079
|
"下载内容与 npm integrity 不一致": "다운로드 내용이 npm integrity와 일치하지 않습니다",
|
|
1080
|
+
"下载同版本新构建…": "같은 버전 새 빌드 다운로드…",
|
|
1077
1081
|
"显示": "표시",
|
|
1078
1082
|
"项目主页": "프로젝트 페이지",
|
|
1079
1083
|
"项目主页(GitHub)": "프로젝트 홈페이지(GitHub)",
|
package/src/i18n/zh-TW.json
CHANGED
|
@@ -274,6 +274,7 @@
|
|
|
274
274
|
"/gateway/trae/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/trae/v1/messages</code>(局域網開放時把 127.0.0.1 換成本機 IP)",
|
|
275
275
|
"/gateway/zcode/v1/messages</code>(局域网开放时把 127.0.0.1 换成本机 IP)": "/gateway/zcode/v1/messages</code>(局域網開放時把 127.0.0.1 換成本機 IP)",
|
|
276
276
|
"</b> 个可用": "</b> 個可用",
|
|
277
|
+
"</b>——可能包含修复,可直接下载安装覆盖当前构建。</div>": "</b>——可能包含修復,可直接下載安裝覆蓋當前構建。</div>",
|
|
277
278
|
"</b>(": "</b>(",
|
|
278
279
|
"</span>一切正常": "</span>一切正常",
|
|
279
280
|
"<br>尚未有调用": "<br>尚未有調用",
|
|
@@ -314,6 +315,7 @@
|
|
|
314
315
|
"<div class=\"hint\"><span class=\"dot on\"></span> 已是最新版本(": "<div class=\"hint\"><span class=\"dot on\"></span> 已是最新版本(",
|
|
315
316
|
"<div class=\"hint\">当前环境不支持应用内更新(开发模式 / Portable / 未签名的 macOS 版),请从 GitHub Releases 手动下载。</div>": "<div class=\"hint\">當前環境不支持應用內更新(開發模式 / Portable / 未簽名的 macOS 版),請從 GitHub Releases 手動下載。</div>",
|
|
316
317
|
"<div class=\"hint\">发现新版本 <b>v": "<div class=\"hint\">發現新版本 <b>v",
|
|
318
|
+
"<div class=\"hint\">检测到同版本新构建 <b>v": "<div class=\"hint\">檢測到同版本新構建 <b>v",
|
|
317
319
|
"<div class=\"hint\">开启后每次打开面板都需要输入密码;密码可随时在此修改或关闭。": "<div class=\"hint\">開啟後每次打開面板都需要輸入密碼;密碼可隨時在此修改或關閉。",
|
|
318
320
|
"<div class=\"hint\">填 10Router 的地址和一个<b>虚拟 key</b>(10Router 仪表盘 → API Keys 创建的 sk-…),就能在这里:</div>": "<div class=\"hint\">填 10Router 的地址和一個<b>虛擬 key</b>(10Router 儀表盤 → API Keys 創建的 sk-…),就能在這裡:</div>",
|
|
319
321
|
"<div class=\"hint\">未发现已登录的 ": "<div class=\"hint\">未發現已登錄的 ",
|
|
@@ -675,6 +677,7 @@
|
|
|
675
677
|
"监听 0.0.0.0 且未设置 CREDITDADDY_PASSWORD —— 局域网内任何人可访问账号 API,建议设置访问密钥": "監聽 0.0.0.0 且未設置 CREDITDADDY_PASSWORD —— 局域網內任何人可訪問賬號 API,建議設置訪問密鑰",
|
|
676
678
|
"监听失败:{msg}": "監聽失敗:{msg}",
|
|
677
679
|
"检测到本机客户端已轮换凭据,改用最新 refreshToken 刷新…": "檢測到本機客戶端已輪換憑據,改用最新 refreshToken 刷新…",
|
|
680
|
+
"检测到同版本新构建 v{v}({commit}),可能包含修复,建议更新。": "檢測到同版本新構建 v{v}({commit}),可能包含修復,建議更新。",
|
|
678
681
|
"检查更新": "檢查更新",
|
|
679
682
|
"检查更新…": "檢查更新…",
|
|
680
683
|
"简体中文": "簡體中文",
|
|
@@ -1074,6 +1077,7 @@
|
|
|
1074
1077
|
"下载 {pkg}@{version}({registry})": "下載 {pkg}@{version}({registry})",
|
|
1075
1078
|
"下载并安装新版本 v{v}…": "下載並安裝新版本 v{v}…",
|
|
1076
1079
|
"下载内容与 npm integrity 不一致": "下載內容與 npm integrity 不一致",
|
|
1080
|
+
"下载同版本新构建…": "下載同版本新構建…",
|
|
1077
1081
|
"显示": "顯示",
|
|
1078
1082
|
"项目主页": "項目主頁",
|
|
1079
1083
|
"项目主页(GitHub)": "項目主頁(GitHub)",
|
package/src/panel.html
CHANGED
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
.lb-spin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-subtle); border-top-color: var(--ok); animation: spin .8s linear infinite; }
|
|
268
268
|
|
|
269
269
|
/* modal */
|
|
270
|
-
.mask { position: fixed; inset: 0; z-index:
|
|
270
|
+
.mask { position: fixed; inset: 0; z-index: 96; background: var(--mask); display: none; align-items: center; justify-content: center; padding: 16px; }
|
|
271
271
|
.mask.show { display: flex; }
|
|
272
272
|
.modal { width: 560px; max-width: 100%; max-height: 90vh; overflow-y: auto; background: var(--surface); border-radius: 14px; padding: 16px 18px; box-shadow: var(--shadow); }
|
|
273
273
|
.modal.sm { width: 360px; }
|
|
@@ -1143,6 +1143,7 @@ let keyPrompt = null;
|
|
|
1143
1143
|
/** 弹一次密码输入框(并发的请求共用同一个);返回 true = 已输入 */
|
|
1144
1144
|
function promptKey(invalid) {
|
|
1145
1145
|
if (!keyPrompt) {
|
|
1146
|
+
hideBootBusy(); // 需要密码说明守护已应答:首屏 loading 卡让位给密码门(否则 z95 卡片盖住 z50 密码窗,看着就像卡死)
|
|
1146
1147
|
keyPrompt = uiPrompt(T('输入面板访问密码'), '', {
|
|
1147
1148
|
type: 'password', okText: T('进入'),
|
|
1148
1149
|
message: (invalid ? T('密码不正确,请重新输入。\n') : '')
|
|
@@ -1903,7 +1904,9 @@ function renderDash() {
|
|
|
1903
1904
|
function renderStatus() {
|
|
1904
1905
|
const s = state.status;
|
|
1905
1906
|
if (!s) return;
|
|
1906
|
-
|
|
1907
|
+
const buildTag = s.build && s.build.commit ? ' (' + s.build.commit + ')' : '';
|
|
1908
|
+
$('ver').textContent = 'v' + s.version + buildTag + T(' · 数据目录 ') + s.dataDir;
|
|
1909
|
+
if (s.build) $('ver').title = (s.build.commit || '') + (s.build.builtAt ? ' · ' + s.build.builtAt : '') + (s.build.channel && s.build.channel !== 'release' ? ' · ' + s.build.channel + (s.build.dirty ? '-dirty' : '') : '');
|
|
1907
1910
|
document.title = 'CreditDaddy v' + s.version;
|
|
1908
1911
|
if (s.homepage) $('hm-home').href = s.homepage;
|
|
1909
1912
|
// 菜单脚注版本:面板版本 + 数据目录(与品牌区同一个口径,换行折行由 CSS 收敛)
|
|
@@ -3103,7 +3106,9 @@ function renderUpdateModal(s) {
|
|
|
3103
3106
|
acts.innerHTML = T('<button class="btn primary" data-close-uu>好的</button>');
|
|
3104
3107
|
break;
|
|
3105
3108
|
case 'available':
|
|
3106
|
-
body.innerHTML = s.
|
|
3109
|
+
body.innerHTML = s.rebuild
|
|
3110
|
+
? T('<div class="hint">检测到同版本新构建 <b>v') + esc(s.version) + (s.commit ? ' · ' + esc(s.commit) : '') + T('</b>——可能包含修复,可直接下载安装覆盖当前构建。</div>')
|
|
3111
|
+
: s.via === 'updater'
|
|
3107
3112
|
? T('<div class="hint">发现新版本 <b>v') + esc(s.version) + T('</b>(') + cur + T(')——正在后台下载,完成后退出 CreditDaddy 时自动安装。</div>')
|
|
3108
3113
|
: T('<div class="hint">发现新版本 <b>v') + esc(s.version) + T('</b>(') + cur + (s.sizeMB ? T(',约 ') + s.sizeMB + ' MB' : '') + T('),可由本机直接下载安装。</div>');
|
|
3109
3114
|
acts.innerHTML = (s.via === 'github' ? updActBtn('upd-go', T('立即下载安装'), 'primary') : '') + rel + close;
|