RepoPilotOpen in app →

Jeric-X/SyncClipboard

跨平台剪贴板同步、历史记录管理工具 / Cross-platform cipboard syncing, history management tool

Healthy

Healthy across all four use cases

Use as dependencyHealthy

Permissive license, no critical CVEs, actively maintained — safe to depend on.

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 5d ago
  • 6 active contributors
  • MIT licensed
Show 3 more →
  • CI configured
  • Tests present
  • Single-maintainer risk — top contributor 95% of recent commits

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/jeric-x/syncclipboard)](https://repopilot.app/r/jeric-x/syncclipboard)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/jeric-x/syncclipboard on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: Jeric-X/SyncClipboard

Generated by RepoPilot · 2026-05-10 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/Jeric-X/SyncClipboard shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

GO — Healthy across all four use cases

  • Last commit 5d ago
  • 6 active contributors
  • MIT licensed
  • CI configured
  • Tests present
  • ⚠ Single-maintainer risk — top contributor 95% of recent commits

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live Jeric-X/SyncClipboard repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/Jeric-X/SyncClipboard.

What it runs against: a local clone of Jeric-X/SyncClipboard — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in Jeric-X/SyncClipboard | Confirms the artifact applies here, not a fork | | 2 | License is still MIT | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | Last commit ≤ 35 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>Jeric-X/SyncClipboard</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of Jeric-X/SyncClipboard. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/Jeric-X/SyncClipboard.git
#   cd SyncClipboard
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of Jeric-X/SyncClipboard and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "Jeric-X/SyncClipboard(\\.git)?\\b" \\
  && ok "origin remote is Jeric-X/SyncClipboard" \\
  || miss "origin remote is not Jeric-X/SyncClipboard (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(MIT)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"MIT\"" package.json 2>/dev/null) \\
  && ok "license is MIT" \\
  || miss "license drift — was MIT at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 35 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~5d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/Jeric-X/SyncClipboard"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

SyncClipboard is a cross-platform clipboard synchronization and history management tool written in C# with Avalonia UI, enabling real-time clipboard sync across Windows/macOS/Linux devices. It supports multiple backend options (built-in server, Docker, WebDAV, S3-compatible storage) and provides clipboard history tracking, image optimization (format conversion, web image download), and file-to-image clipboard conversion. Monolithic C# application structured around Avalonia desktop UI with separate server component (ASP.NET Core 8.0). Clients live in desktop/, server in SyncClipboard.Server/, workflows in .github/workflows/ orchestrate multi-platform builds (Windows via .bat, Linux/macOS via shell scripts). Configuration via JSON (appsettings.json for server, SyncClipboard.json for clients).

👥Who it's for

Power users and system administrators managing clipboard content across multiple devices who need reliable cross-platform sync without cloud lock-in, plus developers integrating clipboard sync into other tools via the exposed API endpoints.

🌱Maturity & risk

Actively developed with comprehensive CI/CD pipelines (18+ GitHub Actions workflows for multi-platform builds/releases), well-structured licensing, and recent changelog entries. However, clipboard history feature is marked early-stage with data loss warnings. Appears production-ready for core sync functionality but history should be considered beta.

Single maintainer (Jeric-X) creates concentration risk. Breaking change at v3.1.1 required synchronized upgrades across network. Large dependency surface (Avalonia, MagickNET, SharpHook, Vanara, FluentAvalonia) introduces supply chain considerations. No visible public test suite in file list. Requires .NET 8.0 runtime for server, creating infrastructure dependency.

Active areas of work

Recent focus on multi-platform packaging and release automation (dedicated release workflows for Windows, macOS, Linux). Support for S3 and WebDAV backends indicates expansion beyond built-in server. Mobile integration via third-party tools (iOS Shortcuts, Android app ecosystem) suggests active feature development.

🚀Get running

git clone https://github.com/Jeric-X/SyncClipboard.git
cd SyncClipboard
# For server: dotnet run in SyncClipboard.Server project
# For desktop: open solution in Visual Studio or use dotnet build
dotnet build

Daily commands: Desktop Client: dotnet run --project SyncClipboard (requires .NET 8.0+ SDK). Server Standalone: dotnet /path/to/SyncClipboard.Server.dll --contentRoot ./ (requires ASP.NET Core 8.0 runtime). Docker: Use provided Dockerfile for containerized server deployment.

🗺️Map of the codebase

  • SyncClipboard.Server/Program.cs: ASP.NET Core server entry point; defines API routes, authentication, and Kestrel configuration
  • .github/workflows/build-entry.yml: Master CI/CD orchestration that triggers platform-specific builds; understand this to comprehend the release pipeline
  • SyncClipboard/appsettings.json: Client-side configuration schema for server connection, sync intervals, history storage, and feature flags
  • build/SetUpdateSource.sh: Cross-platform build configuration; critical for local development matching CI environment
  • README.md: Primary documentation; lists API endpoints (/获取剪贴板, /上传剪贴板) and S3 sync protocol specification essential for backend integration

🛠️How to make changes

UI Changes: Edit XAML in src/Views/ and corresponding ViewModels in src/ViewModels/ (Avalonia MVVM pattern). Sync Protocol: Modify SyncClipboard.Server/ endpoints and client API calls in clipboard sync handlers. New Backend Storage: Implement storage adapter following WebDAV/S3 pattern in server project. Platform-Specific Clipboard Access: Modify Windows/Linux/macOS-specific code in client's native interop layer (likely isolated by platform in source).

🪤Traps & gotchas

.NET Runtime Version: ASP.NET Core 8.0 required for server; mismatched versions cause startup failures. Clipboard History Storage: Early-stage feature with implicit data loss risk—don't expect persistence guarantees. Cross-Device Network Sync: Requires appsettings.json configuration matching across all devices; misconfigured servers silently fail sync. Platform-Specific Behaviors: Image clipboard handling differs significantly per OS (browser downloads on Windows, file conversions on Linux)—test each platform independently. Docker Working Directory: Requires write permissions in contentRoot; default Docker user restrictions can silently break data persistence. Breaking Changes: v3.1.1+ incompatible with prior versions; mixed-version networks require coordinated upgrades.

💡Concepts to learn

  • Clipboard Format Negotiation — SyncClipboard converts between native clipboard formats (MIME types on Linux/macOS, IDataObject on Windows) to sync heterogeneous content; understanding format translation is critical for debugging cross-platform sync failures
  • Global Keyboard Hook / System Clipboard Monitoring — SharpHook enables background clipboard change detection without polling; essential for understanding real-time sync triggering mechanism and performance implications
  • WebDAV Protocol — One of three backend options (alongside built-in server and S3); understanding WebDAV enables swapping storage backends without code changes
  • S3 API Compatibility Layer — Server abstracts S3 API allowing compatibility with any S3-compatible object store (MinIO, Wasabi); demonstrates adapter pattern for storage backend agnosticism
  • MVVM Pattern (Model-View-ViewModel) — Avalonia enforces MVVM for UI; all UI logic lives in separate ViewModels decoupled from Views, requiring understanding of data binding and command patterns for modifications
  • D-Bus IPC (Linux Inter-Process Communication) — Linux clipboard access via D-Bus requires Tmds.DBus library; platform-specific detail critical for Linux debugging and clipboard permission handling
  • Image Transcoding and Web Image Download — MagickNET converts HEIC/WebP to GIF/JPG for clipboard compatibility, and background browser image download resolves dynamic image copy limitation; demonstrates media pipeline complexity
  • hluk/CopyQ — Native clipboard manager with history; shares core problem domain but uses Qt instead of Avalonia
  • ergonode/clipboard-sync — Lightweight clipboard sync focused on speed; alternative approach for same cross-platform sync use case
  • LorenzoGiorgi/clipboardSync — Python-based clipboard sync; demonstrates alternative language approach to same synchronization challenge
  • yingzwi/ShareClipboard — Companion project in same ecosystem; another Avalonia-based clipboard tool for Windows/Linux, useful for architecture patterns
  • Clipboardy/Clipboardy — JavaScript-based cross-device clipboard sync; shows web/Electron alternative to native C# approach

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add S3 Adapter integration tests

The repo has S3-Adapter-Design.md in docs/ but no visible test coverage for the S3 adapter implementation. Given the complexity of cloud storage adapters and the existence of detailed design documentation, adding comprehensive integration tests would catch regressions, validate the design, and help new contributors understand the S3 adapter interface.

  • [ ] Create test project under appropriate test directory (likely in a src/Server or src/Adapters path based on structure)
  • [ ] Write unit tests covering S3 adapter initialization, authentication, and basic CRUD operations
  • [ ] Add integration tests that mock S3 API calls using a library like Moq (already a dependency)
  • [ ] Reference docs/S3-Adapter-Design.md in test comments to validate design compliance
  • [ ] Add test results to CI pipeline (integrate into existing .github/workflows/server-build.yml)

Complete Linux troubleshooting guide in docs/

The README shows a truncated Linux troubleshooting section (cuts off at 'IOS'). Linux has a dedicated build workflow (.github/workflows/linux-compile.yml, linux-release.yml, linux-package.yml) and installation instructions exist, but the troubleshooting section is incomplete. This is a high-friction point for Linux users.

  • [ ] Review .github/workflows/linux-compile.yml and linux-package.sh to identify common build/runtime failures
  • [ ] Document DBus/XDG clipboard permission issues (Tmds.DBus is a dependency, suggesting D-Bus integration)
  • [ ] Add troubleshooting for Arch Linux specifically (build/linux/linux.pupnet.conf exists)
  • [ ] Include FAQ for common dependency conflicts on various distributions
  • [ ] Add the completed section to docs/README_EN.md to keep translations in sync

Add WebDAV server configuration documentation and examples

The README mentions 'WebDAV服务器' as a feature but provides no link to configuration details like it does for S3 (docs/S3-Adapter-Design.md) and the main server section. Given the variety of storage backends and existing server build workflows (.github/workflows/server-build.yml, server-release.yml), WebDAV adapter documentation with real-world examples would help users choose and configure the right backend.

  • [ ] Create docs/WebDAV-Adapter-Design.md (parallel to S3-Adapter-Design.md) with architecture overview
  • [ ] Document WebDAV server configuration options and example configurations for common providers (Nextcloud, OwnCloud, etc.)
  • [ ] Include troubleshooting for common WebDAV issues (authentication, SSL, path mapping)
  • [ ] Update README.md with a link to the WebDAV documentation in the server section
  • [ ] Add examples to build/linux or similar for containerized WebDAV setup if applicable

🌿Good first issues

  • Add unit tests for clipboard format conversion logic (image/text/file conversions) in desktop client—currently no test files visible in repository structure, creating regression risk
  • Document the S3 sync protocol specification currently only mentioned in README; create detailed API docs in docs/ folder for third-party client developers
  • Implement platform-specific clipboard access abstraction tests for Windows/Linux/macOS (SharpHook, Vanara, D-Bus) to catch platform-specific bugs before release

Top contributors

Click to expand

📝Recent commits

Click to expand
  • ee38a25 — 修复:修改应用文件夹时,使用白名单制 (Jeric-X)
  • 6e3aba2 — v3.1.5 (Jeric-X)
  • 210c4da — 修复:在Windows中复制整个磁盘导致程序崩溃(#250) (Jeric-X)
  • 84532ea — 修复:ScrollView布局死循环导致程序崩溃(#331) (Jeric-X)
  • 9ce043e — 修复:重试次数没有处理文件下载超时(#330) (Jeric-X)
  • f60655c — 功能:支持修改自定义应用数据目录 (Jeric-X)
  • b7ac638 — 修复:优化Linux热键管理,添加过期键清理功能(#266) (Jeric-X)
  • 33f1e37 — v3.1.4 (Jeric-X)
  • 2a02488 — 修复:不能上传被占用的文件(#327) (Jeric-X)
  • 22309ad — 功能:支持在历史窗口中调整字体大小 (Jeric-X)

🔒Security observations

The SyncClipboard project shows moderate security posture. Key concerns include: missing dependency analysis preventing vulnerability assessment, potential secrets in build scripts, JavaScript code that may have injection vulnerabilities, and lack of visible encryption for sensitive clipboard data transmission. The project uses multiple CI/CD pipelines which require security hardening. The application's core function (synchronizing clipboard data) inherently handles sensitive information that requires strong encryption and secure transmission protocols. Immediate actions should include: obtaining and analyzing all dependency files, auditing build scripts for hardcoded secrets, implementing end-to-end encryption for clipboard synchronization, and strengthening GitHub Actions security controls.

  • Medium · Potential Hardcoded Configuration in Build Scripts — build/ directory (PreRelease.bat, SetUpdateSource.sh, build/appveyor/appveyor.yml). Build scripts in /build directory (PreRelease.bat, SetUpdateSource.sh, appveyor.yml) may contain hardcoded credentials, API keys, or sensitive configuration values. These files are typically committed to version control and could expose secrets. Fix: Review all build scripts for hardcoded secrets. Use environment variables or secure secret management for sensitive values. Add build/ scripts to .gitignore patterns if they contain local secrets.
  • Medium · JavaScript Files in Script Directory May Contain Injection Vulnerabilities — script/ directory - particularly Clipboard.js, SyncAutoxJs.js, UploadVerificationCode.js, BeforeUpload.js. JavaScript files in /script directory (Clipboard.js, SyncAutoxJs.js, UploadVerificationCode.js, BeforeUpload.js) are used for clipboard operations and HTTP requests. These could be vulnerable to code injection if they process untrusted data without proper sanitization. Fix: Review JavaScript files for unsafe eval(), innerHTML assignments, or dynamic code execution. Implement strict input validation for clipboard data and HTTP request parameters. Use Content Security Policy (CSP) headers.
  • Medium · No Visible Dependency Management File — Package files (package.json, .csproj, packages.config, or similar). The analysis indicates 'Dependencies/Package file content: ' is empty. Unable to assess for known vulnerable dependencies (NPM packages, NuGet packages, etc.). This could hide supply chain risks. Fix: Provide complete dependency files (package.json, *.csproj, packages.config, etc.) for security analysis. Use dependency scanning tools like Snyk, OWASP Dependency-Check, or GitHub Dependabot to identify vulnerable dependencies.
  • Low · Multiple GitHub Workflow Files May Have Insufficient Security Controls — .github/workflows/ - build-entry.yml, linux-release.yml, mac-release.yml, win-release.yml, server-release.yml. Numerous CI/CD workflow files exist (.github/workflows/) that may have security risks such as: using 'secrets' context without proper scoping, checkout actions pulling untrusted code, or insufficient artifact signing. Fix: Audit GitHub Actions workflows for: proper secret scoping, artifact signing/verification, OIDC token validation, least-privilege permissions, and signed commits. Use GitHub's security best practices for CI/CD.
  • Low · Desktop Client Command-Line Parameters May Allow Privilege Escalation — Desktop client implementation (not provided in analysis). The README mentions command-line parameters (--shutdown-previous, --command-{command-name}) that could be exploited if not properly validated, potentially allowing arbitrary command execution. Fix: Validate and sanitize all command-line arguments. Use allowlist-based parameter validation. Implement proper privilege checks before executing commands. Document security considerations for CLI parameters.
  • Low · Cross-Platform Clipboard Data Not Analyzed for Security — Core clipboard sync implementation (client and server). As a clipboard synchronization tool, the application handles potentially sensitive data (passwords, tokens, private information). No encryption, transmission security, or data sanitization is visible in the provided file structure. Fix: Implement end-to-end encryption for clipboard data in transit. Use TLS/HTTPS for network communication. Implement secure key exchange. Consider data at-rest encryption. Implement audit logging for sensitive data access.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Healthy signals · Jeric-X/SyncClipboard — RepoPilot