nandi/frqpublic Fork 0
58fb3f3
Commits
Clone
git clone https://git.rickub.com/nandi/frq.git
git clone ssh://git@rickub.com/nandi/frq.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Draw the avatar as a circle, and everyone as something

The picture is a circle of a fixed size now, and a sender with no picture —
a guest, or a fetch still in flight — gets their initial on a colour of their
own rather than a gap. One straight column of faces down the left is the
point: the ragged edge was worse than no avatars at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
nandi committed 2026-08-30T11:24:56-07:00 Browse files
58fb3f3 parent: f5548bd
modified src/frq/app.jolt +8 -5
@@ -237,11 +237,14 @@
237237 ;; The picture sits beside the name rather than beside the message: a
238238 ;; run of lines from one person has one header, and this belongs to it.
239239 [:hbox {:spacing 6}
240- [:vbox {:key :avatar}
241- ;; Reading the tick subscribes this row to the fetch finishing.
242- (let [_ @s/media-tick]
243- (when-let [path (avatars/path-when-ready (:actor m))]
244- [:image {:src path :max-height 20}]))]
240+ ;; Always an avatar, picture or not: the initial stands in until the
241+ ;; fetch lands, and for the guests who have no profile at all, which
242+ ;; is what keeps the column of faces straight down the left.
243+ ;; Reading the tick subscribes this row to a fetch finishing.
244+ (let [_ @s/media-tick]
245+ [:avatar {:label (:from m)
246+ :src (or (avatars/path-when-ready (:actor m)) "")
247+ :size 22}])
245248 [:dim-label {:label (:from m)}]])]
246249 [:vbox {:key :text :spacing 2}
247250 (map-indexed (fn [j run] (run-node j run (:system? m)))
@@ -237,11 +237,14 @@
237 ;; The picture sits beside the name rather than beside the message: a237 ;; The picture sits beside the name rather than beside the message: a
238 ;; run of lines from one person has one header, and this belongs to it.238 ;; run of lines from one person has one header, and this belongs to it.
239 [:hbox {:spacing 6}239 [:hbox {:spacing 6}
240- [:vbox {:key :avatar}240+ ;; Always an avatar, picture or not: the initial stands in until the
241- ;; Reading the tick subscribes this row to the fetch finishing.241+ ;; fetch lands, and for the guests who have no profile at all, which
242- (let [_ @s/media-tick]242+ ;; is what keeps the column of faces straight down the left.
243- (when-let [path (avatars/path-when-ready (:actor m))]243+ ;; Reading the tick subscribes this row to a fetch finishing.
244- [:image {:src path :max-height 20}]))]244+ (let [_ @s/media-tick]
245+ [:avatar {:label (:from m)
246+ :src (or (avatars/path-when-ready (:actor m)) "")
247+ :size 22}])
245 [:dim-label {:label (:from m)}]])]248 [:dim-label {:label (:from m)}]])]
246 [:vbox {:key :text :spacing 2}249 [:vbox {:key :text :spacing 2}
247 (map-indexed (fn [j run] (run-node j run (:system? m)))250 (map-indexed (fn [j run] (run-node j run (:system? m)))