Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,22 @@ jobs:
with:
dotnet-version: 8.0.x

- name: Wait for Observables packages on nuget.org
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
run: |
VERSION=$(grep -oP '(?<=<ObservablesPackageVersion>)[^<]+' Directory.Build.props)
PACKAGE=observables.events.r3
for i in $(seq 1 10); do
if curl -fsS "https://api.nuget.org/v3-flatcontainer/${PACKAGE}/index.json" | grep -q "\"${VERSION}\""; then
echo "Package Observables.Events.R3 ${VERSION} found on attempt ${i}"
exit 0
fi
echo "Waiting for Observables.Events.R3 ${VERSION} (attempt ${i}/10)..."
sleep 30
done
echo "Package Observables.Events.R3 ${VERSION} not found after retries"
exit 1

- name: Build and run CI samples via Nuke (skips Avalonia Routed)
run: dotnet run --project build/_build.csproj -- --target Ci --configuration Release
env:
Expand Down
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Observables.Samples �AI agent notes
# Observables.Samples AI agent notes

## Scope

This repository contains **sample apps only**. Do not add source generators or library code here �change [Observables](https://github.com/Skymly/Observables) instead.
This repository contains **sample apps only**. Do not add source generators or library code here change [Observables](https://github.com/Skymly/Observables) instead.

## Local development

Expand All @@ -14,7 +14,7 @@ This repository contains **sample apps only**. Do not add source generators or l

## Language

- User chat: 简体中�(unless requested otherwise).
- User chat: ???? (unless requested otherwise).
- Commit messages and GitHub Issue/PR text: **English**.

## Git
Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.Events.Reactive/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using Observables.Samples.Events.Models;
using System.Reactive.Linq;

Console.WriteLine("Observables.Samples.Events.Reactive �IObservable from classic events");
Console.WriteLine("Observables.Samples.Events.Reactive - IObservable from classic events");
Console.WriteLine();

var click = new ClickSource();
Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.Events/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Observables.Samples.Events.Demos;

Console.WriteLine("Observables.Samples.Events �R3 classic event wrappers");
Console.WriteLine("Observables.Samples.Events - R3 classic event wrappers");
Console.WriteLine(Observables.Samples.Events.SampleMetadata.Describe());
Console.WriteLine();

Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.Grpc/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Observables.Samples.Grpc.Demos;

Console.WriteLine("Observables.Samples.Grpc �declarative gRPC proxy (R3)");
Console.WriteLine("Observables.Samples.Grpc - declarative gRPC proxy (R3)");
Console.WriteLine(Observables.Samples.Grpc.SampleMetadata.Describe());
Console.WriteLine();

Expand Down
4 changes: 2 additions & 2 deletions Observables.Samples.Grpc/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Observables.Samples.Grpc

Console sample for **`Observables.Grpc.R3`** `0.1.0-preview6` (declarative gRPC interface �R3 `Observable` + `GrpcService.For`).
Console sample for **`Observables.Grpc.R3`** `0.1.0-preview6` (declarative gRPC interface -> R3 `Observable` + `GrpcService.For`).

## NuGet

Expand All @@ -12,4 +12,4 @@ Console sample for **`Observables.Grpc.R3`** `0.1.0-preview6` (declarative gRPC

## CI behavior

`RegistrationDemo` only checks that the source generator registered a factory (null `CallInvoker` �`ArgumentNullException`). No network I/O.
`RegistrationDemo` only checks that the source generator registered a factory (null `CallInvoker` -> `ArgumentNullException`). No network I/O.
2 changes: 1 addition & 1 deletion Observables.Samples.Mqtt/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Observables.Samples.Mqtt.Demos;

Console.WriteLine("Observables.Samples.Mqtt �declarative MQTT topic proxy (R3)");
Console.WriteLine("Observables.Samples.Mqtt - declarative MQTT topic proxy (R3)");
Console.WriteLine(Observables.Samples.Mqtt.SampleMetadata.Describe());
Console.WriteLine();

Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.RestAPI.Reactive/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using Observables.Samples.RestAPI.Models;
using RichardSzalay.MockHttp;

Console.WriteLine("Observables.Samples.RestAPI.Reactive �IObservable HTTP client");
Console.WriteLine("Observables.Samples.RestAPI.Reactive - IObservable HTTP client");
Console.WriteLine();

using var mockHttp = new MockHttpMessageHandler();
Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.RestAPI/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Observables.Samples.RestAPI.Demos;

Console.WriteLine("Observables.Samples.RestAPI �declarative HTTP (Task + R3 Observable)");
Console.WriteLine("Observables.Samples.RestAPI - declarative HTTP (Task + R3 Observable)");
Console.WriteLine(Observables.Samples.RestAPI.SampleMetadata.Describe());
Console.WriteLine();

Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.SignalR/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Observables.Samples.SignalR.Demos;

Console.WriteLine("Observables.Samples.SignalR �declarative hub proxy (R3)");
Console.WriteLine("Observables.Samples.SignalR - declarative hub proxy (R3)");
Console.WriteLine(Observables.Samples.SignalR.SampleMetadata.Describe());
Console.WriteLine();

Expand Down
2 changes: 1 addition & 1 deletion Observables.Samples.WebSocket/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Observables.Samples.WebSocket.Demos;

Console.WriteLine("Observables.Samples.WebSocket �declarative WebSocket proxy (R3)");
Console.WriteLine("Observables.Samples.WebSocket - declarative WebSocket proxy (R3)");
Console.WriteLine(Observables.Samples.WebSocket.SampleMetadata.Describe());
Console.WriteLine();

Expand Down
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Preview packages: **tag + NuGet only** (no GitHub Release). See Observables `AGE

## Build and run (NuGet, default)

Requires **.NET 8 SDK** only ? no sibling `../Observables` clone required.
Requires **.NET 8 SDK** only - no sibling `../Observables` clone required.

```powershell
dotnet restore Observables.Samples.slnx
Expand Down Expand Up @@ -56,15 +56,15 @@ Requires `../Observables/Observables.slnx`. See **`build/README-LocalSourceGener

| Project | Demonstrates |
|---------|----------------|
| **Observables.Samples.Events** | `Events()`, `EventHandlers()`, multiple subscribers ? see project `README.md` |
| **Observables.Samples.Events** | `Events()`, `EventHandlers()`, multiple subscribers - see project `README.md` |
| **Observables.Samples.Events.Reactive** | `IObservable` from classic events |
| **Observables.Samples.Events.Routed** | Avalonia `RoutedEvents()` / `<ObservableRoutedEvents>` ? see project `README.md` |
| **Observables.Samples.RestAPI** | `Task` + `Observable<T>`, list GET, `ApiException` with MockHttp ? see project `README.md` |
| **Observables.Samples.Events.Routed** | Avalonia `RoutedEvents()` / `<ObservableRoutedEvents>` - see project `README.md` |
| **Observables.Samples.RestAPI** | `Task` + `Observable<T>`, list GET, `ApiException` with MockHttp - see project `README.md` |
| **Observables.Samples.RestAPI.Reactive** | `IObservable<T>` + `FirstAsync().ToTask()`, 404 handling |
| **Observables.Samples.SignalR** | `[Hub]` proxy registration check (no live server in CI) ? see project `README.md` |
| **Observables.Samples.Mqtt** | `[Mqtt]` proxy registration check (local Observables; no broker in CI) ? see project `README.md` |
| **Observables.Samples.WebSocket** | `[WebSocket]` proxy registration check (no live server in CI) ? see project `README.md` |
| **Observables.Samples.Grpc** | `[Grpc]` proxy registration check (no live server in CI) ? see project `README.md` |
| **Observables.Samples.SignalR** | `[Hub]` proxy registration check (no live server in CI) - see project `README.md` |
| **Observables.Samples.Mqtt** | `[Mqtt]` proxy registration check (local Observables; no broker in CI) - see project `README.md` |
| **Observables.Samples.WebSocket** | `[WebSocket]` proxy registration check (no live server in CI) - see project `README.md` |
| **Observables.Samples.Grpc** | `[Grpc]` proxy registration check (no live server in CI) - see project `README.md` |

## Documentation

Expand All @@ -79,4 +79,4 @@ Canonical docs: **[Observables.Docs](https://github.com/Skymly/Observables.Docs)

## License

MIT ? see [LICENSE](LICENSE).
MIT - see [LICENSE](LICENSE).
Loading