Skip to content

Weasel 8.14.1: upgrade to JasperFx 1.26 + fix Spectre.Console 0.55 API break#252

Merged
jeremydmiller merged 1 commit intomasterfrom
fix/spectre-055-escape-markup
Apr 21, 2026
Merged

Weasel 8.14.1: upgrade to JasperFx 1.26 + fix Spectre.Console 0.55 API break#252
jeremydmiller merged 1 commit intomasterfrom
fix/spectre-055-escape-markup

Conversation

@jeremydmiller
Copy link
Copy Markdown
Member

Summary

Upgrades the Weasel dependency graph onto the latest JasperFx (1.24.0 → 1.26.0), which transitively pulls Spectre.Console 0.53 → 0.55 for every downstream consumer. Patches the one spot in Weasel that called a Spectre API that 0.55 removed.

The bug

Spectre.Console 0.55 removed the StringExtensions.EscapeMarkup(string) extension method — the static Spectre.Console.Markup.Escape(string) is the replacement. Weasel.Core.CommandLine.AssertCommand used the old extension form in two places:

public override async Task<bool> Execute(WeaselInput input)
{
    …
    AnsiConsole.MarkupLine(
        $"[green]No database differences detected for '{database.Identifier.EscapeMarkup()}'.[/]");
    …
    AnsiConsole.MarkupLine(
        $"[red]Database '{database.Identifier.EscapeMarkup()}' does not match the configuration![/]");
    …
}

Downstream in Marten this surfaced as:

System.MissingMethodException: Method not found:
  'System.String Spectre.Console.StringExtensions.EscapeMarkup(System.String)'
    at Weasel.Core.CommandLine.AssertCommand.Execute(WeaselInput input)

…on every db-assert / resources command that went through this code path (7 failing tests in CoreTests.jasper_fx_mechanics.* on marten#4269).

The fix

  • Directory.Packages.props: JasperFx 1.24.0 → 1.26.0 (transitively moves Spectre.Console to 0.55)
  • src/Weasel.Core/CommandLine/AssertCommand.cs: database.Identifier.EscapeMarkup()Markup.Escape(database.Identifier)
  • Directory.Build.props: Version 8.14.0 → 8.14.1

Test plan

  • dotnet build Weasel.sln — 0 errors (357 pre-existing warnings)
  • CI across net8 / net9 / net10

Downstream

Unblocks JasperFx/marten#4269, which needs a JasperFx 1.26.0 floor for its JasperFx.Events 1.29.0 uptake. Once Weasel 8.14.1 ships I'll bump Marten to consume it and drop the standalone Spectre.Console pin in Marten's Directory.Packages.props.

🤖 Generated with Claude Code

…I break

Upgrades the Weasel graph onto the latest JasperFx (1.24.0 → 1.26.0),
which transitively upgrades Spectre.Console from 0.53 to 0.55.

Spectre.Console 0.55 removed the StringExtensions.EscapeMarkup(string)
extension (the static Spectre.Console.Markup.Escape(string) is the
replacement). Weasel.Core.CommandLine.AssertCommand used the old
extension form in two places, which surfaced downstream in Marten as
a MissingMethodException on every db-assert / resources command.
Patched AssertCommand to call Markup.Escape directly.

Unblocks JasperFx/marten#4269.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jeremydmiller jeremydmiller merged commit dc7795d into master Apr 21, 2026
21 checks passed
@jeremydmiller jeremydmiller deleted the fix/spectre-055-escape-markup branch April 21, 2026 00:39
jeremydmiller added a commit to JasperFx/marten that referenced this pull request Apr 21, 2026
CoreTests.jasper_fx_mechanics.* were failing on PR CI with:

    System.MissingMethodException: Method not found:
      'System.String Spectre.Console.StringExtensions.EscapeMarkup(System.String)'
        at Weasel.Core.CommandLine.AssertCommand.Execute(WeaselInput input)

Root cause: Spectre.Console 0.55 (pulled in transitively by the
JasperFx 1.26 bump earlier on this branch) removed the
StringExtensions.EscapeMarkup(string) extension. The replacement
Spectre.Console.Markup.Escape(string) is the supported API. Weasel
8.14.1 switches to it; see JasperFx/weasel#252.

Local CoreTests.jasper_fx_mechanics subset: 13/13 pass (was 6/13).

Co-Authored-By: Claude Opus 4.7 (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