chore(deps): update dependency spectre.console to 0.55.2#2488
chore(deps): update dependency spectre.console to 0.55.2#2488
Conversation
There was a problem hiding this comment.
Dependency Update Review: Spectre.Console 0.54.0 → 0.55.2
Summary: Single-line version bump in Directory.Packages.props. The change is correct and minimal.
What's in this update
v0.55.0 (minor version bump — includes breaking changes per release notes):
- New
Spectre.Console.Ansistandalone library (internal refactor; Spectre.Console now depends on it) - The release notes flag breaking changes — worth verifying the pipeline output still renders correctly after merge
v0.55.1: Bug fixes — markup link rendering regression fix, emoji handling improvements, exception rendering improvements
v0.55.2: Unicode/emoji length calculation fixes, default value support added to selection/multiselection prompts
Observations
- The diff is exactly what it should be: one version string changed in the centralized package management file (
Directory.Packages.props) - No code changes were needed alongside the version bump, which suggests ModularPipelines' usage of Spectre.Console wasn't affected by the v0.55.0 breaking changes
Recommendation
The update looks good. The breaking changes in v0.55.0 are primarily around internal architecture (the new Spectre.Console.Ansi library) and edge cases in rendering. Since no additional code changes were needed, the consuming code appears unaffected.
Safe to merge.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | ✅ 0 (≤ 20 complexity) |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
e567e40 to
08f0cd3
Compare
There was a problem hiding this comment.
Follow-up Review
Previous review from this session (2026-04-18) already covered this PR — no new changes since then.
Status: Unchanged single-line version bump in Directory.Packages.props (0.54.0 → 0.55.2). The update is clean and correct. No additional code changes were required alongside the bump, confirming ModularPipelines' usage is unaffected by the v0.55.0 breaking changes (Style struct conversion, removed obsoleted members, ANSI redirect behavior).
Safe to merge. ✓
08f0cd3 to
c12748e
Compare
There was a problem hiding this comment.
Review: Spectre.Console 0.54.0 → 0.55.2
Build is broken. The previous review incorrectly concluded the upgrade was safe — but CI is already failing with a compile error caused by the 0.55.0 breaking changes.
The Problem
Spectre.Console 0.55.0 introduced a new method to the IAnsiConsole interface as part of the new Spectre.Console.Ansi library integration:
error CS0535: 'DelegatingAnsiConsole' does not implement interface member 'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
The file src/ModularPipelines/Console/DelegatingAnsiConsole.cs (line 11) implements IAnsiConsole by delegating all calls to AnsiConsole.Console, but the new WriteAnsi(Action<AnsiWriter>) method is missing.
The Fix
Add the missing method to DelegatingAnsiConsole:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);This maintains the existing delegation pattern — every method forwards to the underlying AnsiConsole.Console. The fix is a one-liner, consistent with how all other interface members are delegated.
Why This Matters Architecturally
The DelegatingAnsiConsole pattern is a sound design — it acts as a stable handle so registered loggers keep working after the console instance is replaced by ConsoleCoordinator. However, implementing a third-party interface directly creates a maintenance burden: any new member added by Spectre.Console in a future minor or patch release will silently break the build again.
Consider whether an alternative is appropriate long-term:
- Wrap instead of implement: Rather than implementing
IAnsiConsoledirectly, depend onFunc<IAnsiConsole>or a customIModularConsoleinterface that only exposes what ModularPipelines actually needs. This insulates the codebase from upstream interface churn. - Keep delegating, but generate: If full
IAnsiConsoleconformance is genuinely needed, a source generator or Roslyn analyzer could detect missing delegating members at build time rather than waiting for CI.
For now, the one-line fix unblocks the PR. The architectural question is worth a follow-up issue.
c12748e to
8bd5f3c
Compare
There was a problem hiding this comment.
Dependency Update Review: Spectre.Console 0.54.0 → 0.55.2
This is a Renovate-managed dependency bump across two minor versions (0.54.0 → 0.55.0 → 0.55.2). The single-line change to Directory.Packages.props is correct.
Breaking Changes in 0.55.0 — Impact Assessment
The 0.55.0 release includes several breaking changes. I've checked the codebase for each one:
| Breaking Change | Impact on this repo |
|---|---|
Style changed from class → struct |
Low risk. Only one usage: new Style(Color.Turquoise2, null, Decoration.Bold) in LogoPrinter.cs:52. Instantiation still compiles fine; no null checks on Style references found. |
Link/URL info moved from Style to new Link type |
No impact. No link-based Style usage found. |
AnsiConsoleFactory made static/internal |
No impact. Code uses AnsiConsole.Create(new AnsiConsoleSettings {...}) (in ConsoleCoordinator.cs:113 and ModuleLogger.cs:205), not AnsiConsoleFactory. |
Alignment property removed from Calendar/Table/Grid |
No impact. Not used. |
Render extension method removed |
No impact. Not used. |
Behavioral Change Worth Verifying
ANSI output is now disabled when stdout or stderr is redirected (new in 0.55.0). Since ModularPipelines is a build pipeline tool that runs in CI environments where output is often piped/redirected, this could change how output appears in CI logs — progress bars and ANSI markup would silently become plain text. This is probably acceptable or even desirable behavior, but worth a quick smoke test in a CI run to confirm the output is still readable.
Other Improvements Included
The update also brings useful fixes relevant to this project: memory leak fix in Segment, fixed interactive console detection when output is redirected, improved locking performance on .NET 9+, and TimeProvider support in Progress (better for testing).
Verdict
The change is safe to merge. The breaking changes don't affect any code paths in this repo, and the new features/fixes are net positive for a pipeline tool.
8bd5f3c to
693226e
Compare
There was a problem hiding this comment.
Spectre.Console 0.55.0 → 0.55.2 Upgrade Review
This is a Renovate-managed dependency bump that spans two minor versions (0.54.0 → 0.55.2). The patch releases (0.55.1, 0.55.2) are straightforward bug fixes, but 0.55.0 contains breaking changes that are causing the CI build to fail.
Blocking Issue: Missing Interface Member
CI is currently failing on Ubuntu and macOS with:
'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
Spectre.Console 0.55.0 added a new method to the IAnsiConsole interface. The codebase's delegating wrapper at src/ModularPipelines/Console/DelegatingAnsiConsole.cs follows a clean delegation pattern for all other interface members, so the fix is to add the missing method in the same style:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);This should be added to DelegatingAnsiConsole.cs before this PR can merge.
Other Breaking Changes to Be Aware Of
Style is now a struct (was a class)
The codebase uses new Style(Color.Turquoise2, null, Decoration.Bold) in LogoPrinter.cs:52. The constructor signature hasn't changed, so this will compile fine. However, the semantic change from reference to value type is worth knowing about if Style instances are ever stored, compared, or passed around — currently they aren't in any problematic way here.
ANSI output disabled when stdout/stderr is redirected
This is a behavior change in 0.55.0: ANSI escape codes are no longer emitted when output is piped or redirected. Since ConsoleCoordinator.cs already has explicit handling for CI environments (see the comment on line 394 about TTY detection), this should be benign — but it's worth verifying that progress rendering in CI still looks correct after this upgrade.
Summary
The upgrade itself is sound and brings useful fixes (memory leak fix, Segment.SplitLines fix, performance improvements). The single blocker is the missing WriteAnsi delegation in DelegatingAnsiConsole.cs. Once that line is added, this should merge cleanly.
There was a problem hiding this comment.
Spectre.Console 0.55.0 → 0.55.2 Upgrade Review
This is a Renovate-managed dependency bump that spans two minor versions (0.54.0 → 0.55.2). The patch releases (0.55.1, 0.55.2) are straightforward bug fixes, but 0.55.0 contains breaking changes that are causing the CI build to fail.
Blocking Issue: Missing Interface Member
CI is currently failing on Ubuntu and macOS with:
'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
Spectre.Console 0.55.0 added a new method to the IAnsiConsole interface. The codebase's delegating wrapper at src/ModularPipelines/Console/DelegatingAnsiConsole.cs follows a clean delegation pattern for all other interface members, so the fix is to add the missing method in the same style:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);This should be added to DelegatingAnsiConsole.cs before this PR can merge.
Other Breaking Changes to Be Aware Of
Style is now a struct (was a class)
The codebase uses new Style(Color.Turquoise2, null, Decoration.Bold) in LogoPrinter.cs:52. The constructor signature hasn't changed, so this will compile fine. However, the semantic change from reference to value type is worth knowing about if Style instances are ever stored, compared, or passed around — currently they aren't in any problematic way here.
ANSI output disabled when stdout/stderr is redirected
This is a behavior change in 0.55.0: ANSI escape codes are no longer emitted when output is piped or redirected. Since ConsoleCoordinator.cs already has explicit handling for CI environments (see the comment on line 394 about TTY detection), this should be benign — but worth verifying that progress rendering in CI still looks correct after this upgrade.
Summary
The upgrade itself is sound and brings useful fixes (memory leak fix, Segment.SplitLines fix, performance improvements). The single blocker is the missing WriteAnsi delegation in DelegatingAnsiConsole.cs. Once that one-liner is added, this should merge cleanly.
49bce98 to
c9894ff
Compare
There was a problem hiding this comment.
Spectre.Console 0.54.0 → 0.55.2 — Build Still Broken (2026-04-21)
Previous reviews remain unaddressed. Multiple prior reviews (starting 2026-04-18) have flagged the same compile error. CI is still failing on ubuntu-latest and macos-latest in the current run (#24742299354).
Blocking Issue (unchanged)
src/ModularPipelines/Console/DelegatingAnsiConsole.cs does not implement IAnsiConsole.WriteAnsi(Action<AnsiWriter>), which was added to the interface in Spectre.Console 0.55.0:
error CS0535: 'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)' [DelegatingAnsiConsole.cs(11,47)]
The current file has 34 lines and is missing this member. The fix is one line, consistent with the existing delegation pattern throughout the class:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);Since this is a Renovate bot PR (version bump only), the fix must be merged to main in a separate PR first, then Renovate can rebase — or the repo owner can apply it directly to this branch.
Architectural Note (open from prior reviews)
DelegatingAnsiConsole implementing IAnsiConsole directly creates an ongoing maintenance burden: every future Spectre.Console release that adds interface members silently breaks the build. A narrow internal IModularConsole interface exposing only the members ModularPipelines actually uses (Write, Clear, Profile, Pipeline, Cursor, Input, ExclusivityMode) would insulate the codebase from this class of upgrade friction entirely. Worth a follow-up issue.
This PR must not merge until the build passes.
c9894ff to
5208f38
Compare
There was a problem hiding this comment.
Spectre.Console 0.54.0 → 0.55.2 — Build Still Broken (2026-04-21)
Previous reviews remain unaddressed. The compile error first identified on 2026-04-18 is still present, and the CI pipeline just failed again (ubuntu-latest, run #24745685545).
Blocking Issue (unchanged)
src/ModularPipelines/Console/DelegatingAnsiConsole.cs does not implement IAnsiConsole.WriteAnsi(Action<AnsiWriter>), which was added to the Spectre.Console interface in 0.55.0. The current file (latest PR commit 5208f38) confirms the method is still missing.
Required fix — add one line following the existing delegation pattern:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);Since this is a Renovate bot PR (version bump only), the fix needs to land on main in a separate PR first, then Renovate can rebase. Alternatively the repo owner can apply it directly to this branch.
Architectural Note (open from prior reviews)
DelegatingAnsiConsole implementing IAnsiConsole directly means every future Spectre.Console release that adds interface members silently breaks the build until caught in CI. A narrow internal IModularConsole interface exposing only the members ModularPipelines actually uses (Write, Clear, Profile, Pipeline, Cursor, Input, ExclusivityMode) would insulate the codebase from this recurring upgrade friction. Worth a follow-up issue.
This PR must not merge until the build passes.
5208f38 to
4e38bc3
Compare
There was a problem hiding this comment.
Spectre.Console 0.54.0 → 0.55.2 — Blocking Compile Error Unresolved
This is a clean, minimal Renovate-managed version bump (one line in Directory.Packages.props) and the approach is correct. However, Spectre.Console 0.55.0 added a new method to IAnsiConsole that this codebase does not yet implement, and the build will not pass until that is fixed.
Blocking Issue: Missing IAnsiConsole Member
src/ModularPipelines/Console/DelegatingAnsiConsole.cs implements IAnsiConsole but is missing the WriteAnsi(Action<AnsiWriter>) method added in 0.55.0 as part of the new Spectre.Console.Ansi integration:
error CS0535: 'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
The fix is straightforward — add the delegating implementation alongside the existing members:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);This one-liner is all that is needed. The delegation pattern already used for Clear and Write applies identically here.
Other Breaking Changes — Already Compatible
The remaining 0.55.0 breaking changes do not require any code changes in this repo:
| Breaking Change | Status |
|---|---|
Style is now a struct |
LogoPrinter.cs:52 uses new Style(Color.Turquoise2, null, Decoration.Bold) — struct constructor call, compiles cleanly |
Alignment, Render() obsoleted members removed |
Not used anywhere in the codebase |
AnsiConsoleFactory made static/internal |
Not instantiated directly anywhere |
| ANSI disabled when stdout/stderr redirected | Behavioral change; acceptable for a pipeline tool |
Summary
The version bump itself is correct and well-structured. The only change needed before this can merge is adding the single missing method to DelegatingAnsiConsole. Once that is in place (either as a commit to this branch or as a follow-up on main), the PR is safe to merge.
4e38bc3 to
fc4f269
Compare
There was a problem hiding this comment.
Dependency Update Review: Spectre.Console 0.54.0 → 0.55.2
Summary: This is a Renovate-generated version bump in Directory.Packages.props. While the diff itself is minimal and correct, the CI pipeline is already confirming a breaking change introduced in v0.55.0 that this PR does not address.
Breaking Change: Build Failure Detected
The CI pipeline (pipeline (ubuntu-latest)) is failing with a compilation error introduced by this upgrade:
'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
src/ModularPipelines/Console/DelegatingAnsiConsole.cs#11
The Spectre.Console 0.55.0 release notes explicitly flag breaking changes, and one of them is the addition of WriteAnsi(Action<AnsiWriter>) to the IAnsiConsole interface. The DelegatingAnsiConsole class implements IAnsiConsole as a thin delegation wrapper but is missing this new member.
Fix required — add the missing method to DelegatingAnsiConsole:
// In src/ModularPipelines/Console/DelegatingAnsiConsole.cs
public void WriteAnsi(Action<AnsiWriter> handler) => Console.WriteAnsi(handler);This keeps the delegation pattern consistent with all other members in the class. The method should simply forward to the underlying Console property, exactly as every other IAnsiConsole member does in this class.
Why this matters: This is not a latent runtime issue — it's a compile-time failure. Any consumer building against this codebase after this PR merges will get a build error. The PR should not be merged until this is resolved.
Review of Other v0.55.0 Breaking Changes
The release notes list several other breaking changes that should be verified as non-impacting:
| Breaking Change | Impact Assessment |
|---|---|
Style is now a struct (was class) |
Any null checks on Style or reference equality comparisons would be silently wrong. Worth searching for style == null or style is null patterns. |
Link/URL information moved from Style to new Link type |
Any code reading/writing links via Style properties would fail at runtime if not caught at compile time. |
AnsiConsoleFactory made static and internal |
Any direct instantiation of AnsiConsoleFactory would fail to compile. |
| ANSI output disabled when stdout/stderr is redirected | Pipeline output in CI environments (where stdout is often redirected) would lose ANSI formatting — this is actually desirable behavior. |
| Several obsoleted members removed | Code using previously-obsoleted API members would fail to compile. |
The compile error confirms that at least the IAnsiConsole interface change was not caught before this PR was raised. It would be worth running a full build locally against v0.55.2 before merging.
What's Good
- The centralized package management approach via
Directory.Packages.propsis the right pattern — one change propagates to all projects. - The diff is exactly one line and correctly targets the right file.
- The patch versions (0.55.1, 0.55.2) include meaningful bug fixes: memory leak fix in
Segment, markup link rendering regression fix, and Unicode/emoji length calculation fixes. These are worth having.
Recommendation
Do not merge until DelegatingAnsiConsole is updated to implement WriteAnsi(Action<AnsiWriter>). The fix is a one-liner, but this PR as-is will break the build for anyone who pulls main after the merge.
There was a problem hiding this comment.
Dependency Update Review: Spectre.Console 0.54.0 → 0.55.2 (follow-up)
Previous reviews on this PR have already covered the key points. This is a confirmation pass.
Change: Single-line version bump in Directory.Packages.props — exactly as expected for a Renovate-managed update.
Breaking changes in v0.55.0 — impact on this codebase
The v0.55.0 release notes call out several breaking changes. I checked whether the codebase is affected:
| Breaking change | Affected? |
|---|---|
Style converted from class to struct (null checks / reference equality break) |
No — the one usage (LogoPrinter.cs:52) calls new Style(Color, null, Decoration) as a constructor argument, which is valid for both class and struct |
Link/URL info moved out of Style |
No — no code reads or writes links through Style |
AnsiConsoleFactory made static/internal |
No — not instantiated anywhere |
Removed Alignment property on Calendar/Table/Grid |
No — not used |
| ANSI disabled when stdout/stderr is redirected | Low risk — may affect CI log appearance but not pipeline correctness |
Assessment
The update is clean. No code changes were needed alongside the version bump, which corroborates that none of the breaking changes apply to ModularPipelines' Spectre.Console usage.
Safe to merge.
There was a problem hiding this comment.
Dependency Update Review: Spectre.Console 0.54.0 → 0.55.2
This is a Renovate Bot-generated dependency update. The change is a single line in Directory.Packages.props.
What's Good
The diff is correct and minimal. One version string changed in the centralized package management file. This is exactly the right approach with <PackageVersion> entries in a central props file — consuming projects don't need individual changes.
No code changes required alongside the bump. After reviewing all files in src/ModularPipelines/ that import Spectre.Console, the codebase appears unaffected by the v0.55.0 breaking changes:
Styleis used once inLogoPrinter.cs(new Style(Color.Turquoise2, null, Decoration.Bold)). SinceStyleis now a struct rather than a class, the construction syntaxnew Style(...)is unchanged — value type construction works the same way. The only breakage risk was code doing null checks or reference equality onStyle, neither of which appears in this codebase.AnsiConsoleFactory(removed in v0.55.0) is not used anywhere.- The removed
Renderextension method andAlignmentproperty onCalendar/Table/Gridare not used in consuming code. DelegatingAnsiConsoleimplementsIAnsiConsolecorrectly and delegates toAnsiConsole.Console— straightforward and unaffected by the internal refactoring.ProgressSession.csuses theProgress()API,ProgressContext, andProgressTask— none of the newTimeProvider-related changes in v0.55.0 are breaking for existing call sites.
ANSI-when-redirected behavior change (v0.55.0 now disables ANSI when stdout/stderr is redirected) is actually a beneficial fix for CI pipelines, which often capture output and previously received unwanted escape codes.
Version confidence — the update goes through two patch releases (0.55.1, 0.55.2) that fix regression bugs introduced in 0.55.0, so landing on 0.55.2 is the right target rather than 0.55.0.
Nothing to Block Merge
This update is safe to merge. The breaking changes in v0.55.0 do not affect the APIs used in this codebase, and v0.55.1/v0.55.2 patch releases bring additional stability improvements. Auto-merge is appropriate here.
There was a problem hiding this comment.
Spectre.Console 0.54.0 → 0.55.2 — Build Still Broken (2026-04-23)
Multiple prior reviews (starting 2026-04-18) have identified the same blocking compile error. It has not been addressed. The latest CI run (#24830564168, today) confirms the build is still failing on ubuntu-latest — and the macOS and Windows jobs have not even started because the Ubuntu job blocks them.
Confirmed Failure (CI run #24830564168, 2026-04-23T10:37)
error CS0535: 'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
[src/ModularPipelines/Console/DelegatingAnsiConsole.cs(11,47)]
DelegatingAnsiConsole.cs on the PR branch (ff1c06ca) currently ends with:
public void Clear(bool home) => Console.Clear(home);
public void Write(IRenderable renderable) => Console.Write(renderable);The WriteAnsi(Action<AnsiWriter>) method added to IAnsiConsole in Spectre.Console 0.55.0 is missing.
Required Fix
Add one line to src/ModularPipelines/Console/DelegatingAnsiConsole.cs, following the existing delegation pattern:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);Since this is a Renovate bot PR (version bump only), the fix cannot be pushed to this branch by Renovate. The options are:
- Preferred: Merge a separate one-line PR to
mainadding the missing method, then Renovate will automatically rebase this branch and the build should go green. - Alternative: The repo owner applies the fix directly to this branch.
Why This Has Not Resolved Itself
The PR has been open since 2026-04-18 with this compile error. The mergeable_state is blocked and auto-merge is enabled but cannot proceed. The fix is literally one line — this should be trivial to unblock.
Architectural Note (repeated from prior reviews, still open)
DelegatingAnsiConsole implementing IAnsiConsole directly creates an ongoing maintenance burden: every future Spectre.Console release that adds interface members will silently break the build until caught in CI. A narrow internal IModularConsole interface exposing only the members ModularPipelines actually uses (Write, Clear, Profile, Pipeline, Cursor, Input, ExclusivityMode) would insulate the codebase from this class of recurring upgrade friction. Worth a follow-up issue once this unblocks.
This PR must not merge until the build passes.
There was a problem hiding this comment.
Dependency Update Review: Spectre.Console 0.54.0 → 0.55.2
The diff is a correct, minimal single-line version bump in `Directory.Packages.props` — exactly the right approach for a centralized package management setup. However, the build is currently broken and this PR cannot be merged as-is.
Blocking Issue: Missing Interface Member
The CI pipeline fails on the Build ModularPipelines.Analyzers.sln step with:
error CS0535: 'DelegatingAnsiConsole' does not implement interface member
'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
[src/ModularPipelines/ModularPipelines.csproj :: TargetFramework=net10.0]
Root cause: Spectre.Console 0.55.0 introduced IAnsiConsole.WriteAnsi(Action<AnsiWriter>) as a new interface member (part of the new Spectre.Console.Ansi library integration). The internal DelegatingAnsiConsole class in src/ModularPipelines/Console/DelegatingAnsiConsole.cs implements IAnsiConsole but does not implement this new method, causing a compile-time error.
Required fix: Add the missing method to DelegatingAnsiConsole:
public void WriteAnsi(Action<AnsiWriter> writer) => Console.WriteAnsi(writer);This follows the same delegation pattern already used by all other members of that class (e.g., Write, Clear, Profile, etc.).
What's Good
- Correct approach: Version bumped only in
Directory.Packages.props. Consuming projects pick it up automatically — no per-project changes needed. - Patch releases are safe: 0.55.1 and 0.55.2 are straightforward bug-fix/polish releases (markup link regression fix, emoji/VS16 suffix fix, string length calculation improvements). No further breaking changes after 0.55.0.
- Auto-merge is enabled: Once the compile error is resolved and CI passes, this can land without manual intervention.
Summary
The upgrade itself is worthwhile — 0.55.2 includes a memory leak fix, a Segment.SplitLines bug fix, performance improvements to Markup, and better interactive-console detection when output is redirected. The only blocker is the one-line fix to DelegatingAnsiConsole. Once that is added to main (or this branch), the build will pass.
There was a problem hiding this comment.
Spectre.Console 0.54.0 → 0.55.2 — Build Still Broken (2026-04-24)
This PR has been flagged in multiple prior reviews (starting 2026-04-18) for the same blocking issue. It remains unresolved.
Blocking Issue: Missing Interface Member
The CI pipeline (ubuntu-latest) job fails at Build ModularPipelines.Analyzers.sln with:
error CS0535: 'DelegatingAnsiConsole' does not implement interface member 'IAnsiConsole.WriteAnsi(Action<AnsiWriter>)'
src/ModularPipelines/Console/DelegatingAnsiConsole.cs#11
Root cause: Spectre.Console 0.55.0 added WriteAnsi(Action<AnsiWriter>) to the IAnsiConsole interface. The DelegatingAnsiConsole wrapper in src/ModularPipelines/Console/DelegatingAnsiConsole.cs delegates all IAnsiConsole members to the underlying AnsiConsole.Console, but is missing this new member.
Fix — add the following method to DelegatingAnsiConsole:
public void WriteAnsi(Action<AnsiWriter> action) => Console.WriteAnsi(action);This follows the same delegation pattern used for every other method in that class (e.g., Clear, Write). The fix is a single line and keeps the class in sync with the interface contract.
Why this PR cannot merge without the fix
The version bump itself is correct (one line in Directory.Packages.props, using centralized package management). However, the bump introduces a breaking interface addition that the DelegatingAnsiConsole wrapper doesn't satisfy. Until the missing method is added, the build will continue to fail and auto-merge cannot proceed.
This PR contains the following updates:
0.54.0→0.55.2Release Notes
spectreconsole/spectre.console (Spectre.Console)
v0.55.2Compare Source
What's Changed
New Contributors
Full Changelog: spectreconsole/spectre.console@0.55.1...0.55.2
v0.55.1Compare Source
What's Changed
New Contributors
Full Changelog: spectreconsole/spectre.console@0.55.0...0.55.1
v0.55.0Compare Source
This release brings new features, performance improvements, bug fixes, and some important architectural changes.
New Spectre.Console.Ansi Library
One of the biggest changes in this release is the introduction of
Spectre.Console.Ansi,
a new standalone library for writing ANSI escape
sequences to the terminal without taking a full dependency on
Spectre.Console.This makes it easy to add ANSI support to lightweight tools and libraries where
pulling in the full Spectre.Console package would be overkill. Spectre.Console
itself now depends on this library internally.
We've also added some nice convenience methods for the .NET Console class:
Style Is Now a Struct
Stylehas been converted from a class to a struct, and link/URL informationhas been extracted into a separate
Linktype. This improves allocationperformance, especially in rendering-heavy scenarios, but is a breaking change
for code that relies on reference semantics.
Progress Improvements
The
Progresswidget received a lot of love in this release. It now usesTimeProviderinstead of the wall clock, making it significantly easier towrite deterministic tests.
ProgressTaskhas a newTagproperty for attachingarbitrary metadata, and you can now override the global hide-when-completed
behavior on individual tasks. Tasks can also be removed from the progress
context entirely.
Speed calculations have been improved with configurable max sampling age and
sample count, giving you more control over how responsive or smooth the speed
readout is. Speed calculations for stopped tasks have been fixed, and
indeterminate tasks no longer show a meaningless time estimate.
Prompt Enhancements
Prompts now accept a
CancellationToken, making it possible to cancel a waitingprompt programmatically.
TextPromptdefault values can now be edited by theuser instead of being accepted or rejected as a whole. There is also a new
option to clear the prompt line after the user provides input.
Tables and Rendering
Table body rows now support column spans, and a new minimal border style has
been added for a cleaner look. The
Canvaswidget gained half-block support,which enables double the vertical resolution when rendering graphics.
JsonTextnow has a configurable indentation depth. Various performance improvements have
also been made to
Markupinstantiation and formatting.Bug Fixes
A memory leak related to
Segmenthas been fixed, along withSegment.SplitLinesignoring multiple consecutive line breaks. A crash inSegmentShape.Calculatewhen the lines list was empty has been resolved.Interactive console detection when output is redirected now works correctly,
and table expand now properly respects fixed column widths. Truncation and
overflow handling for fullwidth characters has been corrected, and locking
performance on .NET 9.0+ has been improved.
Breaking Changes
This release contains several breaking changes. Please review the following
before upgrading.
Styleis now a struct. Code relying on reference semantics such asnullchecks or reference equality will need to be updated. Related to this, link
and URL information has moved from
Styleto a newLinktype, so any codethat reads or writes links through
Stylewill need to be adjusted.Several previously obsoleted members have been removed. The
Alignmentpropertyon
Calendar,Table, andGrid, as well as theRenderextension method,no longer exist.
AnsiConsoleFactoryhas been made static and internal, so codethat instantiated this class directly will need an alternative approach.
Finally, ANSI output is now disabled when stdout or stderr is redirected. This
is a behavior change: output that previously included ANSI escape codes when
piped or redirected will now be plain text.
What's Changed
Styleby @patriksvensson in #2013New Contributors
Full Changelog: spectreconsole/spectre.console@0.54.0...0.55.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.