Skip to content

Commit 6fb6957

Browse files
chore: Remove deprecated integration tests, add modern samples, update snippets, CI, and docs (#4319)
## What this means for you Most of this PR is behind-the-scenes cleanup, but there are a few things that directly benefit you: **Updated code snippets** -- The `ruiprop` snippet (available in Visual Studio, Rider, and ReSharper) now generates the modern C# 13 `field` keyword pattern instead of explicit backing fields: ```csharp // Old snippet output private string _name; public string Name { get => _name; set => this.RaiseAndSetIfChanged(ref _name, value); } // New snippet output public string Name { get; set => this.RaiseAndSetIfChanged(ref field, value); } ``` **New sample applications** -- Three self-contained login samples you can use as a starting point or reference for your own projects: | Sample | Platform | What it demonstrates | |--------|----------|---------------------| | [ReactiveUI.Samples.Wpf](src/examples/ReactiveUI.Samples.Wpf) | WPF | ReactiveUserControl, PasswordBox event marshaling | | [ReactiveUI.Samples.Winforms](src/examples/ReactiveUI.Samples.Winforms) | WinForms | IViewFor with programmatic UI layout | | [ReactiveUI.Samples.Maui](src/examples/ReactiveUI.Samples.Maui) | MAUI | Shell navigation, ReactiveContentPage, DisplayAlertAsync | Each sample shows RxAppBuilder initialization, WhenActivated lifecycle, Bind/BindCommand, reactive validation (login button disabled until fields are filled), async command execution with cancellation, and proper subscription disposal. The existing [Builder.WpfApp](src/examples/ReactiveUI.Builder.WpfApp) and [Builder.BlazorServer](src/examples/ReactiveUI.Builder.BlazorServer) examples have also been updated to use the `field` keyword. **Visual Studio for Mac snippets removed** -- The platform has been discontinued by Microsoft. Rider snippets remain available for macOS users. **Updated README** -- Examples section added with links to all sample projects. UWP and Tizen removed from the packages table. MAUI section updated with supported .NET 9/10 TFMs. **Updated project docs** -- Code of Conduct now references the .NET Foundation Code of Conduct directly. Contributing guidelines simplified to point to the official docs at reactiveui.net/contribute. ## Behind the scenes - Removed the `integrationtests/` directory (UWP, Xamarin.iOS/Android/Mac, net472 WPF/WinForms) -- all targeted deprecated platforms - Added CodeQL security scanning via shared `actions-common` reusable workflow (C#, Actions, JavaScript) - Removed obsolete `build-samples.yml` workflow - MAUI sample builds as net10.0 library on CI to work around platform SDK issues --------- Co-authored-by: Copilot <[email protected]>
1 parent 98f534e commit 6fb6957

202 files changed

Lines changed: 1471 additions & 6963 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitattributes

Lines changed: 58 additions & 284 deletions
Original file line numberDiff line numberDiff line change
@@ -1,289 +1,63 @@
1-
# Catch all for anything we forgot. Add rules if you get CRLF to LF warnings.
1+
# Auto-detect text files and normalise line endings to LF in the repository.
22
* text=auto
33

4-
# Text files that should be normalized to LF in odb.
5-
*.cs text diff=csharp
6-
*.xaml text
7-
*.config text
8-
*.c text
9-
*.h text
10-
*.cpp text
11-
*.hpp text
12-
*.sln text
13-
*.csproj text
14-
*.vcxproj text
4+
# Source code
5+
*.cs text diff=csharp
6+
*.xaml text
7+
*.slnx text
8+
*.sln text eol=crlf
9+
*.csproj text
10+
*.props text
11+
*.targets text
12+
*.json text
13+
*.xml text
14+
*.yml text
15+
*.yaml text
1516
*.md text
16-
*.tt text
17-
*.sh text
17+
*.txt text
18+
*.sh text eol=lf
1819
*.ps1 text
19-
*.cmd text
20-
*.bat text
21-
*.markdown text
22-
*.msbuild text
23-
# Binary files that should not be normalized or diffed
24-
*.png binary
25-
*.jpg binary
26-
*.gif binary
27-
*.ico binary
28-
*.rc binary
29-
*.pfx binary
30-
*.snk binary
31-
*.dll binary
32-
*.exe binary
33-
*.lib binary
34-
*.exp binary
35-
*.pdb binary
36-
*.sdf binary
37-
*.7z binary
20+
*.cmd text eol=crlf
21+
*.bat text eol=crlf
22+
*.config text
23+
*.editorconfig text
3824

39-
# lfs files
40-
*.mht filter=lfs diff=lfs merge=lfs -text
41-
*.ppam filter=lfs diff=lfs merge=lfs -text
42-
*.wmv filter=lfs diff=lfs merge=lfs -text
43-
*.btif filter=lfs diff=lfs merge=lfs -text
44-
*.fla filter=lfs diff=lfs merge=lfs -text
45-
*.qt filter=lfs diff=lfs merge=lfs -text
46-
*.xlam filter=lfs diff=lfs merge=lfs -text
47-
*.xm filter=lfs diff=lfs merge=lfs -text
48-
*.djvu filter=lfs diff=lfs merge=lfs -text
49-
*.woff filter=lfs diff=lfs merge=lfs -text
50-
*.a filter=lfs diff=lfs merge=lfs -text
51-
*.bak filter=lfs diff=lfs merge=lfs -text
52-
*.lha filter=lfs diff=lfs merge=lfs -text
53-
*.mpg filter=lfs diff=lfs merge=lfs -text
54-
*.xltm filter=lfs diff=lfs merge=lfs -text
55-
*.eol filter=lfs diff=lfs merge=lfs -text
56-
*.ipa filter=lfs diff=lfs merge=lfs -text
57-
*.ttf filter=lfs diff=lfs merge=lfs -text
58-
*.uvm filter=lfs diff=lfs merge=lfs -text
59-
*.cmx filter=lfs diff=lfs merge=lfs -text
60-
*.dng filter=lfs diff=lfs merge=lfs -text
61-
*.xltx filter=lfs diff=lfs merge=lfs -text
62-
*.fli filter=lfs diff=lfs merge=lfs -text
63-
*.wmx filter=lfs diff=lfs merge=lfs -text
64-
*.jxr filter=lfs diff=lfs merge=lfs -text
65-
*.pyv filter=lfs diff=lfs merge=lfs -text
66-
*.s7z filter=lfs diff=lfs merge=lfs -text
67-
*.csv filter=lfs diff=lfs merge=lfs -text
68-
*.pptm filter=lfs diff=lfs merge=lfs -text
69-
*.rz filter=lfs diff=lfs merge=lfs -text
70-
*.wm filter=lfs diff=lfs merge=lfs -text
71-
*.xlsx filter=lfs diff=lfs merge=lfs -text
72-
*.bh filter=lfs diff=lfs merge=lfs -text
73-
*.dat filter=lfs diff=lfs merge=lfs -text
74-
*.mid filter=lfs diff=lfs merge=lfs -text
75-
*.mpga filter=lfs diff=lfs merge=lfs -text
76-
*.ogg filter=lfs diff=lfs merge=lfs -text
77-
*.s3m filter=lfs diff=lfs merge=lfs -text
78-
*.mar filter=lfs diff=lfs merge=lfs -text
79-
*.movie filter=lfs diff=lfs merge=lfs -text
80-
*.pptx filter=lfs diff=lfs merge=lfs -text
81-
*.dll filter=lfs diff=lfs merge=lfs -text
82-
*.docm filter=lfs diff=lfs merge=lfs -text
83-
*.m3u filter=lfs diff=lfs merge=lfs -text
84-
*.mov filter=lfs diff=lfs merge=lfs -text
85-
*.aac filter=lfs diff=lfs merge=lfs -text
86-
*.jar filter=lfs diff=lfs merge=lfs -text
87-
*.midi filter=lfs diff=lfs merge=lfs -text
88-
*.mobi filter=lfs diff=lfs merge=lfs -text
89-
*.potm filter=lfs diff=lfs merge=lfs -text
90-
*.woff2 filter=lfs diff=lfs merge=lfs -text
91-
*.cab filter=lfs diff=lfs merge=lfs -text
92-
*.dmg filter=lfs diff=lfs merge=lfs -text
93-
*.pdf filter=lfs diff=lfs merge=lfs -text
94-
*.war filter=lfs diff=lfs merge=lfs -text
95-
*.bz2 filter=lfs diff=lfs merge=lfs -text
96-
*.icns filter=lfs diff=lfs merge=lfs -text
97-
*.slk filter=lfs diff=lfs merge=lfs -text
98-
*.wbmp filter=lfs diff=lfs merge=lfs -text
99-
*.xpm filter=lfs diff=lfs merge=lfs -text
100-
*.xmind filter=lfs diff=lfs merge=lfs -text
101-
*.3g2 filter=lfs diff=lfs merge=lfs -text
102-
*.m4v filter=lfs diff=lfs merge=lfs -text
103-
*.pic filter=lfs diff=lfs merge=lfs -text
104-
*.uvi filter=lfs diff=lfs merge=lfs -text
105-
*.uvp filter=lfs diff=lfs merge=lfs -text
106-
*.xls filter=lfs diff=lfs merge=lfs -text
107-
*.jpgv filter=lfs diff=lfs merge=lfs -text
108-
*.mka filter=lfs diff=lfs merge=lfs -text
109-
*.swf filter=lfs diff=lfs merge=lfs -text
110-
*.uvs filter=lfs diff=lfs merge=lfs -text
111-
*.wav filter=lfs diff=lfs merge=lfs -text
112-
*.ecelp4800 filter=lfs diff=lfs merge=lfs -text
113-
*.mng filter=lfs diff=lfs merge=lfs -text
114-
*.pps filter=lfs diff=lfs merge=lfs -text
115-
*.whl filter=lfs diff=lfs merge=lfs -text
116-
*.arj filter=lfs diff=lfs merge=lfs -text
117-
*.lzh filter=lfs diff=lfs merge=lfs -text
118-
*.raw filter=lfs diff=lfs merge=lfs -text
119-
*.rlc filter=lfs diff=lfs merge=lfs -text
120-
*.sgi filter=lfs diff=lfs merge=lfs -text
121-
*.tar filter=lfs diff=lfs merge=lfs -text
122-
*.au filter=lfs diff=lfs merge=lfs -text
123-
*.dcm filter=lfs diff=lfs merge=lfs -text
124-
*.GIF filter=lfs diff=lfs merge=lfs -text
125-
*.resources filter=lfs diff=lfs merge=lfs -text
126-
*.txz filter=lfs diff=lfs merge=lfs -text
127-
*.rar filter=lfs diff=lfs merge=lfs -text
128-
*.sil filter=lfs diff=lfs merge=lfs -text
129-
*.bk filter=lfs diff=lfs merge=lfs -text
130-
*.DS_Store filter=lfs diff=lfs merge=lfs -text
131-
*.ief filter=lfs diff=lfs merge=lfs -text
132-
*.JPEG filter=lfs diff=lfs merge=lfs -text
133-
*.pbm filter=lfs diff=lfs merge=lfs -text
134-
*.png filter=lfs diff=lfs merge=lfs -text
135-
*.sketch filter=lfs diff=lfs merge=lfs -text
136-
*.tbz2 filter=lfs diff=lfs merge=lfs -text
137-
*.nef filter=lfs diff=lfs merge=lfs -text
138-
*.oga filter=lfs diff=lfs merge=lfs -text
139-
*.zip filter=lfs diff=lfs merge=lfs -text
140-
*.ecelp7470 filter=lfs diff=lfs merge=lfs -text
141-
*.xlt filter=lfs diff=lfs merge=lfs -text
142-
*.exe filter=lfs diff=lfs merge=lfs -text
143-
*.mp4 filter=lfs diff=lfs merge=lfs -text
144-
*.pnm filter=lfs diff=lfs merge=lfs -text
145-
*.ttc filter=lfs diff=lfs merge=lfs -text
146-
*.wdp filter=lfs diff=lfs merge=lfs -text
147-
*.xbm filter=lfs diff=lfs merge=lfs -text
148-
*.ecelp9600 filter=lfs diff=lfs merge=lfs -text
149-
*.pot filter=lfs diff=lfs merge=lfs -text
150-
*.wvx filter=lfs diff=lfs merge=lfs -text
151-
*.uvu filter=lfs diff=lfs merge=lfs -text
152-
*.asf filter=lfs diff=lfs merge=lfs -text
153-
*.dxf filter=lfs diff=lfs merge=lfs -text
154-
*.flv filter=lfs diff=lfs merge=lfs -text
155-
*.mdi filter=lfs diff=lfs merge=lfs -text
156-
*.pcx filter=lfs diff=lfs merge=lfs -text
157-
*.tiff filter=lfs diff=lfs merge=lfs -text
158-
*.bzip2 filter=lfs diff=lfs merge=lfs -text
159-
*.deb filter=lfs diff=lfs merge=lfs -text
160-
*.graffle filter=lfs diff=lfs merge=lfs -text
161-
*.h261 filter=lfs diff=lfs merge=lfs -text
162-
*.jpeg filter=lfs diff=lfs merge=lfs -text
163-
*.ppm filter=lfs diff=lfs merge=lfs -text
164-
*.tif filter=lfs diff=lfs merge=lfs -text
165-
*.ppt filter=lfs diff=lfs merge=lfs -text
166-
*.fbs filter=lfs diff=lfs merge=lfs -text
167-
*.gzip filter=lfs diff=lfs merge=lfs -text
168-
*.o filter=lfs diff=lfs merge=lfs -text
169-
*.sub filter=lfs diff=lfs merge=lfs -text
170-
*.z filter=lfs diff=lfs merge=lfs -text
171-
*.alz filter=lfs diff=lfs merge=lfs -text
172-
*.BMP filter=lfs diff=lfs merge=lfs -text
173-
*.dotm filter=lfs diff=lfs merge=lfs -text
174-
*.key filter=lfs diff=lfs merge=lfs -text
175-
*.rgb filter=lfs diff=lfs merge=lfs -text
176-
*.f4v filter=lfs diff=lfs merge=lfs -text
177-
*.iso filter=lfs diff=lfs merge=lfs -text
178-
*.ai filter=lfs diff=lfs merge=lfs -text
179-
*.dtshd filter=lfs diff=lfs merge=lfs -text
180-
*.fpx filter=lfs diff=lfs merge=lfs -text
181-
*.shar filter=lfs diff=lfs merge=lfs -text
182-
*.img filter=lfs diff=lfs merge=lfs -text
183-
*.rmf filter=lfs diff=lfs merge=lfs -text
184-
*.xz filter=lfs diff=lfs merge=lfs -text
185-
*.eot filter=lfs diff=lfs merge=lfs -text
186-
*.wma filter=lfs diff=lfs merge=lfs -text
187-
*.cpio filter=lfs diff=lfs merge=lfs -text
188-
*.cr2 filter=lfs diff=lfs merge=lfs -text
189-
*.adp filter=lfs diff=lfs merge=lfs -text
190-
*.mpeg filter=lfs diff=lfs merge=lfs -text
191-
*.npx filter=lfs diff=lfs merge=lfs -text
192-
*.pdb filter=lfs diff=lfs merge=lfs -text
193-
*.PNG filter=lfs diff=lfs merge=lfs -text
194-
*.xwd filter=lfs diff=lfs merge=lfs -text
195-
*.egg filter=lfs diff=lfs merge=lfs -text
196-
*.ppsx filter=lfs diff=lfs merge=lfs -text
197-
*.mp4a filter=lfs diff=lfs merge=lfs -text
198-
*.pages filter=lfs diff=lfs merge=lfs -text
199-
*.baml filter=lfs diff=lfs merge=lfs -text
200-
*.bin filter=lfs diff=lfs merge=lfs -text
201-
*.class filter=lfs diff=lfs merge=lfs -text
202-
*.h264 filter=lfs diff=lfs merge=lfs -text
203-
*.lib filter=lfs diff=lfs merge=lfs -text
204-
*.mmr filter=lfs diff=lfs merge=lfs -text
205-
*.dot filter=lfs diff=lfs merge=lfs -text
206-
*.gif filter=lfs diff=lfs merge=lfs -text
207-
*.JPG filter=lfs diff=lfs merge=lfs -text
208-
*.m4a filter=lfs diff=lfs merge=lfs -text
209-
*.so filter=lfs diff=lfs merge=lfs -text
210-
*.tgz filter=lfs diff=lfs merge=lfs -text
211-
*.thmx filter=lfs diff=lfs merge=lfs -text
212-
*.3ds filter=lfs diff=lfs merge=lfs -text
213-
*.bmp filter=lfs diff=lfs merge=lfs -text
214-
*.ogv filter=lfs diff=lfs merge=lfs -text
215-
*.xif filter=lfs diff=lfs merge=lfs -text
216-
*.aiff filter=lfs diff=lfs merge=lfs -text
217-
*.dts filter=lfs diff=lfs merge=lfs -text
218-
*.rip filter=lfs diff=lfs merge=lfs -text
219-
*.vob filter=lfs diff=lfs merge=lfs -text
220-
*.7z filter=lfs diff=lfs merge=lfs -text
221-
*.fh filter=lfs diff=lfs merge=lfs -text
222-
*.flac filter=lfs diff=lfs merge=lfs -text
223-
*.g3 filter=lfs diff=lfs merge=lfs -text
224-
*.jpm filter=lfs diff=lfs merge=lfs -text
225-
*.ppsm filter=lfs diff=lfs merge=lfs -text
226-
*.potx filter=lfs diff=lfs merge=lfs -text
227-
*.zipx filter=lfs diff=lfs merge=lfs -text
228-
*.dsk filter=lfs diff=lfs merge=lfs -text
229-
*.ico filter=lfs diff=lfs merge=lfs -text
230-
*.ktx filter=lfs diff=lfs merge=lfs -text
231-
*.lz filter=lfs diff=lfs merge=lfs -text
232-
*.numbers filter=lfs diff=lfs merge=lfs -text
233-
*.3gp filter=lfs diff=lfs merge=lfs -text
234-
*.fst filter=lfs diff=lfs merge=lfs -text
235-
*.scpt filter=lfs diff=lfs merge=lfs -text
236-
*.epub filter=lfs diff=lfs merge=lfs -text
237-
*.rmvb filter=lfs diff=lfs merge=lfs -text
238-
*.webm filter=lfs diff=lfs merge=lfs -text
239-
*.docx filter=lfs diff=lfs merge=lfs -text
240-
*.pgm filter=lfs diff=lfs merge=lfs -text
241-
*.pya filter=lfs diff=lfs merge=lfs -text
242-
*.rtf filter=lfs diff=lfs merge=lfs -text
243-
*.smv filter=lfs diff=lfs merge=lfs -text
244-
*.tga filter=lfs diff=lfs merge=lfs -text
245-
*.cur filter=lfs diff=lfs merge=lfs -text
246-
*.dwg filter=lfs diff=lfs merge=lfs -text
247-
*.lvp filter=lfs diff=lfs merge=lfs -text
248-
*.pyo filter=lfs diff=lfs merge=lfs -text
249-
*.apk filter=lfs diff=lfs merge=lfs -text
250-
*.ar filter=lfs diff=lfs merge=lfs -text
251-
*.caf filter=lfs diff=lfs merge=lfs -text
252-
*.doc filter=lfs diff=lfs merge=lfs -text
253-
*.h263 filter=lfs diff=lfs merge=lfs -text
254-
*.xlsm filter=lfs diff=lfs merge=lfs -text
255-
*.mp3 filter=lfs diff=lfs merge=lfs -text
256-
*.mxu filter=lfs diff=lfs merge=lfs -text
257-
*.wax filter=lfs diff=lfs merge=lfs -text
258-
*.gz filter=lfs diff=lfs merge=lfs -text
259-
*.mj2 filter=lfs diff=lfs merge=lfs -text
260-
*.otf filter=lfs diff=lfs merge=lfs -text
261-
*.udf filter=lfs diff=lfs merge=lfs -text
262-
*.aif filter=lfs diff=lfs merge=lfs -text
263-
*.lzma filter=lfs diff=lfs merge=lfs -text
264-
*.pyc filter=lfs diff=lfs merge=lfs -text
265-
*.weba filter=lfs diff=lfs merge=lfs -text
266-
*.webp filter=lfs diff=lfs merge=lfs -text
267-
*.cgm filter=lfs diff=lfs merge=lfs -text
268-
*.mkv filter=lfs diff=lfs merge=lfs -text
269-
*.ppa filter=lfs diff=lfs merge=lfs -text
270-
*.uvh filter=lfs diff=lfs merge=lfs -text
271-
*.xpi filter=lfs diff=lfs merge=lfs -text
272-
*.psd filter=lfs diff=lfs merge=lfs -text
273-
*.xlsb filter=lfs diff=lfs merge=lfs -text
274-
*.tbz filter=lfs diff=lfs merge=lfs -text
275-
*.wim filter=lfs diff=lfs merge=lfs -text
276-
*.ape filter=lfs diff=lfs merge=lfs -text
277-
*.avi filter=lfs diff=lfs merge=lfs -text
278-
*.dex filter=lfs diff=lfs merge=lfs -text
279-
*.dra filter=lfs diff=lfs merge=lfs -text
280-
*.dvb filter=lfs diff=lfs merge=lfs -text
281-
*.jpg filter=lfs diff=lfs merge=lfs -text
282-
*.xla filter=lfs diff=lfs merge=lfs -text
283-
*.fvt filter=lfs diff=lfs merge=lfs -text
284-
*.lzo filter=lfs diff=lfs merge=lfs -text
285-
*.pea filter=lfs diff=lfs merge=lfs -text
286-
*.ras filter=lfs diff=lfs merge=lfs -text
287-
*.tlz filter=lfs diff=lfs merge=lfs -text
288-
*.viv filter=lfs diff=lfs merge=lfs -text
289-
*.winmd filter=lfs diff=lfs merge=lfs -text
25+
# Binary files (do not normalise or diff)
26+
*.png binary
27+
*.jpg binary
28+
*.gif binary
29+
*.ico binary
30+
*.pfx binary
31+
*.snk binary
32+
33+
# Git LFS - images
34+
*.png filter=lfs diff=lfs merge=lfs -text
35+
*.jpg filter=lfs diff=lfs merge=lfs -text
36+
*.gif filter=lfs diff=lfs merge=lfs -text
37+
*.ico filter=lfs diff=lfs merge=lfs -text
38+
*.bmp filter=lfs diff=lfs merge=lfs -text
39+
*.psd filter=lfs diff=lfs merge=lfs -text
40+
*.webp filter=lfs diff=lfs merge=lfs -text
41+
42+
# Git LFS - fonts
43+
*.ttf filter=lfs diff=lfs merge=lfs -text
44+
*.otf filter=lfs diff=lfs merge=lfs -text
45+
*.woff filter=lfs diff=lfs merge=lfs -text
46+
*.woff2 filter=lfs diff=lfs merge=lfs -text
47+
48+
# Git LFS - archives
49+
*.zip filter=lfs diff=lfs merge=lfs -text
50+
*.gz filter=lfs diff=lfs merge=lfs -text
51+
*.7z filter=lfs diff=lfs merge=lfs -text
52+
*.tar filter=lfs diff=lfs merge=lfs -text
53+
54+
# Git LFS - compiled binaries
55+
*.dll filter=lfs diff=lfs merge=lfs -text
56+
*.exe filter=lfs diff=lfs merge=lfs -text
57+
*.pdb filter=lfs diff=lfs merge=lfs -text
58+
*.lib filter=lfs diff=lfs merge=lfs -text
59+
*.so filter=lfs diff=lfs merge=lfs -text
60+
*.winmd filter=lfs diff=lfs merge=lfs -text
61+
62+
# Git LFS - documents
63+
*.pdf filter=lfs diff=lfs merge=lfs -text

.github/workflows/build-samples.yml

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)