This file provides repo-specific guidance for coding agents working in OneWare.
- Solution entry:
OneWare.slnx - Main source tree:
src/ - Tests:
tests/ - Build scripts and packaging helpers:
build/,snap/,cleanall.sh,buildsnap.sh - Studio app projects:
- Desktop:
studio/OneWare.Studio.Desktop/OneWare.Studio.Desktop.csproj - Browser:
studio/OneWare.Studio.Browser/OneWare.Studio.Browser.csproj - Shared studio:
studio/OneWare.Studio/OneWare.Studio.csproj
- Desktop:
- Submodule in use:
src/VtNetCore.Avalonia(required for terminal-related projects)
- .NET SDK
10.0.x - Clone with submodules:
git clone --recursive <repo-url>- or
git submodule update --init --recursivein an existing clone
- CI (
.github/workflows/test.yml) runs these steps:dotnet workload restoredotnet restoredotnet build --no-restoredotnet test --no-build --verbosity normal
- For local agent validation, prefer the same order when touching multiple projects.
- Preferred targeted build:
dotnet build src/<ProjectName>/<ProjectName>.csproj -v minimal
- Full solution build:
dotnet build OneWare.slnx -v minimal
- Run Studio desktop from repo root:
dotnet run --project studio/OneWare.Studio.Desktop/OneWare.Studio.Desktop.csproj
- Targeted tests:
dotnet test tests/<TestProject>/<TestProject>.csproj -v minimal
- Full tests:
dotnet test OneWare.slnx -v minimal
- Avalonia build tasks attempt to write telemetry logs under:
~/.local/share/AvaloniaUI/BuildServices/buildtasks.log
- In restricted/sandboxed environments, this path may be blocked and cause build failure with
MSB4018(UnauthorizedAccessException/Permission denied). - If that happens, rerun the same
dotnet buildcommand with elevated permissions for the session. - On
linux-x64publish,OneWare.Terminal.dllis intentionally excluded from ReadyToRun (<PublishReadyToRunExclude>) to avoid a known crash inSetWindowSize.
- Core/shared infrastructure:
src/OneWare.Essentials— base types, services interfaces, Avalonia/ReactiveUI wiring, ONNX/OpenCV/AI abstractionssrc/OneWare.Core— app shell (App.axaml), Serilog logging, DI bootstrap; depends onOneWare.ApplicationCommandsand all built-in UI panelssrc/OneWare.ApplicationCommands— shared application command definitions consumed byOneWare.Core
- AI / cloud integrations:
src/OneWare.CloudIntegration— SignalR + JWT auth backend connectivity (usesRestSharp,Devlooped.CredentialManager)src/OneWare.Chat— chat UI panelsrc/OneWare.Copilot— GitHub Copilot integration (GitHub.Copilot.SDK; setsCopilotSkipCliDownload=true)
- Feature modules/extensions (examples):
- Package manager:
src/OneWare.PackageManager - Source control:
src/OneWare.SourceControl - FPGA project system:
src/OneWare.UniversalFpgaProjectSystem - Tool/language integrations:
src/OneWare.*projects undersrc/ src/OneWare.CSharpis present but commented out in the Desktop studio project
- Package manager:
- Plugin development reference:
docs/PluginDevelopment.mddemo/OneWare.Demo— minimal runnable demo app showing plugin patterns
- Do not revert unrelated local changes; the workspace may be intentionally dirty.
- Prefer small, targeted fixes and project-level builds relevant to changed files.
- When changing package manager behavior, verify:
src/OneWare.PackageManager/Services/PackageService.cssrc/OneWare.PackageManager/ViewModels/PackageManagerViewModel.cs
- For offline/network-sensitive flows, avoid surfacing user-facing exceptions; prefer graceful fallback and logging.
- Keep changes compatible with .NET 10 and existing nullable settings in each project.
- Package versions are centralized in
build/props/*.props(one file per package). Import the relevant.propsfile in a project's.csprojrather than adding inline<PackageReference>with a version. The global ONNX Runtime version lives inDirectory.Build.props(OnnxRuntimeVersion). - Module entry point: every feature module exposes a
*Module.cs(e.g.,CopilotModule.cs,ChatModule.cs,OneWareCloudIntegrationModule.cs) that wires the module into the DI container. New modules must follow this pattern. - All module
.csprojfiles importbuild/props/Base.propsandbuild/props/OneWare.Module.props; these setTargetFramework,Nullable,LangVersion, andAvaloniaUseCompiledBindingsByDefault.
- Treat these scripts as potentially disruptive; do not run them unless explicitly required.
rgmay not be installed in some environments. Usefind+grepas fallback.nuget.configclears sources and uses onlyhttps://api.nuget.org/v3/index.jsonby default.