From 8b7be8b73509e71403e7608cd6d1487d64aebc2d Mon Sep 17 00:00:00 2001 From: Ed Zynda Date: Wed, 18 Mar 2026 17:36:06 +0300 Subject: [PATCH] fix: use immediate parent dir for main.go extension names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deriveExtensionName was using the full directory path (e.g. examples/extensions/kit-telegram) to derive the display name for main.go extensions, producing verbose names like 'Examples Extensions Kit Telegram Extension'. Now uses filepath.Base(dir) so only the immediate parent directory is used, giving 'Kit Telegram Extension'. Also fix TestLoadExtensions_SkipsBadFiles which was flaky when globally-installed git packages existed — isolate the test from the host environment by overriding XDG_CONFIG_HOME, XDG_DATA_HOME, and the working directory. --- internal/extensions/loader_test.go | 9 +++++++++ internal/extensions/manifest.go | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/internal/extensions/loader_test.go b/internal/extensions/loader_test.go index 7cd3f081..49ff03c7 100644 --- a/internal/extensions/loader_test.go +++ b/internal/extensions/loader_test.go @@ -304,6 +304,15 @@ func Init(api ext.API) { func TestLoadExtensions_SkipsBadFiles(t *testing.T) { dir := t.TempDir() + // Isolate from host environment so globally-installed extensions + // are not discovered alongside the test fixtures. + isolated := t.TempDir() + t.Setenv("XDG_CONFIG_HOME", filepath.Join(isolated, "config")) + t.Setenv("XDG_DATA_HOME", filepath.Join(isolated, "data")) + origWd, _ := os.Getwd() + _ = os.Chdir(isolated) + t.Cleanup(func() { _ = os.Chdir(origWd) }) + // Good extension good := `package main import "kit/ext" diff --git a/internal/extensions/manifest.go b/internal/extensions/manifest.go index f7205800..217d7fc7 100644 --- a/internal/extensions/manifest.go +++ b/internal/extensions/manifest.go @@ -383,8 +383,8 @@ func deriveExtensionName(relPath string, isMain bool) string { base := filepath.Base(relPath) if isMain && dir != "." { - // Use directory name for main.go files - name := strings.ReplaceAll(dir, "/", " ") + // Use immediate parent directory name for main.go files + name := filepath.Base(dir) name = strings.ReplaceAll(name, "_", " ") name = strings.ReplaceAll(name, "-", " ") return cases.Title(language.English).String(name) + " Extension"