[Bug]: WebBookmarks typeahead (Alt+O / Cmd+O) is always empty due to unbound `fetchBookmarkSuggestions`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- electron, typescript
- Ambito
- developer-experience, frontend
Direzione di ricerca
Inizia da frontend/app/view/webview/webview.tsx, in corrispondenza di BookmarkTypeahead e WebViewModel.fetchBookmarkSuggestions; segui il percorso della callback fino a SuggestionControlInner e verifica come viene gestito il suo contesto this. Controlla che il percorso del file dei segnalibri usato dal pulsante corrisponda a quello letto dal backend. Il lavoro è completato quando i segnalibri configurati compaiono nel typeahead di Alt+O/Cmd+O e il pulsante apre il file dei segnalibri configurato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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`;
- Lingua principale
- Go
- Stelle
- 22.7k
- Fork
- 1.2k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di wavetermdev/waveterm
-
bug triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
wavetermdev/waveterm#3587 ·
I maintainer di solito rispondono entro 1 giorno
-
pwsh: encodeEnvVarsForPowerShell rejects Windows-standard env var names like ProgramFiles(x86), breaking wsh token on every pwsh blockForse già presa @vortsghost2025 l’ha presa 63 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
wavetermdev/waveterm#3481 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
wavetermdev/waveterm#3435 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
wavetermdev/waveterm#3432 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
wavetermdev/waveterm#3431 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di wavetermdev/waveterm
Issue simili
-
bug category:backup
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
LanternOps/breeze#11743 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
kubescape/synchronizer#208 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Azure/azure-storage-azcopy#3681 ·
I maintainer di solito rispondono entro 2 giorni