ui: align chat list and conversation buffer with mockups

Chat list (*signal*):
- Fringe ● now uses warning face (yellow), matching mockup's
  unread indicator color
- Modeline trailing dashes extended for visual balance

Conversation buffer (*signal:NAME*):
- Compose prompt > changed from bold to link face (blue),
  matching mockup's signal-blue prompt
- Attachment rendering: [attachment: ...] → [photo: ...]
- Modeline: (Signal Chat) → (Signal Chat Fill)
- Added header-line with key hints (RET send, M-RET newline,
  C-c C-g refresh), matching mockup's discoverability goal
This commit is contained in:
2026-06-14 13:00:29 -04:00
parent cedd82738a
commit 71691a5261
3 changed files with 16 additions and 9 deletions
+12 -5
View File
@@ -37,10 +37,17 @@
map)
"Keymap for `noise-conversation-mode'.")
(defconst noise-conversation--mode-header
(concat (propertize "RET" 'face 'help-key-binding) " send "
(propertize "M-RET" 'face 'help-key-binding) " newline "
(propertize "C-c C-g" 'face 'help-key-binding) " refresh")
"Header line showing key hints for `noise-conversation-mode'.")
(define-derived-mode noise-conversation-mode text-mode "Signal Chat"
"Major mode for a Noise Signal conversation buffer.
\\{noise-conversation-mode-map}"
:group 'noise)
:group 'noise
(setq-local header-line-format noise-conversation--mode-header))
;;;###autoload
(defun noise-conversation-open (conversation-id)
@@ -107,7 +114,7 @@ Preserves any input already typed at the prompt."
(propertize (make-string noise-conversation--width ?─)
'face 'shadow)
"\n"
(propertize "> " 'face 'bold))
(propertize "> " 'face 'link))
(add-text-properties (point-min) (point)
'(read-only t
front-sticky (read-only)
@@ -149,7 +156,7 @@ Preserves any input already typed at the prompt."
(or (gethash "attachment_path" msg) ""))))
(setq body (concat body (if (string-empty-p body) "" " ")
(propertize
(format "[attachment: %s — RET to view]" file)
(format "[photo: %s — RET to view]" file)
'face 'link)))))
(let ((line (concat (propertize time-str 'face 'shadow) " "
(propertize name 'face 'bold)
@@ -167,13 +174,13 @@ Preserves any input already typed at the prompt."
(defun noise-conversation--update-modeline ()
"Update the mode line with the E2E indicator and typing status."
(setq mode-line-format
(format " %s %s %s%s ─ U:%%- ─ Bot ───"
(format " %s %s %s%s ─ U:%%- ─ Bot ───────────"
(propertize "⌁ E2E" 'face 'success)
(propertize (buffer-name) 'face 'bold)
(if noise-conversation--typing
(format "%s is typing… " noise-conversation--typing)
"")
"(Signal Chat)"))
"(Signal Chat Fill)"))
(force-mode-line-update))
;;; Composing and sending