fix(ui): preserve required-field feedback state across edits - #536
fix(ui): preserve required-field feedback state across edits#536seonghobae wants to merge 14 commits into
Conversation
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.required-star` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.required-star` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
|
@jules exact-head UX/a11y repair request for The current implementation has a deterministic visual RED: the error-preview spans carry both Minimal causal GREEN:
|
|
Fleet-side bounded repair completed without touching the material UI source: |
I have created a semantic |
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
|
@jules exact-head repair request after deterministic RED commit The new regression intentionally fails on both numeric target handlers because their reset path removes Minimal causal GREEN only: in the |
I have replaced |
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
💡 What: 대상 바이트 입력 필드 및 파일 입력 필드를 비웠을 때 명시적인 에러 메시지('This field is required.')를 표시하고 `aria-invalid="true"`를 설정하며 `.help-text.error-text` 클래스를 활용하도록 변경했습니다.
🎯 Why: 사용자가 필수 입력 필드의 값을 지우거나 취소했을 때 아무런 시각적 피드백이나 에러 피드백이 제공되지 않아 혼란을 줄 수 있었기 때문입니다.
📸 Before/After: N/A (필드를 비울 때 에러 텍스트 표시로 동작 변경)
♿ Accessibility: 사용자가 필수 필드를 비울 때 상태를 무시하지 않고 스크린 리더 사용자도 인지할 수 있도록 `aria-invalid` 속성을 명시적으로 true로 설정하여 접근성을 강화했습니다.
Current authority — 2026-09-07
main@47c6fd27de13b0da37a7db64697b86994190935177fb1324a67b1522b8d50700fe99c936f4cb1132Buyer-visible contract
Required file and target-size inputs expose inline
This field is required.feedback when emptied, set custom validity andaria-invalid="true", and clear the error state again when the user supplies a valid value. Existingrequired,aria-describedby, live-preview, preset and file-input behavior remain part of the contract.RED → causal source repair
At predecessor
0db80dc895ff17fc79f414e9cdd5a65794cffed9,tests/test_empty_target_validation.pyrequired both numeric target handlers to clearerror-textbefore validating a new value. Production source still removedrequired-star, despite the invalid/empty branches addingerror-text.Repair head
f0cdaeaee6a7444b70b515f54a24b1d6b10976d2implements that exact correction in both numeric handlers: reset removeserror-text; empty and invalid states add it. File-input required feedback and the focused regression remain present.Fresh compare from
f0cdaea...to current77fb1324...reports ahead 7 / behind 0 / file delta 0. The seven intervening descendants therefore add no semantic tree change. Their history is preserved, but they are not additional evidence and must not be repeated merely to create workflow generations. Current-head CI34045374302, Security34045374330, SAST34045374234, CodeQL PR34045374403, and fuzz34045374312are newly queued; predecessor gate results do not transfer.Delivery Gate
Keep Draft until one unchanged exact head has the focused and existing SaaS web tests GREEN, applicable hosted gates terminal, browser/a11y recovery behavior verified, and qualifying independent review current. If a hosted check fails, repair its code/config/log cause; do not add another tree-neutral commit to re-kick CI.
Do not self-approve, weaken gates, suppress scanners, force-push or destructively rebase.