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 number Diff line number Diff line change
Expand Up @@ -154,3 +154,7 @@
## 2026-05-31 - Synchronous Interactive Initialization
**Learning:** Interactive elements with dynamic text and secondary actions (like links or copy to clipboard) must have their full actionable `contentDescription` and custom `AccessibilityDelegateCompat` set synchronously during view initialization (not inside asynchronous blocks like coroutines). If delayed, screen readers lack context before the first data update. Furthermore, attaching an initial `OnClickListener` providing explicit feedback (e.g., a loading Toast) is essential if a user interacts with the UI element while it is functionally disabled during a loading state.
**Action:** Always initialize accessibility properties and add temporary feedback listeners synchronously outside of asynchronous data fetching blocks to ensure complete accessibility and responsive feedback from the moment the view is created.

## 2026-06-10 - Force LTR on Network Addresses
**Learning:** When an app supports RTL locales, the OS bidirectionality algorithms can mangle technical network strings like IP addresses and URLs (e.g., rendering `0.0.0.0:8080/cam.mjpeg` as `cam.mjpeg/8080:0.0.0.0`), destroying their readability and copy-paste accuracy.
**Action:** Always apply `android:textDirection="ltr"` to text views displaying URLs, IP addresses, or code snippets to guarantee they are rendered properly left-to-right, regardless of the user's localized system reading direction.
2 changes: 2 additions & 0 deletions app/src/main/res/layout/fragment_camera.xml
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,7 @@
android:padding="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:text="@string/default_ip"
android:textDirection="ltr"
android:textColor="@color/colorLink"
android:drawableEnd="@drawable/ic_content_copy"
android:drawableTint="@color/colorLink"
Expand Down Expand Up @@ -374,6 +375,7 @@
android:padding="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:text="@string/repo_url"
android:textDirection="ltr"
android:textColorLink="@color/colorLink"
android:drawableEnd="@drawable/ic_open_in_new"
android:drawableTint="@color/colorLink"
Expand Down