Sign In
' + + ''
+ + '
';
}
function renderRegisterScreen(){
return ''
- + ''+t('langSwitch')+'
'
+ + ' '
+ + ' '
: '')
- + ' '
- + '';
+ + '
'
+ + ''
+ + ' '
+ + '
'
+ renderMsg()
+ ' '
+ + ' '
+ (state.pendingLogin ? ''
- + ''+t('brand')+'
'
+ + ' '+t('subtitle')+'
'
+ + ' Two-step verification
Password is already verified.
'
- + (state.loginTotpError?''+esc(state.loginTotpError)+'
':'')
- + ''
+ + ''+t('totpVerify')+'
'+t('totpVerifySub')+'
'
+ + (state.loginTotpError?''+esc(state.loginTotpError)+'
':'')
+ + ''
+ ''
- + ' '
- + '
'
+ + 'Register
' + + ''
+ + '
';
+ + ' '
+ + ' '+t('langSwitch')+'
'
+ + ' '
+ + '
'
+ + ' '
+ + '
'
+ renderMsg()
+ ' '
- + ' '
- + ''+t('register')+'
'
+ + ' '+t('brand')+'
'
+ + ' '+esc(nameText)+'
'+esc(c.id)+'
No items in this folder.
';
+ if(!rows) rows=''+t('noItems')+'
';
var c0=selectedCipher();
- var detail='Select an item to view details.
';
+ var detail=''+t('selectItem')+'
';
if(c0){
var login = c0.login||{};
var fields=Array.isArray(c0.fields)?c0.fields:[];
@@ -549,8 +770,8 @@ function renderWebClientHTML(): string {
return ''
+ renderMsg()
+ ''
- + '
'
+ 'Vault
' - + '' + + ''+t('vault')+'
' + + '' + ''+rows+'
'+detail+'
Settings
' - + 'Profile
Master Password
TOTP Setup
Disable action prompts for master password.
'+t('settings')+'
' + + ''+t('profile')+'
'+t('changePwd')+'
'+t('totpSetup')+'
Disable action prompts for master password.
Disable TOTP
Enter master password to disable two-step verification.
'
- + (state.totpDisableError?''+esc(state.totpDisableError)+'
':'')
- + ''
+ + ''+t('disableTotp')+'
'+t('totpDisableSub')+'
'
+ + (state.totpDisableError?''+esc(state.totpDisableError)+'
':'')
+ + ''
+ 'Help & Support
' - + 'Upstream Sync
- Track upstream with a fork and scheduled sync workflow (recommended).
- Before merge: compare API routes, migration files, and auth logic changes.
- After merge: run local dev migration tests, then deploy Worker after validation.
Common Errors
- 401 Unauthorized: token expired or revoked, login again.
- 403 Account disabled: admin must unban user in User Management.
- 403 Invite invalid: invite expired/used/revoked, create a new invite.
- 429 Too many requests: wait retry seconds and avoid burst writes.
Troubleshooting
- Login OK but encrypted values shown: verify profile key and KDF settings are consistent.
- TOTP fails repeatedly: sync device time and re-scan QR using latest secret.
- Password change failed: ensure current password is correct and new password has at least 12 chars.
- Sync conflicts: refresh vault and retry one operation at a time.
'+t('help')+'
' + + ''+t('helpSync')+'
- '+t('helpSync1')+'
- '+t('helpSync2')+'
- '+t('helpSync3')+'
'+t('helpErr')+'
- '+t('helpErr1')+'
- '+t('helpErr2')+'
- '+t('helpErr3')+'
- '+t('helpErr4')+'
'+t('helpTb')+'
- '+t('helpTb1')+'
- '+t('helpTb2')+'
- '+t('helpTb3')+'
- '+t('helpTb4')+'
'+esc(inv.code)+''
- + '
'
- + 'User Management
' - + '' + + ''+t('admin')+'
' + + '' + 'Create Invite
Users
| Name | Role | Status | Action |
|---|
Invites
| Code | Status | Expires At | Action |
|---|
'+t('createInvite')+'
'+t('users')+'
| '+t('email')+' | '+t('name')+' | '+t('role')+' | '+t('status')+' | '+t('action')+' |
|---|
'+t('invites')+'
| Code | '+t('status')+' | Expires At | '+t('action')+' |
|---|
'
- + ' '
- + (showFolders?(' '):'')
+ + ''
+ + '
';
+ + ''
+ + (showFolders?(' '):'')
+ ' '+content+' '
- + '
'+renderTotpDisableModal()+'NW
Loading NodeWarden...
'+t('loading')+'