From eb3050fdccf6825c3390dc3327d8185b8b652912 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Thu, 23 Jul 2026 10:50:09 -0700 Subject: [PATCH] fix(ui): restore official terminology --- src/__tests__/creators-route.test.tsx | 18 +++++++++++++++++- src/__tests__/home-listing-section.test.tsx | 2 +- src/__tests__/package-detail-route.test.tsx | 6 +++--- src/__tests__/packages-route.test.tsx | 4 ++-- src/components/Footer.tsx | 2 +- src/components/HomeBringSkillsSection.tsx | 2 +- src/components/OfficialBadge.tsx | 10 +++++----- src/components/PluginListItem.test.tsx | 8 ++++---- src/components/PublishedItemCard.test.tsx | 4 ++-- src/components/PublisherListItem.test.tsx | 5 +++-- src/components/PublisherListItem.tsx | 1 - src/components/SkillCard.test.tsx | 8 ++++---- src/components/SkillCard.tsx | 8 ++++---- src/components/SkillHeader.tsx | 2 +- src/components/SkillListItem.test.tsx | 6 +++--- src/components/SkillListItem.tsx | 4 ++-- src/components/UserBadge.test.tsx | 4 ++-- src/lib/badges.test.ts | 6 +++--- src/lib/badges.ts | 4 ++-- src/routes/-management/PluginsPage.tsx | 2 +- src/routes/-management/SkillsPage.tsx | 2 +- src/routes/creators/index.tsx | 4 ++-- src/routes/plugins/index.tsx | 2 +- src/routes/settings.tsx | 2 +- 24 files changed, 66 insertions(+), 50 deletions(-) diff --git a/src/__tests__/creators-route.test.tsx b/src/__tests__/creators-route.test.tsx index c2e1e6ac..428a4830 100644 --- a/src/__tests__/creators-route.test.tsx +++ b/src/__tests__/creators-route.test.tsx @@ -176,6 +176,22 @@ describe("creators route", () => { expect(screen.getByText("No publishers found")).toBeTruthy(); }); + it("labels highlighted publishers as popular creators", async () => { + loaderDataMock.mockReturnValue({ + page: [{ _id: "publishers:one" }], + counts: { all: 1, organizations: 0, individuals: 1 }, + continueCursor: "", + isDone: true, + }); + const route = await loadRoute(); + const Component = route.__config.component as ComponentType; + + render(); + + expect(screen.getByRole("heading", { name: "Popular creators" })).toBeTruthy(); + expect(screen.queryByText("Popular publishers")).toBeNull(); + }); + it("does not present the bounded publisher result count as a global total", async () => { loaderDataMock.mockReturnValue({ page: [], @@ -192,7 +208,7 @@ describe("creators route", () => { expect(screen.getByRole("heading", { name: "Creators" })).toBeTruthy(); expect(screen.queryByText("17")).toBeNull(); expect(screen.getByRole("radio", { name: "All" })).toBeTruthy(); - expect(screen.getByRole("radio", { name: "Verified" })).toBeTruthy(); + expect(screen.getByRole("radio", { name: "Official" })).toBeTruthy(); expect(screen.getByRole("radio", { name: "Organizations" })).toBeTruthy(); expect(screen.getByRole("radio", { name: "Users" })).toBeTruthy(); expect(screen.queryByText("Builders")).toBeNull(); diff --git a/src/__tests__/home-listing-section.test.tsx b/src/__tests__/home-listing-section.test.tsx index 45482b77..ccf092a7 100644 --- a/src/__tests__/home-listing-section.test.tsx +++ b/src/__tests__/home-listing-section.test.tsx @@ -160,7 +160,7 @@ describe("HomeListingSection", () => { "Trending", ]); expect(screen.queryByRole("tab", { name: "New" })).toBeNull(); - expect(screen.queryByRole("tab", { name: "Verified" })).toBeNull(); + expect(screen.queryByRole("tab", { name: "Official" })).toBeNull(); expect(screen.getByText("Demo Plugin")).toBeTruthy(); expect(document.querySelector(".home-v2-listing-grid")).toBeTruthy(); expect(document.querySelector(".marketplace-icon-image")?.getAttribute("src")).toBe( diff --git a/src/__tests__/package-detail-route.test.tsx b/src/__tests__/package-detail-route.test.tsx index 381a07d4..b7558613 100644 --- a/src/__tests__/package-detail-route.test.tsx +++ b/src/__tests__/package-detail-route.test.tsx @@ -1117,7 +1117,7 @@ describe("plugin detail route", () => { expect(packageCrumb?.textContent).toBe("firecrawl-plugin"); }); - it("labels official packages as Verified", async () => { + it("labels official packages as Official", async () => { loaderDataMock = { ...loaderDataMock, detail: { @@ -1134,10 +1134,10 @@ describe("plugin detail route", () => { const { container } = render(); - expect(screen.getAllByLabelText("Verified").length).toBeGreaterThan(0); + expect(screen.getAllByLabelText("Official").length).toBeGreaterThan(0); expect(container.querySelector(".skill-hero-creator .official-badge-icon-only")).toBeTruthy(); expect(container.querySelector(".skill-hero-title-row .official-tag")).toBeNull(); - expect(screen.queryByText("Verified")).toBeNull(); + expect(screen.queryByText("Official")).toBeNull(); }); it("renders plugin activity skeletons while graphs load", async () => { diff --git a/src/__tests__/packages-route.test.tsx b/src/__tests__/packages-route.test.tsx index 8d920590..957b3e0a 100644 --- a/src/__tests__/packages-route.test.tsx +++ b/src/__tests__/packages-route.test.tsx @@ -1584,7 +1584,7 @@ describe("plugins route", () => { render(); expect(screen.getByRole("radio", { name: "All" }).getAttribute("aria-checked")).toBe("true"); - expect(screen.getByRole("radio", { name: "Verified" })).toBeTruthy(); + expect(screen.getByRole("radio", { name: "Official" })).toBeTruthy(); expect(screen.getByRole("radio", { name: "Updated" })).toBeTruthy(); expect(screen.queryByRole("radio", { name: "Relevance" })).toBeNull(); }); @@ -1730,7 +1730,7 @@ describe("plugins route", () => { const sortOptions = Array.from( screen.getByRole("radiogroup", { name: "Sort order" }).querySelectorAll('[role="radio"]'), ).map((option) => option.textContent); - expect(sortOptions).toEqual(["All", "Trending", "Verified", "Updated"]); + expect(sortOptions).toEqual(["All", "Trending", "Official", "Updated"]); expect(screen.queryByRole("radio", { name: "Most downloaded" })).toBeNull(); expect(screen.queryByRole("radio", { name: "Newest" })).toBeNull(); expect(screen.queryByRole("radio", { name: "Name" })).toBeNull(); diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index d0e3cbf9..0d11a92a 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -22,7 +22,7 @@ const FOOTER_EASTER_ASCII = [ " hooks runners slash-commands skill.md templates scanners review-bots", "openclaw ecosystem crabbox clickclack crawler packs gateway plugins", "---- downloads installs stars lineage ownership docs package integrity", - " safe browse paths verified gateways publisher handles org trust", + " safe browse paths official gateways publisher handles org trust", ]; const FOOTER_EASTER_ASCII_FIELD = Array.from({ length: 44 }, (_, row) => { const a = FOOTER_EASTER_ASCII[row % FOOTER_EASTER_ASCII.length]; diff --git a/src/components/HomeBringSkillsSection.tsx b/src/components/HomeBringSkillsSection.tsx index 883ca947..072926bd 100644 --- a/src/components/HomeBringSkillsSection.tsx +++ b/src/components/HomeBringSkillsSection.tsx @@ -12,7 +12,7 @@ const BYOS_ASCII = [ " hooks runners slash-commands skill.md templates scanners review-bots", "openclaw ecosystem crabbox clickclack crawler packs gateway plugins", "---- downloads installs stars lineage ownership docs package integrity", - " safe browse paths verified gateways publisher handles org trust", + " safe browse paths official gateways publisher handles org trust", ]; const BYOS_ASCII_FIELD = Array.from({ length: 56 }, (_, row) => { const a = BYOS_ASCII[row % BYOS_ASCII.length]; diff --git a/src/components/OfficialBadge.tsx b/src/components/OfficialBadge.tsx index 16bf1b99..73628209 100644 --- a/src/components/OfficialBadge.tsx +++ b/src/components/OfficialBadge.tsx @@ -10,10 +10,10 @@ export function OfficialTag({ className }: { className?: string }) { ? `official-tag rounded-[var(--oc-radius-control)] ${className}` : "official-tag rounded-[var(--oc-radius-control)]" } - aria-label="Verified" + aria-label="Official" >