dsh-vault 1.6.1 → 1.7.0-rc.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/README-zh.md +5 -5
- package/README.md +5 -5
- package/lib/client.js +151 -71
- package/lib/client.js.map +1 -1
- package/lib/index.js +39 -6
- package/package.json +1 -1
package/README-zh.md
CHANGED
|
@@ -122,7 +122,7 @@ dsh-vault 是一个 **bundle**(声明 `dsh.bundle` 的包):安装到 profile 后
|
|
|
122
122
|
### 方式一:从 npm 安装(最省事)
|
|
123
123
|
|
|
124
124
|
```sh
|
|
125
|
-
dsh plugin --profile
|
|
125
|
+
dsh plugin --profile web add dsh-vault
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
npm 包自带**预构建的 `lib/` 产物**,无需 allowBuilds、无需本地编译,安装即用。启动前设置主密码:
|
|
@@ -134,7 +134,7 @@ export DSH_VAULT_PASSWORD='你的强主密码'
|
|
|
134
134
|
### 方式二:从 GitHub 安装(锁 tag 或 commit)
|
|
135
135
|
|
|
136
136
|
```sh
|
|
137
|
-
dsh plugin --profile
|
|
137
|
+
dsh plugin --profile web add github:Ox0400/dsh-vault#v0.1.1
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
git 安装拉取的是**源码**,`prepare` 脚本会在安装时构建 `lib/`。pnpm ≥10 默认阻止 git 依赖执行构建脚本。实测流程:
|
|
@@ -162,7 +162,7 @@ git 安装拉取的是**源码**,`prepare` 脚本会在安装时构建 `lib/`。
|
|
|
162
162
|
### 方式三:本地路径安装到 profile
|
|
163
163
|
|
|
164
164
|
```sh
|
|
165
|
-
dsh plugin --profile
|
|
165
|
+
dsh plugin --profile web add /绝对/路径/to/dsh-vault
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
pnpm 将 checkout 链接进 profile;只要 `lib/` 存在(必要时先在 checkout 里执行 `pnpm build`)即被识别为 bundle。
|
|
@@ -170,12 +170,12 @@ pnpm 将 checkout 链接进 profile;只要 `lib/` 存在(必要时先在 checkou
|
|
|
170
170
|
### 方式四:本地 tarball 安装
|
|
171
171
|
|
|
172
172
|
```sh
|
|
173
|
-
npm pack && dsh plugin --profile
|
|
173
|
+
npm pack && dsh plugin --profile web add ./dsh-vault-0.1.1.tgz
|
|
174
174
|
```
|
|
175
175
|
|
|
176
176
|
tarball 自带预构建 `lib/` 产物,无需构建或 allowBuilds。
|
|
177
177
|
|
|
178
|
-
`dsh plugin --profile
|
|
178
|
+
`dsh plugin --profile web remove dsh-vault` 卸载(同时移除依赖与 layer)。
|
|
179
179
|
|
|
180
180
|
## 配置
|
|
181
181
|
|
package/README.md
CHANGED
|
@@ -124,7 +124,7 @@ All four install paths below are **verified end-to-end** (install → bundle lay
|
|
|
124
124
|
### Option 1: Install from npm (easiest)
|
|
125
125
|
|
|
126
126
|
```sh
|
|
127
|
-
dsh plugin --profile
|
|
127
|
+
dsh plugin --profile web add dsh-vault
|
|
128
128
|
```
|
|
129
129
|
|
|
130
130
|
npm packages ship **prebuilt `lib/` artifacts** — no allowBuilds, no local compilation, install and go. Set the master password before launching:
|
|
@@ -136,7 +136,7 @@ export DSH_VAULT_PASSWORD='your strong master password'
|
|
|
136
136
|
### Option 2: Install from GitHub (pin a tag or commit)
|
|
137
137
|
|
|
138
138
|
```sh
|
|
139
|
-
dsh plugin --profile
|
|
139
|
+
dsh plugin --profile web add github:Ox0400/dsh-vault#v0.1.1
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
A git install fetches **sources, not built artifacts**, so the `prepare` script builds `lib/` at install time. pnpm ≥10 blocks git dependencies from running build scripts by default. The verified flow:
|
|
@@ -164,7 +164,7 @@ A git install fetches **sources, not built artifacts**, so the `prepare` script
|
|
|
164
164
|
### Option 3: Install from a local path
|
|
165
165
|
|
|
166
166
|
```sh
|
|
167
|
-
dsh plugin --profile
|
|
167
|
+
dsh plugin --profile web add /absolute/path/to/dsh-vault
|
|
168
168
|
```
|
|
169
169
|
|
|
170
170
|
pnpm links the checkout into the profile; the bundle is recognized as long as `lib/` exists (run `pnpm build` in the checkout first if needed).
|
|
@@ -172,12 +172,12 @@ pnpm links the checkout into the profile; the bundle is recognized as long as `l
|
|
|
172
172
|
### Option 4: Install from a tarball
|
|
173
173
|
|
|
174
174
|
```sh
|
|
175
|
-
npm pack && dsh plugin --profile
|
|
175
|
+
npm pack && dsh plugin --profile web add ./dsh-vault-0.1.1.tgz
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
The tarball ships prebuilt `lib/` artifacts, so no build step or `allowBuilds` is required.
|
|
179
179
|
|
|
180
|
-
`dsh plugin --profile
|
|
180
|
+
`dsh plugin --profile web remove dsh-vault` uninstalls (removes both the dependency and the layer).
|
|
181
181
|
|
|
182
182
|
## Configuration
|
|
183
183
|
|
package/lib/client.js
CHANGED
|
@@ -17,89 +17,89 @@ window.__ModuleLoader__.load({
|
|
|
17
17
|
document.head.appendChild(tag);
|
|
18
18
|
}
|
|
19
19
|
var VaultSection_module_css_default = {
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"addButton": "t_j5va_addButton",
|
|
25
|
-
"detailBox": "t_j5va_detailBox",
|
|
26
|
-
"pwStrong": "t_j5va_pwStrong",
|
|
27
|
-
"trashButton": "t_j5va_trashButton",
|
|
28
|
-
"reportLine": "t_j5va_reportLine",
|
|
29
|
-
"secretField": "t_j5va_secretField",
|
|
30
|
-
"revealButton": "t_j5va_revealButton",
|
|
31
|
-
"tab": "t_j5va_tab",
|
|
32
|
-
"rowMain": "t_j5va_rowMain",
|
|
33
|
-
"dangerButton": "t_j5va_dangerButton",
|
|
20
|
+
"identity": "t_j5va_identity",
|
|
21
|
+
"pwMeter": "t_j5va_pwMeter",
|
|
22
|
+
"toolbar": "t_j5va_toolbar",
|
|
23
|
+
"dupNames": "t_j5va_dupNames",
|
|
34
24
|
"kindFilter": "t_j5va_kindFilter",
|
|
35
|
-
"pinStar": "t_j5va_pinStar",
|
|
36
|
-
"row": "t_j5va_row",
|
|
37
|
-
"auditRow": "t_j5va_auditRow",
|
|
38
|
-
"empty": "t_j5va_empty",
|
|
39
|
-
"editor": "t_j5va_editor",
|
|
40
25
|
"genOpts": "t_j5va_genOpts",
|
|
41
|
-
"
|
|
42
|
-
"policyBar": "t_j5va_policyBar",
|
|
43
|
-
"dueBadge": "t_j5va_dueBadge",
|
|
44
|
-
"editorBody": "t_j5va_editorBody",
|
|
45
|
-
"genHist": "t_j5va_genHist",
|
|
46
|
-
"editorActions": "t_j5va_editorActions",
|
|
47
|
-
"kindIcon": "t_j5va_kindIcon",
|
|
48
|
-
"modeReadonly": "t_j5va_modeReadonly",
|
|
49
|
-
"list": "t_j5va_list",
|
|
50
|
-
"dupNames": "t_j5va_dupNames",
|
|
51
|
-
"field": "t_j5va_field",
|
|
52
|
-
"saveButton": "t_j5va_saveButton",
|
|
53
|
-
"checkField": "t_j5va_checkField",
|
|
54
|
-
"rowExpired": "t_j5va_rowExpired",
|
|
55
|
-
"detailItem": "t_j5va_detailItem",
|
|
56
|
-
"tabActive": "t_j5va_tabActive",
|
|
57
|
-
"emptyHint": "t_j5va_emptyHint",
|
|
58
|
-
"srOnly": "t_j5va_srOnly",
|
|
59
|
-
"modeAsk": "t_j5va_modeAsk",
|
|
26
|
+
"pwLabel": "t_j5va_pwLabel",
|
|
60
27
|
"badgeWarn": "t_j5va_badgeWarn",
|
|
61
|
-
"
|
|
62
|
-
"
|
|
28
|
+
"kindIcon": "t_j5va_kindIcon",
|
|
29
|
+
"backupButton": "t_j5va_backupButton",
|
|
30
|
+
"trashButton": "t_j5va_trashButton",
|
|
63
31
|
"rowDue": "t_j5va_rowDue",
|
|
64
|
-
"pwMeter": "t_j5va_pwMeter",
|
|
65
|
-
"title": "t_j5va_title",
|
|
66
32
|
"lockedBanner": "t_j5va_lockedBanner",
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
33
|
+
"dangerButton": "t_j5va_dangerButton",
|
|
34
|
+
"badgeOk": "t_j5va_badgeOk",
|
|
35
|
+
"sortButton": "t_j5va_sortButton",
|
|
36
|
+
"intro": "t_j5va_intro",
|
|
71
37
|
"tabs": "t_j5va_tabs",
|
|
72
|
-
"
|
|
73
|
-
"
|
|
38
|
+
"detailBox": "t_j5va_detailBox",
|
|
39
|
+
"reportBox": "t_j5va_reportBox",
|
|
40
|
+
"highBadge": "t_j5va_highBadge",
|
|
41
|
+
"policyField": "t_j5va_policyField",
|
|
74
42
|
"resultCount": "t_j5va_resultCount",
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"pwBar": "t_j5va_pwBar",
|
|
78
|
-
"backupButton": "t_j5va_backupButton",
|
|
79
|
-
"lockedTag": "t_j5va_lockedTag",
|
|
43
|
+
"copied": "t_j5va_copied",
|
|
44
|
+
"revealButton": "t_j5va_revealButton",
|
|
80
45
|
"deleteButton": "t_j5va_deleteButton",
|
|
46
|
+
"rowExpired": "t_j5va_rowExpired",
|
|
47
|
+
"scoreRing": "t_j5va_scoreRing",
|
|
48
|
+
"secretField": "t_j5va_secretField",
|
|
49
|
+
"genHist": "t_j5va_genHist",
|
|
50
|
+
"rowMain": "t_j5va_rowMain",
|
|
81
51
|
"rowActions": "t_j5va_rowActions",
|
|
52
|
+
"modeAuto": "t_j5va_modeAuto",
|
|
53
|
+
"reportSub": "t_j5va_reportSub",
|
|
54
|
+
"lockedTag": "t_j5va_lockedTag",
|
|
55
|
+
"srOnly": "t_j5va_srOnly",
|
|
56
|
+
"searchBox": "t_j5va_searchBox",
|
|
57
|
+
"pwStrong": "t_j5va_pwStrong",
|
|
58
|
+
"totp": "t_j5va_totp",
|
|
59
|
+
"list": "t_j5va_list",
|
|
60
|
+
"pwBar": "t_j5va_pwBar",
|
|
61
|
+
"kindChip": "t_j5va_kindChip",
|
|
82
62
|
"totpRing": "t_j5va_totpRing",
|
|
83
|
-
"footer": "t_j5va_footer",
|
|
84
63
|
"dupMerge": "t_j5va_dupMerge",
|
|
85
|
-
"retryButton": "t_j5va_retryButton",
|
|
86
|
-
"pwLabel": "t_j5va_pwLabel",
|
|
87
|
-
"toolbar": "t_j5va_toolbar",
|
|
88
|
-
"scoreRing": "t_j5va_scoreRing",
|
|
89
64
|
"tabPane": "t_j5va_tabPane",
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"clearButton": "t_j5va_clearButton",
|
|
98
|
-
"error": "t_j5va_error",
|
|
65
|
+
"row": "t_j5va_row",
|
|
66
|
+
"section": "t_j5va_section",
|
|
67
|
+
"auditIssues": "t_j5va_auditIssues",
|
|
68
|
+
"pwWeak": "t_j5va_pwWeak",
|
|
69
|
+
"retryButton": "t_j5va_retryButton",
|
|
70
|
+
"uriCode": "t_j5va_uriCode",
|
|
71
|
+
"saveButton": "t_j5va_saveButton",
|
|
99
72
|
"emptyBox": "t_j5va_emptyBox",
|
|
100
|
-
"
|
|
73
|
+
"footer": "t_j5va_footer",
|
|
74
|
+
"error": "t_j5va_error",
|
|
75
|
+
"detailItem": "t_j5va_detailItem",
|
|
76
|
+
"auditRow": "t_j5va_auditRow",
|
|
77
|
+
"checkField": "t_j5va_checkField",
|
|
78
|
+
"editorBody": "t_j5va_editorBody",
|
|
79
|
+
"modeAsk": "t_j5va_modeAsk",
|
|
80
|
+
"policyBar": "t_j5va_policyBar",
|
|
81
|
+
"reportLine": "t_j5va_reportLine",
|
|
82
|
+
"emptyHint": "t_j5va_emptyHint",
|
|
83
|
+
"editorActions": "t_j5va_editorActions",
|
|
84
|
+
"dueBadge": "t_j5va_dueBadge",
|
|
85
|
+
"modeReadonly": "t_j5va_modeReadonly",
|
|
86
|
+
"reportTitle": "t_j5va_reportTitle",
|
|
87
|
+
"title": "t_j5va_title",
|
|
88
|
+
"healthBar": "t_j5va_healthBar",
|
|
89
|
+
"dupGroup": "t_j5va_dupGroup",
|
|
90
|
+
"genOptRow": "t_j5va_genOptRow",
|
|
91
|
+
"tab": "t_j5va_tab",
|
|
92
|
+
"tabActive": "t_j5va_tabActive",
|
|
93
|
+
"addButton": "t_j5va_addButton",
|
|
94
|
+
"badgeDanger": "t_j5va_badgeDanger",
|
|
101
95
|
"pwFair": "t_j5va_pwFair",
|
|
102
|
-
"
|
|
96
|
+
"status": "t_j5va_status",
|
|
97
|
+
"editor": "t_j5va_editor",
|
|
98
|
+
"empty": "t_j5va_empty",
|
|
99
|
+
"badge": "t_j5va_badge",
|
|
100
|
+
"field": "t_j5va_field",
|
|
101
|
+
"clearButton": "t_j5va_clearButton",
|
|
102
|
+
"pinStar": "t_j5va_pinStar"
|
|
103
103
|
};
|
|
104
104
|
//#endregion
|
|
105
105
|
//#region src/client/VaultSection.tsx
|
|
@@ -284,7 +284,7 @@ window.__ModuleLoader__.load({
|
|
|
284
284
|
}
|
|
285
285
|
/** Render the Vault settings section. */
|
|
286
286
|
function VaultSection(props) {
|
|
287
|
-
const { t, config, setAccessMode, setAutoCapture, list, search, get, add, update, remove, trash, rotation, health, duplicates, duplicateGroups, merge, history, stats, backupStatus, backup, recent, restore, undeleteAll, totp, status, switchVault, listVaults, touch, verifyAll, breachCheck, generatePassword, strength, generateUsername, templates, saveTemplate, lock, totpUri, tags, renameTag, generatorHistory, backups, deleteBackup, restoreBackup, importChrome, importFirefox, import1password, importManagerCsv, importEnpass, importBitwarden, import1pif, importKeePassXml, importKdbx, importBitwardenEncrypted, keychainImport, searchSystem, sessionOpen, sessionCollect, sessionClose, sessionListOpen, sessionListSaved, sessionSave, sessionExport, sessionGet, sessionPrune, vaultRename, vaultDelete, watchtower, export1pux, exportBitwarden, recoveryCode, verifyRecovery, recoveryStatus, unlock } = props;
|
|
287
|
+
const { t, config, setAccessMode, setAutoCapture, setAutoLock, list, search, get, add, update, remove, trash, rotation, health, duplicates, duplicateGroups, merge, history, stats, backupStatus, backup, recent, restore, undeleteAll, totp, status, switchVault, listVaults, touch, verifyAll, breachCheck, generatePassword, strength, generateUsername, templates, saveTemplate, lock, totpUri, tags, renameTag, generatorHistory, backups, deleteBackup, restoreBackup, importChrome, importFirefox, import1password, importManagerCsv, importEnpass, importBitwarden, import1pif, importKeePassXml, importKdbx, importBitwardenEncrypted, keychainImport, searchSystem, sessionOpen, sessionCollect, sessionClose, sessionListOpen, sessionListSaved, sessionSave, sessionExport, sessionGet, sessionPrune, vaultRename, vaultDelete, watchtower, export1pux, exportBitwarden, recoveryCode, verifyRecovery, recoveryStatus, unlock } = props;
|
|
288
288
|
const searchId = (0, react.useId)();
|
|
289
289
|
const [query, setQuery] = (0, react.useState)("");
|
|
290
290
|
const [state, setState] = (0, react.useState)({ status: "loading" });
|
|
@@ -357,6 +357,15 @@ window.__ModuleLoader__.load({
|
|
|
357
357
|
if (clean.length === 0) return t("error");
|
|
358
358
|
return t("errDetail").replace("{detail}", clean);
|
|
359
359
|
}
|
|
360
|
+
/** Format an auto-lock timeout (seconds) for display: 90 → "1m 30s". */
|
|
361
|
+
function formatAutoLock(seconds) {
|
|
362
|
+
if (seconds <= 0) return "0";
|
|
363
|
+
const m = Math.floor(seconds / 60);
|
|
364
|
+
const s = seconds % 60;
|
|
365
|
+
if (m === 0) return `${s}s`;
|
|
366
|
+
if (s === 0) return `${m}m`;
|
|
367
|
+
return `${m}m ${s}s`;
|
|
368
|
+
}
|
|
360
369
|
(0, react.useEffect)(() => {
|
|
361
370
|
const url = form.url ?? "";
|
|
362
371
|
if (url.length === 0 || (form.icon ?? "").length > 0) return;
|
|
@@ -2542,9 +2551,61 @@ window.__ModuleLoader__.load({
|
|
|
2542
2551
|
}
|
|
2543
2552
|
})]
|
|
2544
2553
|
}),
|
|
2554
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
2555
|
+
className: VaultSection_module_css_default.policyField,
|
|
2556
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("autoLockLabel") }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
|
|
2557
|
+
value: policy.autoLockSeconds,
|
|
2558
|
+
disabled: busy,
|
|
2559
|
+
onChange: (event) => {
|
|
2560
|
+
const next = Number(event.target.value);
|
|
2561
|
+
setBusy(true);
|
|
2562
|
+
setMessage(null);
|
|
2563
|
+
setAutoLock(next).then((value) => {
|
|
2564
|
+
setPolicy((previous) => previous ? {
|
|
2565
|
+
...previous,
|
|
2566
|
+
autoLockSeconds: value.seconds
|
|
2567
|
+
} : previous);
|
|
2568
|
+
setBusy(false);
|
|
2569
|
+
}, (err) => {
|
|
2570
|
+
setMessage(errText(err));
|
|
2571
|
+
setBusy(false);
|
|
2572
|
+
});
|
|
2573
|
+
},
|
|
2574
|
+
children: [
|
|
2575
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
2576
|
+
value: 0,
|
|
2577
|
+
children: t("autoLockNever")
|
|
2578
|
+
}),
|
|
2579
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
2580
|
+
value: 60,
|
|
2581
|
+
children: t("autoLock1m")
|
|
2582
|
+
}),
|
|
2583
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
2584
|
+
value: 300,
|
|
2585
|
+
children: t("autoLock5m")
|
|
2586
|
+
}),
|
|
2587
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
2588
|
+
value: 900,
|
|
2589
|
+
children: t("autoLock15m")
|
|
2590
|
+
}),
|
|
2591
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
2592
|
+
value: 1800,
|
|
2593
|
+
children: t("autoLock30m")
|
|
2594
|
+
}),
|
|
2595
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
|
|
2596
|
+
value: 3600,
|
|
2597
|
+
children: t("autoLock1h")
|
|
2598
|
+
})
|
|
2599
|
+
]
|
|
2600
|
+
})]
|
|
2601
|
+
}),
|
|
2545
2602
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
2546
2603
|
className: policy.accessMode === "readonly" ? VaultSection_module_css_default.modeReadonly : policy.accessMode === "ask" ? VaultSection_module_css_default.modeAsk : VaultSection_module_css_default.modeAuto,
|
|
2547
|
-
children: [
|
|
2604
|
+
children: [
|
|
2605
|
+
policy.accessMode === "readonly" ? t("modeReadonlyHint") : policy.accessMode === "ask" ? t("modeAskHint") : t("modeAutoHint"),
|
|
2606
|
+
policy.autoCapture ? ` · ${t("autoCaptureOn")}` : ` · ${t("autoCaptureOff")}`,
|
|
2607
|
+
policy.autoLockSeconds > 0 ? ` · ${t("autoLockHint")}: ${formatAutoLock(policy.autoLockSeconds)}` : ` · ${t("autoLockNeverHint")}`
|
|
2608
|
+
]
|
|
2548
2609
|
})
|
|
2549
2610
|
]
|
|
2550
2611
|
})]
|
|
@@ -3710,6 +3771,15 @@ window.__ModuleLoader__.load({
|
|
|
3710
3771
|
errInvalidVaultName: "Invalid vault name.",
|
|
3711
3772
|
errReadonly: "This action is disabled in readonly mode.",
|
|
3712
3773
|
errDetail: "Something went wrong: {detail}",
|
|
3774
|
+
autoLockLabel: "Auto-lock after",
|
|
3775
|
+
autoLockNever: "Never",
|
|
3776
|
+
autoLock1m: "1 minute",
|
|
3777
|
+
autoLock5m: "5 minutes",
|
|
3778
|
+
autoLock15m: "15 minutes",
|
|
3779
|
+
autoLock30m: "30 minutes",
|
|
3780
|
+
autoLock1h: "1 hour",
|
|
3781
|
+
autoLockHint: "Auto-lock",
|
|
3782
|
+
autoLockNeverHint: "auto-lock off",
|
|
3713
3783
|
kindLogin: "Login",
|
|
3714
3784
|
kindSsh: "SSH",
|
|
3715
3785
|
kindApiKey: "API key",
|
|
@@ -4013,6 +4083,15 @@ window.__ModuleLoader__.load({
|
|
|
4013
4083
|
errInvalidVaultName: "保险库名称无效。",
|
|
4014
4084
|
errReadonly: "当前为只读模式,此操作已禁用。",
|
|
4015
4085
|
errDetail: "操作失败:{detail}",
|
|
4086
|
+
autoLockLabel: "自动锁定",
|
|
4087
|
+
autoLockNever: "永不",
|
|
4088
|
+
autoLock1m: "1 分钟",
|
|
4089
|
+
autoLock5m: "5 分钟",
|
|
4090
|
+
autoLock15m: "15 分钟",
|
|
4091
|
+
autoLock30m: "30 分钟",
|
|
4092
|
+
autoLock1h: "1 小时",
|
|
4093
|
+
autoLockHint: "自动锁定",
|
|
4094
|
+
autoLockNeverHint: "自动锁定已关闭",
|
|
4016
4095
|
kindLogin: "登录",
|
|
4017
4096
|
kindSsh: "SSH",
|
|
4018
4097
|
kindApiKey: "API 密钥",
|
|
@@ -4055,6 +4134,7 @@ window.__ModuleLoader__.load({
|
|
|
4055
4134
|
config: () => invoke("config"),
|
|
4056
4135
|
setAccessMode: (mode) => invoke("setAccessMode", { mode }),
|
|
4057
4136
|
setAutoCapture: (enabled) => invoke("setAutoCapture", { enabled }),
|
|
4137
|
+
setAutoLock: (seconds) => invoke("setAutoLock", { seconds }),
|
|
4058
4138
|
list: () => invoke("list").then((r) => r.entries),
|
|
4059
4139
|
search: (query, limit) => invoke("search", {
|
|
4060
4140
|
query,
|