Skip to content

Conversation

@angiejones
Copy link
Collaborator

@angiejones angiejones commented Jul 2, 2025

🐛 Issues Resolved

Fixes #3211. This PR addresses all UX issues identified in the bug report for improving the recipe saving experience in the Goose Desktop app:

  1. Missing Save Button - RecipeEditor only had "Create Schedule" button, no direct save option
  2. Dark Mode Visibility - Buttons were unreadable in dark mode (white text on light backgrounds)
  3. Misleading Messages - Confusing empty state messaging in Recipe Library
  4. Preview Button Visibility - Preview button also invisible in dark mode

✨ What's New

🔧 Core Fixes

  • Added "Save Recipe" button to RecipeEditor with full save dialog functionality
  • Fixed dark mode button visibility across all recipe-related components
  • Updated messaging in Recipe Library for clearer user guidance
  • Improved button styling with proper theme-aware contrast

🎁 Bonus Enhancements

  • Import Recipe functionality - Users can now import recipes via deeplinks in Recipe Library
  • Toast notifications - Better UX feedback replacing system notifications
  • Auto-suggested naming - Smart recipe name generation from titles
  • Dual storage options - Choose between global and project-specific recipe storage

🎨 UI/UX Improvements

Before

  • Single "Create Schedule from Recipe" button (no save option)
  • Buttons invisible in dark mode
  • Confusing "save from active session" messaging
  • No way to import shared recipes

After

  • Side-by-side "Save Recipe" and "Create Schedule" buttons
  • All buttons readable in both light and dark modes
  • Clear messaging about recipe creation and saving
  • Easy recipe import via "Import Recipe" button with deeplink support

🔧 Technical Details

  • Theme-aware styling: Replaced bg-borderProminent text-white with bg-textProminent text-bgApp
  • Toast integration: Uses existing toast system for consistent notifications
  • Deeplink parsing: Full support for goose://recipe?config= format
  • Form validation: Proper error handling and user feedback
  • Storage flexibility: Global (~/.config/goose/recipes/) vs local (.goose/recipes/) options

✅ Testing

  • ✅ TypeScript compilation passes
  • ✅ ESLint checks pass (0 warnings)
  • ✅ Code formatting verified
  • ✅ All Rust tests pass (461 tests)
  • ✅ Manual testing in both light and dark modes

📁 Files Changed

  • ui/desktop/src/components/RecipeEditor.tsx - Save functionality + dark mode fixes
  • ui/desktop/src/components/RecipesView.tsx - Import functionality + dark mode fixes + messaging

Result: Complete resolution of recipe saving UX issues with additional user-friendly enhancements. All buttons now work perfectly in both light and dark modes, and users have multiple ways to save, share, and import recipes. 🎉

goose-recipe-ux-improvements.mp4

@angiejones angiejones requested review from DOsinga, alexhancock, jamadeo, michaelneale and zanesq and removed request for michaelneale July 2, 2025 03:10
@angiejones angiejones merged commit cac8159 into main Jul 2, 2025
11 of 12 checks passed
@angiejones angiejones deleted the recipe-ux branch July 2, 2025 15:43
AaronGoldsmith added a commit to AaronGoldsmith/goose that referenced this pull request Jul 2, 2025
* main: (37 commits)
  fix: fix desktop recipe url generation (block#3209)
  feat: improve UX for saving recipes (block#3214)
  fix: Pass Google AI API key in HTTP header, not query param (block#3192)
  docs: add linter to CONTRIBUTING.md (block#3168)
  feat: Structured output for recipes (block#3188)
  Fix cost tracking accuracy and OpenRouter model pricing (block#3189)
  docs: update cli install instructions for windows (block#3205)
  Docs: Cost tracking on the desktop app (block#3204)
  feat: Adding streamable-http transport support for backend, desktop and cli (block#2942)
  fix: use the correct `contains` syntax on create-recipe-pr.yml (block#3193)
  Temporarily Remove GH Copilot Provider  (block#3199)
  docs: fix tab navigation (block#3201)
  feat: use tiktoken-rs instead of tokenizers, single global tokenizer (block#3115)
  add playwright-mcp server to extensions list (block#3010)
  Add `/extension` path for extension installation (block#3011)
  feat(desktop): Prioritize suffix when truncating path in header (block#3110)
  chore(release): release version 1.0.31 (block#3185)
  feat: additional sub recipes via command line (block#3163)
  Add Internal Recipes To Recipes Cookbook (block#3179)
  pipe the argument to storage (block#3184)
  ...
wpfleger96 added a commit to wpfleger96/goose that referenced this pull request Jul 2, 2025
* main:
  Defend against invalid sessions (block#3229)
  Clean up session file optionality for --no-session (block#3230)
  Feat: Support Recipe Parameters in Goose desktop app (block#3155)
  docs: update recipe example (block#3222)
  Add native OAuth 2.0 authentication support to MCP client (block#3213)
  build: Check in Cargo.lock changes (block#3220)
  fix: fix desktop recipe url generation (block#3209)
  feat: improve UX for saving recipes (block#3214)
baxen added a commit to Developerayo/goose that referenced this pull request Jul 2, 2025
* main: (150 commits)
  Defend against invalid sessions (block#3229)
  Clean up session file optionality for --no-session (block#3230)
  Feat: Support Recipe Parameters in Goose desktop app (block#3155)
  docs: update recipe example (block#3222)
  Add native OAuth 2.0 authentication support to MCP client (block#3213)
  build: Check in Cargo.lock changes (block#3220)
  fix: fix desktop recipe url generation (block#3209)
  feat: improve UX for saving recipes (block#3214)
  fix: Pass Google AI API key in HTTP header, not query param (block#3192)
  docs: add linter to CONTRIBUTING.md (block#3168)
  feat: Structured output for recipes (block#3188)
  Fix cost tracking accuracy and OpenRouter model pricing (block#3189)
  docs: update cli install instructions for windows (block#3205)
  Docs: Cost tracking on the desktop app (block#3204)
  feat: Adding streamable-http transport support for backend, desktop and cli (block#2942)
  fix: use the correct `contains` syntax on create-recipe-pr.yml (block#3193)
  Temporarily Remove GH Copilot Provider  (block#3199)
  docs: fix tab navigation (block#3201)
  feat: use tiktoken-rs instead of tokenizers, single global tokenizer (block#3115)
  add playwright-mcp server to extensions list (block#3010)
  ...
jsibbison-square added a commit that referenced this pull request Jul 2, 2025
…x-turns

* origin/main:
  Defend against invalid sessions (#3229)
  Clean up session file optionality for --no-session (#3230)
  Feat: Support Recipe Parameters in Goose desktop app (#3155)
  docs: update recipe example (#3222)
  Add native OAuth 2.0 authentication support to MCP client (#3213)
  build: Check in Cargo.lock changes (#3220)
  fix: fix desktop recipe url generation (#3209)
  feat: improve UX for saving recipes (#3214)
  fix: Pass Google AI API key in HTTP header, not query param (#3192)
  docs: add linter to CONTRIBUTING.md (#3168)
atarantino pushed a commit to atarantino/goose that referenced this pull request Jul 14, 2025
Signed-off-by: Adam Tarantino <tarantino.adam@gmail.com>
s-soroosh pushed a commit to s-soroosh/goose that referenced this pull request Jul 18, 2025
Signed-off-by: Soroosh <soroosh.sarabadani@gmail.com>
kwsantiago pushed a commit to kwsantiago/goose that referenced this pull request Jul 19, 2025
Signed-off-by: Kyle Santiago <kyle@privkey.io>
cbruyndoncx pushed a commit to cbruyndoncx/goose that referenced this pull request Jul 20, 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.

Improve UX of Saving Recipes

3 participants