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
3 changes: 3 additions & 0 deletions .jules/palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 2024-05-14 - Google Material Icons Accessibility
**Learning:** Google Material Icons rely on ligature text (e.g., `content_copy` or `close`) inside `<span class="material-symbols-outlined">`. Without `aria-hidden="true"`, screen readers will announce this literal ligature text to users, causing severe confusion. The `title` attribute is insufficient for accessibility as some screen reader configurations ignore it.
**Action:** When adding `aria-label` to icon-only action buttons, always ensure the inner icon element (e.g., `<span class="material-symbols-outlined">`) is explicitly marked with `aria-hidden="true"`.
8 changes: 4 additions & 4 deletions webui/components/modals/file-browser/file-browser.html
Original file line number Diff line number Diff line change
Expand Up @@ -103,11 +103,11 @@
</button>
</div>
</div>
<button class="btn-icon-action" x-show="!file.is_dir" @click.stop="$store.fileBrowser.downloadFile(file)" title="Download file">
<span class="material-symbols-outlined">download</span>
<button class="btn-icon-action" x-show="!file.is_dir" @click.stop="$store.fileBrowser.downloadFile(file)" title="Download file" aria-label="Download file">
<span class="material-symbols-outlined" aria-hidden="true">download</span>
</button>
<button class="btn-icon-action" @click.stop="$confirmClick($event, () => $store.fileBrowser.deleteFile(file))" title="Delete item">
<span class="material-symbols-outlined">delete</span>
<button class="btn-icon-action" @click.stop="$confirmClick($event, () => $store.fileBrowser.deleteFile(file))" title="Delete item" aria-label="Delete item">
<span class="material-symbols-outlined" aria-hidden="true">delete</span>
</button>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions webui/components/sidebar/chats/chats-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ <h3 class="section-header">Chats</h3>
<span class="chat-name"
x-text="context.name ? context.name : 'Chat #' + context.no"></span>
</div>
<button class="btn-icon-action chat-list-action-btn" title="Close chat" @click.stop="$confirmClick($event, () => $store.chats.killChat(context.id))">
<span class="material-symbols-outlined">close</span>
<button class="btn-icon-action chat-list-action-btn" title="Close chat" aria-label="Close chat" @click.stop="$confirmClick($event, () => $store.chats.killChat(context.id))">
<span class="material-symbols-outlined" aria-hidden="true">close</span>
</button>
</div>
</li>
Expand Down
13 changes: 7 additions & 6 deletions webui/components/sidebar/tasks/tasks-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,16 @@
<div class="task-actions">
<button class="btn-icon-action"
@click.stop="$store.tasks.openDetail(task.id)"
title="View task details">
<span class="material-symbols-outlined">Info</span>
title="View task details"
aria-label="View task details">
<span class="material-symbols-outlined" aria-hidden="true">Info</span>
</button>
<button class="btn-icon-action" title="Clear task chat"
<button class="btn-icon-action" title="Clear task chat" aria-label="Clear task chat"
@click.stop="$confirmClick($event, () => $store.tasks.reset(task.id))">
<span class="material-symbols-outlined">delete_sweep</span>
<span class="material-symbols-outlined" aria-hidden="true">delete_sweep</span>
</button>
<button class="btn-icon-action" title="Delete task" @click.stop="$confirmClick($event, () => $store.tasks.deleteTask(task.id))">
<span class="material-symbols-outlined">close</span>
<button class="btn-icon-action" title="Delete task" aria-label="Delete task" @click.stop="$confirmClick($event, () => $store.tasks.deleteTask(task.id))">
<span class="material-symbols-outlined" aria-hidden="true">close</span>
</button>
</div>
</div>
Expand Down
16 changes: 8 additions & 8 deletions webui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,17 @@

<!-- Chat Navigation Buttons (floating over chat area) -->
<div id="chat-nav-buttons" aria-label="Chat navigation" x-cloak>
<button class="btn-icon-action" title="Scroll to top" @click="$store.chatNavigation.scrollToTop()">
<span class="material-symbols-outlined">vertical_align_top</span>
<button class="btn-icon-action" title="Scroll to top" aria-label="Scroll to top" @click="$store.chatNavigation.scrollToTop()">
<span class="material-symbols-outlined" aria-hidden="true">vertical_align_top</span>
</button>
<button class="btn-icon-action" title="Previous user message" @click="$store.chatNavigation.scrollToPrevUserMessage()">
<span class="material-symbols-outlined">keyboard_arrow_up</span>
<button class="btn-icon-action" title="Previous user message" aria-label="Previous user message" @click="$store.chatNavigation.scrollToPrevUserMessage()">
<span class="material-symbols-outlined" aria-hidden="true">keyboard_arrow_up</span>
</button>
<button class="btn-icon-action" title="Next user message" @click="$store.chatNavigation.scrollToNextUserMessage()">
<span class="material-symbols-outlined">keyboard_arrow_down</span>
<button class="btn-icon-action" title="Next user message" aria-label="Next user message" @click="$store.chatNavigation.scrollToNextUserMessage()">
<span class="material-symbols-outlined" aria-hidden="true">keyboard_arrow_down</span>
</button>
<button class="btn-icon-action" title="Scroll to bottom" @click="$store.chatNavigation.scrollToBottom()">
<span class="material-symbols-outlined">vertical_align_bottom</span>
<button class="btn-icon-action" title="Scroll to bottom" aria-label="Scroll to bottom" @click="$store.chatNavigation.scrollToBottom()">
<span class="material-symbols-outlined" aria-hidden="true">vertical_align_bottom</span>
</button>
</div>
</div>
Expand Down