diff --git a/.Jules/palette.md b/.Jules/palette.md
new file mode 100644
index 000000000..3185a9d8b
--- /dev/null
+++ b/.Jules/palette.md
@@ -0,0 +1,3 @@
+## 2026-10-19 - Missing ARIA Labels on Template Buttons
+**Learning:** The server-rendered HTML templates (`pkgs/id/src/web/templates.rs`) often miss `aria-label` attributes on empty or icon-only interactive elements like theme selectors or short "+" buttons, despite having visual `title` attributes. This is a common accessibility anti-pattern in this app's UI.
+**Action:** Always check server-rendered HTML blocks for missing `aria-label`s on `button` tags when they are visually minimal or empty.
diff --git a/pkgs/id/src/web/templates.rs b/pkgs/id/src/web/templates.rs
index 2283dbb75..1d5516253 100644
--- a/pkgs/id/src/web/templates.rs
+++ b/pkgs/id/src/web/templates.rs
@@ -93,9 +93,9 @@ pub fn render_main_page_wrapper(content: &str) -> String {
html.push_str(" peers\n");
html.push_str(" settings\n");
html.push_str(" \n");
- html.push_str(" \n");
- html.push_str(" \n");
- html.push_str(" \n");
+ html.push_str(" \n");
+ html.push_str(" \n");
+ html.push_str(" \n");
html.push_str(" \n");
html.push_str(" \n");
html.push_str(" \n");
@@ -458,9 +458,9 @@ pub fn render_editor(doc_id: &str, name: &str, content: &str, hash: &str) -> Str
html.push_str(" peers\n");
html.push_str(" settings\n");
html.push_str(" \n");
- html.push_str(" \n");
- html.push_str(" \n");
- html.push_str(" \n");
+ html.push_str(" \n");
+ html.push_str(" \n");
+ html.push_str(" \n");
html.push_str(" \n");
html.push_str(" \n");
html.push_str(" \n");
@@ -474,7 +474,7 @@ pub fn render_editor(doc_id: &str, name: &str, content: &str, hash: &str) -> Str
html.push_str(" \n");
html.push_str(" \n");
html.push_str(" \n");
- html.push_str(" \n");
+ html.push_str(" \n");
html.push_str(" \n");
html.push_str(" \n");