Skip to content

Automatic Updates ​

Sync Upstream checks upstream releases daily at 01:17 and 13:17 UTC. GitHub may delay scheduled runs. After merging, it starts 00 Deploy Worker.

Initial Setup ​

  1. Sync manually so the default branch includes .github/workflows/sync-upstream.yml.
  2. Enable Sync Upstream under Actions.
  3. Create a fine-grained GitHub PAT scoped only to your fork, with Contents: Read and write and Workflows: Read and write.
  4. Save it as the Repository Secret EDGECHAT_SYNC_TOKEN.
  5. Run Actions → Sync Upstream → Run workflow to test.

Deployment dispatch uses the built-in token; the PAT needs no additional Actions permission. Without a PAT, ordinary source syncing works, but updates containing workflow files fail.

Confirm an Update ​

Check that Sync Upstream succeeds, then confirm 00 Deploy Worker succeeds for the same commit SHA. Syncing and deployment are separate runs.

Successful or active deployments are deduplicated. Dispatch failures and failed or cancelled deployments are retried at the next check.

Pause and Troubleshoot ​

Select Disable workflow from the workflow menu to pause; re-enable it to resume. GitHub may disable schedules after 60 days of inactivity in public repositories.

For failures, check PAT expiry, branch protection, and merge conflicts. Syncing uses a regular merge and preserves custom commits; resolve conflicts manually.

Which Releases Are Included ​

The workflow merges through the latest upstream commit marked EdgeChat-Update: stable or EdgeChat-Update: security, including earlier outstanding changes. Later unmarked development commits wait for a release. The upstream repository skips syncing itself.

Publishing an Upstream Release ​

Update version files, then add a standalone trailer at the end of the final release commit:

bash
git commit -m "release: stable version" -m "EdgeChat-Update: stable"
git push origin master

Use EdgeChat-Update: security for a security fix. When merging or squashing a PR, retain the trailer in the final default-branch commit body.

Automatic merge commits include [skip ci]; the sync script dispatches deployment explicitly to avoid duplicate runs. Both markers respect fork permissions and merge rules.

Built on Cloudflare · Designed for self-hosting