{
  "title": "GitHub Trending Discovery - Daily Repositories & Changes",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "languages": {
      "title": "Daily Trending languages",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "prefill": [
        "python"
      ],
      "description": "Up to three GitHub language slugs, such as python, typescript, rust or all. Empty uses python. Daily pages only; unknown languages fail clearly."
    },
    "keywords": {
      "title": "Filter names or descriptions",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "Optional literal, case-insensitive phrases; a repository matches any phrase in its name or description. No AI scoring."
    },
    "minStarsToday": {
      "title": "Minimum stars gained today",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "default": 0,
      "description": "Filter the exact daily count shown by GitHub. A positive threshold excludes rows whose source count is unavailable."
    },
    "maxResults": {
      "title": "Maximum saved observations",
      "type": "integer",
      "minimum": 1,
      "maximum": 75,
      "default": 5,
      "description": "Total saved row cap across language lists. The same repository in two lists is two list observations. See SUMMARY for truncation."
    },
    "comparePrevious": {
      "title": "Compare saved Trending observations",
      "type": "boolean",
      "default": false,
      "description": "Establish history after confirmed output. Reuse the same language/filter scope and snapshot. Missing repositories are not removals."
    },
    "onlyChanges": {
      "title": "Save only new or changed observations",
      "type": "boolean",
      "default": false,
      "description": "Enables comparison. An unchanged repeat can correctly save zero rows."
    },
    "snapshotName": {
      "title": "Snapshot name",
      "type": "string",
      "editor": "textfield",
      "default": "default",
      "description": "1–80 letters, numbers, underscores or hyphens. Reuse for the same watchlist; choose a new name for independent history."
    },
    "maxRunSeconds": {
      "title": "Run budget (seconds)",
      "type": "integer",
      "default": 90,
      "minimum": 30,
      "maximum": 120,
      "description": "Shared deadline for all source requests. Stops safely within this budget or the platform timeout, whichever is earlier."
    }
  }
}
