Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .Jules/palette.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,3 +21,7 @@
## 2026-08-16 - Focus Parity for CSS Transform Animations
**Learning:** When interactive elements (like `.btn` links) have CSS `transform` animations on `:hover` (e.g., `transform: translateX(4px)`), missing the corresponding `transform` on the `:focus-visible` state means keyboard users do not get the same visual feedback as mouse users, creating an inconsistent and less polished experience.
**Action:** Ensure CSS `transform` and other layout-affecting animations applied on `:hover` are also applied on `:focus-visible` for the parent element to maintain focus parity.

## 2026-08-28 - Button Semantics vs Empty Anchors for JS Actions
**Learning:** Using `<a href="#">` for JavaScript actions creates an unintended page jump to the top of the viewport when clicked and lacks the proper semantic role for interactive actions.
**Action:** Replace interactive `#` links with native `<button type="button">` elements. Apply CSS resets (e.g., `background: transparent; border: none; color: inherit;`) to preserve the existing visual layout while fixing the behavioral and accessibility regressions.
6 changes: 3 additions & 3 deletions router/static/visualizer.html
Original file line numberDiff line numberDiff line change
Expand Up@@ -322,10 +322,10 @@ <h3>✎ Human Review</h3>
<span><span class="dot hum"></span> Human selection</span>
</div>
<div class="annotation-bar">
<input type="text" id="note-input" placeholder="Optional review note..." value="${ann ? escapeHtml(ann.note || '') : ''}">
<button onclick="saveNote(${idx})">Save Note</button>
<input type="text" id="note-input" aria-label="Review note" placeholder="Optional review note..." value="${ann ? escapeHtml(ann.note || '') : ''}">
<button type="button" onclick="saveNote(${idx})">Save Note</button>
</div>
${ann ? `<div style="margin-top:8px;font-size:0.75em;color:#64b5f6">✓ Reviewed as <b>${escapeHtml(ann.tier)}</b> · <a href="#" onclick="clearAnnotation(${idx})" style="color:#f44336">clear</a></div>` : ''}
${ann ? `<div style="margin-top:8px;font-size:0.75em;color:#64b5f6">✓ Reviewed as <b>${escapeHtml(ann.tier)}</b> · <button type="button" onclick="clearAnnotation(${idx})" style="background: transparent; color:#f44336; border: none; font-family: inherit; font-size: inherit; text-decoration: underline; cursor: pointer; padding: 0;" aria-label="Clear annotation">clear</button></div>` : ''}
</div>
`;
}
Expand Down
Loading