{"id":50557248,"url":"https://github.com/wieslawsoltes/xamlvisualeditor","last_synced_at":"2026-06-04T08:02:38.745Z","repository":{"id":359495489,"uuid":"1153005985","full_name":"wieslawsoltes/XamlVisualEditor","owner":"wieslawsoltes","description":"Extensible Avalonia XAML visual editor with live designer, code editor, language services, debugging, and .NET extensions.","archived":false,"fork":false,"pushed_at":"2026-05-22T07:37:28.000Z","size":2274,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-22T14:10:00.307Z","etag":null,"topics":["avalonia","dock","dotnet","dotnet10","extensibility","ide","lsp","mvvm","reactiveui","visual-editor","xaml","xaml-editor","xamlx"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wieslawsoltes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-08T18:58:41.000Z","updated_at":"2026-05-22T13:55:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wieslawsoltes/XamlVisualEditor","commit_stats":null,"previous_names":["wieslawsoltes/xamlvisualeditor"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/wieslawsoltes/XamlVisualEditor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FXamlVisualEditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FXamlVisualEditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FXamlVisualEditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FXamlVisualEditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wieslawsoltes","download_url":"https://codeload.github.com/wieslawsoltes/XamlVisualEditor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wieslawsoltes%2FXamlVisualEditor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33895175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonia","dock","dotnet","dotnet10","extensibility","ide","lsp","mvvm","reactiveui","visual-editor","xaml","xaml-editor","xamlx"],"created_at":"2026-06-04T08:02:37.709Z","updated_at":"2026-06-04T08:02:38.738Z","avatar_url":"https://github.com/wieslawsoltes.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XamlVisualEditor\n\n[![Build](https://github.com/wieslawsoltes/XamlVisualEditor/actions/workflows/build.yml/badge.svg)](https://github.com/wieslawsoltes/XamlVisualEditor/actions/workflows/build.yml)\n[![Docs](https://github.com/wieslawsoltes/XamlVisualEditor/actions/workflows/docs.yml/badge.svg)](https://github.com/wieslawsoltes/XamlVisualEditor/actions/workflows/docs.yml)\n[![Release](https://github.com/wieslawsoltes/XamlVisualEditor/actions/workflows/release.yml/badge.svg)](https://github.com/wieslawsoltes/XamlVisualEditor/actions/workflows/release.yml)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nXamlVisualEditor is an extensible Avalonia-based visual IDE for editing, previewing,\ninspecting, debugging, and automating XAML applications. It combines an\nAvaloniaEdit code surface, a live design surface, Dock-based tool windows,\nlanguage services, debugger adapters, terminal integration, collaboration\nservices, and a native .NET extension model.\n\nThe repository targets .NET 10 and is built around strict MVVM, ReactiveUI,\ncompiled Avalonia bindings, Dock for Avalonia, Xaml.Behaviors, AvaloniaEdit,\nProDataGrid, Microsoft.Extensions.DependencyInjection, and xUnit/Avalonia\nHeadless tests.\n\n## Highlights\n\n- **Live XAML editing**: parse, serialize, and round-trip XAML through XamlX-backed\n  AST services with minimal text changes.\n- **Visual designer**: instantiate Avalonia controls from AST nodes, map visuals\n  back to source nodes, and support drag/drop, selection, resize handles, rulers,\n  grids, margins, and padding adorners.\n- **Code editor**: AvaloniaEdit integration with syntax highlighting, completion,\n  semantic tokens, diagnostics, and execution-line rendering.\n- **Workspace tooling**: open workspaces, build/clean/rebuild projects, restore\n  state, select startup projects, and integrate file-system backed extension APIs.\n- **Language services**: C# and XAML completion/diagnostics plus an LSP router for\n  external language servers.\n- **Extension-first shell**: built-in and packaged extensions contribute commands,\n  menus, toolbar actions, views, language servers, property editors, and panels.\n- **Debugging**: DAP and .NET SDK debugger integrations, launch validation,\n  breakpoint/call-stack/locals/watch panels, and debug settings tooling.\n- **Developer panels**: solution explorer, file explorer, toolbox, property editor,\n  output/problems, references, tree inspectors, animation editor, collaboration,\n  ACP, MCP, IDE bridge, LSP settings, terminal, and Git views.\n- **Collaboration and agents**: ACP client services, OAuth/device-flow support,\n  permissions, profile storage, and ProEdit-backed collaborative AST operations.\n- **Terminal and Git**: managed terminal emulator/PTY support and Git status/diff\n  parsing surfaced through extension panels.\n- **Test coverage**: unit, integration, performance, and Avalonia Headless UI tests\n  cover parsing, services, extension plumbing, UI flows, terminal behavior, LSP,\n  ACP, previewer protocols, and workspace workflows.\n\n## Repository Layout\n\n| Path | Purpose |\n| --- | --- |\n| `src/XamlVisualEditor.App` | Avalonia application entry point, composition root, views, and resources. |\n| `src/XamlVisualEditor.Shell.ViewModels` | Main window, documents, Dock factories, panels, and shell orchestration ViewModels. |\n| `src/XamlVisualEditor.Extensions` | Native extension SDK contracts, host services, package loading, and contribution registries. |\n| `src/XamlVisualEditor.Xaml.*` | XAML parsing, AST, serialization, intellisense, and language server components. |\n| `src/XamlVisualEditor.Designer.*` | Designer abstractions, rendering, adorners, drag/drop, and previewer host. |\n| `src/XamlVisualEditor.CodeEditor` | AvaloniaEdit integration and editor rendering helpers. |\n| `src/XamlVisualEditor.Workspace` | MSBuild workspace loading, template discovery, assembly resolution, and CLI helpers. |\n| `src/XamlVisualEditor.Lsp` | JSON-RPC/LSP client transport, routing, diagnostics, and test hooks. |\n| `src/XamlVisualEditor.Acp` | Agent Client Protocol client, permissions, profiles, secrets, and process hosting. |\n| `src/XamlVisualEditor.Terminal*` | Terminal emulator core, platform PTY providers, and Avalonia terminal view. |\n| `extensions/` | Built-in extension projects for panels, commands, debugging, templates, Git, MCP, ACP, and compatibility hosts. |\n| `tests/` | Unit, integration, performance, and Avalonia Headless UI test projects. |\n| `tools/` | Extension samples, LSP harness, IDE bridge CLI, and extension host spike. |\n| `docs/` | Internal architecture, extension migration, and API notes. |\n| `site/` | Lunet documentation site published by GitHub Pages. |\n\n## Build\n\nPrerequisites:\n\n- .NET SDK 10.0.x\n- Git submodules initialized when working with the full workspace\n\n```bash\ngit submodule update --init --recursive\ndotnet restore XamlVisualEditor.slnx\ndotnet build XamlVisualEditor.slnx -c Release --no-restore\n```\n\nRun the main test projects:\n\n```bash\ndotnet test tests/XamlVisualEditor.Tests.Unit/XamlVisualEditor.Tests.Unit.csproj -c Release\ndotnet test tests/XamlVisualEditor.Tests.Integration/XamlVisualEditor.Tests.Integration.csproj -c Release\ndotnet test tests/XamlVisualEditor.Tests.UI/XamlVisualEditor.Tests.UI.csproj -c Release\n```\n\nRun the application:\n\n```bash\ndotnet run --project src/XamlVisualEditor.App/XamlVisualEditor.App.csproj\n```\n\n## Documentation\n\nThe documentation site is built with Lunet from `site/`.\n\n```bash\n./build-docs.sh\ncd site\ndotnet tool run lunet serve\n```\n\nThe site covers product features, architecture, extension development,\ndebugging, collaboration, language services, testing, CI, and release guidance.\nExisting internal notes remain in `docs/` and are linked from the site reference\nsection.\n\n## Extension Model\n\nExtensions are packaged as NuGet packages with `xve.extension.json` at the package\nroot and a .NET assembly implementing `IXveExtension`. The extension host exposes\ntyped services for commands, views, workspace access, diagnostics, editor\noperations, navigation, terminal access, settings, storage, logging, dialogs,\npermissions, and panel hosts.\n\nSample extensions are available in `tools/ExtensionSamples/HelloExtension` and\n`tools/ExtensionSamples/LspExtension`.\n\n```bash\ndotnet pack tools/ExtensionSamples/HelloExtension/HelloExtension.csproj -c Release\n```\n\n## NuGet Packages\n\nReusable libraries and built-in extensions carry repository, license, readme,\nicon, Source Link, and symbol package metadata. Release builds pack the solution\ninto `.nupkg` and `.snupkg` artifacts, publish them to NuGet when\n`NUGET_API_KEY` is configured, and attach the packages to the GitHub release.\n\n## Contributing\n\nFollow the repository engineering rules in `AGENTS.md`: strict SOLID and MVVM,\npassive views, ReactiveUI ViewModels, compiled Avalonia bindings, Xaml.Behaviors\nfor UI input, Dock model state in ViewModels, ProDataGrid for tabular/tree data,\nMicrosoft.Extensions.DependencyInjection from a single composition root, and tests\nfor production behavior.\n\nBefore opening a pull request, build the solution, run the relevant test projects,\nand build the Lunet documentation site.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwieslawsoltes%2Fxamlvisualeditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwieslawsoltes%2Fxamlvisualeditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwieslawsoltes%2Fxamlvisualeditor/lists"}