# Updates and advisories

Coldtill tells server admins when to update. Nothing is installed automatically: you decide when to pull a new
image, after reading what changed.

## What the server does

A minute after the API starts, and then once a day, it fetches `https://coldtill.com/releases.json`. The request
carries only a `User-Agent` such as `coldtill/1.4.0 (pro)`: no install ID, no domain, no counts. Then:

- **New version.** Admins see a dismissible banner with a link to the changelog. Dismissing hides it until the
  next release.
- **Security advisory affecting this version.** Admins see a red banner on every page that cannot be dismissed
  until the server runs a fixed version. Critical and high advisories are also emailed once to every server admin
  (when SMTP is set up).
- Account → Software updates shows the version, edition, latest release, last check and any advisories, with a
  **Check now** button.

A development build (version `dev`) gets no advisories, because its code can't be placed in a version range.

Turn it off with `COLDTILL_UPDATE_CHECK=off`. Then watch [coldtill.com/security](https://coldtill.com/security)
yourself.

## Update year and security fixes

Standard and Pro include a year of updates from purchase. After that, the version you have keeps working forever.
**Security fixes are always free**: when an advisory is published, the fixed release can be downloaded by every
paid buyer whatever their update year.

## Feed format

```json
{
  "latest": {
    "version": "1.4.0",
    "date": "2026-11-02",
    "url": "https://coldtill.com/changelog#1.4.0",
    "summary": "Checkout domains, energy rental for Tron sweeps"
  },
  "advisories": [
    {
      "id": "CT-2026-0001",
      "severity": "high",
      "title": "Webhook secret visible to read-only project members",
      "affected": ">=1.2.0, <1.3.2 || >=1.4.0, <1.4.1",
      "fixed": ["1.3.2", "1.4.1"],
      "url": "https://coldtill.com/security/CT-2026-0001",
      "published": "2026-11-05"
    }
  ]
}
```

- `severity` is `critical`, `high`, `medium` or `low`.
- `affected` is a version range: comma-separated conditions (`>=`, `>`, `<=`, `<`, `=`) that must all hold, with
  `||` between alternatives. A range the server can't parse counts as affected, so a typo over-warns rather than
  hiding a problem.
- Versions compare as `major.minor.patch`. A build from `git describe` such as `v1.4.0-3-gabc1234` compares as
  `1.4.0`.

---

Source: https://coldtill.com/docs/updates/ · All Coldtill docs: https://coldtill.com/llms.txt
