[Bug]: WebBookmarks typeahead (Alt+O / Cmd+O) is always empty due to unbound `fetchBookmarkSuggestions`
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 75/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- electron, typescript
- Domaine
- developer-experience, frontend
Piste de recherche
Commencez dans frontend/app/view/webview/webview.tsx, au niveau de BookmarkTypeahead et de WebViewModel.fetchBookmarkSuggestions ; suivez le chemin du callback jusqu’à SuggestionControlInner et vérifiez comment son contexte this est géré. Vérifiez que le chemin du fichier de favoris utilisé par le bouton correspond à celui lu par le backend. Le travail est terminé lorsque les favoris configurés apparaissent dans la saisie semi-automatique d’Alt+O/Cmd+O et que le bouton ouvre le fichier de favoris configuré.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Current Behavior
When pressing Alt+O (or Cmd+O on macOS) inside a web widget to open bookmarks, the bookmark typeahead modal appears with the search input, but the dropdown list below it remains completely blank, even when ~/.config/waveterm/bookmarks.json contains valid bookmarks.
Inspecting DevTools inside the web widget reveals an unhandled promise rejection:
TypeError: Cannot read properties of undefined (reading 'env') at fetchBookmarkSuggestions.
Expected Behavior
Configured bookmarks from ~/.config/waveterm/bookmarks.json should appear in the typeahead list when pressing Alt+O / Cmd+O.
Steps To Reproduce
- Add a valid bookmark to
~/.config/waveterm/bookmarks.json:
{
"bookmark@github": {
"url": "https://github.com",
"title": "GitHub"
}
}
- Open Wave Terminal and create a web block.
- Focus the web block and press Alt+O (Windows/Linux) or Cmd+O (macOS).
- The search box appears, but the list underneath is empty.
- Open DevTools for the web widget to observe the uncaught TypeError in the console.
Wave Version
v0.14.5
Platform
Windows
OS Version/Distribution
Windows 11
Architecture
x64
Anything else?
Root Cause
In frontend/app/view/webview/webview.tsx:
fetchBookmarkSuggestionsis defined as an instance method onWebViewModel:
async fetchBookmarkSuggestions(
query: string,
reqContext: SuggestionRequestContext
): Promise<FetchSuggestionsResponse> {
const result = await this.env.rpc.FetchSuggestionsCommand(TabRpcClient, {
suggestiontype: "bookmark",
query,
widgetid: reqContext.widgetid,
reqnum: reqContext.reqnum,
});
return result;
}
- In BookmarkTypeahead (around line 781), it is passed to BlockHeaderSuggestionControl without binding this:
fetchSuggestions={model.fetchBookmarkSuggestions}
When invoked inside SuggestionControlInner, this is undefined, causing this.env.rpc to throw TypeError: Cannot read properties of undefined (reading 'env').
- In SuggestionControlInner, the promise rejection has no .catch() handler, so setFetched(true) is never reached, leaving the dropdown unrendered.
Proposed Fix
- Bind the method when passing it as a callback in BookmarkTypeahead:
- fetchSuggestions={model.fetchBookmarkSuggestions}
+ fetchSuggestions={model.fetchBookmarkSuggestions.bind(model)}
- (Bonus) Line 758 hardcodes ${env.electron.getConfigDir()}/presets/bookmarks.json for the "Open bookmarks.json" button, whereas the backend reads from
${env.electron.getConfigDir()}/bookmarks.json:
- const path = `${env.electron.getConfigDir()}/presets/bookmarks.json`;
+ const path = `${env.electron.getConfigDir()}/bookmarks.json`;
- Langage dominant
- Go
- Étoiles
- 22.7k
- Forks
- 1.2k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de wavetermdev/waveterm
-
bug triage
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
wavetermdev/waveterm#3587 ·
Les mainteneurs répondent en général sous 1 jour
-
pwsh: encodeEnvVarsForPowerShell rejects Windows-standard env var names like ProgramFiles(x86), breaking wsh token on every pwsh blockPeut-être pris @vortsghost2025 l’a pris il y a 63 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
wavetermdev/waveterm#3481 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
wavetermdev/waveterm#3435 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
wavetermdev/waveterm#3432 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
wavetermdev/waveterm#3431 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de wavetermdev/waveterm
Issues similaires
-
bug category:backup
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
LanternOps/breeze#11743 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
kubescape/synchronizer#208 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Azure/azure-storage-azcopy#3681 ·
Les mainteneurs répondent en général sous 2 jours