diff --git a/Dev_Docs/Pending_Features/2026-06-03_1610_fix_devnet_topup_и_пароль_autofill.md b/Dev_Docs/Pending_Features/2026-06-03_1610_fix_devnet_topup_и_пароль_autofill.md new file mode 100644 index 0000000..2a54d1c --- /dev/null +++ b/Dev_Docs/Pending_Features/2026-06-03_1610_fix_devnet_topup_и_пароль_autofill.md @@ -0,0 +1,15 @@ +# Фикс DEVNET topup и автоподстановки пароля + +- статус: pending +- кратко: исправлена ширина экрана `devnet-topup-view` после успешного пополнения и отключена нежелательная автоподстановка пароля в server UI и на экранах входа/регистрации. + +## Что проверять +- Открыть страницу пополнения DEVNET, выполнить пополнение и убедиться, что после появления `Signature` экран не расширяется по ширине. +- Проверить, что кнопки на странице пополнения остаются аккуратными и не разъезжаются. +- Открыть `server-ui/update-server-pda.html`, загрузить PDA и убедиться, что поле пароля остаётся пустым. +- Проверить обычные экраны входа и регистрации: поле пароля не должно самопроизвольно заполняться длинной строкой. + +## Ожидаемый результат +- Длинная transaction signature переносится по строкам внутри прежней ширины экрана. +- Кнопки сохраняют компактный mobile-first layout. +- Поля пароля пустые, пока пользователь сам ничего не вводил. diff --git a/VERSION.properties b/VERSION.properties index 266d883..8b8b226 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.119 -server.version=1.2.111 +client.version=1.2.120 +server.version=1.2.112 diff --git a/shine-UI/js/pages/devnet-topup-view.js b/shine-UI/js/pages/devnet-topup-view.js index d2b187b..47a855a 100644 --- a/shine-UI/js/pages/devnet-topup-view.js +++ b/shine-UI/js/pages/devnet-topup-view.js @@ -19,11 +19,14 @@ function readWalletFromUrl() { export function render({ navigate }) { const screen = document.createElement('section'); screen.className = 'stack'; + screen.style.width = '100%'; + screen.style.justifyItems = 'center'; const targetWallet = readWalletFromUrl(); const senderBox = document.createElement('div'); senderBox.className = 'card stack'; + senderBox.style.width = 'min(100%, 320px)'; senderBox.innerHTML = ` Тестовый DEVNET-кошелёк

Адрес: ...

@@ -32,6 +35,7 @@ export function render({ navigate }) { const targetBox = document.createElement('div'); targetBox.className = 'card stack'; + targetBox.style.width = 'min(100%, 320px)'; targetBox.innerHTML = ` Кошелёк получателя

${targetWallet || 'Не передан параметр wallet'}

@@ -40,6 +44,10 @@ export function render({ navigate }) { const status = document.createElement('p'); status.className = 'meta-muted'; + status.style.width = 'min(100%, 320px)'; + status.style.overflowWrap = 'anywhere'; + status.style.wordBreak = 'break-word'; + status.style.whiteSpace = 'pre-wrap'; status.textContent = 'Готово к пополнению.'; const fillBtn = document.createElement('button'); @@ -55,6 +63,8 @@ export function render({ navigate }) { const actions = document.createElement('div'); actions.className = 'auth-footer-actions'; + actions.style.width = 'min(100%, 320px)'; + actions.style.justifySelf = 'center'; actions.append(fillBtn, backBtn); let senderAddress = ''; @@ -90,7 +100,7 @@ export function render({ navigate }) { amountSol: TRANSFER_AMOUNT_SOL, }); await updateSenderBalance(); - status.textContent = `Готово. Signature: ${tx.signature}`; + status.textContent = `Готово.\nSignature: ${tx.signature}`; } catch (error) { status.textContent = `Ошибка перевода: ${error?.message || 'unknown'}`; } finally { diff --git a/shine-UI/js/pages/login-password-view.js b/shine-UI/js/pages/login-password-view.js index d982601..5eb1ab9 100644 --- a/shine-UI/js/pages/login-password-view.js +++ b/shine-UI/js/pages/login-password-view.js @@ -22,12 +22,19 @@ export function render({ navigate }) { const loginInput = document.createElement('input'); loginInput.className = 'input'; loginInput.type = 'text'; + loginInput.autocomplete = 'off'; + loginInput.autocapitalize = 'off'; + loginInput.spellcheck = false; loginInput.value = state.loginDraft.login; loginInput.placeholder = 'Введите логин'; const passwordInput = document.createElement('input'); passwordInput.className = 'input'; passwordInput.type = 'password'; + passwordInput.name = 'shine-login-password'; + passwordInput.autocomplete = 'new-password'; + passwordInput.autocapitalize = 'off'; + passwordInput.spellcheck = false; passwordInput.value = state.loginDraft.password; passwordInput.placeholder = 'Введите пароль (можно оставить пустым)'; diff --git a/shine-UI/js/pages/register-view.js b/shine-UI/js/pages/register-view.js index bb2d27b..4492b0a 100644 --- a/shine-UI/js/pages/register-view.js +++ b/shine-UI/js/pages/register-view.js @@ -21,12 +21,19 @@ export function render({ navigate }) { const loginInput = document.createElement('input'); loginInput.className = 'input'; loginInput.type = 'text'; + loginInput.autocomplete = 'off'; + loginInput.autocapitalize = 'off'; + loginInput.spellcheck = false; loginInput.value = state.registrationDraft.login; loginInput.placeholder = 'Введите логин'; const passwordInput = document.createElement('input'); passwordInput.className = 'input'; passwordInput.type = 'password'; + passwordInput.name = 'shine-register-password'; + passwordInput.autocomplete = 'new-password'; + passwordInput.autocapitalize = 'off'; + passwordInput.spellcheck = false; passwordInput.value = state.registrationDraft.password; passwordInput.placeholder = 'Введите пароль (можно оставить пустым)'; diff --git a/shine-UI/server-ui/create-server-pda.html b/shine-UI/server-ui/create-server-pda.html index 8745eab..1de37ce 100644 --- a/shine-UI/server-ui/create-server-pda.html +++ b/shine-UI/server-ui/create-server-pda.html @@ -77,7 +77,7 @@
- +
Нажмите «Сгенерировать» — поля ниже заполнятся из логина + пароля (Argon2id).
Или введите ключи вручную.
diff --git a/shine-UI/server-ui/js/create-server-pda-page.js b/shine-UI/server-ui/js/create-server-pda-page.js index d6d80c5..49bc60c 100644 --- a/shine-UI/server-ui/js/create-server-pda-page.js +++ b/shine-UI/server-ui/js/create-server-pda-page.js @@ -30,6 +30,7 @@ const fieldMap = { setupPasswordEye($('btnEye'), $('password')); wireDeviceAddressPreview(fieldMap); +$('password').value = ''; $('btnTopupDevnet').addEventListener('click', () => { try { diff --git a/shine-UI/server-ui/js/update-server-pda-page.js b/shine-UI/server-ui/js/update-server-pda-page.js index 41ad284..7eeadf7 100644 --- a/shine-UI/server-ui/js/update-server-pda-page.js +++ b/shine-UI/server-ui/js/update-server-pda-page.js @@ -34,6 +34,7 @@ let currentPda = null; setupPasswordEye($('btnEye'), $('password')); wireDeviceAddressPreview(fieldMap); +$('password').value = ''; $('btnTopupDevnet').addEventListener('click', () => { try { @@ -87,6 +88,7 @@ $('btnLoad').addEventListener('click', async () => { $('iBch').textContent = parsed.blockchain.blockchainName; $('iLimit').textContent = formatBigInt(parsed.blockchain.paidLimitBytes); + $('password').value = ''; $('serverAddress').value = parsed.serverAddress || ''; $('syncServers').value = parsed.syncServers.join('\n'); $('pdaInfo').style.display = 'block'; diff --git a/shine-UI/server-ui/update-server-pda.html b/shine-UI/server-ui/update-server-pda.html index 7c9c817..941700b 100644 --- a/shine-UI/server-ui/update-server-pda.html +++ b/shine-UI/server-ui/update-server-pda.html @@ -92,7 +92,7 @@
- +
Нажмите «Сгенерировать» — поля ниже заполнятся из логина + пароля.
Или введите ключи вручную.