detached dbf83cb

fix(toast): correct event name for toast notifications

Toast notifications weren't showing because the code was dispatching
'dumber:showToast' events but ToastContainer listens for 'dumber:toast'.

Fixed in:
- window_shortcuts.go: Copy URL handler (Ctrl+Shift+C)
- clipboard.go: Clipboard controller toast dispatcher

Both now correctly dispatch 'dumber:toast' events.
commit
dbf83cb8f01505820cc48a15e3ad8d415513351c
author
bnema · · 2025-11-16 19:44 UTC
committer
bnema · · 2025-11-16 22:17 UTC
parent
62b63bf
signature
unsigned
2 files · +2 -2
M internal/app/browser/window_shortcuts.go +1 -1
@@ -122,7 +122,7 @@ func (h *WindowShortcutHandler) handleCopyURL() {
122122 script := `
123123 (async function() {
124124 const toast = (message, type) => {
125- document.dispatchEvent(new CustomEvent('dumber:showToast', {
125+ document.dispatchEvent(new CustomEvent('dumber:toast', {
126126 detail: { message, duration: 2000, type }
127127 }));
128128 };
@@ -122,7 +122,7 @@ func (h *WindowShortcutHandler) handleCopyURL() {
122 script := `122 script := `
123 (async function() {123 (async function() {
124 const toast = (message, type) => {124 const toast = (message, type) => {
125- document.dispatchEvent(new CustomEvent('dumber:showToast', {125+ document.dispatchEvent(new CustomEvent('dumber:toast', {
126 detail: { message, duration: 2000, type }126 detail: { message, duration: 2000, type }
127 }));127 }));
128 };128 };
M internal/app/control/clipboard.go +1 -1
@@ -51,7 +51,7 @@ func (c *ClipboardController) showToast(message, toastType string) {
5151 detail["type"] = toastType
5252 }
5353
54- if err := c.webView.DispatchCustomEvent("dumber:showToast", detail); err != nil {
54+ if err := c.webView.DispatchCustomEvent("dumber:toast", detail); err != nil {
5555 log.Printf("Failed to dispatch toast event: %v", err)
5656 }
5757 }
@@ -51,7 +51,7 @@ func (c *ClipboardController) showToast(message, toastType string) {
51 detail["type"] = toastType51 detail["type"] = toastType
52 }52 }
53 53
54- if err := c.webView.DispatchCustomEvent("dumber:showToast", detail); err != nil {54+ if err := c.webView.DispatchCustomEvent("dumber:toast", detail); err != nil {
55 log.Printf("Failed to dispatch toast event: %v", err)55 log.Printf("Failed to dispatch toast event: %v", err)
56 }56 }
57 }57 }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close