Skip to content

feat(utilities.text.json)!: remove Newtonsoft surface — STJ-3 of #83 (#116)#171

Merged
ChrisonSimtian merged 1 commit into
mainfrom
feature/116-stj3-rewrite-utility-lib
May 25, 2026
Merged

feat(utilities.text.json)!: remove Newtonsoft surface — STJ-3 of #83 (#116)#171
ChrisonSimtian merged 1 commit into
mainfrom
feature/116-stj3-rewrite-utility-lib

Conversation

@ChrisonSimtian

Copy link
Copy Markdown
Collaborator

Summary

Strips the [Obsolete]-marked Newtonsoft.Json surface from Fallout.Utilities.Text.Json (added in 10.3.x as parallel-deprecation overloads). Breaking for v11. This is STJ-3 of the #83 migration tree and unblocks STJ-4/STJ-5 plus the utility-lib-coupled tail of STJ-2/STJ-6.

What's gone

  • Types deleted: JObjectExtensions (GetChildren/GetPropertyValue/GetPropertyStringValue/GetPropertyValueOrNull on JObject), AllWritableContractResolver, Base64JsonConverter<T>.
  • JsonExtensions stripped to STJ only: DefaultSerializerSettings removed; every JsonSerializerSettings-taking overload of ToJson/GetJson/ReadJson/WriteJson/UpdateJson removed; JObject-returning GetJson(this string), ReadJson(this AbsolutePath), UpdateJson(Action<JObject>) removed. STJ overloads now default their JsonSerializerOptions parameter to DefaultSerializerOptions (cleaner ergonomics now that the ambiguity with the Newtonsoft overload is gone).

What's still there (intentionally)

In-repo callers migrated

File Change
Fallout.Common/CI/GitHubActions/GitHubActions.cs PullRequestNumber/PullRequestAction use direct Newtonsoft .Property(name)?.Value.Value<T>() (preserves JObject public surface for GitHubEvent; full JsonObject migration is a separate API-break PR).
Fallout.Tooling/ProcessExtensions.cs StdToJson<T> uses direct JsonConvert.DeserializeObject<T> — Fallout.Tooling is Newtonsoft-bound until #117.
tests/Fallout.Tooling.Tests/OptionsTest.cs Same pattern — Options.JsonSerializerSettings round-trip uses JsonConvert.SerializeObject directly.
tests/Fallout.Common.Tests/SettingsTest.cs Same pattern (Discord settings test).

Diff size

10 files, +38 / −297. Almost all of it is deletion.

Closes

Unblocks

Test plan

  • dotnet build fallout.slnx — 0 warnings, 0 errors
  • dotnet test fallout.slnx — 425/425 tests pass across 10 test DLLs
  • CI ubuntu-latest green

🤖 Generated with Claude Code

…116)

BREAKING: Fallout.Utilities.Text.Json's [Obsolete]-marked Newtonsoft.Json
surface (added in 10.3.x as parallel-deprecation overloads) is gone for v11.

Deleted:
- JObjectExtensions (GetChildren/GetPropertyValue/GetPropertyStringValue/
  GetPropertyValueOrNull on Newtonsoft JObject)
- AllWritableContractResolver
- Base64JsonConverter<T>
- DefaultSerializerSettings + every JsonSerializerSettings overload of
  ToJson / GetJson / ReadJson / WriteJson / UpdateJson
- JObject-returning GetJson / ReadJson / UpdateJson(Action<JObject>)

Kept: Object.ToJObject + Newtonsoft.Json PackageReference — last caller is
Fallout.Tooling's JObject-typed InternalOptions, removed when STJ-4 (#117)
lands.

In-repo callers migrated:
- GitHubActions.cs: PullRequestNumber/Action use direct Newtonsoft
  .Value<T>() now. GitHubEvent stays JObject (separate API-break PR).
- ProcessExtensions.StdToJson: direct JsonConvert.DeserializeObject<T> —
  Fallout.Tooling is Newtonsoft-bound until #117.
- OptionsTest + SettingsTest: same pattern (Options.JsonSerializerSettings
  is Newtonsoft; STJ equivalent moves with #117).

Unblocks STJ-4 (#117), STJ-5 (#118), and the utility-lib-coupled tail of
STJ-2 (#115). Full closure of #116 (delete Object.ToJObject + drop the
Newtonsoft.Json PackageReference) is folded into #117.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ChrisonSimtian
ChrisonSimtian merged commit ef83796 into main May 25, 2026
1 check passed
@ChrisonSimtian
ChrisonSimtian deleted the feature/116-stj3-rewrite-utility-lib branch May 25, 2026 00:42
ChrisonSimtian added a commit that referenced this pull request May 29, 2026
…4-47) (#294)

The original unlist-10.3.40-47.json (#224) only covered the 10.3.40-47
tail and missed 10.3.24-39 — including the entire System.Text.Json
breaking migration (ef83796, #171), which is patch zero of the
contamination.

Adds unlist-10.3.24-47.json: the complete 256-entry batch covering
every published 10.3.x >= 10.3.24 across all 18 package IDs. Boundary
is exact — 10.3.23 (commit 44770a6, #170) is the last clean patch and
is where release/v10.3 is now parked.

Keeps the old 40-47 file as the historical record of what was first
identified; README documents both and the boundary.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant