Repository navigation
fix(формы): подсказки браузера в полях с маской и в окне Предприятия - #1871
AnnaSIceberg wants to merge 3 commits into
Conversation
Поле с input_mask получает autocomplete="one-time-code": Яндекс Браузер на "off" (ivanarama#595) не смотрит и подсказывает сохранённые телефоны. В окне WebView2 выключены автозаполнение форм и сохранение паролей. Generated-with: Claude Code
|
Ревью. (круг 1)
|
|
PromptPilot service marker: REVIEW result publication claimed. |
|
PromptPilot service marker: REVIEW result committed. |
Ревью ivanarama#1871 (круг 1): IsPasswordAutosaveEnabled по умолчанию FALSE, а не TRUE — README и комментарий патча называют умолчания раздельно, патч ставит оба в FALSE явно. one-time-code по стандарту — поле кода подтверждения (Safari подставляет в него коды); комментарии говорят о проверенном эффекте — подсказки телефонов в Яндекс Браузере пропадают, а тест проверяет атрибут, не поведение браузеров. Код не менялся. Generated-with: Claude Code
|
Замечания ревью (круг 1) исправлены: HEAD
Только тексты, код не менялся. Описание PR поправлено так же. CI на этом SHA зелёный целиком: https://github.com/ivanarama/onebase/actions/runs/37332110391 Прошу повторное ревью нового HEAD. |
|
HEAD изменился после ревью: завершённое заключение относится к |
|
Ревью. (круг 2)
|
|
PromptPilot service marker: REVIEW result publication claimed. |
|
PromptPilot service marker: REVIEW result committed. |
Режим работы
Ветка от upstream
main5aa723cf. Заявки нет: находка из эксплуатации CC2, исправление небольшое, поэтому сразу Draft PR (CONTRIBUTING).Что было
Оператор вводит телефон в поле с маской
(000)000-00-00и видит выпадающий список телефонов из прошлых звонков: «+7 999 999-99-99», «8888888888» и т. д., с пунктами «Настроить / Закрыть». Это автозаполнение Яндекс Браузера из его профиля. Платформа ставит полямautocomplete="off"(#595), но Яндекс для телефонов на него не смотрит.У окна Предприятия в лаунчере (WebView2) своё автозаполнение форм (
IsGeneralAutofillEnabled, по умолчанию TRUE). Оно так же запоминает введённое в окне и подсказывает это потом.Что стало
input_maskполучаетautocomplete="one-time-code", остальные текстовые поля — прежнийoff. Это и поле объекта, и реквизит формы: оба места шаблонаmanaged-element; значение выбирает функция шаблонаinputAutocomplete.third_party/webview_go, методembed): черезICoreWebView2Settings4выключеноIsGeneralAutofillEnabled(по умолчанию TRUE);IsPasswordAutosaveEnabled(по умолчанию FALSE) ставится в FALSE явно. Если интерфейса нет (старый runtime), окно открывается как раньше. Патч помеченonebase patchи описан в README vendored-копии.Почему
one-time-codeВарианты проверены вручную в Яндекс Браузере на тестовой странице: поля с подписью «Мобильный», плейсхолдером маски и
inputmode="numeric".autocomplete="off"(как сейчас)one-time-codenope(нестандартное значение)new-passwordoff+readonlyдо фокусаoffбезinputmodeoff+aria-autocomplete="none"new-passwordзовёт менеджер паролей;nopeдержится на том, что браузер не узнаёт значение, и может перестать работать.one-time-code— стандартный токен HTML для поля кода подтверждения: браузер может подставить в него пришедший одноразовый код (так делает Safari), но сохранённые телефоны в Яндекс Браузере на таком поле больше не подсказываются — это проверено вручную. Это обход для телефонов в Яндексе, а не гарантия отсутствия любых подсказок во всех браузерах; GET-тест проверяет выдаваемый атрибут, а не поведение браузеров.Подсказки гасятся только у полей с маской: на них пришла жалоба, и там их точно не бывает к месту. Остальные поля не трогал, у них прежний
off.Ответ на ревью (круг 1)
Коммит
3a669103, только тексты, код не менялся:third_party/webview_go/README.mdи комментарий патча вwebview.h: умолчания названы раздельно (IsGeneralAutofillEnabled= TRUE,IsPasswordAutosaveEnabled= FALSE), патч явно ставит оба в FALSE.internal/ui/templates.go(inputAutocomplete) иinternal/ui/masked_input_autocomplete_test.go: реальная семантикаone-time-code(код подтверждения, Safari его подсказывает) и ограничение проверенным эффектом — подсказки телефонов в Яндекс Браузере; тест проверяет атрибут.Хвост ревью (три
TestRunServiceInstallPrint*на macOS) — вне diff, не трогал.Проверки
internal/ui/masked_input_autocomplete_test.go. Форма отдаётся обычным GET (formEdit). Проверяется, что поле объекта с маской и реквизит формы с маской получаютone-time-code, а реквизит без маски —off.offдля полей с маской, тест краснеет.TestObjectForm_StringInputSuppressesAutofillзелёный.go build -tags webview -ldflags="-H windowsgui" ./cmd/onebase(mingw64) собирается. Работу настройки в живом окне глазами не проверял: свежий профиль WebView2 пуст, и подсказкам неоткуда взяться.go test ./internal/ui/иgo vet ./internal/ui/— зелёные;gofmt— чисто.🤖 Generated with Claude Code