Skip to content

Conversation

@zanesq
Copy link
Collaborator

@zanesq zanesq commented Sep 22, 2025

Pull Request Description

Refactored create/edit recipe in recipe manager and chat to use the same form and experience. Added a few missing features and usability improvements while I was at it.

This is not a full redesign of recipes. Its a first step towards unifying the front end code and experience in its current state to fill in the gaps in preparation of moving recipe functionality to the backend and a full redesign. Will follow up in another PR with tests.

Changes

  • Create/edit recipe forms all match and use the same fields and logic using our new tanstack form library + validation
  • Create recipe from chat now passes the session id rather than the messages and generates the title and description as well.
  • Revamped recipe creation experience so recipes are now generated and opened in the same window
  • Removed the egg loader with a more engaging loading state
  • Removed recipe-editor route since its no longer in a new window
  • Added collapse and expand interface for parameters and inline usage detection indicators
  • Can now define a parameter name when creating rather than auto generation of a random name
  • Added individual parameter delete option rather than only delete last
  • Fixed form labels and helper text to reflect reality and be more helpful
  • Added copy deeplink button to recipes view

Screenshots

image image image image image image

@zanesq zanesq requested review from DOsinga and jamadeo September 22, 2025 03:44
setSessionId(null);
setAgentState(AgentState.UNINITIALIZED);
setRecipeFromAppConfig(null);
initPromiseRef.current = null; // Clear any pending initialization
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

initPromiseRef serves as a singleton pattern for agent initialization, basically it prevents race conditions by cacheing the initialization promise so subsequent calls to loadCurrentChat will return the same promise instead of starting a new initialization.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this comment is true. if we need to reset this though I think we might have to await it first though since if that promise is still the case it means we still have a request in flight. I don't think that that should happen in reality, but maybe need to be sure. also remove the comment

@michaelneale
Copy link
Collaborator

this looks much much nicer already - any particular testing notes?

@zanesq
Copy link
Collaborator Author

zanesq commented Sep 23, 2025

I have a branch off this with tests, will push up shortly but for manual testing basically everything related to create/edit and running recipes from a chat session and recipe manager. I've verified deep links continue to work as before.

…-unification

* 'main' of github.com:block/goose:
  temp file for batch issue creation
  fix: view can recognise a dir (#4701)
  goosed standalone works with providers (#4698)
  Compact session automatically for streaming providers on Context Length Exceeded (#4565)
  When the developer extension gets a cancellation message, it should kill any running processes that it owns. (#4604)
  Remove some unused stuff (#4388)
  Add I Ching MCP to extension catalog (#4525)
  Offer to summarize or clear conversation when it has gotten too long … (#4688)
  refactor(forge): employ desktopTemplate to support absolute paths (#4084)
  fix(nix): add nixpkgs missing for existing build process & useful in dev process (#4490)
…-unification

* 'main' of github.com:block/goose:
  [docs] Add gotoHuman MCP server Tutorial (#4764)
  fix: adjust nightly builds to first push a tag (#4704)
@michaelneale
Copy link
Collaborator

@zanesq not sure why, but with this I can't run recipes the same as on main. I made a simple recipe (in the GUI here) to say a joke in french and spanish.

on this branch:

image image

which isn't right (it doesn't read the prompts at all it seems).

on main (with has a Use button):

image image

@zanesq
Copy link
Collaborator Author

zanesq commented Sep 24, 2025

Hmm might be an issue with launching the recipe in the same window. Thanks for testing, will take a look and report back.

@zanesq
Copy link
Collaborator Author

zanesq commented Sep 24, 2025

@michaelneale was indeed a bug, just pushed a fix and verified locally

image

zanesq and others added 6 commits September 24, 2025 15:26
…-unification

* 'main' of github.com:block/goose:
  Add elapsed time to the CLI output. (#4609)
  fix: Fix cell coordinate ordering in XlsxTool and add unit tests (#4551)
  Use gemini flash for summarization on open router (#4290)
  chore(deps): bump xcb from 1.5.0 to 1.6.0 (#4289)
  feat(shell): throw errors on interactive commands (#4788)
  feat: AgentManager - foundation for unified execution (#4389) (#4684)
  shave and code split (#4630)
  docs: acp support (#4793)
  Add Take Action for Hacktoberfest (#4791)
  Remove now unused mcp-server crate (#4773)
  Release/1.9.0 (#4703)
  chore(mcp): convert computercontroller server to use the rust sdk (#4772)
  Docs: Delete sessions from UI and edit has changed (#4785)
  Don't load user's shell env on app startup (#4681)
  Docs: Chrome Dev Tools Extension Tutorial (#4783)
  Add Hacktoberfest 2025 Leaderboard Workflow (#4776)

# Conflicts:
#	crates/goose-server/src/routes/recipe.rs
#	ui/desktop/openapi.json
#	ui/desktop/src/api/types.gen.ts
#	ui/desktop/src/hooks/useRecipeManager.ts
#	ui/desktop/src/recipe/index.ts
…-unification

* 'main' of github.com:block/goose:
  correct the tests from an odd merge (#4804)
  docs: import yaml recipe (#4799)
  docs: Add openmetadata extension to goose mcp docs (#4547)
zanesq added 4 commits October 1, 2025 17:59
…-unification

* 'main' of github.com:block/goose:
  docs: add a new goose tip (#4940)
  Add PR template (#4934)
  Using --resume with --name should still accept session IDs (#4937)
@zanesq
Copy link
Collaborator Author

zanesq commented Oct 2, 2025

@DOsinga I pushed up all the minor feedback. I started another branch with the major refactoring feedback but I'm tempted to merge this as is in the meantime so it doesn't drift too far.

@DOsinga
Copy link
Collaborator

DOsinga commented Oct 2, 2025

@DOsinga I pushed up all the minor feedback. I started another branch with the major refactoring feedback but I'm tempted to merge this as is in the meantime so it doesn't drift too far.

we could do that. can you explain about useAgent though why we need those changes, those seem like the most fishy. and we'd have to do it in a quick follow up where we really figure out what the architecture of this should be

@zanesq
Copy link
Collaborator Author

zanesq commented Oct 3, 2025

@DOsinga it was to work around the current front end edge cases of launching a chat / recipe in the same window and I agree its hacky so I reverted all that code and changed recipes back to launch in a new window for now until we come up with a better plan for handling this. Working on a few last feedback points and testing thoroughly to wrap this up.

Copy link
Collaborator

@DOsinga DOsinga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onwards and upwards! let's get this in and get to the brave new world

…-unification

* 'main' of github.com:block/goose:
  feat: set custom models for lead/worker (#4598)
  feat: add grok-code-fast-1 support for xAI provider (#4472)
  Persist dynamic extension config so we can resume recipe sessions w/ extensions (#4331)
  fix: show PowerShell PATH instructions for Windows users (#4989)
  feat: add Smart Task Organizer recipe for Hacktoberfest (#4936)
  Fix extension headers (#5000)
  feat: add advanced software project generator initializer recipe (#4767) (#4949)
@zanesq
Copy link
Collaborator Author

zanesq commented Oct 4, 2025

Sounds good will do asap. Wrapping up final testing before I merge.

@zanesq zanesq merged commit f4d7940 into main Oct 5, 2025
10 checks passed
@zanesq zanesq deleted the zane/create-recipe-unification branch October 5, 2025 16:01
lifeizhou-ap added a commit that referenced this pull request Oct 6, 2025
* main: (22 commits)
  fix: Issue #4540: `goose configure` -> Cursor Agent succeeds (#4942)
  feat: Add advanced data analysis pipeline recipe (#4990) (#5005)
  Create / edit recipe form unification and improvements (#4693)
  feat: add Code Review Mentor recipe with Developer and Memory extensions (#4992) (#5014)
  feat: set custom models for lead/worker (#4598)
  feat: add grok-code-fast-1 support for xAI provider (#4472)
  Persist dynamic extension config so we can resume recipe sessions w/ extensions (#4331)
  fix: show PowerShell PATH instructions for Windows users (#4989)
  feat: add Smart Task Organizer recipe for Hacktoberfest (#4936)
  Fix extension headers (#5000)
  feat: add advanced software project generator initializer recipe (#4767) (#4949)
  Removed unused libs (#4932)
  Platform extensions sketch (#4868)
  Add reply to the routes (#4963)
  feat(cli): add GOOSE_DEBUG environment variable support (#4825)
  docs: Change community page sections (#4984)
  docs: remove temporary Hacktoberfest issue templates (#4982)
  Create multi-channel researcher prompt (#4947)
  docs: Add Community Content section to Community Page (#4964)
  Allow empty API Key when registering custom provider (#4977)
  ...
wpfleger96 added a commit to wpfleger96/goose that referenced this pull request Oct 6, 2025
* main: (130 commits)
  Add new subcommand for opening recipes in desktop app (block#4970)
  Update system.md with softer subagent language (block#5023)
  docs: add new goose tip (block#4941)
  Fix nix flake double copy (block#4976)
  Upgrade electron for macOS Tahoe compatibility (block#5015)
  fix: check server is ready so that we can decode the recipe deeplink (block#5021)
  fix: backwards compatible parsing recipe file (block#5020)
  chore: Used common function to list recipes in local machine (block#4974)
  fix: Issue block#4540: `goose configure` -> Cursor Agent succeeds (block#4942)
  feat: Add advanced data analysis pipeline recipe (block#4990) (block#5005)
  Create / edit recipe form unification and improvements (block#4693)
  feat: add Code Review Mentor recipe with Developer and Memory extensions (block#4992) (block#5014)
  feat: set custom models for lead/worker (block#4598)
  feat: add grok-code-fast-1 support for xAI provider (block#4472)
  Persist dynamic extension config so we can resume recipe sessions w/ extensions (block#4331)
  fix: show PowerShell PATH instructions for Windows users (block#4989)
  feat: add Smart Task Organizer recipe for Hacktoberfest (block#4936)
  Fix extension headers (block#5000)
  feat: add advanced software project generator initializer recipe (block#4767) (block#4949)
  Removed unused libs (block#4932)
  ...
Itz-Agasta pushed a commit to Itz-Agasta/goose that referenced this pull request Oct 7, 2025
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.

5 participants