[Bug]: WebBookmarks typeahead (Alt+O / Cmd+O) is always empty due to unbound `fetchBookmarkSuggestions`
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 75/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- electron, typescript
- Bereich
- developer-experience, frontend
Rechercherichtung
Beginne in frontend/app/view/webview/webview.tsx bei BookmarkTypeahead und WebViewModel.fetchBookmarkSuggestions; verfolge, wie der Callback SuggestionControlInner erreicht, und prüfe, wie der this-Kontext behandelt wird. Vergleiche den vom Button verwendeten Lesezeichen-Dateipfad mit dem Pfad, den das Backend liest. Fertig, wenn konfigurierte Lesezeichen in der Alt+O/Cmd+O-Typeahead-Suche erscheinen und der Button die konfigurierte Lesezeichen-Datei öffnet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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`;
- Vorherrschende Sprache
- Go
- Sterne
- 22.7k
- Forks
- 1.2k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus wavetermdev/waveterm
-
bug triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
wavetermdev/waveterm#3587 ·
Maintainer antworten meist innerhalb von 1 Tag
-
pwsh: encodeEnvVarsForPowerShell rejects Windows-standard env var names like ProgramFiles(x86), breaking wsh token on every pwsh blockEvtl. vergeben @vortsghost2025 hat das vor 63 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
wavetermdev/waveterm#3481 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
wavetermdev/waveterm#3435 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
wavetermdev/waveterm#3432 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
wavetermdev/waveterm#3431 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in wavetermdev/waveterm
Ähnliche Issues
-
bug category:backup
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
LanternOps/breeze#11743 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
kubescape/synchronizer#208 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Azure/azure-storage-azcopy#3681 ·
Maintainer antworten meist innerhalb von 2 Tagen