ShadowSync is a Windows-first Rust tray application. Changes should preserve the core model:
- USB pull path:
USB -> shadow cache -> local target - Optional push path:
local target -> shadow cache -> USB - Manifest cache for incremental sync
- Single-instance tray workflow
Recommended environment:
- Windows
- Rust stable toolchain
- PowerShell
- Python 3.x for docs work
Core commands:
cargo test
cargo build --releaseDocs commands:
python -m pip install -r requirements-docs.txt
python -m mkdocs build --strict
python -m mkdocs servesrc/: app, sync engine, config handling, watcher logic, wizard integrationassets/: setup wizard PowerShell UI.github/assets/: SVG branding source used by the Windows build pipeline.github/installer/: Inno Setup installer script.github/workflows/: release and docs automationdocs/: GitHub Pages documentation source
- Keep Windows-specific behavior explicit.
- Do not silently change sync direction semantics.
- Preserve the shadow-cache model unless the change intentionally redesigns it.
- Prefer incremental, testable changes over large rewrites.
- Update docs when user-facing behavior changes.
Before pushing:
- Run
cargo test - Run
cargo build --releasefor packaging-related changes - Run
python -m mkdocs build --strictfor docs changes
If a change affects installer or release packaging, verify the relevant workflow or packaging script paths as well.
Release versioning is driven by Cargo.toml.
- Bump
package.versioninCargo.toml - Push to
main - GitHub Actions drafts a release tagged
v<version> - The workflow attaches the portable zip and installer exe
No custom repo secrets are currently required. The workflows use the built-in GITHUB_TOKEN.