From 52c6b7715ac7ab6a554681da9c682e3bcf813170 Mon Sep 17 00:00:00 2001 From: Lakshman Patel Date: Mon, 7 Sep 2026 11:26:36 +0530 Subject: [PATCH] feat: animate plugin marketplace list with progress spinner Wrap the network-backed marketplace index fetch (plugin marketplace list) in a CLIProgress spinner, matching the doctor/preflight pattern. Non-TTY renders clean static lines. --- cmd/plugin_dynamic.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmd/plugin_dynamic.go b/cmd/plugin_dynamic.go index 74d13247..68bee4da 100644 --- a/cmd/plugin_dynamic.go +++ b/cmd/plugin_dynamic.go @@ -426,10 +426,15 @@ var pluginMarketplaceListCmd = &cobra.Command{ Short: "List plugins available from marketplace sources", RunE: func(cmd *cobra.Command, _ []string) error { mc := plugin.NewMarketplaceClient() + prog := NewCLIProgress("Marketplace", []string{"Fetching marketplace indexes"}) + prog.StartStep(0) entries, err := mc.FetchAll() if err != nil { + prog.Abort() return fmt.Errorf("fetch marketplace: %w (indexes may be unpublished; add a source with graycode plugin marketplace add)", err) } + prog.CompleteStep(0) + prog.Done() if len(entries) == 0 { cmd.Println(auditTint("No marketplace plugins found.", textMuted)) cmd.Println(auditTint("Add a source: graycode plugin marketplace add ", textMuted))