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
11 changes: 10 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [10.3.0] / 2026-05-22
## [Unreleased] — 11.0

### Breaking changes
- **`Fallout.Utilities.Text.Json` Newtonsoft surface removed** (#116, STJ-3 of #83). The `[Obsolete]`-marked Newtonsoft.Json overloads added in 10.3.x are gone:
- **Deleted types:** `JObjectExtensions` (`GetChildren`/`GetPropertyValue`/`GetPropertyStringValue`/`GetPropertyValueOrNull` on `JObject`), `AllWritableContractResolver`, `Base64JsonConverter<T>`.
- **`JsonExtensions` stripped to System.Text.Json only**: `DefaultSerializerSettings` removed (use `DefaultSerializerOptions`); the `JsonSerializerSettings`-taking overloads of `ToJson` / `GetJson` / `ReadJson` / `WriteJson` / `UpdateJson` and the `JObject`-returning `GetJson`/`ReadJson`/`UpdateJson(Action<JObject>)` are gone. Equivalent STJ surface: same method names taking `JsonSerializerOptions` (now defaulted to `DefaultSerializerOptions` when omitted), plus `GetJsonObject` / `ReadJsonObject` / `UpdateJsonObject(Action<JsonObject>)` for `JsonNode`-based access.
- **Migration**: replace `obj.ToJson(settings)` with `obj.ToJson(JsonExtensions.DefaultSerializerOptions)` (or pass your own `JsonSerializerOptions`); replace `content.GetJson<JObject>()` with `content.GetJsonObject()`; replace `JObject.GetPropertyValue<T>(name)` with `JsonObject.GetPropertyValue<T>(name)` (same method name, different receiver type via `using System.Text.Json.Nodes`).
- **Still pending**: `Object.ToJObject` and the `Newtonsoft.Json` `PackageReference` remain in `Fallout.Utilities.Text.Json` until STJ-4 (Fallout.Tooling, #117) lands — `Fallout.Tooling.Options.InternalOptions` is typed `JObject` and drives the last caller.


- **Fixed `Fallout.SolutionModel` 10.2.24–10.2.34 unrestorable** (#107): the vendored SolutionPersistence wrapper was `IsPackable=false`, so `dotnet pack` fell back to emitting the dependency under the *assembly* name (`Microsoft.VisualStudio.SolutionPersistence`) at the Fallout version — which doesn't exist on nuget.org. Wrapper now packs as `Fallout.VisualStudio.SolutionPersistence` (PackageId set explicitly; `AssemblyName` preserved for drop-in type identity), so `Fallout.SolutionModel.nuspec` declares the correct transitive dep. Also affected `Fallout.Common`, `Fallout.Build`, `Fallout.ProjectModel`, `Fallout.Components` — all fixed.
- **`--skip-duplicate` on the publish push** (#108): release.yml's `IPublish.PushSettings` now enables skip-duplicate, so a partial publish failure (e.g. one package's API key permission gap) no longer makes reruns error on the already-uploaded versions. Pipeline is idempotent.
- **Fixed `build.ps1` bootstrap on PowerShell 7.5+** (#15): the script now uses `Join-Path` for SDK resolution so newer PowerShell's stricter path handling doesn't break the launcher.
Expand Down
7 changes: 3 additions & 4 deletions src/Fallout.Common/CI/GitHubActions/GitHubActions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,9 @@ internal GitHubActions()

public JObject GitHubEvent => _eventContext.Value;
public bool IsPullRequest => EventName == "pull_request";
#pragma warning disable CS0618 // JObjectExtensions retires in v11; PullRequestNumber/Action follow when GitHubEvent migrates to JsonObject (API-break, separate PR).
public int? PullRequestNumber => GitHubEvent.GetPropertyValue<int>("number");
public string PullRequestAction => GitHubEvent.GetPropertyStringValue("action");
#pragma warning restore CS0618
// Note: GitHubEvent stays JObject (Newtonsoft) public surface for v11; full JsonObject migration is a separate API-break PR.
public int? PullRequestNumber => GitHubEvent.Property("number")?.Value.Value<int>();
public string PullRequestAction => GitHubEvent.Property("action")?.Value.Value<string>();

public AbsolutePath StepSummaryFile => EnvironmentInfo.GetVariable("GITHUB_STEP_SUMMARY");

Expand Down
6 changes: 3 additions & 3 deletions src/Fallout.Tooling/ProcessExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Fallout.Common.Utilities;

Expand Down Expand Up @@ -52,9 +53,8 @@ public static string StdToText(this IEnumerable<Output> output)

public static T StdToJson<T>(this IEnumerable<Output> output)
{
#pragma warning disable CS0618 // GetJson<T>(Newtonsoft) retires in v11; this whole StdToJson surface is part of the Fallout.Tooling migration follow-up.
return output.StdToText().GetJson<T>();
#pragma warning restore CS0618
// Fallout.Tooling stays on Newtonsoft until STJ-4 (#117); call Newtonsoft directly instead of through the util lib.
return JsonConvert.DeserializeObject<T>(output.StdToText());
}

public static JObject StdToJson(this IEnumerable<Output> output)
Expand Down
26 changes: 0 additions & 26 deletions src/Fallout.Utilities.Text.Json/AllWritableContractResolver.cs

This file was deleted.

32 changes: 0 additions & 32 deletions src/Fallout.Utilities.Text.Json/Base64JsonConverter.cs

This file was deleted.

29 changes: 0 additions & 29 deletions src/Fallout.Utilities.Text.Json/JObject.GetChildren.cs

This file was deleted.

45 changes: 0 additions & 45 deletions src/Fallout.Utilities.Text.Json/JObject.GetPropertyValue.cs

This file was deleted.

Loading
Loading