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-01 - Add Screen Reader Support to Dynamic List Buttons
**Learning:** In WPF (XAML) apps like this one, icon-only buttons inside `ItemsControl` (like dynamic lists of deployment IDs) often lack context for screen readers. Using `AutomationProperties.Name` is the standard a11y approach here, equivalent to `aria-label` in web dev.
**Action:** Always check dynamically generated lists for icon-only action buttons (e.g., delete/remove `-` buttons) and ensure they have `ToolTip` and `AutomationProperties.Name` bound to localized strings.
2 changes: 2 additions & 0 deletions gui/Services/Localization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ public string Lang
["language"] = "Language",
["deployment_ids"] = "Deployment IDs",
["add_deployment"] = "+ Add Deployment ID",
["remove_deployment"] = "Remove Deployment ID",
["presets"] = "Connection presets",
["preset_stealth"] = "Slow but stealthy",
["preset_balanced"] = "Balanced",
Expand Down Expand Up @@ -174,6 +175,7 @@ public string Lang
["language"] = "زبان",
["deployment_ids"] = "شناسه‌های Deployment",
["add_deployment"] = "+ افزودن شناسه Deployment",
["remove_deployment"] = "حذف شناسه Deployment",
["presets"] = "پیش‌تنظیم‌های اتصال",
["preset_stealth"] = "کند ولی مخفی‌تر",
["preset_balanced"] = "متعادل",
Expand Down
4 changes: 3 additions & 1 deletion gui/Views/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,9 @@
Padding="0" Width="30" Height="30" Margin="6,0,0,0"
Command="{Binding DataContext.RemoveDeploymentCmd,
RelativeSource={RelativeSource AncestorType=Window}}"
CommandParameter="{Binding}"/>
CommandParameter="{Binding}"
ToolTip="{Binding DataContext.Loc[remove_deployment], RelativeSource={RelativeSource AncestorType=Window}}"
AutomationProperties.Name="{Binding DataContext.Loc[remove_deployment], RelativeSource={RelativeSource AncestorType=Window}}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
Expand Down
Empty file added tests/__init__.py
Empty file.