Releases: yangflow/gitrelay
Releases · yangflow/gitrelay
GitRelay 0.3.2
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
Added
- Added destructive mirror push protection.
- GitRelay now runs
git push --mirror --dry-runbefore 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
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
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
AddEditRepoSheetwithForm+Section+.formStyle(.grouped). - Replaced custom empty-state layout with
ContentUnavailableView. - Replaced
NSOpenPanel.runModalwith SwiftUI-native.fileImporterfor the SSH key picker. - Replaced
DispatchQueue.main.asyncAfterwithTask+Task.sleep(for:).
Accessibility
StatusIconViewnow 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.caption2throughout with semantic Dynamic Type fonts so text scales correctly.
Reliability
RepoStore.save/RepoStore.loaderrors are now surfaced to the user via an alert instead of being silently swallowed withtry?/print.RepoDetailViewModel.loadBranchesis nowasyncand invoked via.task(id:), so the underlyinggit for-each-refis cancelled when the detail view disappears.- Menu bar
NSImageis 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
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
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
Bug fixes
- Fix "Check for Updates" button doing nothing —
startingUpdaterwasfalse, leaving the Sparkle controller uninitialized
GitRelay 0.2.0
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
- Homebrew —
brew 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 gitrelayOr download the DMG below.
Unsigned build: right-click → Open on first launch, or run
xattr -cr /Applications/GitRelay.app
GitRelay 0.1.0
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
gitinstalled