diff --git a/popup.js b/popup.js
index 1e74940..f2f28b1 100644
--- a/popup.js
+++ b/popup.js
@@ -70,7 +70,7 @@ document.addEventListener("DOMContentLoaded", () => {
// modal 确认后的回调
let modalResolve = null;
- // ---------- 口令强度 / 破解时间估算 ----------
+ // ---------- 文件密码强度 / 破解时间估算 ----------
// 假设攻击者使用 GPU 集群(PBKDF2-SHA256 10 万次迭代,约 1000 万次/秒,即 10^7 次/秒)
// 这是中等规模攻击者的合理估算(数十块高端 GPU)
const ATTACK_RATE = 1e7;
@@ -202,8 +202,8 @@ document.addEventListener("DOMContentLoaded", () => {
return JSON.parse(dec.decode(plainBuf));
}
- // ---------- 口令 modal ----------
- // mode: "export" 显示加密勾选 + 两次口令; "import" 仅显示一次口令
+ // ---------- 文件密码 modal ----------
+ // mode: "export" 显示加密勾选 + 两次文件密码; "import" 仅显示一次文件密码
function openPwdModal(mode) {
return new Promise((resolve) => {
modalResolve = resolve;
@@ -215,15 +215,15 @@ document.addEventListener("DOMContentLoaded", () => {
pwdFields.classList.remove("hidden");
modalPwd.value = "";
modalPwdConfirm.value = "";
- modalWarn.textContent = "口令将用于 AES-GCM 加密,无法找回,请妥善保存";
+ modalWarn.textContent = "文件密码将用于 AES-GCM 加密,无法找回,请妥善保存";
} else {
- modalTitle.textContent = "输入解密口令";
+ modalTitle.textContent = "输入解密文件密码";
encryptToggleGroup.style.display = "none";
confirmGroup.style.display = "none";
pwdFields.classList.remove("hidden");
modalPwd.value = "";
modalPwdConfirm.value = "";
- modalWarn.textContent = "请输入导出时设置的口令";
+ modalWarn.textContent = "请输入导出时设置的文件密码";
}
pwdModal.classList.add("show");
setTimeout(() => modalPwd.focus(), 0);
@@ -261,11 +261,11 @@ document.addEventListener("DOMContentLoaded", () => {
const p1 = modalPwd.value;
const p2 = modalPwdConfirm.value;
if (!p1) {
- modalWarn.textContent = "口令不能为空";
+ modalWarn.textContent = "文件密码不能为空";
return;
}
if (p1 !== p2) {
- modalWarn.textContent = "两次口令不一致";
+ modalWarn.textContent = "两次文件密码不一致";
return;
}
modalResolve({ encrypt: true, password: p1 });
@@ -275,7 +275,7 @@ document.addEventListener("DOMContentLoaded", () => {
} else {
const p = modalPwd.value;
if (!p) {
- modalWarn.textContent = "口令不能为空";
+ modalWarn.textContent = "文件密码不能为空";
return;
}
modalResolve({ encrypt: true, password: p });
@@ -314,10 +314,14 @@ document.addEventListener("DOMContentLoaded", () => {
const target = $(btn.dataset.target);
if (target.type === "password") {
target.type = "text";
- btn.textContent = "隐藏";
+ btn.classList.remove("eye-open");
+ btn.classList.add("eye-closed");
+ btn.textContent = "🙈";
} else {
target.type = "password";
- btn.textContent = "显示";
+ btn.classList.remove("eye-closed");
+ btn.classList.add("eye-open");
+ btn.textContent = "👁";
}
});
});
@@ -928,7 +932,7 @@ document.addEventListener("DOMContentLoaded", () => {
return;
}
} catch (err) {
- showToast("解密失败:口令错误或文件损坏");
+ showToast("解密失败:文件密码错误或文件损坏");
importFile.value = "";
return;
}
@@ -1085,15 +1089,15 @@ document.addEventListener("DOMContentLoaded", () => {
lockWarn.style.display = "none";
if (mode === "setup") {
- lockTitle.textContent = "设置口令";
- lockHint.textContent = "口令用于加密存储所有配置,忘记将无法恢复";
+ lockTitle.textContent = "设置本机密码";
+ lockHint.textContent = "本机密码用于加密存储所有配置,忘记将无法恢复";
lockConfirmGroup.style.display = "block";
- lockSubmitBtn.textContent = "设置口令并进入";
+ lockSubmitBtn.textContent = "设置本机密码并进入";
} else {
lockTitle.textContent = "已锁定";
- lockHint.textContent = "请输入口令查看已加密的配置";
+ lockHint.textContent = "请输入本机密码查看已加密的配置";
lockConfirmGroup.style.display = "none";
- lockSubmitBtn.textContent = "解锁";
+ lockSubmitBtn.textContent = "进入";
}
setTimeout(() => lockPassword.focus(), 50);
}
@@ -1127,24 +1131,24 @@ document.addEventListener("DOMContentLoaded", () => {
lockSubmitBtn.addEventListener("click", async () => {
const pwd = lockPassword.value;
if (!pwd) {
- lockWarn.textContent = "请输入口令";
+ lockWarn.textContent = "请输入本机密码";
lockWarn.style.display = "block";
return;
}
if (lockMode === "setup") {
if (pwd.length < 6) {
- lockWarn.textContent = "口令至少 6 位";
+ lockWarn.textContent = "本机密码至少 6 位";
lockWarn.style.display = "block";
return;
}
if (pwd !== lockPasswordConfirm.value) {
- lockWarn.textContent = "两次输入的口令不一致";
+ lockWarn.textContent = "两次输入的本机密码不一致";
lockWarn.style.display = "block";
return;
}
try {
await sendMessage({ action: "setupVault", password: pwd });
- showToast("口令已设置,配置已加密存储");
+ showToast("本机密码已设置,配置已加密存储");
showMainUI();
loadDraft();
renderEnvSelect();
@@ -1181,7 +1185,7 @@ document.addEventListener("DOMContentLoaded", () => {
});
lockBtn.addEventListener("click", async () => {
- if (!confirm("确认锁定?锁定后需重新输入口令才能查看配置。")) return;
+ if (!confirm("确认锁定?锁定后需重新输入本机密码才能查看配置。")) return;
await sendMessage({ action: "lock" });
showLockScreen("unlock");
showToast("已锁定");
diff --git a/updates.xml b/updates.xml
new file mode 100644
index 0000000..67fbbf8
--- /dev/null
+++ b/updates.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+