-
Notifications
You must be signed in to change notification settings - Fork 0
π¨ Palette: λμ보λ ν€λ νμΌ μ λ‘λ νλ‘μ λ²νΌ UI μΆκ° #989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -81,3 +81,7 @@ | |
| ## 2026-08-12 - Skip to Content Accessibility | ||
| **Learning:** Screen reader and keyboard-only users experience significant friction when forced to navigate through repetitive header controls on every page load. | ||
| **Action:** Keep a visible-on-focus skip link as the first interactive element, target a programmatically focusable main container, and give the focused link a high-contrast outline. | ||
|
|
||
| ## 2026-08-20 - Header File Upload Proxy Button | ||
| **Learning:** Native `<input type="file">` elements have inconsistent, unstylable UI across browsers that disrupts header layouts. Directly hiding them and proxying clicks via a standard `<button>` ensures visual consistency and allows for proper accessible naming without duplication. | ||
| **Action:** Visually hide native file inputs with `.sr-only` and `aria-hidden="true"`, moving `aria-label` to the proxy `<button>` to maintain an accessible, harmonious UI. | ||
|
Comment on lines
+86
to
+87
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. π― Functional Correctness | π‘ Minor | β‘ Quick win π§© Analysis chainπ Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- target files ---'
git ls-files .jules/palette.md scanner/dashboard/index.html
printf '%s\n' '--- file-input and focus references ---'
rg -n -C 4 'type="file"|header-browse|aria-hidden|tabindex|focus\(|change|cancel' .jules/palette.md scanner/dashboard/index.html scanner/dashboard 2>/dev/null | head -n 500
printf '%s\n' '--- file sizes ---'
wc -l .jules/palette.md scanner/dashboard/index.htmlRepository: ContextualWisdomLab/appguardrail Length of output: 27113 π Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- style and script context ---'
sed -n '1,115p' scanner/dashboard/index.html
sed -n '318,342p' scanner/dashboard/index.html
printf '%s\n' '--- focus-return references in dashboard ---'
rg -n -C 2 'headerBrowse|header-browse|fileInput|\.focus\(' scanner/dashboard/index.html
printf '%s\n' '--- static behavioral check ---'
python3 - <<'PY'
from pathlib import Path
import re
p = Path("scanner/dashboard/index.html")
s = p.read_text()
input_match = re.search(r'<input\b[^>]*\bid="file"[^>]*>', s)
click_match = re.search(r'if \(headerBrowse\).*?fileInput\.click\(\)', s, re.S)
change_match = re.search(
r'fileInput\.addEventListener\(\'change\',\s*\(\)\s*=>\s*\{(?P<body>.*?)\}\);',
s,
re.S,
)
assert input_match and click_match and change_match
attrs = input_match.group(0)
body = change_match.group("body")
print("file input has tabindex=-1:", 'tabindex="-1"' in attrs)
print("file input has aria-hidden=true:", 'aria-hidden="true"' in attrs)
print("proxy invokes fileInput.click():", bool(click_match))
print("change handler restores headerBrowse focus:", bool(re.search(r'headerBrowse\.focus\(\)', body)))
print("change handler returns on no selected file:", bool(re.search(r'if\s*\(!selectedFile\)\s*return', body)))
PYRepository: ContextualWisdomLab/appguardrail Length of output: 12641 νμΌ μ νκ³Ό μ·¨μ ν
π Affects 2 files
π€ Prompt for AI Agents |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
π Maintainability & Code Quality | π‘ Minor | β‘ Quick win
νμ΅ κΈ°λ‘μ λ μ§λ₯Ό νμΈνμΈμ.
νμ¬ λ μ§λ 2026λ 8μ 19μΌμΈλ° μ΄ νλͺ©μ 2026λ 8μ 20μΌλ‘ κΈ°λ‘λμ΄ μμ΅λλ€. νμ¬ λ³κ²½μ κΈ°λ‘νλ νλͺ©μ΄λΌλ©΄ λ μ§λ₯Ό
2026-08-19λ‘ μμ νμΈμ.π€ Prompt for AI Agents