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
- Sync manually so the default branch includes
.github/workflows/sync-upstream.yml. - Enable
Sync Upstreamunder Actions. - Create a fine-grained GitHub PAT scoped only to your fork, with Contents: Read and write and Workflows: Read and write.
- Save it as the Repository Secret
EDGECHAT_SYNC_TOKEN. - Run
Actions → Sync Upstream → Run workflowto 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:
git commit -m "release: stable version" -m "EdgeChat-Update: stable"
git push origin masterUse 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.