diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index efda60c..324fc91 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 '(?<=)[^<]+' 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: diff --git a/AGENTS.md b/AGENTS.md index d0f14d2..5c56329 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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 @@ -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 diff --git a/Observables.Samples.Events.Reactive/Program.cs b/Observables.Samples.Events.Reactive/Program.cs index 45dec10..e8f446c 100644 --- a/Observables.Samples.Events.Reactive/Program.cs +++ b/Observables.Samples.Events.Reactive/Program.cs @@ -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(); diff --git a/Observables.Samples.Events/Program.cs b/Observables.Samples.Events/Program.cs index add91d1..e1d6a2b 100644 --- a/Observables.Samples.Events/Program.cs +++ b/Observables.Samples.Events/Program.cs @@ -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(); diff --git a/Observables.Samples.Grpc/Program.cs b/Observables.Samples.Grpc/Program.cs index eb434d1..9f1004b 100644 --- a/Observables.Samples.Grpc/Program.cs +++ b/Observables.Samples.Grpc/Program.cs @@ -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(); diff --git a/Observables.Samples.Grpc/README.md b/Observables.Samples.Grpc/README.md index 0c59c1d..e00fa42 100644 --- a/Observables.Samples.Grpc/README.md +++ b/Observables.Samples.Grpc/README.md @@ -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 @@ -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. diff --git a/Observables.Samples.Mqtt/Program.cs b/Observables.Samples.Mqtt/Program.cs index 3d26496..82e3bba 100644 --- a/Observables.Samples.Mqtt/Program.cs +++ b/Observables.Samples.Mqtt/Program.cs @@ -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(); diff --git a/Observables.Samples.RestAPI.Reactive/Program.cs b/Observables.Samples.RestAPI.Reactive/Program.cs index 202e4a9..1528e24 100644 --- a/Observables.Samples.RestAPI.Reactive/Program.cs +++ b/Observables.Samples.RestAPI.Reactive/Program.cs @@ -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(); diff --git a/Observables.Samples.RestAPI/Program.cs b/Observables.Samples.RestAPI/Program.cs index 573e4d2..a9ae459 100644 --- a/Observables.Samples.RestAPI/Program.cs +++ b/Observables.Samples.RestAPI/Program.cs @@ -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(); diff --git a/Observables.Samples.SignalR/Program.cs b/Observables.Samples.SignalR/Program.cs index 71274e8..9af2108 100644 --- a/Observables.Samples.SignalR/Program.cs +++ b/Observables.Samples.SignalR/Program.cs @@ -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(); diff --git a/Observables.Samples.WebSocket/Program.cs b/Observables.Samples.WebSocket/Program.cs index 709f8de..08d65a9 100644 --- a/Observables.Samples.WebSocket/Program.cs +++ b/Observables.Samples.WebSocket/Program.cs @@ -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(); diff --git a/README.md b/README.md index 2912208..04a730e 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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()` / `` ? see project `README.md` | -| **Observables.Samples.RestAPI** | `Task` + `Observable`, list GET, `ApiException` with MockHttp ? see project `README.md` | +| **Observables.Samples.Events.Routed** | Avalonia `RoutedEvents()` / `` - see project `README.md` | +| **Observables.Samples.RestAPI** | `Task` + `Observable`, list GET, `ApiException` with MockHttp - see project `README.md` | | **Observables.Samples.RestAPI.Reactive** | `IObservable` + `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 @@ -79,4 +79,4 @@ Canonical docs: **[Observables.Docs](https://github.com/Skymly/Observables.Docs) ## License -MIT ? see [LICENSE](LICENSE). +MIT - see [LICENSE](LICENSE).