diff --git a/README.md b/README.md index f8ff8b6..7baf631 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ We'll review and merge within 24 hours. | `networks` | string[] | Yes | Supported networks: `stagenet`, `preview`, `preprod`, `mainnet`, or `*` for all. | | `contracts` | object[] | No | Verified public contracts for this app. Used by 1AM Explorer to show partner themes and verified badges. | | `featured` | boolean | No | Set by maintainers only. Do not include in submissions. | +| `featuredOrder` | integer | No | Maintainer-defined featured priority. Nonnegative; lower values appear first in mobile Discover. Requires `featured: true`. | | `new` | boolean | No | Automatically set for new listings. Removed after 30 days. | ### Contract Specification diff --git a/registry.json b/registry.json index 2cc6e83..fd9ca63 100644 --- a/registry.json +++ b/registry.json @@ -65,6 +65,7 @@ "category": "defi", "networks": ["mainnet"], "featured": true, + "featuredOrder": 0, "new": true }, { diff --git a/validate.js b/validate.js index 13d9f14..fb0d65c 100644 --- a/validate.js +++ b/validate.js @@ -94,6 +94,13 @@ for (const app of registry.apps) { pass(`networks: ${app.networks.join(', ')}`); } + // Optional featured ordering is managed by maintainers. + if (app.featuredOrder !== undefined) { + if (app.featured !== true || !Number.isSafeInteger(app.featuredOrder) || app.featuredOrder < 0) { + fail('"featuredOrder" must be a nonnegative safe integer on a featured app'); + } + } + // contracts if (app.contracts !== undefined) { if (!Array.isArray(app.contracts)) {