AVS4YOU

Plugin Manifest (plugins.json)

https://avs4you.github.io/plugins.json is the machine-readable catalogue of the marketplace: one record per plugin, with absolute download links for both architectures. package.py generates it from every plugins/*/config.json, together with the data blob inlined into index.html. Never edit it by hand - edit the config.json and run python package.py.

The file is a public contract. Read the rules below before renaming a field, removing a plugin or changing how packages are published.

Who reads it

Format

{
  "schema": 1,
  "site": "https://avs4you.github.io/",
  "plugins": [
    {
      "slug": "effect-vhs",
      "pluginId": "EffectVHS.plugin",
      "name": "Effect VHS",
      "desc": "Authentic VHS tape effect with noise, color degradation, ...",
      "apps": [ "Video Converter", "Video Editor", "Image Converter" ],
      "version": "v1.0.1",
      "type": "effect",
      "typeLabel": "Image Effect",
      "aiPowered": false,
      "requiresKey": false,
      "tint": "linear-gradient(135deg,#E0398E,#7C2BD6)",
      "media": "plugins/effect-vhs/Effect VHS.gif",
      "basePath": "plugins/effect-vhs",
      "downloads": {
        "x86": "https://github.com/AVS4YOU/avs4you.github.io/releases/download/effect-vhs-v1.0.1/effect-vhs-v1.0.1-x86.avsp",
        "x64": "https://github.com/AVS4YOU/avs4you.github.io/releases/download/effect-vhs-v1.0.1/effect-vhs-v1.0.1-x64.avsp"
      }
    }
  ]
}
Field Installers need it Comes from Rule
schema yes MANIFEST_SCHEMA in package.py integer, currently 1
site no SITE_URL in package.py base for basePath and media
plugins[].slug yes config.json ^[a-z0-9][a-z0-9-]*$, unique ignoring case
plugins[].pluginId yes config.json ^[A-Za-z0-9][A-Za-z0-9._-]*$, ends in .plugin, no .., at most 128 characters, unique ignoring case, identical to PluginId()
plugins[].version no config.json ^[A-Za-z0-9._-]+$, no .., does not end in . or .lock - it is part of the download URLs and of the release tag
plugins[].downloads.x86, .x64 yes release.asset_url() absolute GitHub release URL, ASCII, no spaces or quotes, at most 1024 characters
everything else no config.json, package.py storefront only, free to change within the size limits below

What installers do with it

The installer side lives in app-main-2010, Common/InnoSetup/plugin-preinstalled-code.iss.

Changing the format

Publishing rules

Validation

package.py stops with an error naming the offending config.json when:

Legacy package paths

Installers shipped before manifest support do not read plugins.json. They download two packages straight from Pages:

Both are force-tracked (git add -f) although build/ is ignored. Refresh them whenever effect-vhs or sora2 is re-released, and remove them only once those installers are out of circulation.