# Updates and rollback

> Update the source build without accidentally installing Tinycast over Redcast.

Redcast is currently updated by pulling this fork and running its installer. Its About panel does not use Tinycast's upstream release feed.

## Update the installed app

```bash
cd /path/to/redcast
git pull --ff-only
Scripts/fork/install.sh --self-check
Scripts/fork/install.sh
```

If you have local changes, inspect them before pulling. Do not force-reset work to make an update proceed. The installer builds and verifies before replacing the installed app, and keeps the previous version.

## Roll back

From the same checkout:

```bash
Scripts/fork/install.sh --rollback
```

This restores the copy saved by the previous installation. Running rollback a second time reverses that swap. It does not roll back your user data, so keep a backup before an upgrade that changes stored formats.

## Preserve signing identity

macOS privacy grants depend on the app identity and signing certificate. Reusing the same certificate and bundle ID avoids unnecessary re-grants.

The installer refuses an update whose code requirement would change. If you intentionally changed certificates, inspect self-check, then use `--accept-new-identity` and follow the printed privacy reset instructions. Do not use it as a routine update flag.

## Development builds

Debug is a separate Tinycast Dev channel with its own bundle ID and storage. Running it from Xcode does not replace the installed Redcast build. Avoid assigning the same global shortcut to both running apps.

## Following upstream

Maintainers use `Scripts/fork/sync-upstream.sh` to merge Tinycast changes on a separate branch and run verification. Ordinary users should pull **alesha-pro/redcast**, whose main branch already contains the fork's integrated changes. See the [developer guide](/docs/developers) for the distinction.
