diff --git a/packages/ui/src/features/canvas/components/ChannelFeedView.tsx b/packages/ui/src/features/canvas/components/ChannelFeedView.tsx index 717cf52ec3..ef985d5e6e 100644 --- a/packages/ui/src/features/canvas/components/ChannelFeedView.tsx +++ b/packages/ui/src/features/canvas/components/ChannelFeedView.tsx @@ -856,8 +856,10 @@ export function ChannelFeedView({ {/* Horizontal padding is load-bearing: ThreadItem's actions float at the row's top-right corner (absolute, past the row edge). Without a - gutter they hug the scroll container and get clipped. */} - + gutter they hug the scroll container and get clipped. The deeper + bottom padding clears the composer's floating workspace-mode + selector, which hangs over the end of the feed. */} + {intro} {entries.map((entry, index) => { const previous = entries[index - 1]; diff --git a/packages/ui/src/features/canvas/components/ChannelHomeComposer.tsx b/packages/ui/src/features/canvas/components/ChannelHomeComposer.tsx index d2bdcd10d5..e0d620ef30 100644 --- a/packages/ui/src/features/canvas/components/ChannelHomeComposer.tsx +++ b/packages/ui/src/features/canvas/components/ChannelHomeComposer.tsx @@ -371,11 +371,13 @@ export const ChannelHomeComposer = forwardRef< const submitComposer = canvasArmed ? handleCanvasSubmit : submit; return ( -
+
{/* Canvas generation always runs in the cloud, so the local/cloud pick - doesn't apply while canvas mode is armed. */} + doesn't apply while canvas mode is armed. The row floats over the feed, + and the trigger's own fill is translucent, so it carries an opaque + backdrop at the button's radius to stop messages showing through. */} {!canvasArmed && ( -
+
-
+