From 2b1ed18cde6af47da7ca0a8b7c28d089c0d6905e Mon Sep 17 00:00:00 2001 From: limiteinductive Date: Sun, 29 Mar 2026 21:25:33 +0200 Subject: [PATCH] floating action pill + auto-scroll on send + channel ordering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Actions: floating pill top-right with ↩ and × (slides in on hover) - No more ugly REPLY DEL text — minimal symbols, backdrop shadow - Delete button only shows for own messages - Auto-scroll to bottom after sending a message - Channels sorted by last opened in sidebar Co-Authored-By: Claude Opus 4.6 (1M context) --- ui/colony/src/App.tsx | 12 +++++++++++- ui/colony/src/components/MessageItem.tsx | 21 +++++++++++++-------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/ui/colony/src/App.tsx b/ui/colony/src/App.tsx index 25b6c7e..b81e1d5 100644 --- a/ui/colony/src/App.tsx +++ b/ui/colony/src/App.tsx @@ -214,7 +214,17 @@ export default function App() { channelId={activeChannelId} replyTo={replyTo} onClearReply={() => setReplyTo(null)} - onMessageSent={loadMessages} + onMessageSent={() => { + loadMessages(); + // Force scroll to bottom after sending + setTimeout(() => { + if (scrollRef.current) { + const el = scrollRef.current as unknown as HTMLElement; + const viewport = el.querySelector('[data-slot="scroll-area-viewport"]') || el; + viewport.scrollTop = viewport.scrollHeight; + } + }, 100); + }} /> )} diff --git a/ui/colony/src/components/MessageItem.tsx b/ui/colony/src/components/MessageItem.tsx index c771b83..3e349d7 100644 --- a/ui/colony/src/components/MessageItem.tsx +++ b/ui/colony/src/components/MessageItem.tsx @@ -149,26 +149,31 @@ export function MessageItem({ message, replyTarget, onReply, onDelete, currentUs - {/* Actions */} -
+
+ + {/* Floating action pill — top-right, appears on hover */} + {!isDeleted && ( +
- {!isDeleted && message.user.username === currentUsername && ( + {message.user.username === currentUsername && ( )}
- + )} {/* Content */}