Commit Graph

1451 Commits

Author SHA1 Message Date
Will Pfleger 40ccd927f8 fix: address round-4 crossfire review findings for typed config
Hidden extension bypass: filter `is_hidden_extension` on both the
write path (`apply_to_config`) and read path (`from_config`), not
just the HTTP response layer.

Type safety: add `deserialize_string_or_number` for 8 DATABRICKS/GCP
retry fields so the API accepts both `"5"` and `5` without silent
data loss.

Security hardening: make `GOOSE_DISABLE_KEYRING` read-only via the
typed API to prevent downgrading secret storage from keyring to
plaintext. Guard `active_provider` batch-write to avoid double-write
when `GOOSE_PROVIDER` is also set.

Error propagation: `push_if_some!` and `push_secret!` macros now
propagate serialization errors via `?` instead of swallowing them.

Test maintainability: replace 48-entry hardcoded `non_string_keys`
exclusion set with schema-derived type detection using
`schema_for!(GooseConfigSchema)` property types.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-21 12:07:37 -04:00
Will Pfleger 381940db4f refactor: consolidate typed config tests into goosed.test.ts
Typed config E2E tests were split across two standalone files, each
spawning their own goosed server instance. Merged all 38 tests into
goosed.test.ts as a describe('typed config') block sharing the
existing server — eliminates 2 extra server startups and keeps all
config endpoint testing in one place.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 19:33:43 -04:00
Will Pfleger aca1a519b5 test: expand typed config E2E coverage from 17 to 38 tests
Round-3 bug fixes (provider model cross-contamination, GOOSE_MODEL
no-op on fresh config, secret write ordering) needed deeper E2E
coverage, and cross-endpoint consistency between typed and legacy
endpoints was untested.

New groups: provider switching stress (H), fresh config regression
(I), secret verification (J), legacy/typed interop (K), extensions
cross-endpoint (L), providers block (M), removeConfig interaction
(N), multi-field + slash_commands (O).

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 19:22:56 -04:00
Will Pfleger 3b6bf2b5e5 fix: address round-3 crossfire review findings for typed config
The crossfire review (Codex + Gemini) confirmed 4 P1/P2 bugs from
automated PR comments plus identified two additional gaps.

Fix 1 (P1): apply_to_config fell back to the current active provider's
model when switching GOOSE_PROVIDER without GOOSE_MODEL, cross-
contaminating provider entries. Now reads the target provider's saved
model via get_provider_entry.

Fix 2 (P2): ANTHROPIC_THINKING_BUDGET was missing from GooseConfigSchema
despite being the primary key read by Anthropic request construction.

Fix 3 (P2): GooseConfigUpdate wrote non-secrets to config.yaml before
attempting keyring secret writes. Reordered to write secrets first so a
keyring failure leaves no partial config.yaml state.

Fix 4 (P2): set_goose_model was a silent no-op when no active provider
existed. Now falls back to writing the legacy flat GOOSE_MODEL key.

Fix 5: check-config-schema now uses the --check flag instead of
regenerating and diffing, avoiding workspace mutation during CI checks.

Fix 6: GET/PATCH /config/typed responses now filter hidden extensions,
matching the existing GET /config/extensions behavior.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 16:39:14 -04:00
Will Pfleger f055a64418 feat: add providers and active_provider to typed config schema
PR #8977 introduced structured per-provider config (`providers:` block + `active_provider` key). Wire these into GooseConfigSchema so they flow through the typed API endpoints and both JSON schemas.

GOOSE_PROVIDER/GOOSE_MODEL reads now use the resolution-chain accessors (env → active_provider → legacy flat key), and writes route through set_active_provider to keep the providers block canonical.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:42:45 -04:00
Will Pfleger d19920fc65 test: add E2E integration tests for typed config endpoints
The HTTP layer for GET/PATCH /config/typed had zero test coverage — Rust
unit tests validate schema structs but not request deserialization, sparse
patch semantics, or secret routing over the wire. These 15 tests hit a
real goosed server and cover type diversity (string, bool, int, float,
enum, array), sparse patch invariants (omit preserves, null preserves,
empty body no-ops), nested object whole-value replacement, and secret
field non-leakage in responses.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:02 -04:00
Will Pfleger 9a35065574 fix: address round-2 crossfire review findings and pin openapi-ts
Round-2 crossfire review (3 Claude agents + Codex + Gemini) surfaced
a missing config key, a CLI display bug, incomplete test coverage, and
the root cause of the CI codegen mismatch. This commit addresses all
actionable findings and eliminates the manual TS codegen patching.

Key changes:
- Add GOOSE_DISABLE_TOOL_CALL_SUMMARY to GooseConfigSchema
- Add NANOGPT_API_KEY and LITELLM_CUSTOM_HEADERS to GooseConfigUpdate
- Fix configure.rs keyring status display for boolean GOOSE_DISABLE_KEYRING
- Add exhaustive from_config/apply_to_config coverage test
- Add CI check-config-schema job + Justfile targets
- Fix generate-config-schema error message (underscores → hyphens)
- Pin @hey-api/openapi-ts to 0.93.1, matching the lockfile
- Update PATCH endpoint docs (sparse semantics, nested replacement, env caution)

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:02 -04:00
Will Pfleger e5deaa9904 fix: patch client.gen.ts for openapi-ts 0.93.1 codegen compat
Missed this file in the previous commit — CI uses @hey-api/openapi-ts
0.93.1 (no lockfile, resolves ^0.93.0 to latest) while local has 0.93.0.
The CreateClientConfig return type now includes | Promise<...>.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:01 -04:00
Will Pfleger fdd6d18d99 fix: address crossfire review findings for typed config endpoints
Flatten GooseConfigUpdate to embed GooseConfigSchema via #[serde(flatten)],
eliminating ~500 lines of duplication and reducing edit sites from 6 to 3
per new config key. Fix GOOSE_DISABLE_KEYRING type (String → bool), add
7 missing provider secret keys, make ALL_KEYS test bidirectional, add
config roundtrip test, and log warnings on serialization failures.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:01 -04:00
Will Pfleger c3614598cb feat: add typed config endpoints with dual schema generation
Single GooseConfigSchema struct derives both utoipa::ToSchema (for
OpenAPI → TypeScript type safety) and schemars::JsonSchema (for
standalone config.schema.json consumed by downstream tools).

Adds GET/PATCH /config/typed endpoints alongside existing per-key
endpoints. GooseConfigUpdate struct includes secret fields routed
through the keyring. Existing UI and endpoints are unchanged.

Signed-off-by: Will Pfleger <wpfleger@block.xyz>
2026-05-18 15:14:01 -04:00
ayourk badb97a01e Structured per-provider config block, non-destructive provider switching (#8977)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Signed-off-by: Aaron Yourk <ayourk@gmail.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 18:22:50 +00:00
Alex Hancock 01e2f735d7 feat(tui): diff viewer (#9260)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-18 15:13:12 +00:00
Steve Officer 49ffcf44fa fix(desktop): ScheduleModal error message styling (#9278)
Signed-off-by: SteveO <steve.officer@gmail.com>
2026-05-18 14:31:32 +00:00
Cole McIntosh 0a4286f052 fix(ui): align sidebar hamburger in macOS fullscreen (#9257)
Signed-off-by: Cole McIntosh <colemcintosh6@gmail.com>
2026-05-18 14:28:47 +00:00
Lifei Zhou cefc685d7f fix: reduce excessive MISSING_TRANSLATION warnings for fallback locales (#9294) 2026-05-18 11:23:55 +00:00
Douwe Osinga 06e6e2e850 fix(desktop): eliminate cross-window deep link contamination (#9273)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
2026-05-18 03:41:40 +00:00
Lifei Zhou 1fafd74413 mount acp in the goosed server to migrate using acp protocols iteratively (#9097) 2026-05-17 23:43:30 +00:00
Alex Hancock d5b6407bbb improvement(tui): make spacing/layout nicer (#9243) 2026-05-15 09:47:30 -04:00
jh-block 537eb23fb2 Preserve thinking content for providers that require it (#8857)
Signed-off-by: jh-block <jhugo@block.xyz>
2026-05-15 10:36:25 +00:00
Jack Amadeo cac334b30f Build non-vulkan linux variants using ubuntu 22.04 (#9211) 2026-05-14 19:49:49 +00:00
Douwe Osinga b5084bfc56 fix(ui): show tool name in approval prompt (#9216)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 19:36:22 +00:00
Alex Hancock 147a7d14b7 chore: bump package.json versions from 0.19.1 to 0.20.0 (#9218)
Signed-off-by: Alex Hancock <alexhancock@block.xyz>
2026-05-14 14:17:35 -04:00
Douwe Osinga ffd2349b0e Better parsing of pasted html as markdown so agents understand (#9190)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 16:57:18 +00:00
Douwe Osinga 4671053985 fix: persist accumulated cost in session DB to survive reload (#9191)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 16:57:06 +00:00
Alex Hancock c938a46417 fix(publish-npm): build binary from current SHA + add compat check (#9212)
Signed-off-by: Alex Hancock <alexhancock@block.xyz>
2026-05-14 16:33:40 +00:00
Douwe Osinga ae5eae5ec5 feat(desktop): add goose://new-session deep link to open fresh chat (#9196)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-14 16:26:31 +00:00
Eugenio 7fc3537751 fix: prevent tool-use marker leakage in toolshim output (#8310)
Signed-off-by: Eugenio La Cava <eugeniolcv@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Michael Neale <michael.neale@gmail.com>
2026-05-14 05:49:37 +00:00
dependabot[bot] 31c50394e4 chore(deps): bump tauri from 2.10.3 to 2.11.1 in /ui/goose2/src-tauri (#9066)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-13 16:12:56 +00:00
Clay Delk ccda954c05 localize hardcoded strings in provider settings UI (#8931)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 16:00:56 +00:00
morgmart a54872cf27 move settings into app shell (#9047)
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 15:47:49 +00:00
fre$h 196daa27e7 fix(ui): keep SSE reconnect loop alive on long disconnects (#8717) (#8846)
Signed-off-by: fresh3nough <anonwurcod@proton.me>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 15:43:11 +00:00
Jack Amadeo 0e270373c2 remove pre-commit and pre-push hooks (#9157) 2026-05-13 15:03:35 +00:00
Jack Amadeo e16f8e8f9b Replace ensure-local-goose (#8532)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-13 12:05:31 -04:00
callebtc dbbee1cdbf add encrypted Nostr session sharing (#8922)
Signed-off-by: callebtc <93376500+callebtc@users.noreply.github.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Michael Neale <michael.neale@gmail.com>
2026-05-13 03:06:44 +00:00
Tai An 8c36ba86c6 feat(i18n): add Simplified Chinese (zh-CN) translation (#8765)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: antai <antai12232931@anaiguo.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
2026-05-13 01:34:08 +00:00
UGBOMEH OGOCHUKWU WILLIAMS 12604a8838 fix(ui): preserve user-set session name for recipe-based chats (#9079)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-12 23:43:58 +00:00
Spike Wang ba60b597fa feat(CLI): Add optional --parameters to scheduled recipe (#8741)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-12 23:30:38 +00:00
Jeff Ramnani bc6e0b25dc fix(a11y): improve inline code contrast in light theme (#9058) 2026-05-12 23:26:47 +00:00
Cameron Yick 014ddb84b0 fix(desktop/ui): Set correct mcp-app host capabilities (#9116)
Signed-off-by: Cameron Yick <cameron.yick@datadoghq.com>
2026-05-12 22:30:06 +00:00
tulsi 75e89964a4 polish sidebar and context panel (#9059)
Signed-off-by: tulsi <tulsi@block.xyz>
2026-05-12 22:25:51 +00:00
morgmart 6ffb26dccc polish inline code snippet styling (#9011)
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
2026-05-12 22:22:30 +00:00
tulsi 067770740e refresh onboarding when provider catalog loads (#9051)
Signed-off-by: tulsi <tulsi@block.xyz>
2026-05-12 20:42:19 +00:00
Mihir Gupta 15bfe4f5d5 fix(providers): honor dynamic_models: false in declarative provider configs (#8795)
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-12 19:07:36 +00:00
g.sunilkumar f2df168bec Fix frontend extension session state and tool routes (#8464)
Signed-off-by: sunilkumarvalmiki <g.sunilkumarvalmiki@gmail.com>
Signed-off-by: jh-block <jhugo@block.xyz>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
Signed-off-by: Angie Jones <jones.angie@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Signed-off-by: Adam Miller <admiller@redhat.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: Andrew Harvard <aharvard@squareup.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
Signed-off-by: Wes <wesb@block.xyz>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Kalvin Chau <kalvin@block.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Alex Hancock <alexhancock@block.xyz>
Signed-off-by: Treebird <treebird@treebird.dev>
Signed-off-by: tulsi <tulsi@block.xyz>
Signed-off-by: vonbai <nswanqi@gmail.com>
Signed-off-by: olaservo <olahungerford@gmail.com>
Signed-off-by: Abhijay Jain <Abhijay007j@gmail.com>
Signed-off-by: Rodolfo Olivieri <rolivier@redhat.com>
Signed-off-by: fresh3nough <anonwurcod@proton.me>
Signed-off-by: Jheison Martinez Bolivar <jheison.mb@gmail.com>
Co-authored-by: Matt Toohey <contact@matttoohey.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Lifei Zhou <lifei@squareup.com>
Co-authored-by: jh-block <jhugo@block.xyz>
Co-authored-by: Alex Hancock <alexhancock@block.xyz>
Co-authored-by: Jack Amadeo <jackamadeo@block.xyz>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Michael Neale <michael.neale@gmail.com>
Co-authored-by: Angie Jones <jones.angie@gmail.com>
Co-authored-by: SomeSolutionsArchitect <139817767+SomeSolutionsArchitect@users.noreply.github.com>
Co-authored-by: Christian <chvargas@wfscorp.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Co-authored-by: Adam Miller <admiller@redhat.com>
Co-authored-by: Jack Amadeo <jackamadeo@squareup.com>
Co-authored-by: morgmart <98432065+morgmart@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrew Harvard <aharvard@squareup.com>
Co-authored-by: Kalvin C <kalvinnchau@users.noreply.github.com>
Co-authored-by: Adewale Abati <acekyd01@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Kalvin Chau <kalvin@block.xyz>
Co-authored-by: Clay Delk <clay.delk@gmail.com>
Co-authored-by: dorien-koelemeijer <62866702+dorien-koelemeijer@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Monroe Williams <monroe@pobox.com>
Co-authored-by: Spike Wang <spike@spikewang.me>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Treebird <treebird@treebird.dev>
Co-authored-by: Sarthak Bhardwaj <100398847+SarthakB11@users.noreply.github.com>
Co-authored-by: Douwe Osinga <douwe@block.xyz>
Co-authored-by: tulsi <tulsi@block.xyz>
Co-authored-by: Vonbai <107612985+vonbai@users.noreply.github.com>
Co-authored-by: Ola Hungerford <olahungerford@gmail.com>
Co-authored-by: Lucas Kim <45152028+Raptors65@users.noreply.github.com>
Co-authored-by: Abhijay Jain <abhijay007j@gmail.com>
Co-authored-by: Rodolfo Olivieri <rolivier@redhat.com>
Co-authored-by: fre$h <anonwurcod@proton.me>
Co-authored-by: Jheison Martinez Bolivar <78370841+JheisonMB@users.noreply.github.com>
2026-05-12 19:04:26 +00:00
Vincenzo Palazzo 2c8d7f13bf [RFC] Add worktree-aware directory switcher (#8450)
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: goose <goose@aaif.dev>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-12 18:36:39 +00:00
Vincenzo Palazzo 570e5c326b Add chat history search feature to navigation panel (#8448)
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-12 18:10:55 +00:00
Taylor Ho c5825f8052 fix: reuse goose2 vite server on port conflict (#8722)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Douwe Osinga <douwe@squareup.com>
2026-05-12 17:28:26 +00:00
Lifei Zhou b8401f1a3e feat: added quarterly option for scheduler (#9076) 2026-05-12 05:13:58 +00:00
github-actions[bot] 831a7f27d3 chore(release): bump version to 1.34.0 (minor) (#9006)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-11 19:13:45 +00:00
Jack Amadeo a38922d95e Agents crud (#9084) 2026-05-11 17:33:32 +00:00