# Versions and changes

How the loader, the element and the API are versioned, and where changes are announced.

OneStar Feedback has three things that change over time: the widget your pages load, the APIs your code calls, and your own forms. Each is versioned on its own.

## The widget

Your pages load the loader from one address:

```html index.html
<script src="https://embed.onestar.sh/v1/loader.js" async></script>
```

The loader is small and is kept by browsers for only a few minutes, so improvements and fixes reach your pages without any change on your side. The rest of the widget, the renderer, lives in a file named by its content, such as `renderer.3b2f9c1d.js`. Each loader names the renderer built with it, so the two always match, and a renderer file never changes once published, so browsers keep it for good.

The `v1` in the address is the widget's version. New attributes, `window.onestar` calls, events and error codes may be added within it, so write event handlers to ignore codes and fields they do not know.

## The APIs

Both APIs carry their version in the path:

- `https://api.onestar.sh/v1/f/` is the public API the widget and [your own UI](https://onestar.sh/docs/feedback/headless.md) send answers to.
- `https://api.onestar.sh/v1/owner/` is the [REST API](https://onestar.sh/docs/feedback/rest-api.md) your server calls with a secret key.

[Webhook](https://onestar.sh/docs/feedback/webhooks.md) payloads follow the same rule. New fields may appear in responses and in event `data`, so read the fields you need and ignore the rest. Match errors on their `code`, never on the `detail` sentence, which may be reworded.

## Your forms

A form's questions are versioned. Editing the questions changes the draft only; nothing reaches people until you **Publish**. Publishing a changed draft makes a new version and makes it live at once. Publishing a draft that matches the live version keeps that version.

- Every answer records the version it answered, so you can always tell which questions it saw.
- Results counts versions together when they ask the same questions: the same question ids with the same types. Moving a question, rewording it or relabelling an option keeps the counts together.
- Adding, removing or changing the type of a question starts a new group. Earlier answers stay under their own version: pick it in the version menu on **Results**, or pass `version` to the [REST API](https://onestar.sh/docs/feedback/rest-api.md).
- A person who is answering when you publish gets a message to reload and answer the latest questions (`version_changed`).

A form's settings and look are not versioned: allowed sites, who may answer, test mode, messages and theme apply within a minute of saving, with no new version.

## Where changes are announced

Every release is on the [changelog](https://onestar.sh/changelog), newest first, and in its RSS feed at [/changelog/rss.xml](https://onestar.sh/changelog/rss.xml). The same list is under **What's new** in OneStar.
