From 15f7e6a64de2ec291f13c93d7eee28920a4078b6 Mon Sep 17 00:00:00 2001 From: Andreas Wrede Date: Sat, 9 May 2026 11:57:47 -0400 Subject: [PATCH] feat: profile page self-service for identity, password, and notification channels Co-Authored-By: Claude Sonnet 4.6 --- hbd/server/templates/profile.html | 143 ++++++++++++++++++++++++++++-- 1 file changed, 137 insertions(+), 6 deletions(-) diff --git a/hbd/server/templates/profile.html b/hbd/server/templates/profile.html index b4d58c0..f486317 100644 --- a/hbd/server/templates/profile.html +++ b/hbd/server/templates/profile.html @@ -204,6 +204,22 @@ } .channel-name { color: #333; } + + .edit-section { margin-top: 20px; } + .edit-section h4 { font-size: .88em; font-weight: 600; color: #333; margin: 0 0 10px; text-transform: uppercase; letter-spacing: .04em; border-bottom: 1px solid #eee; padding-bottom: 6px; } + .edit-field { margin-bottom: 10px; } + .edit-field label { display: block; font-size: .82em; color: #666; margin-bottom: 3px; } + .edit-input { width: 100%; border: 1px solid #ccc; border-radius: 4px; padding: 5px 8px; font-size: .88em; box-sizing: border-box; } + .edit-input:focus { border-color: #0066cc; outline: none; } + .status-msg { font-size: .82em; margin-left: 8px; } + .save-row { display: flex; align-items: center; margin-top: 8px; } + .btn-save { background: #0066cc; color: #fff; border: none; border-radius: 4px; padding: 5px 14px; font-size: .85em; cursor: pointer; } + .btn-save:hover { background: #0055aa; } + .channel-item { display: flex; align-items: flex-start; gap: 8px; padding: 6px 0; border-bottom: 1px solid #f5f5f5; } + .channel-item:last-child { border-bottom: none; } + .channel-item label { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; font-size: .88em; } + .channel-item .ch-name { font-weight: 500; color: #222; } + .channel-item .ch-meta { font-size: .8em; color: #888; } @@ -266,16 +282,68 @@ + {% if current_user %} + +
+

Identity

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+

Change password

+
+ + +
+
+ + +
+
+ + +
+
+ {% endif %} +

Notification Channels

- {% if notification_channels %} - {% for ch in notification_channels %} -
- {{ ch.type }} - {{ ch.name }} + {% if current_user %} +

Select which channels send you alerts. Channels are defined by the administrator.

+ {% if all_channel_names %} +
+ {% for ch_name in all_channel_names %} +
+ +
+ {% endfor %} +
+ {% else %} +

No notification channels configured.

+ {% endif %} +
+ +
- {% endfor %} {% else %} No personal notification channels configured. {% endif %} @@ -326,5 +394,68 @@
+