Skip to content

Releases: yangflow/gitrelay

GitRelay 0.3.2

25 Apr 11:21

Choose a tag to compare

Sync health dashboard release.

  • Adds sidebar and menu bar health summaries for today's succeeded, failed, and not-run repositories.
  • Tracks last successful sync and consecutive failure counts, with badges for repositories failing 3+ times.
  • Preserves sync health fields when editing repos and migrates existing configs safely.
  • Includes tests for config migration, sync result bookkeeping, and health summary classification.

SHA256:

cdf0e34521f1948faddb7733cd14c5a73e33ad00c6589c073c0847fd9f465242

GitRelay 0.3.1

25 Apr 10:54

Choose a tag to compare

Added

  • Added destructive mirror push protection.
  • GitRelay now runs git push --mirror --dry-run before pushing.
  • New repositories default to strict protection and block target ref deletes or forced updates.
  • Existing repositories keep the previous automatic mirror behavior during migration.
  • Added a per-repository setting to choose strict protection or automatic mirror push behavior.

Notes

  • This build is unsigned. On first launch, right-click the app and choose Open, or run xattr -cr /Applications/GitRelay.app.

GitRelay 0.3.0

20 Apr 10:38

Choose a tag to compare

What's changed

New features

  • Browse & bulk-add from providers — A new toolbar button opens a 3-step sheet that lists your GitHub or GitLab repositories, supports multi-select with search, and generates target URLs from a {name} template. No more copy-pasting clone URLs one by one.
  • Self-hosted GitLab — Point at your own GitLab instance (e.g. https://gitlab.company.com); the client auto-appends /api/v4. Host is persisted for next time.
  • Auto-create on Gitea — Toggle "在目标端自动创建仓库" in the target step to create the destination repo on a self-hosted Gitea in the same batch. Three namespace modes:
    • Current user
    • Organization
    • Admin-for-user (creates under another user, requires admin token)
    • Name conflicts (HTTP 409) are resolved by reusing the existing repo instead of failing.
  • Batch result summary — After submitting, see per-repo success / reused / failed status with the server message, then commit only the successful ones to the sync list.

UI

  • Sidebar toolbar now has two dedicated icons: + (manual add) and magnifyingglass (browse). Previously hidden behind an overflow menu.

Download

Unsigned ad-hoc build. On first launch, right-click → Open, or run:

xattr -cr /Applications/GitRelay.app

GitRelay 0.2.4

13 Apr 16:54

Choose a tag to compare

What's changed

Internal refactor and accessibility pass — no user-facing feature changes.

Code quality

  • Split 11 large SwiftUI views into dedicated files (RepoDetailView → 6, MenuBarPopoverView → 3, SyncLogView → 2) so each type lives in its own file.
  • Replaced hand-rolled layout in AddEditRepoSheet with Form + Section + .formStyle(.grouped).
  • Replaced custom empty-state layout with ContentUnavailableView.
  • Replaced NSOpenPanel.runModal with SwiftUI-native .fileImporter for the SSH key picker.
  • Replaced DispatchQueue.main.asyncAfter with Task + Task.sleep(for:).

Accessibility

  • StatusIconView now honors Reduce Motion: the sync rotation is disabled and replaced with an opacity dim when the user has enabled that setting.
  • Replaced hardcoded .font(.system(size:)) and .caption2 throughout with semantic Dynamic Type fonts so text scales correctly.

Reliability

  • RepoStore.save / RepoStore.load errors are now surfaced to the user via an alert instead of being silently swallowed with try? / print.
  • RepoDetailViewModel.loadBranches is now async and invoked via .task(id:), so the underlying git for-each-ref is cancelled when the detail view disappears.
  • Menu bar NSImage is cached statically instead of being rebuilt every time the status dictionary updates.

Download

Unsigned ad-hoc build. On first launch, right-click → Open, or run:

xattr -cr /Applications/GitRelay.app

GitRelay 0.2.3

13 Apr 16:28

Choose a tag to compare

What's New

  • Popover footer: About and Quit buttons moved to the bottom of the menu bar popover, matching standard macOS app conventions
  • Clicking About or Open Main Window now automatically closes the popover

GitRelay 0.2.2

12 Apr 10:11

Choose a tag to compare

Bug fixes

  • Fix "An error occurred in retrieving update information" — disable App Sandbox to allow Sparkle and git network access
  • Fix Info.plist appearing in Copy Bundle Resources build phase
  • Configure SUFeedURL and SUPublicEDKey for Sparkle

GitRelay 0.2.1

12 Apr 10:01

Choose a tag to compare

Bug fixes

  • Fix "Check for Updates" button doing nothing — startingUpdater was false, leaving the Sparkle controller uninitialized

GitRelay 0.2.0

12 Apr 09:57

Choose a tag to compare

What's new

  • About window — app icon, version, copyright, MIT license, GitHub link
  • Check for Updates — menu bar ⓘ → About → 检查更新; opens GitHub Releases until Sparkle signing is configured
  • Homebrewbrew tap yangflow/tap && brew install --cask gitrelay

Fixes

  • Menu bar icon size increased to 16 pt semibold for better visibility

Install

brew tap yangflow/tap
brew install --cask gitrelay

Or download the DMG below.

Unsigned build: right-click → Open on first launch, or run xattr -cr /Applications/GitRelay.app

GitRelay 0.1.0

12 Apr 09:31

Choose a tag to compare

First public release.

Features

  • Mirror any Git repository to any other — GitLab, GitHub, Gitea, Gitee, or any self-hosted server
  • SSH Agent, SSH key, and HTTPS token auth (tokens stored in macOS Keychain)
  • Per-repo sync schedule: manual, 15 min, 30 min, 1 h, 1 day
  • Sync log with credential redaction and error classification
  • Menu bar quick access — status at a glance, trigger sync without opening the main window
  • Commit delta counter (src ahead of dst)

Install

Download GitRelay-0.1.0.dmg, open it, drag GitRelay to Applications.

Unsigned build: right-click → Open on first launch, or run xattr -cr /Applications/GitRelay.app

Requirements

  • macOS 14 (Sonoma) or later
  • git installed