Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nwg-drawer for openSUSE:Factory checked in at 2025-07-15 16:43:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nwg-drawer (Old) and /work/SRC/openSUSE:Factory/.nwg-drawer.new.7373 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nwg-drawer" Tue Jul 15 16:43:17 2025 rev:8 rq:1292456 version:0.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/nwg-drawer/nwg-drawer.changes 2025-05-15 17:01:16.477945681 +0200 +++ /work/SRC/openSUSE:Factory/.nwg-drawer.new.7373/nwg-drawer.changes 2025-07-15 16:43:58.676143611 +0200 @@ -1,0 +2,15 @@ +Sat Jul 12 19:08:44 UTC 2025 - Lukas Müller <[email protected]> + +- Update to version 0.7.3. + Changelog: https://github.com/nwg-piotr/nwg-drawer/releases/tag/v0.7.3 + - destroy proper window on key or button pressed after a math operation; closes #166; + - if the fore-mentioned key is the Esc key, clear the search box as well; + - also support the KP_Enter key (enter on the numeric pad), in addition to KEY_Return. +- Changes from version 0.7.2: + Changelog: https://github.com/nwg-piotr/nwg-drawer/releases/tag/v0.7.2 + - Improved search function using loose character matching; #165 by @sunwoo101. +- Changes from version 0.7.1: + Changelog: https://github.com/nwg-piotr/nwg-drawer/releases/tag/v0.7.1 + - Added two new values for the `-wm` flag: 'niri' and 'uwsm'; closes #160 proposed by @aljus7. + +------------------------------------------------------------------- Old: ---- nwg-drawer-0.7.0.tar.gz New: ---- nwg-drawer-0.7.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nwg-drawer.spec ++++++ --- /var/tmp/diff_new_pack.0qomvL/_old 2025-07-15 16:43:59.704181843 +0200 +++ /var/tmp/diff_new_pack.0qomvL/_new 2025-07-15 16:43:59.704181843 +0200 @@ -17,7 +17,7 @@ Name: nwg-drawer -Version: 0.7.0 +Version: 0.7.3 Release: 0 Summary: Wlroots application drawer License: MIT ++++++ nwg-drawer-0.7.0.tar.gz -> nwg-drawer-0.7.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-drawer-0.7.0/README.md new/nwg-drawer-0.7.3/README.md --- old/nwg-drawer-0.7.0/README.md 2025-05-14 21:58:50.000000000 +0200 +++ new/nwg-drawer-0.7.3/README.md 2025-07-09 02:27:13.000000000 +0200 @@ -50,12 +50,13 @@ ## Command line arguments ```text -$ nwg-drawer -h Usage of nwg-drawer: -c uint number of Columns (default 6) -close close drawer of existing instance + -closebtn string + close button position: 'left' or 'right', 'none' by default (default "none") -d Turn on Debug messages -fm string File Manager (default "thunar") @@ -64,7 +65,7 @@ -fslen int File Search name LENgth Limit (default 80) -ft - Force Theme for libadwaita apps, by adding 'GTK_THEME=<default-gtk-theme>' env var + Force Theme for libadwaita apps, by adding 'GTK_THEME=<default-gtk-theme>' env var; ignored if wm argument == 'uwsm' -g string GTK theme name -i string @@ -115,11 +116,26 @@ Terminal emulator (default "foot") -v display Version information -wm string - use swaymsg exec (with 'sway' argument) or hyprctl dispatch exec (with 'hyprland') to launch programs + use swaymsg exec (with 'sway' argument) or hyprctl dispatch exec (with 'hyprland') or riverctl spawn (with 'river') or niri msg action spawn -- (with 'niri') or uwsm app -- (with 'uwsm' for Universal Wayland Session Manager) to launch programs ``` *NOTE: the `$TERM` environment variable overrides the `-term` argument.* +### About the `-wm` argument + +If you want to run commands through the compositor or through the Universal Wayland Session Manager, use the `-wm` flag. + +| Flag value | Will run command with | +| ---------- |----------------------------| +| sway | `swaymsg exec` | +| hyprland | `hyprctl dispatch exec` | +| river | `riverctl spawn` | +| niri | `niri msg action spawn --` | +| uwsm | `uwsm app --` | + +Nwg-drawer will check if it's actually running on the given compositor, or if `uwsm` is installed. If not, it will run +the command directly. The only exception is `-wm river`, as I have no idea how to confirm it's running. + ## Running You may use the drawer in two ways: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-drawer-0.7.0/go.mod new/nwg-drawer-0.7.3/go.mod --- old/nwg-drawer-0.7.0/go.mod 2025-05-14 21:58:50.000000000 +0200 +++ new/nwg-drawer-0.7.3/go.mod 2025-07-09 02:27:13.000000000 +0200 @@ -8,7 +8,7 @@ github.com/allan-simon/go-singleinstance v0.0.0-20210120080615-d0997106ab37 github.com/diamondburned/gotk4-layer-shell/pkg v0.0.0-20240109211357-6efa9f6dc438 github.com/diamondburned/gotk4/pkg v0.3.1 - github.com/expr-lang/expr v1.17.2 + github.com/expr-lang/expr v1.17.5 github.com/fsnotify/fsnotify v1.9.0 github.com/joshuarubin/go-sway v1.2.0 github.com/sirupsen/logrus v1.9.3 @@ -19,6 +19,6 @@ github.com/joshuarubin/lifecycle v1.1.4 // indirect go.uber.org/multierr v1.11.0 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 // indirect - golang.org/x/sync v0.14.0 // indirect + golang.org/x/sync v0.15.0 // indirect golang.org/x/sys v0.33.0 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-drawer-0.7.0/go.sum new/nwg-drawer-0.7.3/go.sum --- old/nwg-drawer-0.7.0/go.sum 2025-05-14 21:58:50.000000000 +0200 +++ new/nwg-drawer-0.7.3/go.sum 2025-07-09 02:27:13.000000000 +0200 @@ -15,6 +15,8 @@ github.com/expr-lang/expr v1.17.0/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= github.com/expr-lang/expr v1.17.2 h1:o0A99O/Px+/DTjEnQiodAgOIK9PPxL8DtXhBRKC+Iso= github.com/expr-lang/expr v1.17.2/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= +github.com/expr-lang/expr v1.17.5 h1:i1WrMvcdLF249nSNlpQZN1S6NXuW9WaOfF5tPi3aw3k= +github.com/expr-lang/expr v1.17.5/go.mod h1:8/vRC7+7HBzESEqt5kKpYXxrxkr31SaO8r40VO/1IT4= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= @@ -53,6 +55,8 @@ golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-drawer-0.7.0/main.go new/nwg-drawer-0.7.3/main.go --- old/nwg-drawer-0.7.0/main.go 2025-05-14 21:58:50.000000000 +0200 +++ new/nwg-drawer-0.7.3/main.go 2025-07-09 02:27:13.000000000 +0200 @@ -28,7 +28,7 @@ "github.com/diamondburned/gotk4/pkg/gtk/v3" ) -const version = "0.7.0" +const version = "0.7.3" var ( appDirs []string @@ -153,9 +153,9 @@ } func validateWm() { - if !(*wm == "sway" || *wm == "hyprland" || *wm == "Hyprland") && *wm != "" { + if !(*wm == "sway" || *wm == "hyprland" || *wm == "Hyprland" || *wm == "river" || *wm == "niri" || *wm == "uwsm") && *wm != "" { *wm = "" - log.Warn("-wm argument supports only 'sway' or 'hyprland' string.") + log.Warn("-wm argument can be only 'sway', 'hyprland', 'river', 'niri' or 'uwsm'") } } @@ -175,13 +175,13 @@ var marginRight = flag.Int("mr", 0, "Margin Right") var marginBottom = flag.Int("mb", 0, "Margin Bottom") var fsColumns = flag.Uint("fscol", 2, "File Search result COLumns") -var forceTheme = flag.Bool("ft", false, "Force Theme for libadwaita apps, by adding 'GTK_THEME=<default-gtk-theme>' env var") +var forceTheme = flag.Bool("ft", false, "Force Theme for libadwaita apps, by adding 'GTK_THEME=<default-gtk-theme>' env var; ignored if wm argument == 'uwsm'") var columnsNumber = flag.Uint("c", 6, "number of Columns") var itemSpacing = flag.Uint("spacing", 20, "icon spacing") var lang = flag.String("lang", "", "force lang, e.g. \"en\", \"pl\"") var fileManager = flag.String("fm", "thunar", "File Manager") var term = flag.String("term", defaultTermIfBlank(os.Getenv("TERM"), "foot"), "Terminal emulator") -var wm = flag.String("wm", "", "use swaymsg exec (with 'sway' argument) or hyprctl dispatch exec (with 'hyprland') or riverctl spawn (with 'river') to launch programs") +var wm = flag.String("wm", "", "use swaymsg exec (with 'sway' argument) or hyprctl dispatch exec (with 'hyprland') or riverctl spawn (with 'river') or niri msg action spawn -- (with 'niri') or uwsm app -- (with 'uwsm' for Universal Wayland Session Manager) to launch programs") var nameLimit = flag.Int("fslen", 80, "File Search name LENgth Limit") var noCats = flag.Bool("nocats", false, "Disable filtering by category") var noFS = flag.Bool("nofs", false, "Disable file search") @@ -506,7 +506,7 @@ firstPowerBtn.GrabFocus() } - } else if key.Keyval() == gdk.KEY_Return { + } else if key.Keyval() == gdk.KEY_Return || key.Keyval() == gdk.KEY_KP_Enter { s := searchEntry.Text() if s != "" { // Check if execute command input diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-drawer-0.7.0/tools.go new/nwg-drawer-0.7.3/tools.go --- old/nwg-drawer-0.7.0/tools.go 2025-05-14 21:58:50.000000000 +0200 +++ new/nwg-drawer-0.7.3/tools.go 2025-07-09 02:27:13.000000000 +0200 @@ -579,16 +579,22 @@ } } - themeToPrepend := "" - //add "GTK_THEME=<default_gtk_theme>" environment variable - if *forceTheme { - settings := gtk.SettingsGetDefault() - th := settings.ObjectProperty("gtk-theme-name") - themeToPrepend = th.(string) - } + if *wm != "uwsm" { + themeToPrepend := "" + //add "GTK_THEME=<default_gtk_theme>" environment variable + if *forceTheme { + settings := gtk.SettingsGetDefault() + th := settings.ObjectProperty("gtk-theme-name") + themeToPrepend = th.(string) + } - if themeToPrepend != "" { - command = fmt.Sprintf("GTK_THEME=%q %s", themeToPrepend, command) + if themeToPrepend != "" { + command = fmt.Sprintf("GTK_THEME=%q %s", themeToPrepend, command) + } + } else { + if *forceTheme { + log.Warn("We can't force GTK_THEME= while running a command through uwsm") + } } var elements = []string{"/usr/bin/env", "-S", command} @@ -605,11 +611,32 @@ } cmd = exec.Command(prefixCommand, args...) } else if *wm == "sway" { - cmd = exec.Command("swaymsg", "exec", strings.Join(elements, " ")) + if _, ok := os.LookupEnv("SWAYSOCK"); ok { + cmd = exec.Command("swaymsg", "exec", strings.Join(elements, " ")) + } else { + log.Warn("Unable to find SWAYSOCK, running command directly") + } } else if *wm == "hyprland" || *wm == "Hyprland" { - cmd = exec.Command("hyprctl", "dispatch", "exec", strings.Join(elements, " ")) + if _, ok := os.LookupEnv("HYPRLAND_INSTANCE_SIGNATURE"); ok { + cmd = exec.Command("hyprctl", "dispatch", "exec", strings.Join(elements, " ")) + } else { + log.Warn("Unable to find HYPRLAND_INSTANCE_SIGNATURE, running command directly") + } } else if *wm == "river" { + // a check if we're actually on river would be of use here, but we have none cmd = exec.Command("riverctl", "spawn", strings.Join(elements, " ")) + } else if *wm == "niri" { + if os.Getenv("XDG_CURRENT_DESKTOP") == "niri" { + cmd = exec.Command("niri", append([]string{"msg", "action", "spawn", "--"}, elements...)...) + } else { + log.Warn("$XDG_CURRENT_DESKTOP != 'niri', running command directly") + } + } else if *wm == "uwsm" { + if _, err := exec.LookPath("uwsm"); err == nil { + cmd = exec.Command("uwsm", append([]string{"app", "--"}, elements...)...) + } else { + log.Warn("Unable to find uwsm, running command directly") + } } msg := fmt.Sprintf("Executing command: %q; args: %q\n", cmd.Args[0], cmd.Args[1:]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-drawer-0.7.0/uicomponents.go new/nwg-drawer-0.7.3/uicomponents.go --- old/nwg-drawer-0.7.0/uicomponents.go 2025-05-14 21:58:50.000000000 +0200 +++ new/nwg-drawer-0.7.3/uicomponents.go 2025-07-09 02:27:13.000000000 +0200 @@ -2,11 +2,12 @@ import ( "fmt" - "github.com/diamondburned/gotk4-layer-shell/pkg/gtklayershell" "io/fs" "path/filepath" "strings" + "github.com/diamondburned/gotk4-layer-shell/pkg/gtklayershell" + log "github.com/sirupsen/logrus" "github.com/diamondburned/gotk4/pkg/gdk/v3" @@ -181,6 +182,20 @@ return false } +func subsequenceMatch(needle, haystack string) bool { + needle = strings.ToLower(strings.TrimSpace(needle)) + haystack = strings.ToLower(haystack) + + n, h := 0, 0 + for n < len(needle) && h < len(haystack) { + if needle[n] == haystack[h] { + n++ + } + h++ + } + return n == len(needle) +} + func setUpAppsFlowBox(categoryList []string, searchPhrase string) *gtk.FlowBox { if appFlowBox != nil && appFlowBox.Widget.Native() != 0 { log.Debugf("Destroying appFlowBox (native=%x)", appFlowBox.Widget.Native()) @@ -213,7 +228,8 @@ } } } else { - if !entry.NoDisplay && (strings.Contains(strings.ToLower(entry.NameLoc), strings.ToLower(searchPhrase)) || + needle := strings.ToLower(searchPhrase) + if !entry.NoDisplay && (subsequenceMatch(needle, strings.ToLower(entry.NameLoc)) || strings.Contains(strings.ToLower(entry.CommentLoc), strings.ToLower(searchPhrase)) || strings.Contains(strings.ToLower(entry.Comment), strings.ToLower(searchPhrase)) || strings.Contains(strings.ToLower(entry.Exec), strings.ToLower(searchPhrase))) { @@ -671,15 +687,19 @@ // any key to close the window window.Connect("key-release-event", func(_ *gtk.Window, event *gdk.Event) bool { - resultWindow.Destroy() - resultWindow = nil + key := event.AsKey() + if key.Keyval() == gdk.KEY_Escape { + searchEntry.SetText("") + } + mathResultWindow.Destroy() + mathResultWindow = nil return true }) // any button to close the window window.Connect("button-release-event", func(_ *gtk.Window, event *gdk.Event) bool { - resultWindow.Destroy() - resultWindow = nil + mathResultWindow.Destroy() + mathResultWindow = nil return true }) ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/expr-lang/expr/builtin/lib.go new/vendor/github.com/expr-lang/expr/builtin/lib.go --- old/vendor/github.com/expr-lang/expr/builtin/lib.go 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/github.com/expr-lang/expr/builtin/lib.go 2025-07-09 02:27:13.000000000 +0200 @@ -374,6 +374,10 @@ i := params[1] v := reflect.ValueOf(from) + if from == nil { + return nil, nil + } + if v.Kind() == reflect.Invalid { panic(fmt.Sprintf("cannot fetch %v from %T", i, from)) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/expr-lang/expr/checker/nature/utils.go new/vendor/github.com/expr-lang/expr/checker/nature/utils.go --- old/vendor/github.com/expr-lang/expr/checker/nature/utils.go 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/github.com/expr-lang/expr/checker/nature/utils.go 2025-07-09 02:27:13.000000000 +0200 @@ -14,6 +14,11 @@ } func fetchField(t reflect.Type, name string) (reflect.StructField, bool) { + // If t is not a struct, early return. + if t.Kind() != reflect.Struct { + return reflect.StructField{}, false + } + // First check all structs fields. for i := 0; i < t.NumField(); i++ { field := t.Field(i) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/expr-lang/expr/conf/config.go new/vendor/github.com/expr-lang/expr/conf/config.go --- old/vendor/github.com/expr-lang/expr/conf/config.go 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/github.com/expr-lang/expr/conf/config.go 2025-07-09 02:27:13.000000000 +0200 @@ -10,43 +10,41 @@ "github.com/expr-lang/expr/vm/runtime" ) -const ( - // DefaultMemoryBudget represents an upper limit of memory usage +var ( + // DefaultMemoryBudget represents default maximum allowed memory usage by the vm.VM. DefaultMemoryBudget uint = 1e6 - // DefaultMaxNodes represents an upper limit of AST nodes - DefaultMaxNodes uint = 10000 + // DefaultMaxNodes represents default maximum allowed AST nodes by the compiler. + DefaultMaxNodes uint = 1e4 ) type FunctionsTable map[string]*builtin.Function type Config struct { - EnvObject any - Env nature.Nature - Expect reflect.Kind - ExpectAny bool - Optimize bool - Strict bool - Profile bool - MaxNodes uint - MemoryBudget uint - ConstFns map[string]reflect.Value - Visitors []ast.Visitor - Functions FunctionsTable - Builtins FunctionsTable - Disabled map[string]bool // disabled builtins + EnvObject any + Env nature.Nature + Expect reflect.Kind + ExpectAny bool + Optimize bool + Strict bool + Profile bool + MaxNodes uint + ConstFns map[string]reflect.Value + Visitors []ast.Visitor + Functions FunctionsTable + Builtins FunctionsTable + Disabled map[string]bool // disabled builtins } // CreateNew creates new config with default values. func CreateNew() *Config { c := &Config{ - Optimize: true, - MaxNodes: DefaultMaxNodes, - MemoryBudget: DefaultMemoryBudget, - ConstFns: make(map[string]reflect.Value), - Functions: make(map[string]*builtin.Function), - Builtins: make(map[string]*builtin.Function), - Disabled: make(map[string]bool), + Optimize: true, + MaxNodes: DefaultMaxNodes, + ConstFns: make(map[string]reflect.Value), + Functions: make(map[string]*builtin.Function), + Builtins: make(map[string]*builtin.Function), + Disabled: make(map[string]bool), } for _, f := range builtin.Builtins { c.Builtins[f.Name] = f diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/expr-lang/expr/expr.go new/vendor/github.com/expr-lang/expr/expr.go --- old/vendor/github.com/expr-lang/expr/expr.go 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/github.com/expr-lang/expr/expr.go 2025-07-09 02:27:13.000000000 +0200 @@ -195,6 +195,15 @@ }) } +// MaxNodes sets the maximum number of nodes allowed in the expression. +// By default, the maximum number of nodes is conf.DefaultMaxNodes. +// If MaxNodes is set to 0, the node budget check is disabled. +func MaxNodes(n uint) Option { + return func(c *conf.Config) { + c.MaxNodes = n + } +} + // Compile parses and compiles given input expression to bytecode program. func Compile(input string, ops ...Option) (*vm.Program, error) { config := conf.CreateNew() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/expr-lang/expr/vm/vm.go new/vendor/github.com/expr-lang/expr/vm/vm.go --- old/vendor/github.com/expr-lang/expr/vm/vm.go 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/github.com/expr-lang/expr/vm/vm.go 2025-07-09 02:27:13.000000000 +0200 @@ -75,7 +75,6 @@ if len(vm.Variables) < program.variables { vm.Variables = make([]any, program.variables) } - if vm.MemoryBudget == 0 { vm.MemoryBudget = conf.DefaultMemoryBudget } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/golang.org/x/sync/errgroup/errgroup.go new/vendor/golang.org/x/sync/errgroup/errgroup.go --- old/vendor/golang.org/x/sync/errgroup/errgroup.go 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/golang.org/x/sync/errgroup/errgroup.go 2025-07-09 02:27:13.000000000 +0200 @@ -76,10 +76,8 @@ } // Go calls the given function in a new goroutine. -// The first call to Go must happen before a Wait. -// It blocks until the new goroutine can be added without the number of -// active goroutines in the group exceeding the configured limit. // +// The first call to Go must happen before a Wait. // It blocks until the new goroutine can be added without the number of // goroutines in the group exceeding the configured limit. // @@ -185,8 +183,9 @@ } func (p PanicError) Error() string { - // A Go Error method conventionally does not include a stack dump, so omit it - // here. (Callers who care can extract it from the Stack field.) + if len(p.Stack) > 0 { + return fmt.Sprintf("recovered from errgroup.Group: %v\n%s", p.Recovered, p.Stack) + } return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2025-05-14 21:58:50.000000000 +0200 +++ new/vendor/modules.txt 2025-07-09 02:27:13.000000000 +0200 @@ -27,7 +27,7 @@ github.com/diamondburned/gotk4/pkg/glib/v2 github.com/diamondburned/gotk4/pkg/gtk/v3 github.com/diamondburned/gotk4/pkg/pango -# github.com/expr-lang/expr v1.17.2 +# github.com/expr-lang/expr v1.17.5 ## explicit; go 1.18 github.com/expr-lang/expr github.com/expr-lang/expr/ast @@ -66,7 +66,7 @@ # go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 ## explicit; go 1.11 go4.org/unsafe/assume-no-moving-gc -# golang.org/x/sync v0.14.0 +# golang.org/x/sync v0.15.0 ## explicit; go 1.23.0 golang.org/x/sync/errgroup golang.org/x/sync/singleflight
