nandi/frqpublic Fork 0
68afa6f
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.

Leave the compose bar its room when the jump button is there

Two faults, one screen. The scroll's `:reserve` counted the separator and the
compose bar but not the jump button above them, so the moment that button
appeared the list grew over the compose bar and pushed it and Send off the
bottom of the window.

And sticking had been made to follow `at-present?` rather than staying on,
which was mine: egui already releases its own stick when the reader scrolls
away, and driving it from the flag that the scroll itself reports meant one
spurious "away" latched the button on with the view sitting at the end. It is
plainly `true` again — the jump it was working around is handled where it
belongs, in vidya, where sticking now stands down for the frame a jump takes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
nandi committed 2026-08-30T11:52:37-07:00 Browse files
68afa6f parent: 4d7f34d
modified src/frq/app.jolt +7 -7
@@ -349,13 +349,13 @@
349349 [:button {:label "← Chats" :on-click #(reset! s/screen :chats)}]
350350 [:title {:label (or name "Chat")}]]
351351 [error-note]
352- ;; :reserve leaves room for the separator and compose bar below, so the
353- ;; list fills whatever the window has and no more.
354- ;; Sticking follows the reader rather than a flag of its own: while the
355- ;; view is at the end it stays there, and a jump to an old message reports
356- ;; "away", which is what stops the next arriving line from dragging the
357- ;; view off whatever was jumped to.
358- [:scroll {:orientation :vertical :reserve 72 :stick-to-bottom @s/at-present?
352+ ;; :reserve leaves room for what sits below — the separator and compose
353+ ;; bar, and the jump button when it is there. A reserve that does not
354+ ;; count the button is a list that grows over the compose bar and pushes
355+ ;; it off the bottom of the window the moment the button appears.
356+ [:scroll {:orientation :vertical
357+ :reserve (if @s/at-present? 72 116)
358+ :stick-to-bottom true
359359 :scroll-to-bottom @s/jump-tick
360360 :on-change #(reset! s/at-present? (= "end" %))}
361361 (if (seq (:messages buffer))
@@ -349,13 +349,13 @@
349 [:button {:label "← Chats" :on-click #(reset! s/screen :chats)}]349 [:button {:label "← Chats" :on-click #(reset! s/screen :chats)}]
350 [:title {:label (or name "Chat")}]]350 [:title {:label (or name "Chat")}]]
351 [error-note]351 [error-note]
352- ;; :reserve leaves room for the separator and compose bar below, so the352+ ;; :reserve leaves room for what sits below — the separator and compose
353- ;; list fills whatever the window has and no more.353+ ;; bar, and the jump button when it is there. A reserve that does not
354- ;; Sticking follows the reader rather than a flag of its own: while the354+ ;; count the button is a list that grows over the compose bar and pushes
355- ;; view is at the end it stays there, and a jump to an old message reports355+ ;; it off the bottom of the window the moment the button appears.
356- ;; "away", which is what stops the next arriving line from dragging the356+ [:scroll {:orientation :vertical
357- ;; view off whatever was jumped to.357+ :reserve (if @s/at-present? 72 116)
358- [:scroll {:orientation :vertical :reserve 72 :stick-to-bottom @s/at-present?358+ :stick-to-bottom true
359 :scroll-to-bottom @s/jump-tick359 :scroll-to-bottom @s/jump-tick
360 :on-change #(reset! s/at-present? (= "end" %))}360 :on-change #(reset! s/at-present? (= "end" %))}
361 (if (seq (:messages buffer))361 (if (seq (:messages buffer))