From 2f603e1e8cc720fcf40a300051d04dadb0417cde Mon Sep 17 00:00:00 2001 From: Val Alexander Date: Tue, 31 Mar 2026 23:52:31 -0500 Subject: [PATCH 1/2] Polish skill detail dialog layout - Add icon, tag chips, and improved command/path presentation - Make dialog content and skills page scrollable within available height --- apps/web/src/components/skills/SkillsPage.tsx | 55 +++++++++++++------ apps/web/src/components/ui/dialog.tsx | 8 ++- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/apps/web/src/components/skills/SkillsPage.tsx b/apps/web/src/components/skills/SkillsPage.tsx index a7f3f2a2d..88ec65f9c 100644 --- a/apps/web/src/components/skills/SkillsPage.tsx +++ b/apps/web/src/components/skills/SkillsPage.tsx @@ -138,30 +138,53 @@ function SkillDetailDialog(props: { const mutable = isCatalog ? !skill.immutable && skill.installed : skill.mutable; const pathValue = skill.path; const slashName = isCatalog ? skill.name.toLowerCase().replace(/\s+/g, "-") : skill.name; + const tags = "tags" in skill ? skill.tags : []; + const Icon = skillIcon("icon" in skill ? skill.icon : "file"); return ( - {skill.name} - {skill.description} - - -
- {("tags" in skill ? skill.tags : []).map((tag) => ( - - {tag} - - ))} +
+
+ +
+
+ {skill.name} + {skill.description} +
+ {tags.length > 0 && ( +
+ {tags.map((tag) => ( + + {tag} + + ))} +
+ )} + +
-

Slash commands

-

/{slashName}

-

/skill read {slashName}

+

+ Slash commands +

+
+

+ /{slashName} +

+

+ /skill read {slashName} +

+
{pathValue ? (
-

Path

-

{pathValue}

+

+ Installed path +

+

+ {pathValue} +

) : null}
@@ -422,7 +445,7 @@ export function SkillsPage(props: {
-
+
diff --git a/apps/web/src/components/ui/dialog.tsx b/apps/web/src/components/ui/dialog.tsx index 774047fee..73ae52e11 100644 --- a/apps/web/src/components/ui/dialog.tsx +++ b/apps/web/src/components/ui/dialog.tsx @@ -90,7 +90,13 @@ function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { } function DialogPanel({ className, ...props }: React.ComponentProps<"div">) { - return
; + return ( +
+ ); } function DialogFooter({ From 6b620bd506f79ee5214b44576f51c4eaa723a53b Mon Sep 17 00:00:00 2001 From: Val Alexander Date: Wed, 1 Apr 2026 00:52:45 -0500 Subject: [PATCH 2/2] Fix diff panel scroll root layout - Remove the extra scrolling wrapper around the diff viewport - Let the virtualizer own the scroll root so file diffs render correctly --- apps/web/src/components/DiffPanel.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/web/src/components/DiffPanel.tsx b/apps/web/src/components/DiffPanel.tsx index 211df4ef2..282eea96b 100644 --- a/apps/web/src/components/DiffPanel.tsx +++ b/apps/web/src/components/DiffPanel.tsx @@ -755,10 +755,7 @@ export default function DiffPanel({ mode = "inline" }: DiffPanelProps) {
) : ( <> -
+
{checkpointDiffError && !renderablePatch && (

{checkpointDiffError}

@@ -778,7 +775,11 @@ export default function DiffPanel({ mode = "inline" }: DiffPanelProps) { ) ) : renderablePatch.kind === "files" ? (