diff --git a/internal/server/web/static/account.js b/internal/server/web/static/account.js
index 9233800..5991672 100644
--- a/internal/server/web/static/account.js
+++ b/internal/server/web/static/account.js
@@ -32,13 +32,8 @@
'
' +
- '
' +
- '
Ключи доступа
' +
- '
Вход отпечатком, лицом, PIN-кодом устройства или аппаратным ключом. Ключей может быть несколько - например, телефон и ноутбук.
' +
- '
' +
- '
' +
- '
' +
- '
' +
+ '
' +
'
' +
'
' +
'
Спрашивается в каждой новой вкладке; при перезагрузке той же вкладки - нет.
' +
- '
' +
+ '
' +
+ '
Ключи доступа
' +
+ '
Вход отпечатком, лицом, PIN-кодом устройства или аппаратным ключом. Ключей может быть несколько - например, телефон и ноутбук.
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
'
';
document.body.appendChild(dlg);
dlg.querySelector('.acct-out [name=csrf]').value = decodeURIComponent(csrf);
diff --git a/internal/server/web/static/app.css b/internal/server/web/static/app.css
index 9901f30..a397011 100644
--- a/internal/server/web/static/app.css
+++ b/internal/server/web/static/app.css
@@ -209,7 +209,13 @@ input.sw:disabled { opacity: .45; cursor: not-allowed; }
.acct-pingrace select { width: auto; flex: none; }
.acct-pinmsg { margin: 8px 0 0; font-size: 13px; color: var(--ok, #3fb950); min-height: 0; }
.acct-pinmsg.bad { color: var(--danger); }
-.acct-out { margin-top: 10px; padding-top: 14px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; }
+.acct-out { margin: 0 0 0 auto; flex: none; }
+.acct-whotext { min-width: 0; }
+/* Ключи доступа below the rest, after a line. */
+.acct-keysec { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
+.acct-keysec h3 { margin-top: 0; }
+.acct-add input, .acct-add button { height: 40px; box-sizing: border-box; }
+.acct-add button { padding-top: 0; padding-bottom: 0; }
/* Sign-in page. */
.or { display: flex; align-items: center; gap: 10px; color: var(--muted); font-size: 13px; margin: 18px 0 4px; }
.or::before, .or::after { content: ""; flex: 1; border-top: 1px solid var(--border); }
diff --git a/internal/server/web/static/filepane.js b/internal/server/web/static/filepane.js
index 7110a1b..a3d4882 100644
--- a/internal/server/web/static/filepane.js
+++ b/internal/server/web/static/filepane.js
@@ -208,7 +208,9 @@
this.q('.fp-path').value = this.cwd;
this.message('');
this.render();
- this.setState('ok', this.cwd);
+ // The status says whether it is connected, as a terminal's does; the
+ // folder is in the pane itself.
+ this.setState('ok', this.ssh ? 'SSH: ' + this.source.label + ':' + (this.ssh.port || 22) : 'подключено');
}
async go(path) {
const r = await this.api('list', {path});