Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e4bf698
chore: remove obsolete VibeSync configuration files and update change…
2214962083 Jan 26, 2026
c6b4367
chore: update package references to @nicepkg/vsync and release versio…
2214962083 Jan 26, 2026
8e44c41
chore: release version 1.0.5 and update CHANGELOG with new changeset …
2214962083 Jan 26, 2026
70b0ef1
chore: update package.json with repository details, author informatio…
2214962083 Jan 26, 2026
c160cd4
chore: update package.json description to clarify functionality of th…
2214962083 Jan 26, 2026
733349a
chore: release version 1.0.6 and update CHANGELOG with new changeset …
2214962083 Jan 26, 2026
def9fa5
chore: release version 1.0.7 and update CHANGELOG with new changeset …
2214962083 Jan 26, 2026
aaa18d2
chore: remove obsolete changeset for version 10
2214962083 Jan 26, 2026
72de450
feat: add isMainModule function to determine if the current module is…
2214962083 Jan 26, 2026
aeff269
fix: resolve CLI functionality issue
2214962083 Jan 26, 2026
f126255
docs: add full documentation link to README files
2214962083 Jan 26, 2026
9b1c3ff
Merge remote-tracking branch 'origin/main' into dev
2214962083 Jan 26, 2026
b0e23bf
chore: add changeset for release v1.0.9 with patch for @nicepkg/vsync
2214962083 Jan 26, 2026
52550ac
Merge remote-tracking branch 'origin/main' into dev
2214962083 Jan 26, 2026
245879c
chore: update documentation links to absolute paths and remove obsole…
2214962083 Jan 27, 2026
2df48a8
build: migrate from changesets to semantic-release
2214962083 Jan 27, 2026
918a473
fix: update release command in GitHub Actions workflow
2214962083 Jan 27, 2026
50d7fed
chore: merge main
2214962083 Jan 27, 2026
8534f95
Merge remote-tracking branch 'origin/main' into dev
2214962083 Jan 27, 2026
96cdbcf
docs: format changelog with consistent version headers and commit links
2214962083 Jan 27, 2026
5387c8d
chore(cli): fix eslint warnings and improve type annotations
2214962083 Jan 27, 2026
d3c60ba
chore(website): fix eslint warnings and formatting
2214962083 Jan 27, 2026
b4cd674
feat(website): add seo enhancements with sitemap, pwa manifest and st…
2214962083 Jan 27, 2026
3b05a3c
Merge remote-tracking branch 'origin/main' into dev
2214962083 Jan 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,562 changes: 914 additions & 648 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions website/content/en/docs/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ title: FAQ
description: Frequently asked questions about vsync. Get answers on choosing source tools, config overwriting, monorepo support, environment variables, migration, troubleshooting, and performance.
---

import { FaqSchema, vsyncFaqsEn } from '~/components/seo/faq-schema'

<FaqSchema faqs={vsyncFaqsEn} />

# Frequently Asked Questions

Common questions and answers about using vsync.
Expand Down
3 changes: 2 additions & 1 deletion website/content/en/index.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: vsync - One config. Many AI tools. Zero pain.
title: vsync - Sync AI Coding Tool Configs | Claude Code, Cursor, OpenCode, Codex
description: "One config. Many AI tools. Zero pain. vsync syncs Skills, MCP servers, Agents & Commands across Claude Code, Cursor, OpenCode and Codex with a single command. Free and open source CLI tool."
layout: full
search: false
sidebar: false
Expand Down
4 changes: 4 additions & 0 deletions website/content/zh/docs/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ title: 常见问题
description: 关于 vsync 的常见问题。获取有关选择源工具、配置覆盖、monorepo 支持、环境变量、迁移、故障排除和性能的答案。
---

import { FaqSchema, vsyncFaqsZh } from '~/components/seo/faq-schema'

<FaqSchema faqs={vsyncFaqsZh} />

# 常见问题

关于使用 vsync 的常见问题和解答。
Expand Down
3 changes: 2 additions & 1 deletion website/content/zh/index.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: vsync - 一处配置,多个 AI 工具同步,不再折腾。
title: vsync - AI编程工具配置同步 | Claude Code, Cursor, OpenCode, Codex
description: "一处配置,多个 AI 工具同步,不再折腾。vsync 一条命令同步 Skills、MCP服务器、Agents 和 Commands 到 Claude Code、Cursor、OpenCode 和 Codex。免费开源 CLI 工具。"
layout: full
search: false
sidebar: false
Expand Down
23 changes: 6 additions & 17 deletions website/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ import { fileURLToPath } from "node:url";
import { FlatCompat } from "@eslint/eslintrc";
import { defineConfig, globalIgnores } from "eslint/config";
import prettier from "eslint-config-prettier/flat";
import eslintPluginImport from "eslint-plugin-import";
import eslintPluginPrettier from "eslint-plugin-prettier";
import tseslint from "typescript-eslint";

const configDir = path.dirname(fileURLToPath(import.meta.url));

Expand Down Expand Up @@ -40,7 +38,7 @@ const nextConfigs = compat
});

export default defineConfig(
// Next.js Core Web Vitals config (includes React, React Hooks, and Next.js rules)
// Next.js Core Web Vitals config (includes React, React Hooks, Next.js, and TypeScript rules)
...nextConfigs,

// Prettier config (disables conflicting ESLint rules)
Expand All @@ -59,11 +57,10 @@ export default defineConfig(
".git/**",
]),

// Custom rules and plugins
// Custom rules for JS/TS files
{
files: ["**/*.{js,mjs,cjs,jsx,ts,tsx}"],
plugins: {
import: eslintPluginImport,
prettier: eslintPluginPrettier,
},
settings: {
Expand All @@ -72,7 +69,7 @@ export default defineConfig(
},
},
rules: {
// Import rules
// Import rules (plugin already loaded by next/core-web-vitals)
"import/no-anonymous-default-export": "warn",
"import/order": [
"warn",
Expand Down Expand Up @@ -101,14 +98,9 @@ export default defineConfig(
},
},

// Additional TypeScript config
// TypeScript-specific rules (without re-extending tseslint configs)
{
files: ["**/*.{ts,tsx}"],
extends: [
...tseslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.stylisticTypeChecked,
],
languageOptions: {
parserOptions: {
projectService: true,
Expand Down Expand Up @@ -163,14 +155,11 @@ export default defineConfig(
},
},

// Markdown files
// Markdown files - ignore by default
{
files: ["**/*.md"],
plugins: {
prettier: eslintPluginPrettier,
},
rules: {
"prettier/prettier": "warn",
// Disable all rules for markdown
},
},

Expand Down
16 changes: 9 additions & 7 deletions website/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"private": true,
"type": "module",
"scripts": {
"postbuild": "pagefind --site .next/server/app --output-path public/_pagefind",
"generate-sitemap": "npx tsx scripts/generate-sitemap.ts",
"postbuild": "pagefind --site .next/server/app --output-path public/_pagefind && pnpm generate-sitemap",
"build": "next build && pnpm postbuild",
"check": "eslint . && tsc --noEmit",
"dev": "next dev --turbo",
Expand Down Expand Up @@ -46,24 +47,24 @@
"@react-three/drei": "^10.7.7",
"@react-three/fiber": "^9.5.0",
"@t3-oss/env-nextjs": "^0.13.10",
"@tanstack/react-query": "^5.90.19",
"@tanstack/react-query": "^5.90.20",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"date-fns": "^4.1.0",
"embla-carousel-react": "^8.6.0",
"framer-motion": "^12.29.0",
"framer-motion": "^12.29.2",
"input-otp": "^1.4.2",
"lucide-react": "^0.563.0",
"next": "^15.2.3",
"next-themes": "^0.4.6",
"nextra": "^4.6.1",
"nextra-theme-docs": "^4.6.1",
"react": "^19.2.3",
"react": "^19.2.4",
"react-day-picker": "^9.13.0",
"react-dom": "^19.2.3",
"react-dom": "^19.2.4",
"react-hook-form": "^7.71.1",
"react-resizable-panels": "^4.4.1",
"react-resizable-panels": "^4.5.2",
"recharts": "2.15.4",
"sonner": "^2.0.7",
"tailwind-merge": "^3.4.0",
Expand Down Expand Up @@ -93,9 +94,10 @@
"prettier": "^3.8.1",
"prettier-plugin-tailwindcss": "^0.7.2",
"tailwindcss": "^4.1.18",
"tsx": "^4.21.0",
"tw-animate-css": "^1.4.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.53.1"
"typescript-eslint": "^8.54.0"
},
"ct3aMetadata": {
"initVersion": "7.40.0"
Expand Down
Binary file added website/public/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/public/icon-192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/public/icon-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions website/public/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "vsync - AI Coding Tool Config Synchronizer",
"short_name": "vsync",
"description": "One config. Many AI tools. Zero pain. Sync Skills, MCP servers, Agents & Commands across Claude Code, Cursor, OpenCode, and Codex.",
"start_url": "/",
"display": "standalone",
"background_color": "#0a0a0a",
"theme_color": "#0a0a0a",
"orientation": "portrait-primary",
"icons": [
{
"src": "/icon.svg",
"sizes": "any",
"type": "image/svg+xml",
"purpose": "any maskable"
},
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"categories": ["developer tools", "productivity", "utilities"],
"lang": "en",
"dir": "ltr",
"prefer_related_applications": false
}
Binary file added website/public/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
98 changes: 98 additions & 0 deletions website/public/og-image.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 12 additions & 1 deletion website/public/robots.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
User-agent: *
Allow: /
Disallow: /_next/
Disallow: /api/

Sitemap: https://[project-domain]/sitemap.xml
# Sitemaps
Sitemap: https://vsync.xiaominglab.com/sitemap.xml
Sitemap: https://vsync.xiaominglab.com/sitemap-en.xml
Sitemap: https://vsync.xiaominglab.com/sitemap-zh.xml

# Crawl-delay for politeness (optional)
Crawl-delay: 1

# Host
Host: https://vsync.xiaominglab.com
84 changes: 84 additions & 0 deletions website/public/sitemap-en.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://vsync.xiaominglab.com/en/contributing/</loc>
<lastmod>2026-01-26</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/contributing/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/contributing/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/advanced-features/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/advanced-features/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/advanced-features/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/cli-commands/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/cli-commands/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/cli-commands/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/configuration/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/configuration/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/configuration/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/core-concepts/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/core-concepts/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/core-concepts/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/faq/</loc>
<lastmod>2026-01-26</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/faq/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/faq/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/getting-started/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/getting-started/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/getting-started/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/docs/quick-reference/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/docs/quick-reference/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/docs/quick-reference/" />
</url>
<url>
<loc>https://vsync.xiaominglab.com/en/</loc>
<lastmod>2026-01-27</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://vsync.xiaominglab.com/en/" />
<xhtml:link rel="alternate" hreflang="zh" href="https://vsync.xiaominglab.com/zh/" />
</url>
</urlset>
Loading
Loading