diff --git a/frontend/src/components/activity/Activity.tsx b/frontend/src/components/activity/Activity.tsx
index 48868a36e34..b8e223c3bcb 100644
--- a/frontend/src/components/activity/Activity.tsx
+++ b/frontend/src/components/activity/Activity.tsx
@@ -244,10 +244,19 @@ export function SingleActivityRenderer({
const rows = 5;
const gapPx = 20;
const box = container.getBoundingClientRect();
- const x = (box.width / cols) * (index % 3) + gapPx;
- const y = (box.height / rows) * Math.floor(index / 3) + gapPx;
- const width = box.width / cols - gapPx * (cols - 2);
- const height = box.height / rows - gapPx * (rows - 2);
+ const row = Math.floor(index / 3);
+ const col = index % 3;
+
+ // Calculate cell dimensions accounting for gaps
+ const cellWidth = (box.width - gapPx * (cols + 1)) / cols;
+ const cellHeight = Math.max(150, (box.height - gapPx * (rows + 1)) / rows);
+
+ // Position with gaps
+ const x = gapPx + col * (cellWidth + gapPx);
+ const y = gapPx + row * (cellHeight + gapPx);
+
+ const width = cellWidth;
+ const height = cellHeight;
oldTranslation = activity.style.transform ?? '';
oldHeight = activity.style.height;
@@ -390,16 +399,40 @@ export function SingleActivityRenderer({
{isOverview && (
- {icon} {title}
+
+ {icon}
+
+
+ {title}
+
)}
<>
@@ -427,17 +460,18 @@ export function SingleActivityRenderer({
>
{!hideTitleInHeader && (
<>
- {icon}
+ {icon}
{title}
@@ -451,10 +485,19 @@ export function SingleActivityRenderer({
fontSize: '0.875rem',
paddingX: 0.5,
color: theme.palette.text.secondary,
+ display: 'flex',
+ alignItems: 'center',
+ gap: 0.5,
+ maxWidth: { xs: '80px', sm: '120px', md: 'none' },
+ minWidth: 0,
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
+ whiteSpace: 'nowrap',
+ flexShrink: 1,
})}
>
-
- {cluster}
+
+ {cluster}
)}
{!isOverview && (
@@ -1130,7 +1173,8 @@ export const ActivityBar = React.memo(function ({
position: 'relative',
alignItems: 'center',
display: 'flex',
- minHeight: '56px',
+ flexWrap: 'nowrap',
+ minHeight: { xs: '80px', sm: '70px', md: '56px' },
overflowX: 'auto',
scrollbarWidth: 'thin',
})}
@@ -1148,17 +1192,17 @@ export const ActivityBar = React.memo(function ({
borderTop: 0,
borderColor: lastElement === it.id ? theme.palette.divider : 'transparent',
background: lastElement === it.id ? theme.palette.background.default : 'transparent',
+ flexShrink: 0,
})}
>