Skip to content

Commit b74b459

Browse files
chore(release): router crates and artifacts (#1153)
1 parent 515b352 commit b74b459

18 files changed

Lines changed: 225 additions & 80 deletions

.changeset/experimental_fold_abstract_any.md

Lines changed: 0 additions & 32 deletions
This file was deleted.

.changeset/fix_routers_http_layer_timeout.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

.changeset/header_propagation_non_happy.md

Lines changed: 0 additions & 8 deletions
This file was deleted.

.changeset/leaf_no_indirect.md

Lines changed: 0 additions & 10 deletions
This file was deleted.

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bin/router/CHANGELOG.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
116116
### Other
117117

118118
- *(deps)* update release-plz/action action to v0.5.113 ([#389](https://github.com/graphql-hive/router/pull/389))
119+
## 0.0.70 (2026-06-17)
120+
121+
### Features
122+
123+
#### Add an experimental query planner option, `experimental_abstract_type_folding`
124+
125+
```yaml
126+
query_planner:
127+
experimental_abstract_type_folding: true # false by default
128+
```
129+
130+
Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.
131+
132+
It's an opt-in addition to [`011be5b`](https://github.com/graphql-hive/router/commit/011be5bdbfb00bf1e415eb7a50e6be91f565ef05).
133+
134+
```diff
135+
## queries `product-service` subgraph
136+
query {
137+
products {
138+
- ... on Book { id title }
139+
- ... on Movie { id title }
140+
+ ... on Media { id title }
141+
}
142+
}
143+
```
144+
145+
The `products` field returns `Product` interface, but one object-type member of this interface called `Album` is not present in the query, therefore `... on Product {...}` is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into `... on Media { ... }`, because `Book` and `Movie` are the only members of the `Media` interface in the `product-service` subgraph.
146+
147+
### Fixes
148+
149+
#### Fix Router's HTTP layer timeout
150+
151+
Hive Router has it's own timeout that's being enforced, but `ntex`'s one was still effective and uses the default settings.
152+
153+
Instead of fully disabling the low-level timeout, this PR changes the Router implementation to configure `ntex` timeout to `router_timeout+1` so the safe guard is still in place.
154+
155+
#### Fix response header propagation on error paths
156+
157+
Response header rules now run consistently for successful responses, partial GraphQL error responses, deduped requests, and execution failures.
158+
159+
#### Avoid indirect lookup for directly resolved leaf fields
160+
161+
The planner now skips indirect path lookup when a leaf field already has a valid direct path.
162+
119163
## 0.0.69 (2026-06-16)
120164

121165
### Fixes

bin/router/Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "hive-router"
3-
version = "0.0.69"
3+
version = "0.0.70"
44
edition = "2021"
55
description = "GraphQL router/gateway for Federation"
66
license = "MIT"
@@ -23,10 +23,10 @@ testing = []
2323
graphiql = []
2424

2525
[dependencies]
26-
hive-router-query-planner = { path = "../../lib/query-planner", version = "2.9.1" }
27-
hive-router-plan-executor = { path = "../../lib/executor", version = "6.17.0" }
28-
hive-router-config = { path = "../../lib/router-config", version = "0.1.2" }
29-
hive-router-internal = { path = "../../lib/internal", version = "0.0.28" }
26+
hive-router-query-planner = { path = "../../lib/query-planner", version = "2.10.0" }
27+
hive-router-plan-executor = { path = "../../lib/executor", version = "6.18.0" }
28+
hive-router-config = { path = "../../lib/router-config", version = "0.1.3" }
29+
hive-router-internal = { path = "../../lib/internal", version = "0.0.29" }
3030
hive-console-sdk = { path = "../../lib/hive-console-sdk", version = "0.3.16" }
3131
graphql-tools = { path = "../../lib/graphql-tools", version = "0.5.5" }
3232

lib/executor/CHANGELOG.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9494
### Other
9595

9696
- *(deps)* update release-plz/action action to v0.5.113 ([#389](https://github.com/graphql-hive/router/pull/389))
97+
## 6.18.0 (2026-06-17)
98+
99+
### Features
100+
101+
#### Add an experimental query planner option, `experimental_abstract_type_folding`
102+
103+
```yaml
104+
query_planner:
105+
experimental_abstract_type_folding: true # false by default
106+
```
107+
108+
Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.
109+
110+
It's an opt-in addition to [`011be5b`](https://github.com/graphql-hive/router/commit/011be5bdbfb00bf1e415eb7a50e6be91f565ef05).
111+
112+
```diff
113+
## queries `product-service` subgraph
114+
query {
115+
products {
116+
- ... on Book { id title }
117+
- ... on Movie { id title }
118+
+ ... on Media { id title }
119+
}
120+
}
121+
```
122+
123+
The `products` field returns `Product` interface, but one object-type member of this interface called `Album` is not present in the query, therefore `... on Product {...}` is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into `... on Media { ... }`, because `Book` and `Movie` are the only members of the `Media` interface in the `product-service` subgraph.
124+
125+
### Fixes
126+
127+
#### Fix response header propagation on error paths
128+
129+
Response header rules now run consistently for successful responses, partial GraphQL error responses, deduped requests, and execution failures.
130+
131+
#### Avoid indirect lookup for directly resolved leaf fields
132+
133+
The planner now skips indirect path lookup when a leaf field already has a valid direct path.
134+
97135
## 6.17.0 (2026-06-16)
98136

99137
### Features

lib/executor/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "hive-router-plan-executor"
3-
version = "6.17.0"
3+
version = "6.18.0"
44
edition = "2021"
55
description = "GraphQL query planner executor for Federation specification"
66
license = "MIT"
@@ -15,9 +15,9 @@ authors = ["The Guild"]
1515
doctest = false
1616

1717
[dependencies]
18-
hive-router-query-planner = { path = "../query-planner", version = "2.9.1" }
19-
hive-router-config = { path = "../router-config", version = "0.1.2" }
20-
hive-router-internal = { path = "../internal", version = "0.0.28" }
18+
hive-router-query-planner = { path = "../query-planner", version = "2.10.0" }
19+
hive-router-config = { path = "../router-config", version = "0.1.3" }
20+
hive-router-internal = { path = "../internal", version = "0.0.29" }
2121
graphql-tools = { path = "../graphql-tools", version = "0.5.5" }
2222
hive-console-sdk = { path = "../hive-console-sdk", version = "0.3.8" }
2323

lib/internal/CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
1+
## 0.0.29 (2026-06-17)
2+
3+
### Fixes
4+
5+
#### Add an experimental query planner option, `experimental_abstract_type_folding`
6+
7+
```yaml
8+
query_planner:
9+
experimental_abstract_type_folding: true # false by default
10+
```
11+
12+
Folds matching concrete object-type fragments in subgraph calls, into a shared interface fragment even when that interface is not the field's declared return type.
13+
14+
It's an opt-in addition to [`011be5b`](https://github.com/graphql-hive/router/commit/011be5bdbfb00bf1e415eb7a50e6be91f565ef05).
15+
16+
```diff
17+
## queries `product-service` subgraph
18+
query {
19+
products {
20+
- ... on Book { id title }
21+
- ... on Movie { id title }
22+
+ ... on Media { id title }
23+
}
24+
}
25+
```
26+
27+
The `products` field returns `Product` interface, but one object-type member of this interface called `Album` is not present in the query, therefore `... on Product {...}` is not possible to use (default behavior). With the feature flag enabled, both fragments are folded into `... on Media { ... }`, because `Book` and `Movie` are the only members of the `Media` interface in the `product-service` subgraph.
28+
129
## 0.0.28 (2026-06-15)
230

331
### Features

0 commit comments

Comments
 (0)