Thanks for your interest in improving OneWare Studio! This guide covers how to report issues, set up a development environment and get a pull request merged.
- Questions and discussion: Discord
- Developer documentation: docs/
- Security vulnerabilities: don't open a public issue. Follow SECURITY.md.
- Search the open issues first to avoid duplicates.
- For bugs, include:
- OneWare Studio version (Help → About) and how you installed it (installer, Snap, Flathub, WinGet, source).
- Operating system and architecture.
- Steps to reproduce, expected and actual behavior.
- The log file of the session, found in
~/OneWareStudio/Logs(or the folder set with--oneware-dir).
- For feature requests, describe the problem you want to solve, not only the solution.
Issues labelled help wanted are a good place
to start. Comment on an issue before starting larger work so we can agree on the approach.
Requirements:
- .NET SDK 10.0
- Git, and an IDE with Avalonia support (JetBrains Rider or Visual Studio / VS Code with the Avalonia extension)
git clone --recursive https://github.com/one-ware/OneWare.git
cd OneWare
dotnet workload restore
dotnet build OneWare.slnx
dotnet run --project studio/OneWare.Studio.Desktop/OneWare.Studio.Desktop.csprojThe repository uses a git submodule (src/VtNetCore.Avalonia). If you cloned without --recursive, run
git submodule update --init --recursive.
See the developer documentation for the project structure, architecture and debugging tips.
- Branch from
mainand use a descriptive branch name, for examplefix/package-status-prereleaseorfeature/copilot-sub-agents. - Keep pull requests focused. Unrelated refactorings and formatting changes make reviews harder.
- Follow the existing code style of the file you're editing. The solution enables nullable reference types, so don't add new nullable warnings.
- Dependencies: package versions are centralized in
build/props/<Package>.props. Import the.propsfile in your.csprojinstead of adding aPackageReferencewith a version. - UI: use the shared style classes and
{DynamicResource}tokens fromOneWare.Essentials, not inline colors, borders or font sizes. See docs/Styling.md. If you add a shared style class, add it to the Style Gallery and the styling doc. - Public API:
OneWare.Essentials,OneWare.UniversalFpgaProjectSystemand the other packages listed in the README are consumed by external plugins. Avoid breaking changes to their public types; if one is unavoidable, call it out in the pull request. - Docs: update the relevant file in
docs/when you change behavior that it describes, and add user-facing changes todocs/changelog.mdonly if a maintainer asks you to (the changelog is written at release time). - Don't bump
StudioVersionor edit the release metadata; maintainers do that when releasing.
Tests live in tests/ and use xUnit. UI tests run headless with Avalonia.Headless.XUnit.
dotnet test OneWare.slnx # everything (same as CI)
dotnet test tests/OneWare.Vhdl.UnitTests/OneWare.Vhdl.UnitTests.csproj # one project
dotnet test tests/OneWare.Vhdl.UnitTests --filter "FullyQualifiedName~MyTest" # one testAdd or update tests for bug fixes and new logic where practical. New test projects must be added to the
/Tests/ folder in OneWare.slnx, otherwise CI won't run them.
- Make sure
dotnet build OneWare.slnxanddotnet test OneWare.slnxpass locally. - Open the pull request against
mainand describe what changed and why. Link the issue it fixes (Fixes #123). - Add screenshots or a short recording for UI changes, ideally in both the Light and Dark theme.
- CI runs the build, all tests and a dependency vulnerability scan. Please keep it green.
- A maintainer will review the pull request. Address feedback with new commits; we squash or merge when it's ready.
AI coding agents are welcome. The repository ships AGENTS.md and repo-specific skills in
.agents/skills/ so agents follow the same conventions. You are responsible for reviewing, building and
testing everything you submit.
By contributing, you agree that your contributions are licensed under the Apache License 2.0.