Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
89c3d84
[Website] Rename the GraphQL Composite Schemas spec to GraphQL Federa…
rstaib Oct 25, 2026
a352ab2
[Website] Update benchmark results (#10689)
tobias-tengler Oct 25, 2026
a1eb52e
Replace the deprecated WebHostBuilder with WebApplication (#9468)
michaelstaib Oct 25, 2026
91813f8
Write large JSON responses in fewer pipe segments (#10690)
michaelstaib Oct 26, 2026
42c3aa8
Dispose the MCP integration test servers after each test (#10692)
glen-84 Oct 26, 2026
1b60ae7
Add an AGENTS.md rule to backtick `@`-prefixed tokens in commits (#10…
glen-84 Oct 26, 2026
c78fc87
Fix GET and persisted routes ignoring the variable batching limits (#…
glen-84 Oct 26, 2026
c6108f3
[Fusion] Reduce per-property and per-object work in value completion …
michaelstaib Oct 26, 2026
7080b54
Declare DbSet properties as auto-properties without initializers (#10…
glen-84 Oct 26, 2026
7d77e09
Pin the Nitro CLI test culture and add the xUnit runner schema (#10698)
glen-84 Oct 26, 2026
74f28ce
Send single JSON responses with a Content-Length (#10700)
michaelstaib Oct 26, 2026
76adbf2
Fix parent requirements being dropped from paged projections (#10701)
michaelstaib Oct 26, 2026
dbcda62
[Fusion] Fix requirements anchored below the lookup target returning …
michaelstaib Oct 26, 2026
7adbb5c
[Fusion] Share lookup target walks within a request (#10706)
michaelstaib Oct 26, 2026
1de96e9
[Fusion] Call subgraphs without nested async iterators (#10707)
michaelstaib Oct 27, 2026
e5c2af3
[Fusion] Speed up minimized JSON result serialization (#10708)
michaelstaib Oct 27, 2026
f9ceb63
Fix flags enum input rejecting an object with every flag false (#10709)
michaelstaib Oct 27, 2026
4987634
Fix feature collections reporting the wrong IsEmpty (#10710)
michaelstaib Oct 27, 2026
026d58c
[Fusion] Recycle per-request arrays in the fetch result store (#10711)
michaelstaib Oct 27, 2026
4adcdf2
[Fusion] Skip HttpClient cancellation and timer setup for shared subg…
michaelstaib Oct 27, 2026
f54edcf
[Website] Add GraphQL Federation and Fusion Product pages (#10391)
rstaib Oct 27, 2026
58f91dd
[Website] Changed GraphQL Federation Benchmark title (#10715)
rstaib Oct 27, 2026
0c7222d
[Website] Fix visual baselines and restore full regression coverage (…
rstaib Oct 27, 2026
30251e0
Fix parsing compressed Guid node IDs when `outputNewIdFormat` is fals…
christiansany Oct 27, 2026
13b5197
[Mocha] Fix the dispatch context never assigning its runtime (#10693)
alisan3 Oct 27, 2026
36b72f8
Fix batch results missing their request and variable indexes (#10718)
glen-84 Oct 27, 2026
925aae9
[Mocha] Declare temporary RabbitMQ queues durable with auto-delete an…
alisan3 Oct 27, 2026
cfff924
[Website] Link the benchmark page to the Fusion product page (#10720)
tobias-tengler Oct 27, 2026
713d968
Accept variable batches over HTTP QUERY (#10723)
glen-84 Oct 27, 2026
cee02c0
[Nitro CLI] Consume the new stage composition settings (#10691)
tobias-tengler Oct 27, 2026
0e578de
[Fusion] Reuse the timeout CTS and complete cache hits synchronously …
michaelstaib Oct 27, 2026
592c379
Serve repeated source text requests from the document cache (#10714)
michaelstaib Oct 27, 2026
86da2d8
Merge tag '16.7.2' into mocha-nats/16.7.2-base
Jacob-Steentoft Oct 27, 2026
82ff87e
Reject selection sets on __typename for abstract parent types (#10733)
tobias-tengler Oct 28, 2026
708944b
Wait for started node and entity resolvers before completing nodes an…
tobias-tengler Oct 28, 2026
77a6580
Apply authorization to batch resolver fields (#10737)
tobias-tengler Oct 28, 2026
fabaee7
Limit the number of selections and selection sets of an operation (#1…
tobias-tengler Oct 28, 2026
35612c4
Keep the first occurrence of repeated input object properties in vari…
tobias-tengler Oct 28, 2026
66c18b8
Apply query type authorization to the node and nodes fields (#10736)
tobias-tengler Oct 28, 2026
32a0c7b
Resolve union member types before applying type authorization (#10734)
tobias-tengler Oct 28, 2026
732ebf4
Fix DefaultHttpRequestParser accepting incomplete requests (#10740)
tobias-tengler Oct 28, 2026
5b17801
Keep outgrown ResultDocument chunk tables rented until Dispose (#10739)
tobias-tengler Oct 28, 2026
ab33b15
[Mocha] Fix Postgres outbox reordering messages from one transaction …
alisan3 Oct 28, 2026
8bc11aa
Apply descriptor attributes to source-generated node resolvers (#10738)
tobias-tengler Oct 28, 2026
24fcc19
Reject operations that exceed the fragment visit budget (#10731)
tobias-tengler Oct 28, 2026
9c34a12
Limit selection set depth across fragment spreads during validation (…
tobias-tengler Oct 28, 2026
fcf9004
Fix document IDs not matching the hash of the sent document (#10741)
glen-84 Oct 28, 2026
4765a0c
Fix cursor key formatting reporting the wrong written length (#10743)
glen-84 Oct 28, 2026
4877be6
Merge tag '16.7.3' into mocha-nats/16.7.2-base
Jacob-Steentoft Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 18 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,9 @@ jobs:
run: npm ci
working-directory: website

- name: Install Playwright Chromium
# rehype-mermaid renders inline SVG with Chromium during the app build.
# Visual tests use their own pinned Docker browser, not this installation.
- name: Install Chromium for Mermaid Build
run: npx playwright install --with-deps chromium
working-directory: website

Expand All @@ -187,10 +189,25 @@ jobs:
run: npm run build
working-directory: website

- name: Visual Runner Contract Tests
run: node --test scripts/visual-tests-docker.test.mjs
working-directory: website

- name: Visual Regression Tests
run: npm run test:visual
working-directory: website

- name: Clean Up Visual Test Containers
if: ${{ always() }}
shell: bash
run: |
workspace="$(pwd -P)"
run="${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}-${GITHUB_JOB}"
docker ps --all --quiet --filter "label=website-visual-workspace=$workspace" --filter "label=website-visual-run=$run" |
xargs --no-run-if-empty docker rm --force
docker volume ls --quiet --filter "label=website-visual-workspace=$workspace" --filter "label=website-visual-run=$run" |
xargs --no-run-if-empty docker volume rm

- name: Upload Playwright Report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
Expand Down
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ This file provides guidance to coding agents when working with this repository.

- Do not add `Co-authored-by` trailers or other co-author attribution for agents.

## Commit Messages

- Wrap every `@`-prefixed token in backticks, so GitHub does not turn it into a mention. This covers directive names, package scopes, and user handles: ``Fix pruning of list-wrapped `@require` input types``.

## Pull Requests

- Start a bug fix PR title with `Fix`: `Fix the gateway ignoring subgraph timeouts`. The title becomes the squash commit subject and the release note entry.
Expand Down
2 changes: 0 additions & 2 deletions dictionary.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ anthropics
Antiforgery
apphost
appsettings
ASPDEPR004
ASPDEPR008
aspnet
aspnetcore
Astromech
Expand Down
1 change: 1 addition & 0 deletions src/All.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,7 @@
<Project Path="Mocha/test/Mocha.Transport.Nats.Tests/Mocha.Transport.Nats.Tests.csproj" />
<Project Path="Mocha/test/Mocha.Transport.Postgres.Tests/Mocha.Transport.Postgres.Tests.csproj" />
<Project Path="Mocha/test/Mocha.Transport.RabbitMQ.Tests/Mocha.Transport.RabbitMQ.Tests.csproj" />
<Project Path="Mocha/test/Mocha.Transport.RabbitMQ3.Tests/Mocha.Transport.RabbitMQ3.Tests.csproj" />
</Folder>
<Folder Name="/Nitro/" />
<Folder Name="/Nitro/CommandLine/" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ namespace CookieCrumble.Resources;

public class RabbitMQResource : ContainerResource<RabbitMqContainer>
{
/// <summary>
/// Gets the broker image the resource runs. Defaults to <c>rabbitmq:4.3</c>.
/// </summary>
public string Image { get; init; } = "rabbitmq:4.3";

public string ConnectionString => Container.GetConnectionString();

public string Hostname => Container.Hostname;
Expand All @@ -27,7 +32,7 @@ public async Task<string> InvokeCommandAsync(IEnumerable<string> command)

protected override RabbitMqContainer Build()
=> Configure(
new RabbitMqBuilder("rabbitmq:3.11")
new RabbitMqBuilder(Image)
.WithUsername("guest")
.WithPassword("guest"))
.Build();
Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

<PropertyGroup Condition="'$(TreatWarningsAsErrors)' == ''">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;ASPDEPR004;ASPDEPR008</WarningsNotAsErrors>
<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
</PropertyGroup>

<PropertyGroup Condition="'$(TreatWarningsAsErrors)' == 'false'">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public static bool TryFormat(object? key, ICursorKeySerializer serializer, Span<
return success;
}

var start = buffer.IndexOf((byte)':');
var start = buffer[..written].IndexOf((byte)':');
return start == -1 ? success : ReplaceColons(buffer, start, written, out written);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ public async ValueTask DisposeAsync()

private sealed class PagingContext(DbContextOptions<PagingContext> options) : DbContext(options)
{
public DbSet<Item> Items => Set<Item>();
public DbSet<Item> Items { get; set; }
}

private sealed class Item
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -875,7 +875,7 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseNpgsql(connectionString);
}

public DbSet<Brand> Brands => Set<Brand>();
public DbSet<Brand> Brands { get; set; }
}

public class Brand
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ namespace GreenDonut.Data.TestContext;

public class AnimalContext(string connectionString) : DbContext
{
public DbSet<Owner> Owners { get; set; } = null!;
public DbSet<Animal> Pets { get; set; } = null!;
public DbSet<Dog> Dogs { get; set; } = null!;
public DbSet<Cat> Cats { get; set; } = null!;
public DbSet<Owner> Owners { get; set; }
public DbSet<Animal> Pets { get; set; }
public DbSet<Dog> Dogs { get; set; }
public DbSet<Cat> Cats { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseNpgsql(connectionString);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseNpgsql(connectionString);
}

public DbSet<Product> Products { get; set; } = null!;
public DbSet<Product> Products { get; set; }

public DbSet<ProductType> ProductTypes { get; set; } = null!;
public DbSet<ProductType> ProductTypes { get; set; }

public DbSet<Brand> Brands { get; set; } = null!;
public DbSet<Brand> Brands { get; set; }

public DbSet<Test> Tests { get; set; } = null!;
public DbSet<Test> Tests { get; set; }

protected override void OnModelCreating(ModelBuilder builder)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ namespace GreenDonut.Data.TestContext;

public class FileSystemContext(string connectionString) : DbContext
{
public DbSet<FileSystemEntry> Entries => Set<FileSystemEntry>();
public DbSet<FileSystemEntry> Entries { get; set; }

public DbSet<FileSystemDirectory> Directories => Set<FileSystemDirectory>();
public DbSet<FileSystemDirectory> Directories { get; set; }

public DbSet<FileSystemFile> Files => Set<FileSystemFile>();
public DbSet<FileSystemFile> Files { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseNpgsql(connectionString);
}

public DbSet<Foo> Foos { get; set; } = null!;
public DbSet<Foo> Foos { get; set; }

public DbSet<Bar> Bars { get; set; } = null!;
public DbSet<Bar> Bars { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
}
}

public DbSet<Record> Records { get; set; } = null!;
public DbSet<Record> Records { get; set; }

public DbSet<Item> Items { get; set; } = null!;
public DbSet<Item> Items { get; set; }
}

public class Record
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,25 @@ public static void TryFormat_StringWithoutColons_FormatsCorrectly()
Assert.Equal("testvalue", Encoding.UTF8.GetString(buffer[..written]));
}

[Fact]
public static void TryFormat_Should_IgnoreColon_When_ColonIsBehindWrittenBytes()
{
// arrange
object key = "testvalue";
Span<byte> buffer = "xxxxxxxxxxxxxxx:"u8.ToArray();

// act
var success = CursorKeySerializerHelper.TryFormat(
key,
s_serializer,
buffer,
out var written);

// assert
Assert.True(success);
Assert.Equal(9, written);
}

[Fact]
public static void TryFormat_StringWithColons_EscapesAndFormatsCorrectly()
{
Expand Down
Loading
Loading