- C# 89.8%
- PowerShell 10.2%
| .forgejo/workflows | ||
| .githooks | ||
| docs | ||
| eng | ||
| plans | ||
| src | ||
| tests | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| Directory.Build.props | ||
| Directory.Packages.props | ||
| global.json | ||
| PROGRESS.md | ||
| README.md | ||
| RELEASE-NOTES.md | ||
| renovate.json | ||
| THIRD-PARTY-NOTICES.md | ||
| Yeet.Windows.slnx | ||
Yeet Windows
Native C#/.NET 10 WPF client for Yeet.
Product boundary
The application delivers the unified Transfers workflow while preserving intended KMP behavior and correcting verified defects. Cancelled chat and P2P/LAN work are deliberately excluded.
The UI uses a Material-style design system and official Google Material Symbols. Closing the main window hides it to the notification area; explicit Quit is the only process-exit path once Windows lifecycle integration lands.
Build and test
Ordinary builds, automated tests, and UI verification run only in Forgejo CI for the exact pushed SHA. Do not run builds or tests locally. Explicitly authorized attended production smoke and installer/OS manual checks use a CI-built artifact in an isolated test scope and are recorded separately as manual evidence. They do not replace required CI jobs or authorize a release.
For authorized manual smoke, launch the installed CI-built application in the isolated test scope.
CI packaging uses eng/Build-CiInstaller.ps1. It archives the exact triggering commit and builds in the fixed %LOCALAPPDATA%\Yeet.CI\release-source directory under an exclusive lock. This works around the remaining compiler dependence on the source directory; it does not make arbitrary build paths reproducible. Payload timestamps and MSI summary dates use the source commit time. The compound-file root modification timestamp is cleared after summary persistence. Product and package GUIDs derive from the source SHA, version, runtime, commit time, and published file names/hashes. The installer CI job and release workflow compare two clean builds of the payload, MSI, and checksum before accepting them. WiX debug databases are excluded because they are not release assets.
SemVer tags are gated by the release workflow, which requires successful CI for the exact tagged SHA before packaging or publishing. Releases are signed with a self-signed certificate held only in Forgejo secrets; see docs/releasing.md for what that does and does not provide. A tag or release still requires explicit authorization.
Local Git gates
Install this checkout's tracked hooks once:
powershell -NoProfile -ExecutionPolicy Bypass -File eng/Install-Hooks.ps1
The pre-commit hook checks the exact staged tree statically. It does not build, test, run UI automation, or create a local test receipt.
The pre-push hook checks each exact outgoing tree statically. It does not build, test, run UI automation, or create a local test receipt. Branch protection and required statuses are configured externally in Forgejo; the pushed SHA's Forgejo CI result is the authority. The hook checks tag/version agreement; the release workflow enforces the CI gate.
Delivery plan
Milestones and their canonical status are in plans/INDEX.md. Each milestone has implementation tasks, exit criteria, architecture checks, and evidence. Completed verification is appended to PROGRESS.md with the exact Forgejo CI SHA/result; older local results remain historical diagnostics. Do not commit unless explicitly requested.
The source-traceable migration baseline is split into architecture, KMP parity, verified defects, UI inventory, and testing strategy.