Skip to content

Commit 9186c36

Browse files
cevhericlaude
andcommitted
fix(deploy): Rancher is official and leads the hero; add the OpenShift operator
Two corrections to the channel sync in #42. Rancher is a certified first-party listing, not a plain catalog entry: partner-charts#1158 merged and the chart carries a SUSE Partner Certification listing. Status goes to 'official', the card links to the SUSE catalog page, and the entry moves to the top of deployTargets so it leads the hero, which renders official targets in array order. OpenShift was missing. The community operator is live in the OpenShift console catalog (community-operators-prod#10497), so it belongs on the page as 'available' — the yaml channel stays pending only because the OperatorHub.io listing is still in review, and that is a listing detail, not the install. 'official' now means first-party: certified (Rancher) or an official app (CapRover, Dokploy, Cosmos, Kubero, Railway). Community catalog entries and deploy buttons stay 'available'. The hero heading drops "one-click" to match, since a certified chart install is not a deploy button. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 9faf4e8 commit 9186c36

4 files changed

Lines changed: 58 additions & 37 deletions

File tree

‎src/components/sections/DeploySection.astro‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ const installMethodCount = deployTargets.filter((t) => INSTALL_CATEGORIES.includ
2222
<div class="mx-auto max-w-6xl">
2323
<SectionHeader
2424
title="Deploy anywhere"
25-
subtitle={`One open-source image — ${installMethodCount} install methods, ${official.length} official one-click marketplaces, and any host that runs a container.`}
25+
subtitle={`One open-source image — ${installMethodCount} install methods, ${official.length} official catalog listings, and any host that runs a container.`}
2626
/>
2727

28-
<!-- Official one-click integrations -->
28+
<!-- Official integrations -->
2929
<section class="mt-2">
30-
<h3 class="text-[15px] font-semibold text-bright">Official one-click integrations</h3>
31-
<p class="mt-1 text-[13px] text-dim">Listed in their marketplaces — deploy in a click, today.</p>
30+
<h3 class="text-[15px] font-semibold text-bright">Official integrations</h3>
31+
<p class="mt-1 text-[13px] text-dim">First-party listings in their own catalogs — certified or official, today.</p>
3232
<div class="mt-4 grid gap-4 md:grid-cols-2">
3333
{
3434
official.map((t) => (

‎src/data/deploy-targets.test.ts‎

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,11 @@ test('only live targets are listed — planned platforms stay off the page', ()
3737
test('channels that are pending or deprecated upstream are not listed', () => {
3838
// Flathub is deprecated (submission declined — FlatPark is our Flatpak
3939
// channel); the rest are status: pending in distribution/channels.yaml.
40-
const offThePage = [
41-
'flathub',
42-
'casaos',
43-
'umbrel',
44-
'easypanel',
45-
'portainer',
46-
'operatorhub',
47-
'koyeb-catalog',
48-
'appimagehub',
49-
];
40+
// OpenShift is not on this list: the community operator is live in the
41+
// OpenShift console catalog (community-operators-prod#10497), even though the
42+
// OperatorHub.io listing that would flip the yaml channel to live is still in
43+
// review.
44+
const offThePage = ['flathub', 'casaos', 'umbrel', 'easypanel', 'portainer', 'koyeb-catalog', 'appimagehub'];
5045
const slugs = deployTargets.map((t) => t.slug);
5146
for (const slug of offThePage) {
5247
expect(slugs).not.toContain(slug);
@@ -60,27 +55,39 @@ test('only open-source platforms declare a github repo (stars constraint)', () =
6055
expect(starRepos.length).toBeGreaterThan(0);
6156
});
6257

63-
test('rancher is listed under kubernetes and points at our Rancher docs', () => {
58+
test('rancher is official, leads the hero, and points at our Rancher docs', () => {
6459
const rancher = deployTargets.find((t) => t.slug === 'rancher');
6560
expect(rancher).toBeDefined();
6661
expect(rancher?.category).toBe('kubernetes');
67-
// rancher/partner-charts#1158 is merged, so the chart ships in Rancher
68-
// Partner Charts — but a partner catalog is not one of our own one-click
69-
// listings, so the status stays 'available'.
70-
expect(rancher?.status).toBe('available');
62+
// rancher/partner-charts#1158 merged: certified chart in Rancher Partner
63+
// Charts, listed in the SUSE Partner Certification catalog.
64+
expect(rancher?.status).toBe('official');
65+
expect(rancher?.url).toContain('suse.com/pcsc');
7166
expect(rancher?.docsUrl).toContain('docs/RANCHER.md');
67+
// The hero renders official targets in array order — Rancher goes first.
68+
expect(deployTargets.filter((t) => t.status === 'official')[0]?.slug).toBe('rancher');
69+
});
70+
71+
test('openshift installs via the community operator and is not claimed as official', () => {
72+
const openshift = deployTargets.find((t) => t.slug === 'openshift');
73+
expect(openshift).toBeDefined();
74+
expect(openshift?.category).toBe('kubernetes');
75+
expect(openshift?.status).toBe('available');
76+
expect(openshift?.blurb).toContain('operator');
7277
});
7378

7479
test('official integrations are present', () => {
7580
const official = deployTargets.filter((t) => t.status === 'official').map((t) => t.slug);
76-
for (const slug of ['railway', 'caprover', 'dokploy', 'cosmos', 'kubero']) {
81+
for (const slug of ['rancher', 'railway', 'caprover', 'dokploy', 'cosmos', 'kubero']) {
7782
expect(official).toContain(slug);
7883
}
7984
});
8085

81-
test('official is reserved for our own one-click listings', () => {
86+
test('official is reserved for first-party listings', () => {
87+
// Community-contributed catalog entries (Sealos, Unraid, TrueNAS) and plain
88+
// deploy buttons (Koyeb, Render, Fly.io, DigitalOcean) stay 'available'.
8289
const official = deployTargets.filter((t) => t.status === 'official').map((t) => t.slug);
83-
expect(official.toSorted()).toEqual(['railway', 'caprover', 'dokploy', 'cosmos', 'kubero'].toSorted());
90+
expect(official.toSorted()).toEqual(['rancher', 'railway', 'caprover', 'dokploy', 'cosmos', 'kubero'].toSorted());
8491
});
8592

8693
test('every target links somewhere useful', () => {

‎src/data/deploy-targets.ts‎

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,30 @@ const RENDER_DEPLOY_URL = 'https://render.com/deploy?repo=https://github.com/lib
3838
const RELEASES_URL = 'https://github.com/libredb/libredb-studio/releases/latest';
3939

4040
export const deployTargets: DeployTarget[] = [
41+
// Listed first: it leads the "Official integrations" hero, which renders the
42+
// official targets in array order.
43+
//
44+
// rancher/partner-charts#1158 merged (17 Aug 2026), so the chart ships in
45+
// Rancher Partner Charts and carries a SUSE Partner Certification listing —
46+
// a certified first-party listing, which is what 'official' means here.
47+
{
48+
name: 'Rancher',
49+
slug: 'rancher',
50+
category: 'kubernetes',
51+
status: 'official',
52+
url: 'https://www.suse.com/pcsc/viewVersionPage?versionID=26969',
53+
github: 'rancher/rancher',
54+
docsUrl: 'https://github.com/libredb/libredb-studio/blob/main/docs/RANCHER.md',
55+
logo: '/logos/deploy/rancher.svg',
56+
blurb: 'Certified chart in Rancher Partner Charts — SUSE catalog listed',
57+
},
58+
4159
// ① Install primitives / registries — mirrors distribution/channels.yaml in
4260
// the studio repo (the "visibility matrix"); every live channel gets a card.
43-
// 'official' is reserved for platforms where a listing of ours makes the
44-
// install one click in their own UI — catalog-only listings stay 'available'.
61+
// 'official' means a first-party listing: the platform publishes it as ours,
62+
// certified (Rancher Partner Charts) or as an official app (CapRover, Dokploy,
63+
// Cosmos, Kubero, Railway). Community-contributed catalog entries and plain
64+
// deploy buttons stay 'available'.
4565
{
4666
name: 'GitHub Container Registry',
4767
slug: 'ghcr',
@@ -229,21 +249,15 @@ export const deployTargets: DeployTarget[] = [
229249
logo: '/logos/deploy/kubernetes.svg',
230250
blurb: 'helm install from the published OCI chart',
231251
},
232-
// rancher/partner-charts#1158 merged (17 Aug 2026): the chart ships in
233-
// Rancher Partner Charts and is listed in the SUSE Solutions Catalog. Stays
234-
// 'available' rather than 'official' because a partner catalog is not a
235-
// one-click deploy of ours — the install is still an Apps catalog / ClusterRepo
236-
// step. 'official' is reserved for our own one-click listings.
237252
{
238-
name: 'Rancher',
239-
slug: 'rancher',
253+
name: 'OpenShift',
254+
slug: 'openshift',
240255
category: 'kubernetes',
241256
status: 'available',
242-
url: 'https://www.rancher.com',
243-
github: 'rancher/rancher',
244-
docsUrl: 'https://github.com/libredb/libredb-studio/blob/main/docs/RANCHER.md',
245-
logo: '/logos/deploy/rancher.svg',
246-
blurb: 'In Rancher Partner Charts — SUSE catalog listed',
257+
url: 'https://www.redhat.com/en/technologies/cloud-computing/openshift',
258+
docsUrl: 'https://github.com/libredb/libredb-studio/blob/main/docs/DISTRIBUTION.md#openshift-operator-operatorhub',
259+
logo: '/logos/deploy/openshift.svg',
260+
blurb: 'Community operator in the OpenShift console catalog',
247261
},
248262
{
249263
name: 'Kubero',

‎src/data/sections.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ export const sections: SectionMeta[] = [
316316
slug: 'deploy',
317317
pageTitle: 'Deploy LibreDB Studio Anywhere — One-Click Apps, Helm, Docker & Cloud',
318318
pageDescription:
319-
'Run the open-source LibreDB Studio SQL IDE anywhere: official Railway, CapRover, Dokploy, Cosmos and Kubero one-click apps, Docker Hub & GHCR images, a Helm chart on Artifact Hub and Rancher Partner Charts, npm, Homebrew, Snap, winget, Chocolatey, Flatpak, AppImage and .deb/.rpm packages, Unraid, TrueNAS SCALE, Sealos, Fly.io and the DigitalOcean Marketplace.',
319+
'Run the open-source LibreDB Studio SQL IDE anywhere: official Railway, CapRover, Dokploy, Cosmos and Kubero one-click apps, Docker Hub & GHCR images, a certified Helm chart in Rancher Partner Charts, an OpenShift community operator, the chart on Artifact Hub, npm, Homebrew, Snap, winget, Chocolatey, Flatpak, AppImage and .deb/.rpm packages, Unraid, TrueNAS SCALE, Sealos, Fly.io and the DigitalOcean Marketplace.',
320320
schema: 'studio',
321321
},
322322
{

0 commit comments

Comments
 (0)