chore: align with latest standards and prepare 1.0.0 - #15
Merged
Conversation
Brings the repo current with the four NextIteration.Standards clauses that landed after the 2026-08-20 adoption, and cuts the version over to 1.0.0. Standards alignment: - §1.2.1 / §5.2: enable EnforceCodeStyleInBuild and adopt the revised canonical .editorconfig (byte-identical). The IDE style analyzers now gate the house style in-build under TreatWarningsAsErrors. Bringing the code to green converted two collection initialisations in SettingsStore to collection expressions and the test project's file-scoped namespaces to block-scoped; no runtime behaviour changed. - §2.7: add IDE0005 to the test project NoWarn. - §4.4 / §3.0.1: add the CodeQL query-filters block so codeql.yml matches the template (no P/Invoke here, so it matches nothing — carried for alignment). Release prep: - Bump <Version> 0.3.0 -> 1.0.0. Public API and target frameworks unchanged; 1.0.0 commits the surface to SemVer. - Roll the CHANGELOG [Unreleased] section into [1.0.0] — 2026-08-21. Build clean at zero warnings; all 64 tests (32 x net8.0/net10.0) pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| { | ||
| console.Input.PushTextWithEnter(line); | ||
| } | ||
| var console = new TestConsole().Interactive(); |
| Assert.Contains("Unknown settings class", result.Output, StringComparison.Ordinal); | ||
| Assert.Contains("SampleSettings", result.Output, StringComparison.Ordinal); | ||
| private static string FileFor<T>(string directory) => | ||
| Path.Combine(directory, typeof(T).Name + ".json"); |
| Directory.CreateDirectory(Path); | ||
| } | ||
| public string Path { get; } = | ||
| System.IO.Path.Combine(System.IO.Path.GetTempPath(), "ni.scs.tests." + Guid.NewGuid().ToString("N")); |
Comment on lines
+28
to
+32
| catch | ||
| { | ||
| // Best-effort cleanup. Stray scratch dirs in %TEMP% aren't a | ||
| // problem — the OS reclaims temp eventually. | ||
| } |
| public async Task WriteAllTextAsync_WritesExpectedContent() | ||
| { | ||
| using var temp = new TempDir(); | ||
| var target = Path.Combine(temp.Path, "file.txt"); |
| public async Task WriteAllTextAsync_NoTempFileLeftBehindAfterSuccess() | ||
| { | ||
| using var temp = new TempDir(); | ||
| var target = Path.Combine(temp.Path, "file.txt"); |
| public async Task WriteAllTextAsync_OverwritesExisting() | ||
| { | ||
| using var temp = new TempDir(); | ||
| var target = Path.Combine(temp.Path, "file.txt"); |
| public async Task WriteAllTextAsync_ConcurrentWriters_OneWinsNoStragglers() | ||
| { | ||
| using var temp = new TempDir(); | ||
| var target = Path.Combine(temp.Path, "file.txt"); |
| .BuildServiceProvider(); | ||
|
|
||
| private static string FileFor<T>(string directory) => | ||
| Path.Combine(directory, typeof(T).Name + ".json"); |
Under EnforceCodeStyleInBuild, the comment interleaved between `=>` and the expression in AtomicFile.BuildTempPath tripped IDE0055 (Fix formatting) — but only on the Windows CI leg, whose git checks files out as CRLF (autocrlf=true) against the .editorconfig's mandated end_of_line = lf. Moving the comment above the method removes the CRLF-sensitive construct; verified to build clean under both LF and a CRLF checkout. No behaviour change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the repo current with the four
NextIteration.Standardsclauses that landed after the 2026-08-20 settings adoption (which closed at 28/28), and cuts the version over to 1.0.0.Standards alignment (clauses new since adoption)
EnforceCodeStyleInBuildinDirectory.Build.propsand adopt the revised canonical.editorconfig(byte-identical to the template). The IDE style analyzers now gate the ordained house style in-build underTreatWarningsAsErrors, instead of merely documenting it.IDE0005to the test project'sNoWarn— the rule needsGenerateDocumentationFile, which the test project turns off.query-filtersblock (cs/unmanaged-code,cs/call-to-unmanaged-code) socodeql.ymlmatches the canonical template. This library has no P/Invoke, so the filter matches nothing here — carried for template alignment, as non-native repos share it harmlessly.Bringing the code to green under the new style gate required two mechanical, behaviour-preserving fixes:
SettingsStore: two collection initialisations → collection expressions (IDE0028/IDE0305).I verified the audit's own comparison logic locally:
.editorconfigis byte-identical,Directory.Build.propsmatches in non-comment content, andcodeql.ymlmatches the template (the onlyci.ymldifference remains the permittedv*tag glob).Release prep
<Version>0.3.0→1.0.0. Public API and target frameworks (net8.0/net10.0) are unchanged from 0.3.0; 1.0.0 is the commitment to strict SemVer on that surface from here on.[Unreleased]section into[1.0.0] — 2026-08-21, with a fresh empty[Unreleased]and updated compare links.Verification
net8.0/net10.0) pass.1.0.0.nupkg+1.0.0.snupkgpack cleanly.Publishing is unchanged and still by hand: no tag is pushed by this PR.
🤖 Generated with Claude Code