From 4b7220fffb24f615144f34c186a6522cafbd00ab Mon Sep 17 00:00:00 2001 From: iRedTea Date: Fri, 16 Oct 2026 09:32:04 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20account=20dialog=20-=20=D0=92=D1=8B?= =?UTF-8?q?=D0=B9=D1=82=D0=B8=20beside=20the=20name,=20passkeys=20last=20a?= =?UTF-8?q?fter=20a=20line,=20the=20add=20button=20the=20field's=20height;?= =?UTF-8?q?=20a=20file=20pane's=20status=20says=20it=20is=20connected?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/server/web/static/account.js | 18 ++++++++++-------- internal/server/web/static/app.css | 8 +++++++- internal/server/web/static/filepane.js | 4 +++- 3 files changed, 20 insertions(+), 10 deletions(-) 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});