Skip to content

[UX/a11y] 대시보드 파일 입력 필드 UX 및 접근성 개선 - #1064

Open
seonghobae wants to merge 8 commits into
developfrom
palette/improve-file-input-ux-734890741892843707
Open

[UX/a11y] 대시보드 파일 입력 필드 UX 및 접근성 개선#1064
seonghobae wants to merge 8 commits into
developfrom
palette/improve-file-input-ux-734890741892843707

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

🎨 Palette: 파일 업로드 인터페이스 UX/접근성 개선

💡 What (변경 사항):
대시보드의 기본 파일 입력(file input) 필드를 숨기고, 이를 대체하는 일관된 디자인의 네이티브 <button>(프록시 요소)을 추가했습니다.

🎯 Why (해결 문제):
브라우저의 기본 <input type="file">은 스타일링이 어렵고 브라우저마다 디자인이 다르게 표시되어 일관된 사용자 경험을 저해합니다. 이를 프록시 버튼으로 대체함으로써 UI 디자인 통일성을 높였습니다.

Accessibility (접근성 향상):
단순히 시각적 요소만 변경한 것이 아니라, 프록시 버튼의 텍스트("Upload findings file") 자체가 명확한 목적을 설명하도록 하여(label-in-name 원칙) 스크린 리더 사용자에게 중복된 aria-label이 읽히는 문제를 해결했습니다. 기존 테스트 중 불필요한 aria-label 검증 로직도 함께 수정되었습니다.

이러한 UX 패턴은 .jules/palette.md에 새롭게 문서화되었습니다.


PR created automatically by Jules for task 734890741892843707 started by @seonghobae


Devin Review

Summary by CodeRabbit

  • 새로운 기능

    • 대시보드 헤더에 “Upload findings file” 버튼을 추가했습니다.
    • 버튼으로 숨겨진 파일 선택 창을 열 수 있습니다.
  • 접근성 개선

    • 파일 업로드 컨트롤을 네이티브 버튼 기반 인터페이스로 개선했습니다.
    • 관련 접근성 가이드와 키보드 탐색 동작을 정리했습니다.

- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
@google-labs-jules

Copy link
Copy Markdown

👋 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8fc9f4e5-2abb-44de-aed2-f2720e967feb

📥 Commits

Reviewing files that changed from the base of the PR and between 57f6cbd and e576d6a.

📒 Files selected for processing (3)
  • .jules/palette.md
  • scanner/dashboard/index.html
  • tests/test_dashboard_core.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

대시보드가 숨겨진 파일 입력을 명시적 업로드 버튼으로 제어하도록 변경되었습니다. 관련 접근성 지침을 추가하고, 기존 테스트의 업로드 aria-label 검증을 제거했습니다.

Changes

파일 업로드 접근성

Layer / File(s) Summary
업로드 버튼과 파일 입력 구조
.jules/palette.md, scanner/dashboard/index.html
숨겨진 파일 입력 옆에 Upload findings file 버튼을 추가했습니다. 파일 입력의 aria-label과 인라인 여백을 제거했습니다.
버튼 이벤트 연결과 검증
scanner/dashboard/index.html, tests/test_dashboard_core.py
버튼 클릭이 숨겨진 파일 입력의 click()을 호출하도록 연결했습니다. 테스트의 관련 문자열 형식을 정리하고 기존 업로드 aria-label 검증을 제거했습니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to e576d

The dashboard now uses an accessible native upload button while preserving the existing file-selection behavior. No actionable merge-blocking risk remains beyond normal checks and review.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 대시보드 파일 입력 필드를 버튼 기반 UI로 변경하고 접근성을 개선한 주요 변경 사항을 정확하고 간결하게 설명합니다.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 1 files. (2 skipped: 2 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 1 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch palette/improve-file-input-ux-734890741892843707

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
- `scanner/dashboard/index.html`의 기본 `<input type="file">`을 숨김 처리
- 시각적으로 일관된 `<button>` 프록시 요소를 추가하여 기본 파일 업로드 UI를 대체
- 불필요한 `aria-label` 제거를 통해 접근성 규칙(label-in-name) 준수
- 버튼 클릭 이벤트를 통해 숨겨진 파일 입력 필드 동작 연동 구현
- 관련 UI 컨트랙트 테스트를 업데이트하여 접근성 속성 변경 사항 반영
- `.jules/palette.md`에 새로운 UX 개선 패턴 학습 내용 기록
@seonghobae seonghobae added maintenance priority: medium Normal-priority or P2 work labels Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintenance priority: medium Normal-priority or P2 work

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant