From 3365de6acb8a6559ecc37f133213849ca1f88b72 Mon Sep 17 00:00:00 2001
From: Michael Spinali
Date: Sun, 15 Mar 2026 15:00:21 -0500
Subject: [PATCH 1/6] feat: SDK release pipeline, Go cross-compile, and
publishing infrastructure
- Add workflow_dispatch release pipeline for Swift (SPM + CocoaPods),
Kotlin (Maven Central), React Native (npm OIDC), and Go (cross-compiled
synchrod binaries) with checksums and GitHub Release auto-creation
- Configure vanniktech maven-publish plugin for Central Portal publishing
- Add auto-generated release notes config (.github/release.yml)
- Add dynamic badges for all registries and build status
- Add release helper Makefile targets
- Wire logo into mkdocs site
---
.github/release.yml | 28 +++
.github/workflows/release.yml | 311 ++++++++++++++++++++++++
Makefile | 24 ++
README.md | 10 +-
clients/kotlin/build.gradle.kts | 1 +
clients/kotlin/gradle.properties | 15 ++
clients/kotlin/synchro/build.gradle.kts | 36 ++-
docs/assets/logo.svg | 7 +
mkdocs.yml | 2 +
9 files changed, 423 insertions(+), 11 deletions(-)
create mode 100644 .github/release.yml
create mode 100644 .github/workflows/release.yml
create mode 100644 docs/assets/logo.svg
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 00000000..ef7398f5
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,28 @@
+changelog:
+ categories:
+ - title: Breaking Changes
+ labels:
+ - breaking
+ - title: Features
+ labels:
+ - enhancement
+ - feature
+ - title: Bug Fixes
+ labels:
+ - bug
+ - fix
+ - title: Documentation
+ labels:
+ - documentation
+ - docs
+ - title: Infrastructure
+ labels:
+ - ci
+ - infrastructure
+ - dependencies
+ - title: Other Changes
+ labels:
+ - "*"
+ exclude:
+ labels:
+ - skip-changelog
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..f57fb905
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,311 @@
+name: Release
+
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Release version (e.g. 0.2.0, without v prefix)'
+ required: true
+ type: string
+
+permissions:
+ contents: write
+ id-token: write
+
+jobs:
+ # ── Validate version format ────────────────────────────────────────────
+ prepare:
+ runs-on: ubuntu-latest
+ outputs:
+ version: ${{ steps.validate.outputs.version }}
+ steps:
+ - name: Validate version
+ id: validate
+ run: |
+ VERSION="${{ inputs.version }}"
+ if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+ echo "::error::Version '$VERSION' does not match X.Y.Z pattern"
+ exit 1
+ fi
+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
+ echo "Version: $VERSION"
+
+ # ── Go tests ───────────────────────────────────────────────────────────
+ test-go:
+ needs: prepare
+ runs-on: ubuntu-latest
+ services:
+ postgres:
+ image: postgres:16
+ env:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_DB: synchro_test
+ ports:
+ - 5432:5432
+ options: >-
+ --health-cmd="pg_isready -U postgres"
+ --health-interval=5s
+ --health-timeout=5s
+ --health-retries=5
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-go@v5
+ with:
+ go-version-file: go.mod
+
+ - name: Run Go tests
+ env:
+ TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/synchro_test?sslmode=disable
+ run: go test -count=1 -p 1 ./...
+
+ # ── Swift tests ────────────────────────────────────────────────────────
+ test-swift:
+ needs: prepare
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v4
+ - run: cd clients/swift && swift test
+
+ # ── Kotlin tests ───────────────────────────────────────────────────────
+ test-kotlin:
+ needs: prepare
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: '17'
+
+ - run: cd clients/kotlin && ./gradlew :synchro:test
+
+ # ── React Native tests ────────────────────────────────────────────────
+ test-rn:
+ needs: prepare
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: Install dependencies
+ run: cd clients/react-native && yarn install --immutable
+
+ - run: cd clients/react-native && npm test -- --testPathIgnorePatterns=e2e
+
+ # ── Build Go binaries ─────────────────────────────────────────────────
+ build-go:
+ needs: [test-go, prepare]
+ runs-on: ubuntu-latest
+ env:
+ VERSION: ${{ needs.prepare.outputs.version }}
+ strategy:
+ matrix:
+ include:
+ - goos: linux
+ goarch: amd64
+ - goos: linux
+ goarch: arm64
+ - goos: darwin
+ goarch: amd64
+ - goos: darwin
+ goarch: arm64
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-go@v5
+ with:
+ go-version-file: go.mod
+
+ - name: Build synchrod
+ env:
+ GOOS: ${{ matrix.goos }}
+ GOARCH: ${{ matrix.goarch }}
+ CGO_ENABLED: '0'
+ run: |
+ BINARY="synchrod-${{ matrix.goos }}-${{ matrix.goarch }}"
+ go build -ldflags="-s -w -X main.version=${VERSION}" -o "$BINARY" ./cmd/synchrod
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: "synchrod-${{ matrix.goos }}-${{ matrix.goarch }}"
+ path: "synchrod-${{ matrix.goos }}-${{ matrix.goarch }}"
+
+ # ── Publish Swift SDK ──────────────────────────────────────────────────
+ release-swift:
+ needs: [test-go, test-swift, prepare]
+ runs-on: macos-latest
+ env:
+ VERSION: ${{ needs.prepare.outputs.version }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Fetch secrets from Doppler
+ uses: dopplerhq/secrets-fetch-action@v2
+ with:
+ doppler-token: ${{ secrets.DOPPLER_TOKEN }}
+ inject-env-vars: true
+
+ - name: Subtree split and push swift-sdk branch
+ run: |
+ git subtree split --prefix=clients/swift -b swift-sdk
+ git push origin swift-sdk --force
+
+ - name: Tag swift-sdk branch
+ run: |
+ git checkout swift-sdk
+ git tag -f "$VERSION"
+ git push origin "$VERSION" --force
+
+ - name: Publish to CocoaPods
+ env:
+ COCOAPODS_TRUNK_TOKEN: ${{ env.COCOAPODS_TRUNK_TOKEN }}
+ run: |
+ git checkout swift-sdk
+ sed -i '' "s/s.version.*=.*/s.version = \"$VERSION\"/" Synchro.podspec
+ pod trunk push Synchro.podspec --allow-warnings
+
+ - name: Build Swift source archive
+ run: |
+ git checkout swift-sdk
+ zip -r "Synchro-swift-${VERSION}.zip" . -x '.git/*'
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: swift-archive
+ path: "Synchro-swift-${{ needs.prepare.outputs.version }}.zip"
+
+ # ── Publish Kotlin SDK ─────────────────────────────────────────────────
+ release-kotlin:
+ needs: [test-kotlin, prepare]
+ runs-on: ubuntu-latest
+ env:
+ VERSION: ${{ needs.prepare.outputs.version }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: '17'
+
+ - name: Fetch secrets from Doppler
+ uses: dopplerhq/secrets-fetch-action@v2
+ with:
+ doppler-token: ${{ secrets.DOPPLER_TOKEN }}
+ inject-env-vars: true
+
+ - name: Import GPG key
+ run: |
+ echo "$GPG_PRIVATE_KEY" | gpg --batch --import
+ GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format short 2>/dev/null | grep sec | head -1 | sed 's/.*\///' | sed 's/ .*//')
+ echo "GPG_KEY_ID=$GPG_KEY_ID" >> "$GITHUB_ENV"
+
+ - name: Publish to Maven Central
+ working-directory: clients/kotlin
+ env:
+ ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ env.MAVEN_CENTRAL_USERNAME }}
+ ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ env.MAVEN_CENTRAL_PASSWORD }}
+ ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ env.GPG_PRIVATE_KEY }}
+ ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ env.GPG_PASSPHRASE }}
+ run: ./gradlew publishAndReleaseToMavenCentral -Pversion="$VERSION"
+
+ - name: Collect AAR artifact
+ run: |
+ AAR_PATH=$(find clients/kotlin/synchro/build/outputs/aar -name '*.aar' | head -1)
+ cp "$AAR_PATH" "synchro-${VERSION}.aar"
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: kotlin-aar
+ path: "synchro-${{ needs.prepare.outputs.version }}.aar"
+
+ # ── Publish React Native SDK ───────────────────────────────────────────
+ release-npm:
+ needs: [release-swift, release-kotlin, test-rn, prepare]
+ runs-on: ubuntu-latest
+ env:
+ VERSION: ${{ needs.prepare.outputs.version }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ registry-url: 'https://registry.npmjs.org'
+
+ - name: Install dependencies and build
+ working-directory: clients/react-native
+ run: |
+ yarn install --immutable
+ yarn prepare
+
+ - name: Stamp version and publish
+ working-directory: clients/react-native
+ run: |
+ npm version "$VERSION" --no-git-tag-version
+ npm publish --access public --provenance
+
+ - name: Pack tarball for release artifact
+ working-directory: clients/react-native
+ run: npm pack
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: npm-tarball
+ path: "clients/react-native/trainstar-synchro-react-native-${{ needs.prepare.outputs.version }}.tgz"
+
+ # ── Create GitHub Release with all artifacts ───────────────────────────
+ create-release:
+ needs: [release-swift, release-kotlin, release-npm, build-go, prepare]
+ runs-on: ubuntu-latest
+ env:
+ VERSION: ${{ needs.prepare.outputs.version }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/download-artifact@v4
+ with:
+ path: artifacts
+
+ - name: Generate checksums
+ run: |
+ cd artifacts
+ sha256sum \
+ synchrod-linux-amd64/synchrod-linux-amd64 \
+ synchrod-linux-arm64/synchrod-linux-arm64 \
+ synchrod-darwin-amd64/synchrod-darwin-amd64 \
+ synchrod-darwin-arm64/synchrod-darwin-arm64 \
+ swift-archive/Synchro-swift-${VERSION}.zip \
+ kotlin-aar/synchro-${VERSION}.aar \
+ npm-tarball/trainstar-synchro-react-native-${VERSION}.tgz \
+ > checksums.txt
+
+ - name: Create tag
+ run: |
+ git tag "v${VERSION}"
+ git push origin "v${VERSION}"
+
+ - name: Create GitHub Release
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ gh release create "v${VERSION}" \
+ --repo "$GITHUB_REPOSITORY" \
+ --title "v${VERSION}" \
+ --generate-notes \
+ "artifacts/synchrod-linux-amd64/synchrod-linux-amd64#synchrod-linux-amd64" \
+ "artifacts/synchrod-linux-arm64/synchrod-linux-arm64#synchrod-linux-arm64" \
+ "artifacts/synchrod-darwin-amd64/synchrod-darwin-amd64#synchrod-darwin-amd64" \
+ "artifacts/synchrod-darwin-arm64/synchrod-darwin-arm64#synchrod-darwin-arm64" \
+ "artifacts/swift-archive/Synchro-swift-${VERSION}.zip" \
+ "artifacts/kotlin-aar/synchro-${VERSION}.aar" \
+ "artifacts/npm-tarball/trainstar-synchro-react-native-${VERSION}.tgz" \
+ "artifacts/checksums.txt"
diff --git a/Makefile b/Makefile
index 2567d8fc..243501c8 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,10 @@
synchrod-test-start \
synchrod-test-stop \
synchrod-test-restart \
+ release-check \
+ release-swift-local \
+ release-kotlin-local \
+ release-npm-dry-run \
clean
# Local infrastructure defaults.
@@ -75,6 +79,10 @@ help:
@echo " test-rn-e2e-android - Run React Native Detox E2E tests on Android"
@echo " test-rn - Run React Native E2E tests on both platforms"
@echo " test-integration - Run Go integration + WAL + Swift + Kotlin + RN integration against a live synchrod"
+ @echo " release-check - Run all SDK unit tests locally"
+ @echo " release-swift-local - Dry-run subtree split for Swift SDK"
+ @echo " release-kotlin-local - Publish Kotlin SDK to mavenLocal"
+ @echo " release-npm-dry-run - Dry-run npm pack for React Native SDK"
@echo " clean - Remove local build/test artifacts"
build:
@@ -218,5 +226,21 @@ test-integration:
$(TEST_ENV) $(MAKE) test-kotlin
$(TEST_ENV) $(MAKE) test-rn
+release-check: test-go-unit test-swift-unit test-kotlin-unit test-rn-unit
+ @echo "All SDK tests passed."
+
+release-swift-local:
+ git subtree split --prefix=clients/swift -b swift-sdk
+ @echo "Branch 'swift-sdk' created. Verify Package.swift is at root:"
+ @git show swift-sdk:Package.swift | head -5
+
+release-kotlin-local:
+ cd clients/kotlin && ./gradlew :synchro:publishToMavenLocal
+ @echo "Published to mavenLocal. Check:"
+ @ls -la ~/.m2/repository/com/trainstar/synchro/ 2>/dev/null || echo "Not found in ~/.m2"
+
+release-npm-dry-run:
+ cd clients/react-native && npm pack --dry-run
+
clean:
rm -rf bin/ "$(SYNCHROD_PID_FILE)" "$(SYNCHROD_LOG_FILE)"
diff --git a/README.md b/README.md
index 9c45da58..ab6116a4 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,13 @@
# Synchro
-[](https://go.dev)
-[](LICENSE)
+[](https://github.com/trainstar/synchro/actions/workflows/release.yml)
+[](https://pkg.go.dev/github.com/trainstar/synchro)
+[](https://pkg.go.dev/github.com/trainstar/synchro)
+[](https://www.npmjs.com/package/@trainstar/synchro-react-native)
+[](https://central.sonatype.com/artifact/com.trainstar/synchro)
+[](https://cocoapods.org/pods/Synchro)
+[](https://github.com/trainstar/synchro)
+[](LICENSE)
[](https://trainstar.github.io/synchro)
Offline-first sync for Go + PostgreSQL. Your tables. Your server. Minimal changes.
diff --git a/clients/kotlin/build.gradle.kts b/clients/kotlin/build.gradle.kts
index b345e233..0cca8f42 100644
--- a/clients/kotlin/build.gradle.kts
+++ b/clients/kotlin/build.gradle.kts
@@ -2,4 +2,5 @@ plugins {
id("com.android.library") version "8.2.2" apply false
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
id("org.jetbrains.kotlin.plugin.serialization") version "1.9.22" apply false
+ id("com.vanniktech.maven.publish") version "0.30.0" apply false
}
diff --git a/clients/kotlin/gradle.properties b/clients/kotlin/gradle.properties
index 5bac8ac5..0b76d66e 100644
--- a/clients/kotlin/gradle.properties
+++ b/clients/kotlin/gradle.properties
@@ -1 +1,16 @@
android.useAndroidX=true
+
+# Publishing defaults (CI overrides version via -Pversion=X.Y.Z)
+version=0.1.0
+GROUP=com.trainstar
+POM_ARTIFACT_ID=synchro
+POM_NAME=Synchro
+POM_DESCRIPTION=Offline-first sync SDK for Android
+POM_URL=https://github.com/trainstar/synchro
+POM_SCM_URL=https://github.com/trainstar/synchro
+POM_SCM_CONNECTION=scm:git:git://github.com/trainstar/synchro.git
+POM_SCM_DEV_CONNECTION=scm:git:ssh://github.com/trainstar/synchro.git
+POM_LICENCE_NAME=MIT License
+POM_LICENCE_URL=https://opensource.org/licenses/MIT
+POM_DEVELOPER_ID=trainstar
+POM_DEVELOPER_NAME=Trainstar
diff --git a/clients/kotlin/synchro/build.gradle.kts b/clients/kotlin/synchro/build.gradle.kts
index 5c59e5fe..cac9d015 100644
--- a/clients/kotlin/synchro/build.gradle.kts
+++ b/clients/kotlin/synchro/build.gradle.kts
@@ -2,7 +2,7 @@ plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
id("org.jetbrains.kotlin.plugin.serialization")
- `maven-publish`
+ id("com.vanniktech.maven.publish")
}
android {
@@ -43,15 +43,33 @@ dependencies {
testImplementation("androidx.test:core:1.5.0")
}
-afterEvaluate {
- publishing {
- publications {
- create("release") {
- from(components["release"])
- groupId = "com.trainstar"
- artifactId = "synchro"
- version = "0.1.0"
+mavenPublishing {
+ publishToMavenCentral(com.vanniktech.maven.publish.SonatypeHost.CENTRAL_PORTAL)
+ signAllPublications()
+
+ coordinates("com.trainstar", "synchro", project.findProperty("version")?.toString() ?: "0.1.0")
+
+ pom {
+ name.set("Synchro")
+ description.set("Offline-first sync SDK for Android")
+ url.set("https://github.com/trainstar/synchro")
+
+ licenses {
+ license {
+ name.set("MIT License")
+ url.set("https://opensource.org/licenses/MIT")
}
}
+ developers {
+ developer {
+ id.set("trainstar")
+ name.set("Trainstar")
+ }
+ }
+ scm {
+ url.set("https://github.com/trainstar/synchro")
+ connection.set("scm:git:git://github.com/trainstar/synchro.git")
+ developerConnection.set("scm:git:ssh://github.com/trainstar/synchro.git")
+ }
}
}
diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg
new file mode 100644
index 00000000..44e50731
--- /dev/null
+++ b/docs/assets/logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+synchro
+
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index 5c1eecd4..d1be7eb0 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -28,6 +28,8 @@ theme:
- content.code.copy
- content.tabs.link
- toc.follow
+ logo: assets/logo.svg
+ favicon: assets/logo.svg
icon:
repo: fontawesome/brands/github
From 5d1313e6ed08f5adcaeb90fbcbfa4d0fda915d28 Mon Sep 17 00:00:00 2001
From: Michael Spinali
Date: Sun, 15 Mar 2026 15:05:01 -0500
Subject: [PATCH 2/6] feat: update README with logo, centered badges, and
revised tagline
---
README.md | 30 +++++++++++++++++-------------
1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index ab6116a4..822b84ad 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,20 @@
-# Synchro
-
-[](https://github.com/trainstar/synchro/actions/workflows/release.yml)
-[](https://pkg.go.dev/github.com/trainstar/synchro)
-[](https://pkg.go.dev/github.com/trainstar/synchro)
-[](https://www.npmjs.com/package/@trainstar/synchro-react-native)
-[](https://central.sonatype.com/artifact/com.trainstar/synchro)
-[](https://cocoapods.org/pods/Synchro)
-[](https://github.com/trainstar/synchro)
-[](LICENSE)
-[](https://trainstar.github.io/synchro)
-
-Offline-first sync for Go + PostgreSQL. Your tables. Your server. Minimal changes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Offline-first sync between PostgreSQL and native client SDKs for Swift, Kotlin, and React Native. Go server you can embed or deploy standalone. Your tables. Minimal changes.
## What You Need
From 3dbcbabb5b9c7685feaa9ff8c391272fbc0366c6 Mon Sep 17 00:00:00 2001
From: Michael Spinali
Date: Sun, 15 Mar 2026 15:06:20 -0500
Subject: [PATCH 3/6] fix: trim logo SVG whitespace, remove unpublished badges,
center tagline
---
README.md | 6 +-----
docs/assets/logo.svg | 12 ++++++------
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index 822b84ad..26852edd 100644
--- a/README.md
+++ b/README.md
@@ -3,18 +3,14 @@
-
-
-
-
-Offline-first sync between PostgreSQL and native client SDKs for Swift, Kotlin, and React Native. Go server you can embed or deploy standalone. Your tables. Minimal changes.
+Offline-first sync between PostgreSQL and native client SDKs for Swift, Kotlin, and React Native. Go server you can embed or deploy standalone. Your tables. Minimal changes.
## What You Need
diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg
index 44e50731..be93bb72 100644
--- a/docs/assets/logo.svg
+++ b/docs/assets/logo.svg
@@ -1,7 +1,7 @@
-
-
-
-
+
+
+
+
-synchro
-
\ No newline at end of file
+synchro
+
From bf996e721348166841839c1677b4a5986bbaaf66 Mon Sep 17 00:00:00 2001
From: Michael Spinali
Date: Sun, 15 Mar 2026 15:08:33 -0500
Subject: [PATCH 4/6] fix: consolidate logo and badges into single block,
reduce logo width
---
README.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 26852edd..b703f1e0 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,5 @@
-
-
-
-
+
From 0bdedfc435b38b55ce35b00e2656f4118997a51b Mon Sep 17 00:00:00 2001
From: Michael Spinali
Date: Sun, 15 Mar 2026 15:10:25 -0500
Subject: [PATCH 5/6] fix: rename logo to bust GitHub camo cache
---
README.md | 2 +-
docs/assets/{logo.svg => synchro-logo.svg} | 0
mkdocs.yml | 4 ++--
3 files changed, 3 insertions(+), 3 deletions(-)
rename docs/assets/{logo.svg => synchro-logo.svg} (100%)
diff --git a/README.md b/README.md
index b703f1e0..f72f6249 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
diff --git a/docs/assets/logo.svg b/docs/assets/synchro-logo.svg
similarity index 100%
rename from docs/assets/logo.svg
rename to docs/assets/synchro-logo.svg
diff --git a/mkdocs.yml b/mkdocs.yml
index d1be7eb0..b288aba3 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -28,8 +28,8 @@ theme:
- content.code.copy
- content.tabs.link
- toc.follow
- logo: assets/logo.svg
- favicon: assets/logo.svg
+ logo: assets/synchro-logo.svg
+ favicon: assets/synchro-logo.svg
icon:
repo: fontawesome/brands/github
From 232869d1d3c97ce2ff2de265d4e89e38b1c36095 Mon Sep 17 00:00:00 2001
From: Michael Spinali
Date: Sun, 15 Mar 2026 15:12:56 -0500
Subject: [PATCH 6/6] fix: increase logo width
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f72f6249..ec17277e 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+