Conversation
- axum 0.7 → 0.8 (goose-test-support) - image 0.24 → 0.25 (goose-mcp) - thiserror 1.0 → 2.0 (workspace) - utoipa 4 → 5 (workspace), update OpenAPI spec from 3.0.3 to 3.1.0 - rand 0.8 → 0.10 (workspace), migrate goose-server to workspace dep - zip 0.6/8 → 8 (new workspace dep), migrate goose + goose-cli Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9f08b8b051
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
The image 0.25 default features pull in AVIF encoding (rav1e, ravif) and other unnecessary codecs. Since we only need JPEG support, disabling defaults reduces unique crate-versions from 908 to 879. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ae79c3980f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
- tiktoken-rs 0.6.0 -> 0.9.1 (decouples from tokenizers crate) - hf-hub 0.4.3 -> 0.5.0 (eliminates indicatif 0.17 duplicate) - dirs 5.0 -> 6.0 in workspace (eliminates dirs/dirs-sys duplicates) - cliclack 0.3.5 -> 0.4.0 (reduces console 0.15 to insta-only) Duplicated crates: 72 -> 69, total crate versions: 930 -> 926. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 82c4cb16d3
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
TextContentSchemaRef and ImageContentSchemaRef were registered under the
same component name ("TextContent"/"ImageContent") as the real schemas
from derive_utoipa!, causing utoipa to replace the concrete schemas with
self-referencing $refs. Give the proxies distinct names so they don't
collide with the real schema registrations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6c1dfa1e2d
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Replace `#[schema(value_type = String)]` with a RoleSchemaRef proxy that references the real Role schema, preserving role-level typing in generated clients. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
utoipa 5 does not emit discriminator for #[serde(tag = "...")] enums. Add a Modify post-processor that restores discriminator propertyName for MessageContent, ExtensionConfig, MessageEvent, and ActionRequiredData. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cafe477952
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
utoipa renders Vec<u8> as array<integer> instead of string/binary. Add post-processing in SchemaFixups modifier to set the correct type: string, format: binary schema for the diagnostics endpoint, restoring the Blob | File TS type for client compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…hared error types
The tunnel module defined its own ErrorResponse { error: String } which
collided with the shared routes::errors::ErrorResponse { message: String }.
utoipa silently let one overwrite the other, producing incorrect TS types
for all non-tunnel error responses.
- Reuse the shared ErrorResponse in tunnel routes (aligns JSON key to "message")
- Add a test to detect schema-name collisions in the OpenAPI spec
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The discriminator and binary schema fixups are unnecessary: - oneOf variants already contain type enum constraints for matching - diagnostics binary response works at runtime via Content-Type header Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
utoipa renders Vec<u8> as array<integer>, producing number[] in TS codegen. This fails typecheck: new Blob([response.data]) expects BlobPart, not number[]. Add a minimal Modify fixup to set the diagnostics response schema to string/binary (no utoipa annotation exists for response body format). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 940ea787a1
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
load_image_as_png uses ImageFormat::Png to encode non-PNG inputs into PNG for DOCX insertion. The jpeg-only feature set broke this at runtime for JPEG and other image formats. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…deps * origin/main: (34 commits) fix: reduce server log verbosity — skip session in instrument, defaul… (#7729) fix: provider test infrastructure (#7738) fix: sanitize streamable HTTP extension names derived from URLs (#7740) refactor: derive GooseMode string conversions with strum (#7706) docs: Add Spraay Batch Payments MCP Extension Tutorial (#7525) fix: flake.nix (#7224) delete goose web (#7696) Add @angiejones as CODEOWNER for documentation (#7711) Add MLflow integration guide (#7563) docs: LM Studio availability (#7698) feat: add Avian as an LLM provider (#7561) Adds `linux-mcp-server` to the goose registry (#6979) fix: add #[serde(default)] to description field on 4 ExtensionConfig variants (#7708) feat: combine TUI UX from alexhancock/tui-goodness with publishing config from jackamadeo/package-tui (#7683) chore: cleanup old sandbox (#7700) Correct windows artifact (#7699) gh fall back (#7695) fix: restore smart-approve mode (#7690) fix: make TLS configurable in goosed agent via GOOSE_TLS env var (#7686) Update to rmcp 1.1.0 (#7619) ... # Conflicts: # Cargo.lock
There was a problem hiding this comment.
💡 Codex Review
https://github.com/block/goose/blob/ff7b8b29fa7e8803b8c33f189987017ea3aa1e8b/ui/desktop/openapi.json#L3717-L3718
Preserve discriminators for oneOf response/request unions
This regenerated OpenAPI schema now defines tagged unions like ActionRequiredData as oneOf without a discriminator, and the same regression appears for other tagged enums (MessageContent, ExtensionConfig, etc.). In this commit, those discriminator blocks were removed from ui/desktop/openapi.json, which makes many non-TS OpenAPI generators fall back to ambiguous union handling (or untyped models) because they can no longer reliably map payloads by actionType/type at deserialization time.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Notable: tokio 1.50, rustls 0.23.37, clap 4.5.60, syn 2.0.117, llama-cpp-2 0.1.138, zip 8.2, uuid 1.22, tonic 0.14.5, futures 0.3.32 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7e213d5f8b
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Use default-formats (without rayon) to support GIF, BMP, TIFF, WebP and other common formats in load_image_as_png, not just JPEG/PNG. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
rayon is already pulled in by candle-core, docx-rs, and others, so no reason to exclude it from image. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…deps Resolve conflict in generated ui/desktop/src/api/index.ts by regenerating OpenAPI spec and TS types. Also ran cargo update. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 604bc66fbe
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
The test cannot actually detect collisions since utoipa has already overwritten the duplicate by the time the OpenApi struct is built. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…deps Resolve conflicts: - Cargo.lock: take ours + cargo update - agent.rs: take main's ContentBlock/Vec<Value> change, port ContentBlock and ContentBlockSchema to utoipa 5 API - openapi.json, index.ts: regenerated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9406b8efec
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Same fix as TextContentSchemaRef/ImageContentSchemaRef: the proxy must use a different name than the real schema to avoid overwriting the concrete ContentBlock definition with a self-reference. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Re-insert authoritative schemas for TextContent, ImageContent, Role, ContentBlock via Modify fixup (proxy value_type types were overwriting them with self-refs) - Add discriminator blocks for MessageContent, ActionRequiredData, ExtensionConfig tagged enums (utoipa 5 no longer emits them) - Consolidate BinaryResponseFixup into single OpenApiFixups modifier
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 159512f59a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for (name, property_name) in [ | ||
| ("MessageContent", "type"), | ||
| ("ActionRequiredData", "actionType"), | ||
| ("ExtensionConfig", "type"), |
There was a problem hiding this comment.
Restore discriminator metadata for all tagged oneOf schemas
The new OpenApiFixups whitelist only restores discriminators for three schemas, so other tagged enums that previously carried discriminator metadata now lose it (e.g. MessageEvent, ModelDownloadStatus, SamplingConfig, and SuccessCheck in ui/desktop/openapi.json). This is a contract regression introduced by the utoipa 5 migration: OpenAPI client generators that depend on discriminator.propertyName for polymorphic deserialization can no longer reliably map these oneOf payloads back to concrete variants.
Useful? React with 👍 / 👎.
Summary
Bump several dependencies to reduce duplicate crate versions in the dependency tree.
Notable changes
derive_utoipa!macro and schema type APIsthread_rng→rng,gen_range→random_range, etc.)FileOptions→SimpleFileOptionsDependency tree impact
Eliminated duplicate versions of: axum, axum-core, bzip2, constant_time_eq, dirs, dirs-sys, gif, image, indicatif, matchit, png, tiff, utoipa, utoipa-gen, zstd, zstd-safe, zune-jpeg (net -16 dupes).