⚠️ Back up your Gitea or Forgejo instance and review release limits and filters before upgrading. The next sync can delete older releases: retention and release filters now inspect all destination releases, not just the newest 30. Previously untrimmed releases beyond your limit or excluded by your filters will be removed.
Key highlights:
- Optionally remove attachments from older mirrored releases to reclaim storage. The new "Remove old release assets" setting is off by default; enabling it deletes destination attachments beyond each repository's asset limit, but keeps release notes and tags.
- Fix the Activity Log failing to load after a sync records a release-filter warning.
- Sort repository owner, organization, and activity name filters alphabetically regardless of case.
If you're updating from a version older than 3.48.0, you can also refresh storage sizes on demand, navigate between cached pages, and browse large lists more smoothly. Release retention and filters now inspect every destination release, and authenticated MCP tools include a security fix for oversized lists.
If you're updating from a version older than 3.47.0, the Storage page also shows total storage and a breakdown by owner and repository. GitHub and GitLab push destinations are not measured.
If you're updating from a version older than 3.46.0, Gitea Mirror also includes an MCP endpoint and read-only API keys. Existing API keys keep full access.
Reminder: release filters added in 3.44.0 delete already-mirrored releases that no longer match on the next sync. Preview the affected releases in the tag rules dialog before saving, and back up your Gitea instance. Existing configurations keep mirroring all releases until you enable a filter.
If you're updating from a version older than 3.42.0, GitHub App installation authentication is also available as an alternative to personal access tokens. GitHub App-backed mirrors require Gitea 1.27 or later. Keep Gitea Mirror's scheduler enabled for these mirrors, as Gitea's independent pull schedule is disabled. Use personal access tokens with older Gitea versions, Forgejo, starred repositories, or star lists. Existing token-based mirrors are unchanged.
If you're updating from a version older than 3.40.4, milestone assignments are now mirrored for issues and pull requests. Existing unchanged items receive their assignments on the next weekly full sync; changed items receive them on their next sync.
If you're updating from a version older than 3.40.1, Gitea Mirror also includes improved GitHub rate-limit handling, an organizations list view, incremental scheduled issue and pull request syncs, and saved URL/security hardening.
If you're updating from a version older than 3.36.2, Gitea Mirror also includes scheduling, organization ignore/include, and destination display fixes. Existing configurations are not touched. New configurations start with scheduling off unless SCHEDULE_ENABLED=true, SCHEDULE_INTERVAL, or GITEA_MIRROR_INTERVAL enables it.
If you're updating from a version older than 3.36.1, Gitea Mirror also includes fixes for duplicate release assets, organization destination overrides, crash recovery, duplicate source-row scheduling/import behavior, and progress checkpoint handling.
If you're updating from a version older than 3.34.0, Gitea Mirror also adds organization source pins and earlier multi-source database migrations. Back up data/gitea-mirror.db and your Gitea or Forgejo instance before upgrading.
Reminder for users updating from 3.27.1 or older: repository cleanup no longer archives or deletes copies in Gitea or Forgejo automatically when the original GitHub repository is no longer found.
If you're updating from a version older than 3.17 and use OAuth provider clients registered in Gitea Mirror, rotate the client secret for each client after upgrading because OAuth application secrets are stored hashed after migration.
Full release notes can be found at https://github.com/RayLabsHQ/gitea-mirror/releases/tag/v3.49.0