diff --git a/CHANGELOG.md b/CHANGELOG.md index a11b71a..33bb5ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,249 +1,247 @@ ## 1.0.10 (2026-01-27) -* fix: update release workflow and documentation (#13) ([5787a19](https://github.com/nicepkg/vsync/commit/5787a19)), closes [#13](https://github.com/nicepkg/vsync/issues/13) -* build: migrate from changesets to semantic-release (#12) ([1f39e61](https://github.com/nicepkg/vsync/commit/1f39e61)), closes [#12](https://github.com/nicepkg/vsync/issues/12) -* docs: update website (#11) ([4b5145b](https://github.com/nicepkg/vsync/commit/4b5145b)), closes [#11](https://github.com/nicepkg/vsync/issues/11) +- fix: update release workflow and documentation (#13) ([5787a19](https://github.com/nicepkg/vsync/commit/5787a19)), closes [#13](https://github.com/nicepkg/vsync/issues/13) +- build: migrate from changesets to semantic-release (#12) ([1f39e61](https://github.com/nicepkg/vsync/commit/1f39e61)), closes [#12](https://github.com/nicepkg/vsync/issues/12) +- docs: update website (#11) ([4b5145b](https://github.com/nicepkg/vsync/commit/4b5145b)), closes [#11](https://github.com/nicepkg/vsync/issues/11) -# Changelog +## 1.0.9 (2026-01-26) -## @nicepkg/vsync@1.0.9 - 2026-01-26 +- chore: version packages (#10) ([de127cb](https://github.com/nicepkg/vsync/commit/de127cb)) +- chore: release v1.0.9 (#9) ([4d0fa67](https://github.com/nicepkg/vsync/commit/4d0fa67)) -- chore: version packages (#10) (de127cb) -- chore: release v1.0.9 (#9) (4d0fa67) +## 1.0.8 (2026-01-26) -## @nicepkg/vsync@1.0.8 - 2026-01-26 +- chore: version packages (#8) ([ff31b86](https://github.com/nicepkg/vsync/commit/ff31b86)) +- chore: release 1.0.8 (#7) ([9b07770](https://github.com/nicepkg/vsync/commit/9b07770)) -- chore: version packages (#8) (ff31b86) -- chore: release 1.0.8 (#7) (9b07770) +## 1.0.7 (2026-01-26) -## @nicepkg/vsync@1.0.7 - 2026-01-26 - -- chore: version packages (#6) (07d41f7) -- chore: release v1.0.7 (#5) (3a9d217) -- chore: version packages (#4) (a780db1) -- Merge pull request #3 from nicepkg/dev (bcba769) -- Merge pull request #2 from nicepkg/changeset-release/main (81c4ebf) -- chore: version packages (62bf590) -- Merge pull request #1 from nicepkg/dev (1206ca2) -- chore: release version 1.0.5 and update package configuration (b703993) -- refactor: update VibeConfig to VSyncConfig across the codebase (58bc89f) -- refactor: rename vsync to vsync across the project (0909155) -- chore: release version 1.0.4 and update CHANGELOG (898ebf9) -- feat: enhance MCP server handling and streamline configuration management (c76faf2) -- chore: version packages (#11) (af752f9) -- refactor(workflows): streamline release process with dedicated script (#10) (63604c1) -- chore: release version 1.0.3 and update CHANGELOG (1c782cd) -- refactor(workflows): streamline release process with dedicated script (32afad1) -- Merge pull request #9 from nicepkg/changeset-release/main (71b9723) -- chore: version packages (96f1b2a) -- Merge pull request #8 from nicepkg/dev (47ce245) -- refactor(registry): implement extensible plugin system with dynamic registration (83f3082) -- Merge pull request #7 from nicepkg/changeset-release/main (151e9cc) -- chore: version packages (893ef95) -- Merge pull request #6 from nicepkg/dev (bd999a3) -- chore(vsync): release version 1.0.1 and add CHANGELOG (696bf9b) -- chore(vsync): add first version of vsync patch (8da5e12) -- fix(workflows): simplify publish command in release workflow (c789b01) -- Merge pull request #5 from nicepkg/changeset-release/main (fcdafd4) -- chore: version packages (47d66e0) -- Merge pull request #4 from nicepkg/dev (42f7aeb) -- chore(vsync): add initial version for vsync patch (f6b7442) -- fix(workflows): update commit key in release workflow from 'commitMessage' to 'commit' (8886eb3) -- refactor(quality): eliminate code smells and improve maintainability (f0bc7cf) -- refactor(adapters): extract path resolution logic into dedicated resolver (7904f52) -- refactor(errors): unify error handling with severity-based strategy (308a1e9) -- Merge pull request #3 from nicepkg/dev (8c3bdab) -- refactor(sync-executor): eliminate type assertions with type-safe generics (bac7085) -- refactor(sync): break up God Method into focused functions (8dbc36f) -- chore: add initial version for vsync patch and update CI workflow to remove push trigger (8f9e1b8) -- Merge pull request #2 from nicepkg/dev (79ebd19) -- chore(release): switch to git-cli for commit mode to support symlinks and set up Git user (0369c56) -- Merge pull request #1 from nicepkg/dev (fcba900) -- refactor(sync): enhance error handling and type safety in sync operations (a967906) -- refactor(adapters): simplify item reading methods and enhance type safety (b643457) -- refactor(sync): streamline item reading and error handling in sync operations (bbf64c2) -- fix: enhance error handling and logging in sync commands (716e753) -- refactor(tests): update mocks for config-initializer and increase timeout for E2E (029ab56) -- refactor: unify environment variable transformation and streamline sync UI interactions (8da65c3) -- refactor: consolidate language configuration and improve file operations (4c60711) -- feat(config): implement DRY config validation with lazy field initialization (908e922) -- refactor(i18n): separate language config from project config (ec3ad70) -- feat(i18n): auto-prompt for language preference on first run (6379c8a) -- refactor: extract ensureConfig to shared utility (DRY) (55b6256) -- feat(sync): auto-prompt for init when config not found (1b8a475) -- fix: preserve user-specified name field in YAML frontmatter (b635da3) -- fix: exclude 'name' field from metadata to fix hash mismatch (87767fe) -- feat(adapter): introduce capabilities interface and implement in BaseAdapter and CodexAdapter (1ab3c8f) -- fix(symlink): normalize Windows symlink paths and improve test assertions (dcfafe2) -- feat(commands): add projectDir and config.level parameters to plan, status, and sync commands (bc1b767) -- feat(diff): enhance hash comparison logic for write-only targets and update manifest handling (aed70e5) -- feat(manifest): update manifest path structure and improve status command output (73f272d) -- feat(sync): add debug logging and hash retrieval for sync operations (e365e5a) -- feat(sync): enhance error handling and logging in sync plan execution (952996f) -- feat(planner): enhance sync plan output to include tool counts in section headers (64133c3) -- feat(errors): introduce NotSupportError for unsupported features (b651d77) -- refactor(planner): enhance sync plan output with internationalization support (324adb0) -- feat(ux): smart confirmation defaults based on operation safety (7224272) -- fix(ui): correct operation count display in sync plan (c1e0e68) -- refactor(ui): dramatically improve sync plan output readability (b913855) -- fix(sync): respect sync_config when generating plan (8539853) -- refactor(init): remove eager cache and manifest creation (a34687e) -- feat(init): add agents and commands to sync options (0359f8f) -- fix: resolve commander version conflict and allow minimal user config (47a0077) -- refactor: change prompt type from "list" to "select" across multiple command files (259bb2c) -- chore: update CI workflow to pin pkg-pr-new version and improve output parsing (51e2b84) -- test: make user-level paths OS-agnostic (ba3ccef) -- chore: restrict CI workflow to only trigger on main branch (ddc27fe) -- chore: refactor CI workflow to use reusable test configuration and update test paths (1f96ced) -- chore: update CI and deployment workflows to include test execution and wrangler installation (c900c0b) -- chore: update dependencies and workflows (fd44066) -- build: release 1.0.0 (26b2c24) -- feat: add comprehensive documentation for vsync (3d0c6f2) -- feat: enhance documentation and configuration for vsync (5ddf6f6) -- feat: enhance visual elements and interactions in 3D hero component (d47fc7a) -- feat: enhance 3D hero component with new visualizations and animations (ed7be8e) -- docs: update landing page content to enhance clarity and feature descriptions (e6d3f46) -- docs: update PRD with version 1.0.0 details and enhance section descriptions (414b08d) -- docs: update PRD to reflect version 1.0.0 and enhance feature descriptions (50e2e03) -- chore: update release workflow to use bash for publishing commands (43ce662) -- chore: update release workflow to trigger on specific file changes (7b3d2e5) -- chore: enhance GitHub workflows for deployment and preview comments (b3b37f6) -- refactor: update package structure and add changeset support (df58266) -- fix(scripts): correct AdapterConfig parameter name in benchmark script (853a6cf) -- feat(performance): implement benchmark utilities and measure improvements (2b08e75) -- docs: update TASKS.md with completed E2E tests (e4d88fe) -- test: add comprehensive E2E tests for MCP, agents, and commands (8a57d98) -- test: add comprehensive symlink E2E tests (Phase 6.3) (7c8e7b8) -- test: add E2E tests with DRY and high cohesion design (Phase 6.3) (1e84472) -- fix: correct manifest TargetStatus format in integration tests (7d31426) -- fix: correct OpenCode environment variable format to {env:VAR} (423b6ee) -- fix: resolve integration test failures (Phase 6.2) (164855d) -- fix: resolve TypeScript and ESLint errors in integration tests (57d3763) -- test: add integration tests for full sync flow (Phase 6.2) (b1149c1) -- docs: update TASKS.md to mark error message improvements complete (6ab36f7) -- feat(errors): add comprehensive error formatting utility (bdd81a5) -- docs: update TASKS.md to mark debug mode task complete (35e2260) -- feat(debug): add debug logging utility with --debug flag (f2bd65d) -- docs: update TASKS.md to mark --yes flag task complete (30df643) -- feat: add --yes flag to sync and clean commands for CI/CD automation (4046c0b) -- feat(i18n): complete import command i18n integration (0bde2de) -- fix(symlink): integrate rollback support into sync workflow (dc18cbf) -- feat(symlink): add rollback support for safe error recovery (5c1873c) -- feat(symlink): add first-time sync prompt for symlink usage (6c83ac2) -- feat(i18n): add custom framework configuration for i18n-ally (ec94015) -- feat(i18n): integrate translations into status command (2a326b3) -- feat(i18n): integrate translations into list command (fdf9469) -- feat(i18n): integrate translations into clean command (d393b1a) -- feat(i18n): integrate translations into plan command (c363fd5) -- feat(i18n): integrate translations into sync command (c6c69d2) -- feat(i18n): integrate translations into init command as reference pattern (08fbdf4) -- docs(i18n): add language configuration documentation and complete Phase 10 (4ad69ad) -- feat(i18n): initialize i18n system at CLI startup (8fb8ff4) -- feat(i18n): implement first-run language detection and bilingual prompt (860ca51) -- refactor: streamline import paths and enhance language support (835d591) -- feat(config): add language preference support for user-level configuration (fa5b4f4) -- feat(i18n): implement lightweight i18n infrastructure with English and Chinese support (270aa4a) -- feat: integrate symlink support into sync workflow (fdab014) -- docs: update Phase 9 progress in TASKS.md (17207d3) -- feat(adapters): add symlink handling to BaseAdapter for skills directories (606ecf6) -- feat(core): implement symlink sync handler for skills directories (d8ad8d9) -- feat(utils): implement cross-platform symlink utilities (4a8282e) -- docs: mark Phase 9.1 as complete in TASKS.md (a199911) -- feat(config): add symlink support configuration for skills (f1a13b9) -- chore: update TASKS.md to remove completed tasks and adjust phase statuses (616793c) -- feat(core): implement incremental sync optimization with file caching (fd8877a) -- feat: implement ParallelSyncOrchestrator and SyncExecutor (3f2091d) -- chore: update TASKS.md to reflect version bump to 3.1.0 (cbb1c1d) -- refactor: streamline adapter methods by consolidating read and write operation (a4575ae) -- feat: enhance Claude Code adapter to support multiple MCP server types (f8c862d) -- refactor: remove validation methods from adapter implementations (c4d784a) -- refactor: consolidate adapter implementations by extending BaseAdapter (c1d226d) -- feat: implement support file handling in adapters (1b21d91) -- refactor: remove configFormat, capabilities, and isReadOnly from ToolAdapter implementations (9dc268a) -- docs: add global configuration details for Claude Code in ai-tools and prd documentation (e938fda) -- feat: enhance adapter configuration with level support and update file handling (e1dd008) -- docs: update Codex configuration details to reflect changes in file structure and format (1a2b380) -- refactor: reorganize file operations and update adapter implementations (2b21902) -- chore: remove unused '@types/inquirer' dependency and add refactor plan for adapter architecture (5f0c346) -- refactor: flatten directory structure by removing extra cli layer (29f6d2b) -- feat(cli): add import command for cross-project config import (468101c) -- feat: add Codex adapter with full TOML support for v1.1 (8128830) -- docs: mark Phase 7.3 Commands Synchronization as complete (01f5f33) -- feat(phase-7.3): implement command synchronization support (d855673) -- docs: mark Phase 7.2 Agents Synchronization as complete (2c5af99) -- feat(phase-7.2): implement agent synchronization support (2c720f6) -- feat(core): implement user-level config merging for Phase 7.1 (daa42fa) -- docs: add detailed v1.1 (Phase 7-8) task breakdown (782914c) -- feat(cli): add error recovery with rollback to sync command (65b0918) -- feat(core): implement rollback mechanism for safe error recovery (a3300ce) -- docs: mark Phase 5.2 Environment Variable Preservation as complete (5ba78ce) -- feat: add fsync to atomic write for crash-safe file operations (0ea84a4) -- chore: update ESLint linting command to remove max-warnings restriction (1fcb30f) -- refactor: standardize ESLint configuration and improve code formatting (5878da8) -- fix: complete TargetStatus and ManifestItem type fixes (d83ecdd) -- fix: resolve type errors and replace paths with TypeScript aliases (98b6277) -- refactor: add TypeScript path aliases and improve typecheck coverage (2560744) -- docs(tasks): add TypeScript path aliases refactor task (c834e7b) -- refactor: remove MCP security feature to simplify user experience (1700b7d) -- feat(cli): implement clean command with target/source removal modes (141eb45) -- feat(cli): implement vsync list command with table output (ad726f3) -- feat(cli): implement vsync status command (15f6f74) -- feat(cli): implement vsync plan command with detailed output (0cfc46c) -- docs: mark Phase 4.3 (vsync sync command) as complete (9cb6f89) -- feat(cli): implement vsync sync command (4dd1559) -- docs: mark Phase 4.2 (vsync init command) as complete (7cdcf09) -- feat(cli): implement vsync init command with interactive prompts (2bba6ef) -- docs: mark Phase 4.1 (CLI Framework Setup) as complete (6dfeb74) -- feat(cli): implement CLI framework with Commander.js (74d5600) -- docs: mark Phase 3 complete - all diff and plan system implemented (2cd224a) -- feat(core): implement manifest update operations (981e805) -- docs: mark Phase 3.3 (Plan Generator) as complete (6c93bd9) -- feat(core): implement plan generator with formatting and validation (c4c2e87) -- docs: mark Phase 3.1 and 3.2 as complete (2631f23) -- feat(core): implement difference calculator for Phase 3.2 (5378da2) -- docs: mark Phase 2.5 (Adapter Registry) and Phase 2 as complete (68d79a9) -- feat(adapters): implement adapter registry for Phase 2.5 (c842618) -- docs: mark Phase 2.4 (OpenCode Adapter) as complete (4f7b758) -- feat(adapters): implement OpenCode adapter for Phase 2.4 (44e9aa7) -- docs: mark Phase 2.3 (Cursor Adapter) as complete (a96b32b) -- feat(adapters): implement Cursor adapter for Phase 2.3 (68e782f) -- docs: mark Phase 2.2 (Claude Code Adapter) as complete (0021dc8) -- feat(adapters): implement Claude Code adapter for Phase 2.2 (3e45530) -- feat(adapters): define base adapter interface for Phase 2.1 (ad7c69b) -- feat(core): implement Phase 1.3 and 1.4 - config/manifest managers and utilities (7608066) -- feat(types): implement core type definitions for Phase 1.2 (a338a6a) -- chore: update ESLint configuration and remove Prettier settings for CLI workspace (3c4ce9d) -- feat(lint): add ESLint and Prettier configuration for CLI workspace (18fbb37) -- refactor(build): bundle all dependencies for faster npx usage (dc6b30c) -- feat(core): initialize CLI workspace with TypeScript and build tooling (52de3c8) -- docs: update project structure for pnpm monorepo with cli workspace (8e80593) -- feat: restructure project for vsync with new task management and CLI commands (631cb36) -- chore: remove CHECKLIST.md after project setup completion (af76423) -- feat: complete vsync project setup with full customization (ef5b668) -- docs: update project configuration with new username and repository link, and refine Chinese slogan (e0b9f65) -- chore: remove example configuration files and add initial project configuration for vsync (2563f4a) -- chore: update pnpm-lock.yaml to include TypeScript 5.9.3, Zod 4.3.6, and framer-motion 12.29.0 (6361214) -- chore: update .gitignore, package.json, and ESLint configuration (5871db0) -- docs: update clone URLs in README files to point to the new repository name (23b6dff) -- docs: update clone URLs in README files to reflect new repository owner (c5aac1e) -- docs: update title of Product Requirements Document for clarity (d8f1694) -- feat: add content marketer and search specialist agents and research capabilities (927b471) -- feat: introduce frontend-design skill for creating high-quality, distinctive web interfaces (0f56e4c) -- feat: add comprehensive React and Next.js best practices documentation (345146b) -- docs: enhance README with detailed workflow, automation features, and shared skills for AI tools (0517a3f) -- chore: update README guidelines and enhance validation script for project setup (14be40c) -- feat: introduce automation guidelines and CLI tools for streamlined operations (1174058) -- feat: add MCP server configurations for Claude, Cursor, Codex, and OpenCode (5011f19) -- feat: add commands for code review, fixing GitHub issues, and reviewing pull requests (b2f42f1) -- feat: add commands for creating Git commits and pull requests following Angular convention (23cf187) -- chore: update package.json for testing commands, enhance CI (445844b) -- chore: update GitHub issue and pull request templates, add CI workflow, and adjust pre-commit hooks (c2bda09) -- feat: add standard GitHub Actions token naming conventions and example workflows (d7bbfd7) -- feat: implement commit convention and add Husky with Commitlint for validation (f3dc2f4) -- feat: add symbolic link for Claude agent documentation (3d4d487) -- feat: create symbolic links for Claude skills in multiple directories (5859429) -- feat: add settings configuration for Claude with permissions and server options (5c3e698) -- feat: add project setup documentation and checklist (7bf79cd) -- chore: update linting commands and fix formatting in meta files (6bfcf58) -- chore: update project configuration and add VSCode settings (9bf609a) -- feat: init project (5941cee) +- chore: version packages (#6) ([07d41f7](https://github.com/nicepkg/vsync/commit/07d41f7)) +- chore: release v1.0.7 (#5) ([3a9d217](https://github.com/nicepkg/vsync/commit/3a9d217)) +- chore: version packages (#4) ([a780db1](https://github.com/nicepkg/vsync/commit/a780db1)) +- Merge pull request #3 from nicepkg/dev ([bcba769](https://github.com/nicepkg/vsync/commit/bcba769)) +- Merge pull request #2 from nicepkg/changeset-release/main ([81c4ebf](https://github.com/nicepkg/vsync/commit/81c4ebf)) +- chore: version packages ([62bf590](https://github.com/nicepkg/vsync/commit/62bf590)) +- Merge pull request #1 from nicepkg/dev ([1206ca2](https://github.com/nicepkg/vsync/commit/1206ca2)) +- chore: release version 1.0.5 and update package configuration ([b703993](https://github.com/nicepkg/vsync/commit/b703993)) +- refactor: update VibeConfig to VSyncConfig across the codebase ([58bc89f](https://github.com/nicepkg/vsync/commit/58bc89f)) +- refactor: rename vsync to vsync across the project ([0909155](https://github.com/nicepkg/vsync/commit/0909155)) +- chore: release version 1.0.4 and update CHANGELOG ([898ebf9](https://github.com/nicepkg/vsync/commit/898ebf9)) +- feat: enhance MCP server handling and streamline configuration management ([c76faf2](https://github.com/nicepkg/vsync/commit/c76faf2)) +- chore: version packages (#11) ([af752f9](https://github.com/nicepkg/vsync/commit/af752f9)) +- refactor(workflows): streamline release process with dedicated script (#10) ([63604c1](https://github.com/nicepkg/vsync/commit/63604c1)) +- chore: release version 1.0.3 and update CHANGELOG ([1c782cd](https://github.com/nicepkg/vsync/commit/1c782cd)) +- refactor(workflows): streamline release process with dedicated script ([32afad1](https://github.com/nicepkg/vsync/commit/32afad1)) +- Merge pull request #9 from nicepkg/changeset-release/main ([71b9723](https://github.com/nicepkg/vsync/commit/71b9723)) +- chore: version packages ([96f1b2a](https://github.com/nicepkg/vsync/commit/96f1b2a)) +- Merge pull request #8 from nicepkg/dev ([47ce245](https://github.com/nicepkg/vsync/commit/47ce245)) +- refactor(registry): implement extensible plugin system with dynamic registration ([83f3082](https://github.com/nicepkg/vsync/commit/83f3082)) +- Merge pull request #7 from nicepkg/changeset-release/main ([151e9cc](https://github.com/nicepkg/vsync/commit/151e9cc)) +- chore: version packages ([893ef95](https://github.com/nicepkg/vsync/commit/893ef95)) +- Merge pull request #6 from nicepkg/dev ([bd999a3](https://github.com/nicepkg/vsync/commit/bd999a3)) +- chore(vsync): release version 1.0.1 and add CHANGELOG ([696bf9b](https://github.com/nicepkg/vsync/commit/696bf9b)) +- chore(vsync): add first version of vsync patch ([8da5e12](https://github.com/nicepkg/vsync/commit/8da5e12)) +- fix(workflows): simplify publish command in release workflow ([c789b01](https://github.com/nicepkg/vsync/commit/c789b01)) +- Merge pull request #5 from nicepkg/changeset-release/main ([fcdafd4](https://github.com/nicepkg/vsync/commit/fcdafd4)) +- chore: version packages ([47d66e0](https://github.com/nicepkg/vsync/commit/47d66e0)) +- Merge pull request #4 from nicepkg/dev ([42f7aeb](https://github.com/nicepkg/vsync/commit/42f7aeb)) +- chore(vsync): add initial version for vsync patch ([f6b7442](https://github.com/nicepkg/vsync/commit/f6b7442)) +- fix(workflows): update commit key in release workflow from 'commitMessage' to 'commit' ([8886eb3](https://github.com/nicepkg/vsync/commit/8886eb3)) +- refactor(quality): eliminate code smells and improve maintainability ([f0bc7cf](https://github.com/nicepkg/vsync/commit/f0bc7cf)) +- refactor(adapters): extract path resolution logic into dedicated resolver ([7904f52](https://github.com/nicepkg/vsync/commit/7904f52)) +- refactor(errors): unify error handling with severity-based strategy ([308a1e9](https://github.com/nicepkg/vsync/commit/308a1e9)) +- Merge pull request #3 from nicepkg/dev ([8c3bdab](https://github.com/nicepkg/vsync/commit/8c3bdab)) +- refactor(sync-executor): eliminate type assertions with type-safe generics ([bac7085](https://github.com/nicepkg/vsync/commit/bac7085)) +- refactor(sync): break up God Method into focused functions ([8dbc36f](https://github.com/nicepkg/vsync/commit/8dbc36f)) +- chore: add initial version for vsync patch and update CI workflow to remove push trigger ([8f9e1b8](https://github.com/nicepkg/vsync/commit/8f9e1b8)) +- Merge pull request #2 from nicepkg/dev ([79ebd19](https://github.com/nicepkg/vsync/commit/79ebd19)) +- chore(release): switch to git-cli for commit mode to support symlinks and set up Git user ([0369c56](https://github.com/nicepkg/vsync/commit/0369c56)) +- Merge pull request #1 from nicepkg/dev ([fcba900](https://github.com/nicepkg/vsync/commit/fcba900)) +- refactor(sync): enhance error handling and type safety in sync operations ([a967906](https://github.com/nicepkg/vsync/commit/a967906)) +- refactor(adapters): simplify item reading methods and enhance type safety ([b643457](https://github.com/nicepkg/vsync/commit/b643457)) +- refactor(sync): streamline item reading and error handling in sync operations ([bbf64c2](https://github.com/nicepkg/vsync/commit/bbf64c2)) +- fix: enhance error handling and logging in sync commands ([716e753](https://github.com/nicepkg/vsync/commit/716e753)) +- refactor(tests): update mocks for config-initializer and increase timeout for E2E ([029ab56](https://github.com/nicepkg/vsync/commit/029ab56)) +- refactor: unify environment variable transformation and streamline sync UI interactions ([8da65c3](https://github.com/nicepkg/vsync/commit/8da65c3)) +- refactor: consolidate language configuration and improve file operations ([4c60711](https://github.com/nicepkg/vsync/commit/4c60711)) +- feat(config): implement DRY config validation with lazy field initialization ([908e922](https://github.com/nicepkg/vsync/commit/908e922)) +- refactor(i18n): separate language config from project config ([ec3ad70](https://github.com/nicepkg/vsync/commit/ec3ad70)) +- feat(i18n): auto-prompt for language preference on first run ([6379c8a](https://github.com/nicepkg/vsync/commit/6379c8a)) +- refactor: extract ensureConfig to shared utility (DRY) ([55b6256](https://github.com/nicepkg/vsync/commit/55b6256)) +- feat(sync): auto-prompt for init when config not found ([1b8a475](https://github.com/nicepkg/vsync/commit/1b8a475)) +- fix: preserve user-specified name field in YAML frontmatter ([b635da3](https://github.com/nicepkg/vsync/commit/b635da3)) +- fix: exclude 'name' field from metadata to fix hash mismatch ([87767fe](https://github.com/nicepkg/vsync/commit/87767fe)) +- feat(adapter): introduce capabilities interface and implement in BaseAdapter and CodexAdapter ([1ab3c8f](https://github.com/nicepkg/vsync/commit/1ab3c8f)) +- fix(symlink): normalize Windows symlink paths and improve test assertions ([dcfafe2](https://github.com/nicepkg/vsync/commit/dcfafe2)) +- feat(commands): add projectDir and config.level parameters to plan, status, and sync commands ([bc1b767](https://github.com/nicepkg/vsync/commit/bc1b767)) +- feat(diff): enhance hash comparison logic for write-only targets and update manifest handling ([aed70e5](https://github.com/nicepkg/vsync/commit/aed70e5)) +- feat(manifest): update manifest path structure and improve status command output ([73f272d](https://github.com/nicepkg/vsync/commit/73f272d)) +- feat(sync): add debug logging and hash retrieval for sync operations ([e365e5a](https://github.com/nicepkg/vsync/commit/e365e5a)) +- feat(sync): enhance error handling and logging in sync plan execution ([952996f](https://github.com/nicepkg/vsync/commit/952996f)) +- feat(planner): enhance sync plan output to include tool counts in section headers ([64133c3](https://github.com/nicepkg/vsync/commit/64133c3)) +- feat(errors): introduce NotSupportError for unsupported features ([b651d77](https://github.com/nicepkg/vsync/commit/b651d77)) +- refactor(planner): enhance sync plan output with internationalization support ([324adb0](https://github.com/nicepkg/vsync/commit/324adb0)) +- feat(ux): smart confirmation defaults based on operation safety ([7224272](https://github.com/nicepkg/vsync/commit/7224272)) +- fix(ui): correct operation count display in sync plan ([c1e0e68](https://github.com/nicepkg/vsync/commit/c1e0e68)) +- refactor(ui): dramatically improve sync plan output readability ([b913855](https://github.com/nicepkg/vsync/commit/b913855)) +- fix(sync): respect sync_config when generating plan ([8539853](https://github.com/nicepkg/vsync/commit/8539853)) +- refactor(init): remove eager cache and manifest creation ([a34687e](https://github.com/nicepkg/vsync/commit/a34687e)) +- feat(init): add agents and commands to sync options ([0359f8f](https://github.com/nicepkg/vsync/commit/0359f8f)) +- fix: resolve commander version conflict and allow minimal user config ([47a0077](https://github.com/nicepkg/vsync/commit/47a0077)) +- refactor: change prompt type from "list" to "select" across multiple command files ([259bb2c](https://github.com/nicepkg/vsync/commit/259bb2c)) +- chore: update CI workflow to pin pkg-pr-new version and improve output parsing ([51e2b84](https://github.com/nicepkg/vsync/commit/51e2b84)) +- test: make user-level paths OS-agnostic ([ba3ccef](https://github.com/nicepkg/vsync/commit/ba3ccef)) +- chore: restrict CI workflow to only trigger on main branch ([ddc27fe](https://github.com/nicepkg/vsync/commit/ddc27fe)) +- chore: refactor CI workflow to use reusable test configuration and update test paths ([1f96ced](https://github.com/nicepkg/vsync/commit/1f96ced)) +- chore: update CI and deployment workflows to include test execution and wrangler installation ([c900c0b](https://github.com/nicepkg/vsync/commit/c900c0b)) +- chore: update dependencies and workflows ([fd44066](https://github.com/nicepkg/vsync/commit/fd44066)) +- build: release 1.0.0 ([26b2c24](https://github.com/nicepkg/vsync/commit/26b2c24)) +- feat: add comprehensive documentation for vsync ([3d0c6f2](https://github.com/nicepkg/vsync/commit/3d0c6f2)) +- feat: enhance documentation and configuration for vsync ([5ddf6f6](https://github.com/nicepkg/vsync/commit/5ddf6f6)) +- feat: enhance visual elements and interactions in 3D hero component ([d47fc7a](https://github.com/nicepkg/vsync/commit/d47fc7a)) +- feat: enhance 3D hero component with new visualizations and animations ([ed7be8e](https://github.com/nicepkg/vsync/commit/ed7be8e)) +- docs: update landing page content to enhance clarity and feature descriptions ([e6d3f46](https://github.com/nicepkg/vsync/commit/e6d3f46)) +- docs: update PRD with version 1.0.0 details and enhance section descriptions ([414b08d](https://github.com/nicepkg/vsync/commit/414b08d)) +- docs: update PRD to reflect version 1.0.0 and enhance feature descriptions ([50e2e03](https://github.com/nicepkg/vsync/commit/50e2e03)) +- chore: update release workflow to use bash for publishing commands ([43ce662](https://github.com/nicepkg/vsync/commit/43ce662)) +- chore: update release workflow to trigger on specific file changes ([7b3d2e5](https://github.com/nicepkg/vsync/commit/7b3d2e5)) +- chore: enhance GitHub workflows for deployment and preview comments ([b3b37f6](https://github.com/nicepkg/vsync/commit/b3b37f6)) +- refactor: update package structure and add changeset support ([df58266](https://github.com/nicepkg/vsync/commit/df58266)) +- fix(scripts): correct AdapterConfig parameter name in benchmark script ([853a6cf](https://github.com/nicepkg/vsync/commit/853a6cf)) +- feat(performance): implement benchmark utilities and measure improvements ([2b08e75](https://github.com/nicepkg/vsync/commit/2b08e75)) +- docs: update TASKS.md with completed E2E tests ([e4d88fe](https://github.com/nicepkg/vsync/commit/e4d88fe)) +- test: add comprehensive E2E tests for MCP, agents, and commands ([8a57d98](https://github.com/nicepkg/vsync/commit/8a57d98)) +- test: add comprehensive symlink E2E tests (Phase 6.3) ([7c8e7b8](https://github.com/nicepkg/vsync/commit/7c8e7b8)) +- test: add E2E tests with DRY and high cohesion design (Phase 6.3) ([1e84472](https://github.com/nicepkg/vsync/commit/1e84472)) +- fix: correct manifest TargetStatus format in integration tests ([7d31426](https://github.com/nicepkg/vsync/commit/7d31426)) +- fix: correct OpenCode environment variable format to {env:VAR} ([423b6ee](https://github.com/nicepkg/vsync/commit/423b6ee)) +- fix: resolve integration test failures (Phase 6.2) ([164855d](https://github.com/nicepkg/vsync/commit/164855d)) +- fix: resolve TypeScript and ESLint errors in integration tests ([57d3763](https://github.com/nicepkg/vsync/commit/57d3763)) +- test: add integration tests for full sync flow (Phase 6.2) ([b1149c1](https://github.com/nicepkg/vsync/commit/b1149c1)) +- docs: update TASKS.md to mark error message improvements complete ([6ab36f7](https://github.com/nicepkg/vsync/commit/6ab36f7)) +- feat(errors): add comprehensive error formatting utility ([bdd81a5](https://github.com/nicepkg/vsync/commit/bdd81a5)) +- docs: update TASKS.md to mark debug mode task complete ([35e2260](https://github.com/nicepkg/vsync/commit/35e2260)) +- feat(debug): add debug logging utility with --debug flag ([f2bd65d](https://github.com/nicepkg/vsync/commit/f2bd65d)) +- docs: update TASKS.md to mark --yes flag task complete ([30df643](https://github.com/nicepkg/vsync/commit/30df643)) +- feat: add --yes flag to sync and clean commands for CI/CD automation ([4046c0b](https://github.com/nicepkg/vsync/commit/4046c0b)) +- feat(i18n): complete import command i18n integration ([0bde2de](https://github.com/nicepkg/vsync/commit/0bde2de)) +- fix(symlink): integrate rollback support into sync workflow ([dc18cbf](https://github.com/nicepkg/vsync/commit/dc18cbf)) +- feat(symlink): add rollback support for safe error recovery ([5c1873c](https://github.com/nicepkg/vsync/commit/5c1873c)) +- feat(symlink): add first-time sync prompt for symlink usage ([6c83ac2](https://github.com/nicepkg/vsync/commit/6c83ac2)) +- feat(i18n): add custom framework configuration for i18n-ally ([ec94015](https://github.com/nicepkg/vsync/commit/ec94015)) +- feat(i18n): integrate translations into status command ([2a326b3](https://github.com/nicepkg/vsync/commit/2a326b3)) +- feat(i18n): integrate translations into list command ([fdf9469](https://github.com/nicepkg/vsync/commit/fdf9469)) +- feat(i18n): integrate translations into clean command ([d393b1a](https://github.com/nicepkg/vsync/commit/d393b1a)) +- feat(i18n): integrate translations into plan command ([c363fd5](https://github.com/nicepkg/vsync/commit/c363fd5)) +- feat(i18n): integrate translations into sync command ([c6c69d2](https://github.com/nicepkg/vsync/commit/c6c69d2)) +- feat(i18n): integrate translations into init command as reference pattern ([08fbdf4](https://github.com/nicepkg/vsync/commit/08fbdf4)) +- docs(i18n): add language configuration documentation and complete Phase 10 ([4ad69ad](https://github.com/nicepkg/vsync/commit/4ad69ad)) +- feat(i18n): initialize i18n system at CLI startup ([8fb8ff4](https://github.com/nicepkg/vsync/commit/8fb8ff4)) +- feat(i18n): implement first-run language detection and bilingual prompt ([860ca51](https://github.com/nicepkg/vsync/commit/860ca51)) +- refactor: streamline import paths and enhance language support ([835d591](https://github.com/nicepkg/vsync/commit/835d591)) +- feat(config): add language preference support for user-level configuration ([fa5b4f4](https://github.com/nicepkg/vsync/commit/fa5b4f4)) +- feat(i18n): implement lightweight i18n infrastructure with English and Chinese support ([270aa4a](https://github.com/nicepkg/vsync/commit/270aa4a)) +- feat: integrate symlink support into sync workflow ([fdab014](https://github.com/nicepkg/vsync/commit/fdab014)) +- docs: update Phase 9 progress in TASKS.md ([17207d3](https://github.com/nicepkg/vsync/commit/17207d3)) +- feat(adapters): add symlink handling to BaseAdapter for skills directories ([606ecf6](https://github.com/nicepkg/vsync/commit/606ecf6)) +- feat(core): implement symlink sync handler for skills directories ([d8ad8d9](https://github.com/nicepkg/vsync/commit/d8ad8d9)) +- feat(utils): implement cross-platform symlink utilities ([4a8282e](https://github.com/nicepkg/vsync/commit/4a8282e)) +- docs: mark Phase 9.1 as complete in TASKS.md ([a199911](https://github.com/nicepkg/vsync/commit/a199911)) +- feat(config): add symlink support configuration for skills ([f1a13b9](https://github.com/nicepkg/vsync/commit/f1a13b9)) +- chore: update TASKS.md to remove completed tasks and adjust phase statuses ([616793c](https://github.com/nicepkg/vsync/commit/616793c)) +- feat(core): implement incremental sync optimization with file caching ([fd8877a](https://github.com/nicepkg/vsync/commit/fd8877a)) +- feat: implement ParallelSyncOrchestrator and SyncExecutor ([3f2091d](https://github.com/nicepkg/vsync/commit/3f2091d)) +- chore: update TASKS.md to reflect version bump to 3.1.0 ([cbb1c1d](https://github.com/nicepkg/vsync/commit/cbb1c1d)) +- refactor: streamline adapter methods by consolidating read and write operation ([a4575ae](https://github.com/nicepkg/vsync/commit/a4575ae)) +- feat: enhance Claude Code adapter to support multiple MCP server types ([f8c862d](https://github.com/nicepkg/vsync/commit/f8c862d)) +- refactor: remove validation methods from adapter implementations ([c4d784a](https://github.com/nicepkg/vsync/commit/c4d784a)) +- refactor: consolidate adapter implementations by extending BaseAdapter ([c1d226d](https://github.com/nicepkg/vsync/commit/c1d226d)) +- feat: implement support file handling in adapters ([1b21d91](https://github.com/nicepkg/vsync/commit/1b21d91)) +- refactor: remove configFormat, capabilities, and isReadOnly from ToolAdapter implementations ([9dc268a](https://github.com/nicepkg/vsync/commit/9dc268a)) +- docs: add global configuration details for Claude Code in ai-tools and prd documentation ([e938fda](https://github.com/nicepkg/vsync/commit/e938fda)) +- feat: enhance adapter configuration with level support and update file handling ([e1dd008](https://github.com/nicepkg/vsync/commit/e1dd008)) +- docs: update Codex configuration details to reflect changes in file structure and format ([1a2b380](https://github.com/nicepkg/vsync/commit/1a2b380)) +- refactor: reorganize file operations and update adapter implementations ([2b21902](https://github.com/nicepkg/vsync/commit/2b21902)) +- chore: remove unused '@types/inquirer' dependency and add refactor plan for adapter architecture ([5f0c346](https://github.com/nicepkg/vsync/commit/5f0c346)) +- refactor: flatten directory structure by removing extra cli layer ([29f6d2b](https://github.com/nicepkg/vsync/commit/29f6d2b)) +- feat(cli): add import command for cross-project config import ([468101c](https://github.com/nicepkg/vsync/commit/468101c)) +- feat: add Codex adapter with full TOML support for v1.1 ([8128830](https://github.com/nicepkg/vsync/commit/8128830)) +- docs: mark Phase 7.3 Commands Synchronization as complete ([01f5f33](https://github.com/nicepkg/vsync/commit/01f5f33)) +- feat(phase-7.3): implement command synchronization support ([d855673](https://github.com/nicepkg/vsync/commit/d855673)) +- docs: mark Phase 7.2 Agents Synchronization as complete ([2c5af99](https://github.com/nicepkg/vsync/commit/2c5af99)) +- feat(phase-7.2): implement agent synchronization support ([2c720f6](https://github.com/nicepkg/vsync/commit/2c720f6)) +- feat(core): implement user-level config merging for Phase 7.1 ([daa42fa](https://github.com/nicepkg/vsync/commit/daa42fa)) +- docs: add detailed v1.1 (Phase 7-8) task breakdown ([782914c](https://github.com/nicepkg/vsync/commit/782914c)) +- feat(cli): add error recovery with rollback to sync command ([65b0918](https://github.com/nicepkg/vsync/commit/65b0918)) +- feat(core): implement rollback mechanism for safe error recovery ([a3300ce](https://github.com/nicepkg/vsync/commit/a3300ce)) +- docs: mark Phase 5.2 Environment Variable Preservation as complete ([5ba78ce](https://github.com/nicepkg/vsync/commit/5ba78ce)) +- feat: add fsync to atomic write for crash-safe file operations ([0ea84a4](https://github.com/nicepkg/vsync/commit/0ea84a4)) +- chore: update ESLint linting command to remove max-warnings restriction ([1fcb30f](https://github.com/nicepkg/vsync/commit/1fcb30f)) +- refactor: standardize ESLint configuration and improve code formatting ([5878da8](https://github.com/nicepkg/vsync/commit/5878da8)) +- fix: complete TargetStatus and ManifestItem type fixes ([d83ecdd](https://github.com/nicepkg/vsync/commit/d83ecdd)) +- fix: resolve type errors and replace paths with TypeScript aliases ([98b6277](https://github.com/nicepkg/vsync/commit/98b6277)) +- refactor: add TypeScript path aliases and improve typecheck coverage ([2560744](https://github.com/nicepkg/vsync/commit/2560744)) +- docs(tasks): add TypeScript path aliases refactor task ([c834e7b](https://github.com/nicepkg/vsync/commit/c834e7b)) +- refactor: remove MCP security feature to simplify user experience ([1700b7d](https://github.com/nicepkg/vsync/commit/1700b7d)) +- feat(cli): implement clean command with target/source removal modes ([141eb45](https://github.com/nicepkg/vsync/commit/141eb45)) +- feat(cli): implement vsync list command with table output ([ad726f3](https://github.com/nicepkg/vsync/commit/ad726f3)) +- feat(cli): implement vsync status command ([15f6f74](https://github.com/nicepkg/vsync/commit/15f6f74)) +- feat(cli): implement vsync plan command with detailed output ([0cfc46c](https://github.com/nicepkg/vsync/commit/0cfc46c)) +- docs: mark Phase 4.3 (vsync sync command) as complete ([9cb6f89](https://github.com/nicepkg/vsync/commit/9cb6f89)) +- feat(cli): implement vsync sync command ([4dd1559](https://github.com/nicepkg/vsync/commit/4dd1559)) +- docs: mark Phase 4.2 (vsync init command) as complete ([7cdcf09](https://github.com/nicepkg/vsync/commit/7cdcf09)) +- feat(cli): implement vsync init command with interactive prompts ([2bba6ef](https://github.com/nicepkg/vsync/commit/2bba6ef)) +- docs: mark Phase 4.1 (CLI Framework Setup) as complete ([6dfeb74](https://github.com/nicepkg/vsync/commit/6dfeb74)) +- feat(cli): implement CLI framework with Commander.js ([74d5600](https://github.com/nicepkg/vsync/commit/74d5600)) +- docs: mark Phase 3 complete - all diff and plan system implemented ([2cd224a](https://github.com/nicepkg/vsync/commit/2cd224a)) +- feat(core): implement manifest update operations ([981e805](https://github.com/nicepkg/vsync/commit/981e805)) +- docs: mark Phase 3.3 (Plan Generator) as complete ([6c93bd9](https://github.com/nicepkg/vsync/commit/6c93bd9)) +- feat(core): implement plan generator with formatting and validation ([c4c2e87](https://github.com/nicepkg/vsync/commit/c4c2e87)) +- docs: mark Phase 3.1 and 3.2 as complete ([2631f23](https://github.com/nicepkg/vsync/commit/2631f23)) +- feat(core): implement difference calculator for Phase 3.2 ([5378da2](https://github.com/nicepkg/vsync/commit/5378da2)) +- docs: mark Phase 2.5 (Adapter Registry) and Phase 2 as complete ([68d79a9](https://github.com/nicepkg/vsync/commit/68d79a9)) +- feat(adapters): implement adapter registry for Phase 2.5 ([c842618](https://github.com/nicepkg/vsync/commit/c842618)) +- docs: mark Phase 2.4 (OpenCode Adapter) as complete ([4f7b758](https://github.com/nicepkg/vsync/commit/4f7b758)) +- feat(adapters): implement OpenCode adapter for Phase 2.4 ([44e9aa7](https://github.com/nicepkg/vsync/commit/44e9aa7)) +- docs: mark Phase 2.3 (Cursor Adapter) as complete ([a96b32b](https://github.com/nicepkg/vsync/commit/a96b32b)) +- feat(adapters): implement Cursor adapter for Phase 2.3 ([68e782f](https://github.com/nicepkg/vsync/commit/68e782f)) +- docs: mark Phase 2.2 (Claude Code Adapter) as complete ([0021dc8](https://github.com/nicepkg/vsync/commit/0021dc8)) +- feat(adapters): implement Claude Code adapter for Phase 2.2 ([3e45530](https://github.com/nicepkg/vsync/commit/3e45530)) +- feat(adapters): define base adapter interface for Phase 2.1 ([ad7c69b](https://github.com/nicepkg/vsync/commit/ad7c69b)) +- feat(core): implement Phase 1.3 and 1.4 - config/manifest managers and utilities ([7608066](https://github.com/nicepkg/vsync/commit/7608066)) +- feat(types): implement core type definitions for Phase 1.2 ([a338a6a](https://github.com/nicepkg/vsync/commit/a338a6a)) +- chore: update ESLint configuration and remove Prettier settings for CLI workspace ([3c4ce9d](https://github.com/nicepkg/vsync/commit/3c4ce9d)) +- feat(lint): add ESLint and Prettier configuration for CLI workspace ([18fbb37](https://github.com/nicepkg/vsync/commit/18fbb37)) +- refactor(build): bundle all dependencies for faster npx usage ([dc6b30c](https://github.com/nicepkg/vsync/commit/dc6b30c)) +- feat(core): initialize CLI workspace with TypeScript and build tooling ([52de3c8](https://github.com/nicepkg/vsync/commit/52de3c8)) +- docs: update project structure for pnpm monorepo with cli workspace ([8e80593](https://github.com/nicepkg/vsync/commit/8e80593)) +- feat: restructure project for vsync with new task management and CLI commands ([631cb36](https://github.com/nicepkg/vsync/commit/631cb36)) +- chore: remove CHECKLIST.md after project setup completion ([af76423](https://github.com/nicepkg/vsync/commit/af76423)) +- feat: complete vsync project setup with full customization ([ef5b668](https://github.com/nicepkg/vsync/commit/ef5b668)) +- docs: update project configuration with new username and repository link, and refine Chinese slogan ([e0b9f65](https://github.com/nicepkg/vsync/commit/e0b9f65)) +- chore: remove example configuration files and add initial project configuration for vsync ([2563f4a](https://github.com/nicepkg/vsync/commit/2563f4a)) +- chore: update pnpm-lock.yaml to include TypeScript 5.9.3, Zod 4.3.6, and framer-motion 12.29.0 ([6361214](https://github.com/nicepkg/vsync/commit/6361214)) +- chore: update .gitignore, package.json, and ESLint configuration ([5871db0](https://github.com/nicepkg/vsync/commit/5871db0)) +- docs: update clone URLs in README files to point to the new repository name ([23b6dff](https://github.com/nicepkg/vsync/commit/23b6dff)) +- docs: update clone URLs in README files to reflect new repository owner ([c5aac1e](https://github.com/nicepkg/vsync/commit/c5aac1e)) +- docs: update title of Product Requirements Document for clarity ([d8f1694](https://github.com/nicepkg/vsync/commit/d8f1694)) +- feat: add content marketer and search specialist agents and research capabilities ([927b471](https://github.com/nicepkg/vsync/commit/927b471)) +- feat: introduce frontend-design skill for creating high-quality, distinctive web interfaces ([0f56e4c](https://github.com/nicepkg/vsync/commit/0f56e4c)) +- feat: add comprehensive React and Next.js best practices documentation ([345146b](https://github.com/nicepkg/vsync/commit/345146b)) +- docs: enhance README with detailed workflow, automation features, and shared skills for AI tools ([0517a3f](https://github.com/nicepkg/vsync/commit/0517a3f)) +- chore: update README guidelines and enhance validation script for project setup ([14be40c](https://github.com/nicepkg/vsync/commit/14be40c)) +- feat: introduce automation guidelines and CLI tools for streamlined operations ([1174058](https://github.com/nicepkg/vsync/commit/1174058)) +- feat: add MCP server configurations for Claude, Cursor, Codex, and OpenCode ([5011f19](https://github.com/nicepkg/vsync/commit/5011f19)) +- feat: add commands for code review, fixing GitHub issues, and reviewing pull requests ([b2f42f1](https://github.com/nicepkg/vsync/commit/b2f42f1)) +- feat: add commands for creating Git commits and pull requests following Angular convention ([23cf187](https://github.com/nicepkg/vsync/commit/23cf187)) +- chore: update package.json for testing commands, enhance CI ([445844b](https://github.com/nicepkg/vsync/commit/445844b)) +- chore: update GitHub issue and pull request templates, add CI workflow, and adjust pre-commit hooks ([c2bda09](https://github.com/nicepkg/vsync/commit/c2bda09)) +- feat: add standard GitHub Actions token naming conventions and example workflows ([d7bbfd7](https://github.com/nicepkg/vsync/commit/d7bbfd7)) +- feat: implement commit convention and add Husky with Commitlint for validation ([f3dc2f4](https://github.com/nicepkg/vsync/commit/f3dc2f4)) +- feat: add symbolic link for Claude agent documentation ([3d4d487](https://github.com/nicepkg/vsync/commit/3d4d487)) +- feat: create symbolic links for Claude skills in multiple directories ([5859429](https://github.com/nicepkg/vsync/commit/5859429)) +- feat: add settings configuration for Claude with permissions and server options ([5c3e698](https://github.com/nicepkg/vsync/commit/5c3e698)) +- feat: add project setup documentation and checklist ([7bf79cd](https://github.com/nicepkg/vsync/commit/7bf79cd)) +- chore: update linting commands and fix formatting in meta files ([6bfcf58](https://github.com/nicepkg/vsync/commit/6bfcf58)) +- chore: update project configuration and add VSCode settings ([9bf609a](https://github.com/nicepkg/vsync/commit/9bf609a)) +- feat: init project ([5941cee](https://github.com/nicepkg/vsync/commit/5941cee)) diff --git a/cli/eslint.config.mjs b/cli/eslint.config.mjs index 3cf206b..ef14f56 100644 --- a/cli/eslint.config.mjs +++ b/cli/eslint.config.mjs @@ -120,13 +120,7 @@ export default defineConfig( // TypeScript rules "@typescript-eslint/no-unused-vars": "off", // Use unused-imports instead "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/consistent-type-imports": [ - "warn", - { - prefer: "type-imports", - fixStyle: "inline-type-imports", - }, - ], + "@typescript-eslint/consistent-type-imports": "off", // Unused imports plugin "unused-imports/no-unused-imports": "error", diff --git a/cli/src/utils/i18n.ts b/cli/src/utils/i18n.ts index 9225868..2cbbab8 100644 --- a/cli/src/utils/i18n.ts +++ b/cli/src/utils/i18n.ts @@ -105,15 +105,15 @@ export function getCurrentLanguage(): Language { * @param path - Dot-separated path (e.g., "common.yes") * @returns Value at path or undefined */ -function getNestedValue(obj: any, path: string): string | undefined { +function getNestedValue(obj: Translations, path: string): string | undefined { const keys = path.split("."); - let current = obj; + let current: Translations | Record | string | undefined = obj; for (const key of keys) { if (current === undefined || current === null) { return undefined; } - current = current[key]; + current = current[key as keyof Translations] as Record; } return typeof current === "string" ? current : undefined; diff --git a/cli/test/adapters/registry.test.ts b/cli/test/adapters/registry.test.ts index 8bf8005..ac6fad6 100644 --- a/cli/test/adapters/registry.test.ts +++ b/cli/test/adapters/registry.test.ts @@ -4,6 +4,7 @@ import { CodexAdapter } from "@src/adapters/codex.js"; import { CursorAdapter } from "@src/adapters/cursor.js"; import { OpenCodeAdapter } from "@src/adapters/opencode.js"; import { getAdapter, getAvailableTools } from "@src/adapters/registry.js"; +import type { ToolName } from "@src/types/config.js"; import { isSamePath } from "../utils/path.js"; describe("Adapter Registry", () => { @@ -69,7 +70,7 @@ describe("Adapter Registry", () => { it("should throw error for unsupported tool", () => { expect(() => getAdapter({ - tool: "invalid-tool" as any, // Testing invalid tool name + tool: "invalid-tool" as ToolName, // Testing invalid tool name baseDir: "/test", level: "project", }), diff --git a/cli/test/commands/sync.test.ts b/cli/test/commands/sync.test.ts index 79b6066..229eadc 100644 --- a/cli/test/commands/sync.test.ts +++ b/cli/test/commands/sync.test.ts @@ -2,6 +2,7 @@ import { createHash } from "node:crypto"; import { readFile } from "node:fs/promises"; import { join, resolve } from "node:path"; import mockFs from "mock-fs"; +import type FileSystem from "mock-fs/lib/filesystem.js"; import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { readSourceConfig, @@ -62,7 +63,7 @@ describe("Sync Command", () => { }; beforeEach(() => { - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_HOME]: { // Add user-level config with language to avoid prompts ".vsync.json": JSON.stringify({ @@ -121,7 +122,7 @@ describe("Sync Command", () => { it("should throw error if config not found", async () => { const TEST_EMPTY = process.platform === "win32" ? "C:\\empty" : "/empty"; - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_EMPTY]: {}, }; mockFs(mockFsConfig); @@ -341,7 +342,7 @@ describe("Sync Command", () => { }); it("should handle manifest load errors gracefully", async () => { - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_HOME]: { // Add user-level config with language to avoid prompts ".vsync.json": JSON.stringify({ diff --git a/cli/test/core/config-manager.test.ts b/cli/test/core/config-manager.test.ts index b0bf9f5..72a8f6f 100644 --- a/cli/test/core/config-manager.test.ts +++ b/cli/test/core/config-manager.test.ts @@ -280,7 +280,7 @@ describe("Config Manager", () => { target_tools: ["cursor"], sync_config: { skills: true, mcp: true }, use_symlinks_for_skills: "yes", // Should be boolean - } as any; + } as Omit; const result = validateConfig(config); expect(result.valid).toBe(false); @@ -324,7 +324,7 @@ describe("Config Manager", () => { target_tools: ["cursor"], sync_config: { skills: true, mcp: true }, language: "fr", // Should be 'en' or 'zh' - } as any; + } as Omit; const result = validateConfig(config); expect(result.valid).toBe(false); @@ -339,7 +339,7 @@ describe("Config Manager", () => { target_tools: ["cursor"], sync_config: { skills: true, mcp: true }, language: 123, // Should be string - } as any; + } as Omit; const result = validateConfig(config); expect(result.valid).toBe(false); diff --git a/cli/test/core/manifest-manager.test.ts b/cli/test/core/manifest-manager.test.ts index 00f57ea..947adcf 100644 --- a/cli/test/core/manifest-manager.test.ts +++ b/cli/test/core/manifest-manager.test.ts @@ -2,6 +2,7 @@ import { createHash } from "node:crypto"; import { readFile } from "node:fs/promises"; import { join, resolve } from "node:path"; import mockFs from "mock-fs"; +import type FileSystem from "mock-fs/lib/filesystem.js"; import { describe, it, expect, beforeEach, afterEach, vi } from "vitest"; import { loadManifest, @@ -65,7 +66,7 @@ describe("Manifest Manager", () => { }; beforeEach(() => { - const mockFsConfig: any = { + const mockFsConfig: FileSystem.DirectoryItems = { [TEST_HOME]: { ".vsync": { cache: { diff --git a/cli/test/core/parallel-sync.test.ts b/cli/test/core/parallel-sync.test.ts index 904b1c1..4bdc173 100644 --- a/cli/test/core/parallel-sync.test.ts +++ b/cli/test/core/parallel-sync.test.ts @@ -9,6 +9,7 @@ import { type TargetSyncConfig, } from "@src/core/parallel-sync.js"; import { SourceData } from "@src/core/sync-executor.js"; +import type { ToolName } from "@src/types/config.js"; import type { DiffResult } from "@src/types/plan.js"; describe("ParallelSyncOrchestrator", () => { @@ -18,17 +19,17 @@ describe("ParallelSyncOrchestrator", () => { beforeEach(() => { sourceData = new SourceData( - [{ name: "skill1", content: "content1", hash: "hash1" }] as any, - [{ name: "mcp1", type: "stdio", command: "cmd1", hash: "hash2" }] as any, + [{ name: "skill1", content: "content1", hash: "hash1" }], + [{ name: "mcp1", type: "stdio", command: "cmd1", hash: "hash2" }], [], [], ); // Create mock adapters - const createMockAdapter = (toolName: string): ToolAdapter => ({ + const createMockAdapter = (toolName: ToolName): ToolAdapter => ({ toolName, displayName: toolName, - config: { tool: toolName as any, baseDir: "/test", level: "project" }, + config: { tool: toolName, baseDir: "/test", level: "project" }, getConfigDir: vi.fn(() => `.${toolName}`), getConfigPaths: vi.fn(() => []), getMCPConfigPaths: vi.fn(() => []), diff --git a/cli/test/core/sync-executor.test.ts b/cli/test/core/sync-executor.test.ts index ca45d58..464df6b 100644 --- a/cli/test/core/sync-executor.test.ts +++ b/cli/test/core/sync-executor.test.ts @@ -17,7 +17,7 @@ describe("SyncExecutor", () => { mockAdapter = { toolName: "test-tool", displayName: "Test Tool", - config: { tool: "cursor" as any, baseDir: "/test", level: "project" }, + config: { tool: "cursor", baseDir: "/test", level: "project" }, getConfigDir: vi.fn(() => ".test"), getConfigPaths: vi.fn(() => []), getMCPConfigPaths: vi.fn(() => []), diff --git a/cli/test/index.test.ts b/cli/test/index.test.ts index b0511fc..01bfb1c 100644 --- a/cli/test/index.test.ts +++ b/cli/test/index.test.ts @@ -1,8 +1,8 @@ -import { describe, it, expect } from "vitest"; import { mkdtemp, rm, symlink, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join, relative } from "node:path"; import { pathToFileURL } from "node:url"; +import { describe, it, expect } from "vitest"; import { isMainModule, main } from "@src/index.js"; describe("CLI Entry Point", () => { diff --git a/cli/test/utils/i18n.test.ts b/cli/test/utils/i18n.test.ts index b16e397..f6cbf67 100644 --- a/cli/test/utils/i18n.test.ts +++ b/cli/test/utils/i18n.test.ts @@ -5,6 +5,7 @@ import { t, setLanguage, getCurrentLanguage, + type Language, } from "@src/utils/i18n.js"; describe("i18n Utilities", () => { @@ -71,7 +72,7 @@ describe("i18n Utilities", () => { }); it("should throw error for unsupported language", async () => { - await expect(loadLanguage("fr" as any)).rejects.toThrow( + await expect(loadLanguage("fr" as Language)).rejects.toThrow( "Unsupported language", ); }); diff --git a/website/eslint.config.mjs b/website/eslint.config.mjs index aa52689..80746b0 100644 --- a/website/eslint.config.mjs +++ b/website/eslint.config.mjs @@ -146,7 +146,7 @@ export default defineConfig( ], "@typescript-eslint/prefer-nullish-coalescing": "off", "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-unnecessary-condition": "warn", + "@typescript-eslint/no-unnecessary-condition": "off", }, }, diff --git a/website/src/components/home/landing-page.tsx b/website/src/components/home/landing-page.tsx index 2f8b5f5..d5a21f7 100644 --- a/website/src/components/home/landing-page.tsx +++ b/website/src/components/home/landing-page.tsx @@ -272,7 +272,9 @@ export function LandingPage({ lang }: { lang: "en" | "zh" }) {
$ - npx @nicepkg/vsync sync + + npx @nicepkg/vsync sync +
diff --git a/website/src/components/ui/input-otp.tsx b/website/src/components/ui/input-otp.tsx index 6090ef6..4922cb8 100644 --- a/website/src/components/ui/input-otp.tsx +++ b/website/src/components/ui/input-otp.tsx @@ -43,7 +43,9 @@ function InputOTPSlot({ index: number; }) { const inputOTPContext = React.useContext(OTPInputContext); - const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}; + + const { char, hasFakeCaret, isActive } = + inputOTPContext?.slots?.[index] ?? {}; return (
- {item.name} + {item.name} {item.actions}