Skip to content

Latest commit

 

History

75 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nex_Server static API

This repository publishes versioned launcher metadata as ordinary static JSON files. It does not run a dedicated API process. The Git repository is the source of truth and GitHub Raw is the API transport. Developer trust and plugin discovery are published together in one market document.

Canonical client endpoints:

  • https://raw.githubusercontent.com/PCL-Nex-Developer/Nex_Server/refs/heads/main/apiv2/plugin-index.json (自动生成的插件市场预索引)
  • https://raw.githubusercontent.com/PCL-Nex-Developer/Nex_Server/refs/heads/main/apiv2/plugin-market.json (官方附加数据源,保留 developers 白名单)
  • https://raw.githubusercontent.com/PCL-Nex-Developer/Nex_Server/refs/heads/main/apiv2/releases.json (官网与客户端共用的 GitHub / ModelScope 下载清单)

HTTP metadata

HTTP headers are owned by the static host, not by files in this repository. GitHub Raw may serve the valid UTF-8 JSON bytes as text/plain; charset=utf-8; clients must therefore validate and parse the payload as JSON instead of requiring one exact raw-host media type. Cache invalidation is represented by the content hashes in apiv2/cache.json; ETags and cache lifetimes remain host-managed.

Validation and publication

Run all checks locally with:

python scripts/validate_static_api.py --write-cache
python -m unittest discover -s tests -v

plugin-market.json contains developers and supports direct manifests and inline plugins. It must not contain topics: the launcher owns the hard-coded pclnexplugin GitHub Topic search, while users can add multiple independent plugin-market JSON addresses. The official file currently keeps manifests and plugins empty. EasyTier and ProfileUnlock are intentionally not listed as direct manifests yet: their current files use the legacy versions-only contract, which the launcher can safely normalize only when it has GitHub repository metadata from Topic discovery. A direct manifests entry must use the current complete manifest contract (id, name, author, description, repository, and platform downloads).

Download keys support both the legacy OS-neutral form (amd64, arm64, anycpu) and OS-scoped groups (windows, linux, macos) containing those same architecture keys. Clients select the current OS group first and fall back to legacy keys only when that OS group is absent. This keeps existing manifests valid while allowing native packages for Windows, Linux, and macOS on AMD64 and ARM64 to be published safely.

apiv2/plugin-index.json is generated by the index-plugin-market Action on the 20 * * * * cron: the pclnexplugin topic repositories that pass the manifest contract are inlined into a static pre-index, and the official developer whitelist is inherited from plugin-market.json. Each indexed plugin also stores its direct manifest URL, resolved raw README URL, logo URL, manifest update time, aggregate GitHub Release download count, repository status, release-note URLs, and package URLs. The launcher therefore needs only this one document during normal marketplace discovery; direct GitHub Topic, commit, release, and README-metadata requests are fallback/indexer responsibilities.

The update-sync Action validates the combined public registry before and after release synchronization, rebuilds cache.json, and stages the registry together with the generated update feed. Publication only happens after the complete unittest suite succeeds.

Launcher release assets use PCL2_Nex_<Release|Beta>_<runtime>.<extension>, where runtime is one of win-x64, win-arm64, linux-x64, osx-x64, or osx-arm64. Windows keeps the legacy update JSON filenames for existing clients; Linux and macOS use OS-qualified update documents such as updates-fr-linux-x64.json and updates-fr-osx-arm64.json. Every published executable or package has a matching detached GPG signature with the same filename plus the .asc suffix.

When SHA256SUMS is present in the corresponding ModelScope release directory, update documents put the stable ModelScope resolve/master URL first and retain the GitHub Release URL as a fallback. The public releases.json manifest exposes the same URLs by named source, so consumers never persist the temporary signed CDN URL returned by ModelScope's redirect.

The same update-sync job mirrors the complete static/patch directory to https://www.modelscope.cn/datasets/AnxunBCX/PCL_Nex/resolve/master/static/patch/ after generation and validation but before committing the new update feed. Launcher patch downloads try this stable ModelScope path first and fall back to the GitHub-hosted static file.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages