Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
74882b3
chore: ignore Claude Code workspace folders
glennawatson Sep 25, 2026
83d1edd
test: add generator benchmarks with EventPipe allocation tracing
glennawatson Sep 25, 2026
b20ee61
test: host the generator benchmarks on current Roslyn against the Ros…
glennawatson Sep 25, 2026
3f3cbfc
feat!: remove [ObservableAsProperty] and IViewFor view registration, …
glennawatson Sep 25, 2026
48e5adc
test: compare generator output with snapshots without Verify
glennawatson Sep 25, 2026
fba0558
test: abbreviate generator snapshot names to stay inside the Windows …
glennawatson Sep 25, 2026
44a638f
chore(deps): update packages to their latest releases
glennawatson Sep 25, 2026
7ab0cbc
refactor: replace checked-in PolySharp output with shared polyfills
glennawatson Sep 25, 2026
6176f54
refactor: write [Reactive] properties through an indentation-aware wr…
glennawatson Sep 25, 2026
0360590
perf: cut allocations in shared extraction
glennawatson Sep 25, 2026
3a9891b
refactor: write [BindableDerivedList] properties through the indentat…
glennawatson Sep 25, 2026
78e394a
refactor: write [ReactiveCollection] properties through the indentati…
glennawatson Sep 25, 2026
6ccfd11
refactor: write [ReactiveCommand] commands through the indentation-aw…
glennawatson Sep 25, 2026
3ad1a74
refactor: write [RoutedControlHost] hosts through the indentation-awa…
glennawatson Sep 25, 2026
bd1a068
refactor: write [ViewModelControlHost] hosts through the indentation-…
glennawatson Sep 25, 2026
1c521a6
refactor: write IViewFor implementations through the indentation-awar…
glennawatson Sep 25, 2026
49de210
refactor: write IReactiveObject implementations through the indentati…
glennawatson Sep 25, 2026
ba37e2a
refactor: remove TargetInfo's string-built containing-type declarations
glennawatson Sep 25, 2026
9f01032
docs: point [ObservableAsProperty] and view registration at ReactiveU…
glennawatson Sep 25, 2026
30ed991
perf: discover [IViewFor] and [IReactiveObject] with ForAttributeWith…
glennawatson Sep 25, 2026
6cbc44f
perf: write each type's file from its own output so unchanged types s…
glennawatson Sep 25, 2026
f8df7c4
fix: stop generated [ReactiveCollection] properties leaking a handler…
glennawatson Sep 25, 2026
4275010
test: measure allocations from EventPipe traces, including incrementa…
glennawatson Sep 25, 2026
6e250c6
docs: describe the EventPipe allocation measurements and the pipeline…
glennawatson Sep 25, 2026
f0c3c28
fix: build the Avalonia and MAUI test apps again
glennawatson Sep 25, 2026
a513a6f
chore: store every file as UTF-8 without a byte order mark, with LF l…
glennawatson Sep 25, 2026
9773705
docs: address the website review of the ReactiveUI.Binding move
glennawatson Sep 25, 2026
2592065
docs: correct CLAUDE.md for the generators as they are now
glennawatson Sep 25, 2026
769371c
docs: add AGENTS.md pointing at CLAUDE.md
glennawatson Sep 25, 2026
2b3fbec
fix: name IViewFor and the view locator from the ReactiveUI the proje…
glennawatson Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ root = true
# Default settings
#############################################
[*]
# Every file is UTF-8 without a byte order mark, with LF line endings, on every platform. XAML included.
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
Expand Down Expand Up @@ -1429,6 +1431,7 @@ dotnet_diagnostic.SST1522.severity = error # A file has more code lines than the
dotnet_diagnostic.SST1523.severity = error # A member has more code lines than the configured maximum (default 60)
dotnet_diagnostic.SST1524.severity = error # A switch section has more code lines than the configured maximum (default 20)
dotnet_diagnostic.SST1525.severity = error # A multi-statement `switch` section has no braces; the braces-on policy extends to switch sections. Code fix wraps it.
dotnet_diagnostic.SST1534.severity = none # Switch braces that scope nothing — conflicts with SST1525's braces-on policy
dotnet_diagnostic.SST1526.severity = error # A wrapped binary expression places the operator inconsistently. Configurable (`before`/`after`, default before). Opt-in.
dotnet_diagnostic.SST1527.severity = error # The `=>` of an expression-bodied member wraps inconsistently. Configurable. Opt-in.
dotnet_diagnostic.SST1528.severity = error # The `=` of a wrapped initializer wraps inconsistently. Configurable. Opt-in.
Expand Down Expand Up @@ -2827,9 +2830,6 @@ indent_size = 2
[*.sh]
end_of_line = lf

[*.{cmd, bat}]
end_of_line = crlf

#############################################
# Test projects (TUnit)
#############################################
Expand Down
14 changes: 13 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,13 @@
*.cs text eol=lf
# Text files are stored and checked out with LF line endings on every platform.
# Files are UTF-8 without a byte order mark; .editorconfig sets that for editors.
* text=auto eol=lf

# Binary files are never normalised.
*.png binary
*.jpg binary
*.ico binary
*.snk binary
*.dll binary
*.exe binary
*.nupkg binary
*.nettrace binary
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -348,3 +348,10 @@ MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# Claude Code local workspace
.claude/

# BenchmarkDotNet
**/.bdn/
**/BenchmarkDotNet.Artifacts/
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# AGENTS.md

Compatibility entrypoint only.

Follow [CLAUDE.md](./CLAUDE.md) in this repository as the authoritative instruction file.
158 changes: 112 additions & 46 deletions CLAUDE.md

Large diffs are not rendered by default.

265 changes: 48 additions & 217 deletions README.md

Large diffs are not rendered by default.

31 changes: 15 additions & 16 deletions src/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,41 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
<CodeAnalysisVersion>4.14.0</CodeAnalysisVersion>
<RoslynCommonAnalyzersVersion>3.40.2</RoslynCommonAnalyzersVersion>
<RoslynCommonAnalyzersVersion>5.1.2</RoslynCommonAnalyzersVersion>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.401" />
<PackageVersion Include="MinVer" Version="8.0.0" />
<PackageVersion Include="StyleSharp.Analyzers" Version="$(RoslynCommonAnalyzersVersion)"/>
<PackageVersion Include="PerformanceSharp.Analyzers" Version="$(RoslynCommonAnalyzersVersion)"/>
<PackageVersion Include="SecuritySharp.Analyzers" Version="$(RoslynCommonAnalyzersVersion)"/>
<PackageVersion Include="StyleSharp.Analyzers" Version="$(RoslynCommonAnalyzersVersion)" />
<PackageVersion Include="PerformanceSharp.Analyzers" Version="$(RoslynCommonAnalyzersVersion)" />
<PackageVersion Include="SecuritySharp.Analyzers" Version="$(RoslynCommonAnalyzersVersion)" />
<PackageVersion Include="Roslynator.Analyzers" Version="5.0.0" />
<PackageVersion Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
<PackageVersion Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="5.3.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="5.9.0" />
<PackageVersion Include="Microsoft.CodeAnalysis" Version="$(CodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="$(CodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="$(CodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="$(CodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(CodeAnalysisVersion)" />
<PackageVersion Include="PolySharp" Version="1.16.0" />
<PackageVersion Include="Avalonia" Version="12.1.2" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="12.1.2" />
<PackageVersion Include="Avalonia.Fonts.Inter" Version="12.1.2" />
<PackageVersion Include="Avalonia" Version="12.1.3" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="12.1.3" />
<PackageVersion Include="Avalonia.Fonts.Inter" Version="12.1.3" />
<PackageVersion Include="ReactiveUI.Avalonia" Version="12.1.2" />
<PackageVersion Include="Avalonia.Diagnostics" Version="11.3.22" />
<PackageVersion Include="Avalonia.Desktop" Version="12.1.2" />
<PackageVersion Include="Avalonia.Desktop" Version="12.1.3" />
<PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="10.0.12" />
<PackageVersion Include="DynamicData" Version="9.4.33" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.10.1" />
<PackageVersion Include="System.Formats.Asn1" Version="10.0.12" />
<PackageVersion Include="PublicApiGenerator" Version="11.5.4" />
<PackageVersion Include="Splat" Version="21.0.0" />
<PackageVersion Include="ReactiveUI" Version="24.2.0" />
<PackageVersion Include="ReactiveUI.Reactive" Version="24.2.0" />
<PackageVersion Include="ReactiveUI.Maui" Version="24.2.0" />
<PackageVersion Include="ReactiveUI" Version="24.3.0" />
<PackageVersion Include="ReactiveUI.Reactive" Version="24.3.0" />
<PackageVersion Include="ReactiveUI.Maui" Version="24.3.0" />
<PackageVersion Include="System.Reactive" Version="7.0.0" />
<PackageVersion Include="TUnit" Version="1.61.38" />
<PackageVersion Include="Verify.TUnit" Version="31.20.0" />
<PackageVersion Include="Verify.SourceGenerators" Version="2.5.0" />
<PackageVersion Include="TUnit" Version="1.69.16" />
<PackageVersion Include="BenchmarkDotNet" Version="0.16.0-preview.2" />
<PackageVersion Include="Microsoft.Diagnostics.Tracing.TraceEvent" Version="3.2.6" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class TestVM
{
/// <inheritdoc cref="_test1"/>
Expand All @@ -18,4 +17,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class TestVM
{
/// <inheritdoc cref="_publicItems"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class TestVM
{
/// <inheritdoc cref="_items"/>
Expand All @@ -18,4 +17,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class TestVM
{
/// <inheritdoc cref="_dates"/>
Expand All @@ -21,4 +20,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: Namespace1.TestVM.BindableDerivedList.g.cs
//HintName: Namespace1.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace Namespace1
{

public partial class TestVM
{
/// <inheritdoc cref="_numbers"/>
Expand All @@ -18,4 +17,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: Namespace2.TestVM.BindableDerivedList.g.cs
//HintName: Namespace2.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace Namespace2
{

public partial class TestVM
{
/// <inheritdoc cref="_names"/>
Expand All @@ -18,4 +17,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class TestVM
{
/// <inheritdoc cref="_statuses"/>
Expand All @@ -18,4 +17,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.GenericVM`1.BindableDerivedList.g.cs
//HintName: TestNs.GenericVM`1.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class GenericVM<T>
{
/// <inheritdoc cref="_items"/>
Expand All @@ -18,4 +17,4 @@ public partial class GenericVM<T>
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//HintName: ReactiveUI.SourceGenerators.BindableDerivedListAttribute.g.cs
// Copyright (c) 2026 .NET Foundation and Contributors. All rights reserved.
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for full license information.

// <auto-generated/>
#pragma warning disable
#nullable enable
namespace ReactiveUI.SourceGenerators;

/// <summary>
/// ReactiveAttribute.
/// </summary>
/// <seealso cref="Attribute" />
[global::System.AttributeUsage(global::System.AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
internal sealed class BindableDerivedListAttribute : global::System.Attribute
{
/// <summary>
/// Gets the AccessModifier of the BindableDerivedList property.
/// </summary>
/// <value>
/// The AccessModifier of the property.
/// </value>
public PropertyAccessModifier AccessModifier { get; init; }
}
#nullable restore
#pragma warning restore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
//HintName: TestNs.TestVM.BindableDerivedList.g.cs
// <auto-generated/>
using System.Collections.ObjectModel;
using DynamicData;
Expand All @@ -9,7 +9,6 @@

namespace TestNs
{

public partial class TestVM
{
/// <inheritdoc cref="_ids"/>
Expand All @@ -18,4 +17,4 @@ public partial class TestVM
}
}
#nullable restore
#pragma warning restore
#pragma warning restore
Loading
Loading