dify - ✅(Solved) Fix feat(goto-anything): enhance command palette with recent items, navigation commands, tool search, and more [1 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
langgenius/dify#35072Fetched 2026-04-14 05:56:43
View on GitHub
Comments
0
Participants
1
Timeline
6
Reactions
1
Participants
Assignees
Timeline (top)
labeled ×2assigned ×1closed ×1cross-referenced ×1

The goto-anything (Cmd+K) command palette is well-architected but has several high-impact UX gaps compared to similar tools (VS Code, Linear, Notion). This issue proposes enhancements to make it significantly more useful.

Root Cause

The goto-anything (Cmd+K) command palette is well-architected but has several high-impact UX gaps compared to similar tools (VS Code, Linear, Notion). This issue proposes enhancements to make it significantly more useful.

Fix Action

Fixed

PR fix notes

PR #35078: feat(goto-anything): recent items, /go navigation command, deep app sub-sections

Description (problem / solution / changelog)

Summary

Enhances the Cmd+K command palette with three high-impact UX improvements. Closes #35072.

  • Recent items: When the palette opens with no query, it now shows the last 8 visited apps and knowledge bases (stored in localStorage). Navigating to any app or knowledge result automatically records it.
  • /go command: New submenu slash command for instant keyboard-first navigation to any top-level section — Apps, Knowledge, Plugins, Tools, Explore, Account.
  • Deep app sub-sections: In scoped @app search, each matched app also surfaces its sub-section results (Workflow/Configuration, Overview, Logs, Develop) so users can jump directly to a specific tab.

Changed files

FileChange
actions/recent-store.tsNew — localStorage store for recent navigation history
actions/commands/go.tsxNew — /go submenu command with top-level nav items
actions/types.tsAdded 'recent' to SearchResultType, added RecentSearchResult type
actions/app.tsxAdded sub-section results in scoped @app mode
actions/commands/slash.tsxRegistered goCommand with router dependency
hooks/use-goto-anything-results.tsInjects recent items when search query is empty
hooks/use-goto-anything-navigation.tsRecords app/knowledge navigations; handles 'recent' type
components/result-list.tsxAdded 'recent' group heading
index.tsxShows results (recent) instead of empty state when recent items exist
i18n/en-US/app.jsonAdded gotoAnything.groups.recent key

Test plan

  • Open palette (Cmd+K) with no prior history → see default empty state hint
  • Navigate to an app via @app search → reopen palette → see it in "Recent" group
  • Type /go → see submenu with Apps, Knowledge, Plugins, Tools, Explore, Account → select one → correct navigation
  • Type @app <name> → see app result plus sub-section results (Overview, Logs, etc.) → selecting sub-section navigates to the right tab
  • pnpm type-check:tsgo and pnpm lint:fix pass with no errors

🤖 Generated with Claude Code

Changed files

  • web/app/components/goto-anything/actions/__tests__/app.spec.ts (modified, +48/-1)
  • web/app/components/goto-anything/actions/__tests__/recent-store.spec.ts (added, +78/-0)
  • web/app/components/goto-anything/actions/app.tsx (modified, +78/-20)
  • web/app/components/goto-anything/actions/commands/__tests__/go.spec.tsx (added, +106/-0)
  • web/app/components/goto-anything/actions/commands/__tests__/slash.spec.tsx (modified, +2/-0)
  • web/app/components/goto-anything/actions/commands/go.tsx (added, +62/-0)
  • web/app/components/goto-anything/actions/commands/slash.tsx (modified, +3/-0)
  • web/app/components/goto-anything/actions/recent-store.ts (added, +30/-0)
  • web/app/components/goto-anything/actions/types.ts (modified, +7/-2)
  • web/app/components/goto-anything/components/result-list.tsx (modified, +1/-0)
  • web/app/components/goto-anything/hooks/__tests__/use-goto-anything-navigation.spec.ts (modified, +106/-0)
  • web/app/components/goto-anything/hooks/__tests__/use-goto-anything-results.spec.ts (modified, +59/-0)
  • web/app/components/goto-anything/hooks/use-goto-anything-navigation.ts (modified, +16/-0)
  • web/app/components/goto-anything/hooks/use-goto-anything-results.ts (modified, +27/-3)
  • web/app/components/goto-anything/index.tsx (modified, +4/-2)
  • web/i18n/en-US/app.json (modified, +1/-0)

Code Example

/go apps | /go datasets | /go plugins | /go tools | /go explore | /go account

---

/new app | /new dataset | /new workflow

---

my chatbot
my chatbot / Configuration
my chatbot / Logs
my chatbot / Overview
my chatbot / Develop
RAW_BUFFERClick to expand / collapse

Summary

The goto-anything (Cmd+K) command palette is well-architected but has several high-impact UX gaps compared to similar tools (VS Code, Linear, Notion). This issue proposes enhancements to make it significantly more useful.

Proposed Enhancements

1. Recent Items (Highest Impact)

Show recently visited apps and knowledge bases when the palette opens with an empty query. Today the palette shows nothing useful until the user types.

  • Store up to 8 recent items in localStorage
  • Display a "Recent" group at the top before any search results
  • Written on navigation so it's always up-to-date

2. Quick Navigation Commands (/go)

A /go submenu command to jump to any top-level section instantly via keyboard:

/go apps | /go datasets | /go plugins | /go tools | /go explore | /go account

3. Tool Search (@tool)

Add @tool as a search scope for the /tools section — tools are a first-class entity like apps and knowledge bases but are missing from the palette.

4. Create Commands (/new)

/new app | /new dataset | /new workflow

Opens the create flow directly without navigating to the right page first.

5. Deep App Navigation

When an app matches a search, also surface sub-section results:

my chatbot
my chatbot / Configuration
my chatbot / Logs
my chatbot / Overview
my chatbot / Develop

6. Keyboard Shortcut Help (/help)

A /help command that shows all available prefixes, commands, and keyboard shortcuts inline.

7. Clipboard Copy Actions

Hover action on app results to copy App ID or API endpoint — useful for developers building integrations.

Implementation Notes

All features follow the existing extensible patterns:

  • New scopes → add ActionItem in actions/ and register in actions/index.ts
  • New slash commands → add file in actions/commands/ and register in SlashCommandProvider
  • Recent items → hook into use-goto-anything-navigation.ts + localStorage

See web/app/components/goto-anything/ for current implementation.

Priority Order

#FeatureEffortImpact
1Recent ItemsSmallVery High
2/go navigationSmallHigh
3@tool searchSmallMedium-High
4/new createMediumHigh
5Deep app navMediumMedium
6/help commandSmallMedium
7Clipboard copySmallMedium

extent analysis

TL;DR

Implementing the proposed enhancements, starting with the highest-impact features like "Recent Items" and "/go" navigation, can significantly improve the usability of the goto-anything command palette.

Guidance

  • Begin by implementing the "Recent Items" feature, which involves storing up to 8 recent items in localStorage and displaying them at the top of the palette when it opens with an empty query.
  • Add a /go submenu command to allow users to jump to top-level sections instantly via keyboard, following the existing pattern for new slash commands.
  • Consider implementing the @tool search scope to improve discoverability of tools within the palette.
  • Review the existing implementation in web/app/components/goto-anything/ to understand how to extend the current functionality with the proposed features.
  • Prioritize features based on the provided effort and impact assessment to maximize the effectiveness of the enhancements.

Example

// Example of how to register a new slash command in SlashCommandProvider
import { SlashCommandProvider } from './SlashCommandProvider';
import { newGoCommand } from './actions/commands/newGoCommand';

SlashCommandProvider.registerCommand(newGoCommand);

Notes

The implementation notes provided in the issue suggest that all features should follow existing extensible patterns, making it easier to integrate the new functionality without disrupting the current codebase.

Recommendation

Apply the workaround by implementing the proposed enhancements, starting with the highest-priority features, to improve the usability and functionality of the goto-anything command palette. This approach allows for incremental improvement based on the assessed impact and effort required for each feature.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING