mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-10-30 00:27:11 +09:00
feat(registry): default to serverkit.ai index and ship logo fields
Flip DEFAULT_REGISTRY_URL to https://serverkit.ai/ext/index.json (the long-planned go-live default: cached proxy of the raw index with logo URL rewriting). Add logo fields to the bundled offline index so Marketplace cards get real art even before the first successful fetch, and update the registry tests + docs for the new default.
This commit is contained in:
1 parent
99ba978731
commit
baebb92d3a
4 files changed
+40
-25
No files matched your search
@@ -42,7 +42,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-crowdsec",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-crowdsec",
|
||||
"featured": false,
|
||||
"feature_score": 0
|
||||
"feature_score": 0,
|
||||
"logo": "assets/serverkit-crowdsec/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-dns-server",
|
||||
@@ -64,7 +65,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-dns-server",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-dns-server",
|
||||
"featured": false,
|
||||
"feature_score": 0
|
||||
"feature_score": 0,
|
||||
"logo": "assets/serverkit-dns-server/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-gpu",
|
||||
@@ -85,7 +87,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-gpu",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-gpu",
|
||||
"featured": true,
|
||||
"feature_score": 60
|
||||
"feature_score": 60,
|
||||
"logo": "assets/serverkit-gpu/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-mail",
|
||||
@@ -109,7 +112,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-mail",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-mail",
|
||||
"featured": false,
|
||||
"feature_score": 0
|
||||
"feature_score": 0,
|
||||
"logo": "assets/serverkit-mail/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-k8s",
|
||||
@@ -132,7 +136,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-k8s",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-k8s",
|
||||
"featured": false,
|
||||
"feature_score": 0
|
||||
"feature_score": 0,
|
||||
"logo": "assets/serverkit-k8s/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-tramo",
|
||||
@@ -156,7 +161,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-tramo",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-tramo",
|
||||
"featured": true,
|
||||
"feature_score": 90
|
||||
"feature_score": 90,
|
||||
"logo": "assets/serverkit-tramo/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-analytics",
|
||||
@@ -179,7 +185,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-analytics",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-analytics",
|
||||
"featured": true,
|
||||
"feature_score": 88
|
||||
"feature_score": 88,
|
||||
"logo": "assets/serverkit-analytics/logo.png"
|
||||
},
|
||||
{
|
||||
"slug": "serverkit-faro",
|
||||
@@ -198,7 +205,8 @@
|
||||
"repo": "https://github.com/jhd3197/serverkit-faro",
|
||||
"homepage": "https://github.com/jhd3197/serverkit-faro",
|
||||
"featured": true,
|
||||
"feature_score": 100
|
||||
"feature_score": 100,
|
||||
"logo": "assets/serverkit-faro/logo.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -32,14 +32,12 @@ _BUNDLED_INDEX = os.path.join(
|
||||
# The curated public index (one JSON file, PR-reviewed, checksum-verified
|
||||
# installs). Panels fall back to cache → bundled copy when unreachable.
|
||||
#
|
||||
# NOTE (plan 40 task 11): once serverkit.ai/ext/index.json is deployed (Phase 4
|
||||
# endpoints), flip this default to 'https://serverkit.ai/ext/index.json' — that
|
||||
# endpoint proxies this same raw index with caching + logo URL rewriting. The
|
||||
# raw-GitHub URL below stays the documented manual fallback
|
||||
# (SERVERKIT_REGISTRY_URL). Deferred here: flipping before the domain is live
|
||||
# would break Marketplace Browse everywhere.
|
||||
# The default goes through serverkit.ai, which proxies the raw-GitHub index
|
||||
# with caching, serves logo art locally, and rewrites relative logo paths to
|
||||
# absolute serverkit.ai URLs. The raw-GitHub index stays available as a
|
||||
# manual fallback via SERVERKIT_REGISTRY_URL.
|
||||
DEFAULT_REGISTRY_URL = (
|
||||
'https://raw.githubusercontent.com/jhd3197/serverkit-extensions/main/index.json'
|
||||
'https://serverkit.ai/ext/index.json'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -240,11 +240,12 @@ def test_update_preserves_builtin_source_type(app, plugin_dirs, monkeypatch):
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_registry_url_defaults_to_public_index(monkeypatch):
|
||||
"""Unset env → the curated serverkit-extensions raw index (the go-live
|
||||
default). conftest pins it EMPTY suite-wide, so simulate unset here."""
|
||||
"""Unset env → the curated index via serverkit.ai (the go-live default;
|
||||
it proxies the raw serverkit-extensions index with caching + logo URL
|
||||
rewriting). conftest pins it EMPTY suite-wide, so simulate unset here."""
|
||||
monkeypatch.delenv('SERVERKIT_REGISTRY_URL', raising=False)
|
||||
assert registry_service._registry_url() == registry_service.DEFAULT_REGISTRY_URL
|
||||
assert 'serverkit-extensions' in registry_service.DEFAULT_REGISTRY_URL
|
||||
assert registry_service.DEFAULT_REGISTRY_URL == 'https://serverkit.ai/ext/index.json'
|
||||
|
||||
|
||||
def test_registry_url_empty_disables_remote(monkeypatch):
|
||||
@@ -279,13 +280,20 @@ def test_v2_entry_normalizes_logo_and_repo():
|
||||
|
||||
def test_relative_logo_resolved_against_index_base():
|
||||
"""A repo-relative logo becomes absolute against the index URL it came
|
||||
from (raw-GitHub index → raw asset URL)."""
|
||||
base = registry_service.DEFAULT_REGISTRY_URL # .../main/index.json
|
||||
e = registry_service._normalize({
|
||||
from (serverkit.ai index → /ext/assets URL; raw-GitHub index → raw asset
|
||||
URL when used as a manual fallback)."""
|
||||
entry = {
|
||||
'slug': 'gui', 'display_name': 'GUI', 'version': '1.0.0',
|
||||
'source': 'https://x/gui.zip',
|
||||
'logo': 'assets/gui/logo.svg',
|
||||
}, base_url=base)
|
||||
}
|
||||
e = registry_service._normalize(
|
||||
entry, base_url=registry_service.DEFAULT_REGISTRY_URL)
|
||||
assert e['logo'] == 'https://serverkit.ai/ext/assets/gui/logo.svg'
|
||||
|
||||
e = registry_service._normalize(
|
||||
entry,
|
||||
base_url='https://raw.githubusercontent.com/jhd3197/serverkit-extensions/main/index.json')
|
||||
assert e['logo'] == (
|
||||
'https://raw.githubusercontent.com/jhd3197/serverkit-extensions/'
|
||||
'main/assets/gui/logo.svg'
|
||||
|
||||
@@ -12,9 +12,10 @@ This document is the format spec (task #16) and the publisher guide (task #21).
|
||||
## How a panel consumes the registry
|
||||
|
||||
- The panel fetches the index from `SERVERKIT_REGISTRY_URL` (env var). When unset
|
||||
it defaults to the curated public registry
|
||||
(`https://raw.githubusercontent.com/jhd3197/serverkit-extensions/main/index.json`);
|
||||
set it **empty** to disable remote fetching entirely (air-gapped panels). When
|
||||
it defaults to the curated public registry via serverkit.ai
|
||||
(`https://serverkit.ai/ext/index.json`, which proxies and caches the raw
|
||||
`serverkit-extensions` index and serves its logo art); set it **empty** to
|
||||
disable remote fetching entirely (air-gapped panels). When
|
||||
the fetch fails (offline), it falls back to the **last good cache**, then to a
|
||||
**bundled copy** shipped at `backend/app/data/registry_index.json`. The
|
||||
Marketplace never blanks.
|
||||
|
||||
Reference in new issue
Block a user