Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package senpai for openSUSE:Factory checked in at 2026-03-11 20:57:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/senpai (Old) and /work/SRC/openSUSE:Factory/.senpai.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "senpai" Wed Mar 11 20:57:53 2026 rev:2 rq:1338349 version:0.4.1 Changes: -------- --- /work/SRC/openSUSE:Factory/senpai/senpai.changes 2025-04-07 17:37:33.463184413 +0200 +++ /work/SRC/openSUSE:Factory/.senpai.new.8177/senpai.changes 2026-03-11 21:00:18.642268387 +0100 @@ -1,0 +2,8 @@ +Fri Aug 22 09:58:41 UTC 2025 - Alessio Biancalana <[email protected]> + +- Upgrade to v0.4.1: + * Defer unimportant caps until CAP LS response + * Fix incorrect cursor position when editing mutli-line text + * Fix theoretical crash on read event on overlay tab + +------------------------------------------------------------------- Old: ---- v0.4.0.tar.gz New: ---- v0.4.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ senpai.spec ++++++ --- /var/tmp/diff_new_pack.CWoMeq/_old 2026-03-11 21:00:19.322296481 +0100 +++ /var/tmp/diff_new_pack.CWoMeq/_new 2026-03-11 21:00:19.326296646 +0100 @@ -17,7 +17,7 @@ Name: senpai -Version: 0.4.0 +Version: 0.4.1 Release: 0 Summary: Your everyday IRC student License: ISC ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2025-03-29 11:16:58.000000000 +0100 @@ -0,0 +1,2 @@ +*.obscpio +*.osc ++++++ v0.4.0.tar.gz -> v0.4.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/senpai-v0.4.0/irc/session.go new/senpai-v0.4.1/irc/session.go --- old/senpai-v0.4.0/irc/session.go 2025-03-16 14:43:47.000000000 +0100 +++ new/senpai-v0.4.1/irc/session.go 2025-03-18 00:04:56.000000000 +0100 @@ -50,28 +50,29 @@ } // SupportedCapabilities is the set of capabilities supported by this library. -var SupportedCapabilities = map[string]struct{}{ - "away-notify": {}, - "batch": {}, - "cap-notify": {}, - "echo-message": {}, - "extended-monitor": {}, - "invite-notify": {}, - "labeled-response": {}, - "message-tags": {}, - "multi-prefix": {}, - "server-time": {}, - "sasl": {}, - "setname": {}, - "standard-replies": {}, - - "draft/chathistory": {}, - "draft/event-playback": {}, - "draft/metadata-2": {}, - "draft/read-marker": {}, - "soju.im/bouncer-networks-notify": {}, - "soju.im/bouncer-networks": {}, - "soju.im/search": {}, +// Value is false if the cap is deferred (to work around some daemons agfressive rate pre-conn-reg backlog limiting) +var SupportedCapabilities = map[string]bool{ + "away-notify": false, + "batch": true, + "cap-notify": true, + "echo-message": true, + "extended-monitor": false, + "invite-notify": false, + "labeled-response": true, + "message-tags": true, + "multi-prefix": true, + "sasl": true, + "server-time": true, + "setname": false, + "standard-replies": true, + + "draft/chathistory": true, + "draft/event-playback": true, + "draft/metadata-2": true, + "draft/read-marker": true, + "soju.im/bouncer-networks-notify": true, + "soju.im/bouncer-networks": true, + "soju.im/search": false, } // Values taken by the "@+typing=" client tag. TypingUnspec means the value or @@ -199,8 +200,10 @@ } s.out <- NewMessage("CAP", "LS", "302") - for capability := range SupportedCapabilities { - s.out <- NewMessage("CAP", "REQ", capability) + for capability, immediate := range SupportedCapabilities { + if immediate || s.netID != "" { + s.out <- NewMessage("CAP", "REQ", capability) + } } s.out <- NewMessage("NICK", s.nick) s.out <- NewMessage("USER", s.user, "0", "*", s.real) @@ -877,9 +880,18 @@ // do nothing case "CAP": var subcommand, caps string - if err := msg.ParseParams(nil, &subcommand, &caps); err != nil { + if err := msg.ParseParams(nil, &subcommand); err != nil { return nil, err } + if len(msg.Params) > 3 && msg.Params[2] == "*" { + if err := msg.ParseParams(nil, nil, nil, &caps); err != nil { + return nil, err + } + } else { + if err := msg.ParseParams(nil, nil, &caps); err != nil { + return nil, err + } + } switch subcommand { case "ACK": @@ -912,16 +924,25 @@ } case "NAK": // do nothing - case "NEW": + case "LS", "NEW": + var reqs []string for _, c := range ParseCaps(caps) { s.availableCaps[c.Name] = c.Value - if _, ok := SupportedCapabilities[c.Name]; !ok { + immediate, ok := SupportedCapabilities[c.Name] + if !ok { + continue + } + if subcommand == "LS" && (immediate || s.netID != "") { + // Already sent CAP, ignore continue } if _, ok := s.enabledCaps[c.Name]; ok { continue } - s.out <- NewMessage("CAP", "REQ", c.Name) + reqs = append(reqs, c.Name) + } + if len(reqs) > 0 { + s.out <- NewMessage("CAP", "REQ", strings.Join(reqs, " ")) } case "DEL": for _, c := range ParseCaps(caps) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/senpai-v0.4.0/ui/buffers.go new/senpai-v0.4.1/ui/buffers.go --- old/senpai-v0.4.0/ui/buffers.go 2025-03-16 14:43:47.000000000 +0100 +++ new/senpai-v0.4.1/ui/buffers.go 2025-03-18 00:04:56.000000000 +0100 @@ -647,7 +647,7 @@ func (bs *BufferList) SetRead(netID, title string, timestamp time.Time) { i, b := bs.at(netID, title) - if b == nil { + if b == nil || i < 0 { return } clearRead := true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/senpai-v0.4.0/ui/draw_utils.go new/senpai-v0.4.1/ui/draw_utils.go --- old/senpai-v0.4.0/ui/draw_utils.go 2025-03-16 14:43:47.000000000 +0100 +++ new/senpai-v0.4.1/ui/draw_utils.go 2025-03-18 00:04:56.000000000 +0100 @@ -48,6 +48,9 @@ return len(s) } if len(s) == 1 { // Single-character ASCII fast path + if s[0] == '\n' { // Replaced with ↲ + return 1 + } if s[0] <= 0x1F { return 0 } ++++++ vendor.tar.zst ++++++
