[F8-01] Экраны входа: автофокус + запрет автоподстановки кода #44

Closed
opened 2026-05-25 21:40:19 +00:00 by owner · 3 comments
Collaborator

Подзадача полировки UI (этап F8), родительский #43.

Цель: Автофокус на нужном поле обоих экранов входа и подавление автоподстановки кода подтверждения.

Пункты из #43:

1. Экран "sign in to Galaxy": при загрузке ставить курсор в поле email, чтобы можно было сразу начать ввод.
2. Экран запроса кода подтверждения: аналогично, сразу активировать курсор в поле "code".
3. Почему-то в Firefox запомнилось предыдущее значение, введенное в поле "code" - код подтверждения email. И теперь при клике на поле ввода появляется в выпадающем списке. Это надо всячески избежать, в том числе в Safari (там вроде бы не подтверждается такое поведение, но обрати внимание, как мы боролись с запоминанием email - вдруг поможет с Firefox).

Заметка. п.3 — повторить приём, которым уже подавлено запоминание email (атрибуты autocomplete/имя поля), и проверить в Firefox и Safari.


Порядок обработки: F8-01 из 12. Создано в рамках #43; зонтичный issue остаётся открытым до закрытия всех подзадач.

Подзадача полировки UI (этап **F8**), родительский #43. **Цель:** Автофокус на нужном поле обоих экранов входа и подавление автоподстановки кода подтверждения. **Пункты из #43:** > **1.** Экран "sign in to Galaxy": при загрузке ставить курсор в поле email, чтобы можно было сразу начать ввод. > **2.** Экран запроса кода подтверждения: аналогично, сразу активировать курсор в поле "code". > **3.** Почему-то в Firefox запомнилось предыдущее значение, введенное в поле "code" - код подтверждения email. И теперь при клике на поле ввода появляется в выпадающем списке. Это надо всячески избежать, в том числе в Safari (там вроде бы не подтверждается такое поведение, но обрати внимание, как мы боролись с запоминанием email - вдруг поможет с Firefox). _Заметка._ п.3 — повторить приём, которым уже подавлено запоминание email (атрибуты `autocomplete`/имя поля), и проверить в Firefox и Safari. --- _Порядок обработки: **F8-01** из 12. Создано в рамках #43; зонтичный issue остаётся открытым до закрытия всех подзадач._
owner added the Kind/Bug
Priority
Low
4
Kind/Enhancementready
labels 2026-05-25 21:40:19 +00:00
developer was assigned by owner 2026-05-25 21:40:19 +00:00
developer added
claude
working
and removed ready labels 2026-05-25 21:46:44 +00:00
Owner
Working log (issue-agent) — click to expand

State: done (merged)
Updated: 2026-05-26T (merge-gate run)
Branch / PR: PR #56 MERGED into development (normal merge commit); source branch feature/issue-44-login-autofocus-otp auto-deleted; Closes #44 closed the issue.
Confirmed at merge gate:

  • PR #56 targeted development, body carried Closes #44, mergeable=true.
  • Fresh APPROVED review by the author (owner), review id 4, commit_id=3d5b331b == PR head, stale=false — covers head, not my own approval.
  • CI green by actual run conclusions on head 3d5b331b: test (push) #357 success, test (pull_request) #358 success, deploy #359 (manual dev-deploy preview) success. The combined commit /status read pending — the documented phantom orphan-row, not a live check.
  • Zero review/code-comment threads on the PR → nothing unresolved; author opened none.
    Open question:
    Decisions: All merge-gate conditions held → merged; set claude/done (exclusive scope cleared claude/in-review); Kind/* and Priority/Low preserved.
    Next: Terminal. Firefox/Safari form-history dropdown remains owner manual-QA (no Firefox project in the e2e matrix; the attribute the fix relies on is asserted in Vitest/Playwright). If the owner reports a regression, reopen-scope would be a fresh issue.
<!-- issue-agent:worklog --> <details> <summary>Working log (issue-agent) — click to expand</summary> **State:** done (merged) **Updated:** 2026-05-26T (merge-gate run) **Branch / PR:** PR #56 MERGED into `development` (normal merge commit); source branch `feature/issue-44-login-autofocus-otp` auto-deleted; `Closes #44` closed the issue. **Confirmed at merge gate:** - PR #56 targeted `development`, body carried `Closes #44`, `mergeable=true`. - Fresh `APPROVED` review by the author (`owner`), review id 4, `commit_id=3d5b331b` == PR head, `stale=false` — covers head, not my own approval. - CI green by actual run conclusions on head `3d5b331b`: `test (push)` #357 success, `test (pull_request)` #358 success, `deploy` #359 (manual dev-deploy preview) success. The combined commit `/status` read `pending` — the documented phantom orphan-row, not a live check. - Zero review/code-comment threads on the PR → nothing unresolved; author opened none. **Open question:** — **Decisions:** All merge-gate conditions held → merged; set `claude/done` (exclusive scope cleared `claude/in-review`); Kind/* and Priority/Low preserved. **Next:** Terminal. Firefox/Safari form-history dropdown remains owner manual-QA (no Firefox project in the e2e matrix; the attribute the fix relies on is asserted in Vitest/Playwright). If the owner reports a regression, reopen-scope would be a fresh issue. </details>
developer added
claude
in-review
and removed
claude
working
labels 2026-05-25 22:00:02 +00:00
Owner

@owner, готово, кладу на ревью — PR #56development, Closes #44). CI зелёный (ui-test).

Что сделала

  • Автофокус (пп. 1–2). Курсор сам встаёт в нужное поле, как только появляется экран: email — при загрузке, code — сразу после перехода к шагу ввода кода. Сделала маленьким use:-экшеном; фокус заодно снимает readonly-«заглушку» (приём против автозаполнения Safari остался жив), так что поле сразу готово к вводу.
  • Код больше не «всплывает» из истории (п. 3). Тут нюанс, на который хочу обратить твоё внимание: приём, которым подавлено запоминание email, на поле кода уже стоял с момента app-shell (b6770d3, 23 мая) — то есть ещё до твоего репорта. Поэтому «повторить как с email» само по себе не помогло бы. autocomplete="new-password" — это подсказка менеджерам паролей, а не запрет истории форм Firefox. Поменяла поле кода на autocomplete="one-time-code" — это семантический токен для кода подтверждения, и Firefox именно его уважает, чтобы не складывать значение в историю форм (Mozilla bug 1547294). Поле email оставила на new-password — ему всё ещё надо отбиваться от автозаполнения сохранённого логина.

Тесты

  • Vitest: автофокус обоих шагов (+ что readonly снимается) и токен one-time-code.
  • Playwright: то же самое, прогналось локально в Chromium и WebKit (движок Safari) — оба зелёные.
  • Firefox — за тобой, руками: в e2e-матрице проекта Firefox-проекта нет, поэтому сам выпадающий список из истории форм проверь, пожалуйста, вручную в Firefox (и заодно глянь Safari). Атрибут, на котором держится фикс, тестами закрыт.

Файлы: ui/frontend/src/lib/screens/login-screen.svelte, ui/frontend/tests/login-page.test.ts, ui/frontend/tests/e2e/auth-flow.spec.ts, ui/docs/auth-flow.md (новый раздел «Focus and autofill suppression»).

Мерджить сама не буду — жду твоего ревью/APPROVED. Если в Firefox/Safari что-то поведёт себя не так — напиши, докручу.

@owner, готово, кладу на ревью — PR #56 (в `development`, `Closes #44`). CI зелёный (ui-test). **Что сделала** - **Автофокус (пп. 1–2).** Курсор сам встаёт в нужное поле, как только появляется экран: email — при загрузке, code — сразу после перехода к шагу ввода кода. Сделала маленьким `use:`-экшеном; фокус заодно снимает `readonly`-«заглушку» (приём против автозаполнения Safari остался жив), так что поле сразу готово к вводу. - **Код больше не «всплывает» из истории (п. 3).** Тут нюанс, на который хочу обратить твоё внимание: приём, которым подавлено запоминание email, на поле кода **уже стоял** с момента app-shell (`b6770d3`, 23 мая) — то есть ещё до твоего репорта. Поэтому «повторить как с email» само по себе не помогло бы. `autocomplete="new-password"` — это подсказка менеджерам паролей, а не запрет истории форм Firefox. Поменяла поле кода на `autocomplete="one-time-code"` — это семантический токен для кода подтверждения, и Firefox именно его уважает, чтобы не складывать значение в историю форм ([Mozilla bug 1547294](https://bugzilla.mozilla.org/show_bug.cgi?id=1547294)). Поле email оставила на `new-password` — ему всё ещё надо отбиваться от автозаполнения сохранённого логина. **Тесты** - Vitest: автофокус обоих шагов (+ что `readonly` снимается) и токен `one-time-code`. - Playwright: то же самое, прогналось локально в Chromium и **WebKit (движок Safari)** — оба зелёные. - **Firefox — за тобой, руками**: в e2e-матрице проекта Firefox-проекта нет, поэтому сам выпадающий список из истории форм проверь, пожалуйста, вручную в Firefox (и заодно глянь Safari). Атрибут, на котором держится фикс, тестами закрыт. **Файлы:** `ui/frontend/src/lib/screens/login-screen.svelte`, `ui/frontend/tests/login-page.test.ts`, `ui/frontend/tests/e2e/auth-flow.spec.ts`, `ui/docs/auth-flow.md` (новый раздел «Focus and autofill suppression»). Мерджить сама не буду — жду твоего ревью/APPROVED. Если в Firefox/Safari что-то поведёт себя не так — напиши, докручу.
developer added
claude
done
and removed
claude
in-review
labels 2026-05-25 22:11:52 +00:00
Owner

@owner, спасибо за ревью — влила PR #56 в development обычным merge-коммитом, ветку Gitea подчистила сама, issue закрылась по Closes #44. Мердж в development штатно уедет на dev-окружение через dev-deploy.yaml.

Напоминаю про твою часть: выпадающий список из истории форм в Firefox (и заодно Safari) тестами не покрыть — Firefox-проекта в e2e-матрице нет. Атрибут, на котором держится фикс (autocomplete="one-time-code" на поле кода), проверен в Vitest и Playwright (Chromium + WebKit), а сам дропдаун глянь, пожалуйста, руками. Если в Firefox код всё ещё всплывает — пиши, заведём отдельную подзадачу и докрутим.

F8-01 закрыт. Зонтичный #43 остаётся открытым до остальных подзадач.

@owner, спасибо за ревью — влила PR #56 в `development` обычным merge-коммитом, ветку Gitea подчистила сама, issue закрылась по `Closes #44`. Мердж в `development` штатно уедет на dev-окружение через `dev-deploy.yaml`. Напоминаю про твою часть: выпадающий список из истории форм в **Firefox** (и заодно Safari) тестами не покрыть — Firefox-проекта в e2e-матрице нет. Атрибут, на котором держится фикс (`autocomplete="one-time-code"` на поле кода), проверен в Vitest и Playwright (Chromium + WebKit), а сам дропдаун глянь, пожалуйста, руками. Если в Firefox код всё ещё всплывает — пиши, заведём отдельную подзадачу и докрутим. F8-01 закрыт. Зонтичный #43 остаётся открытым до остальных подзадач.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/galaxy-game#44