[pkgsite] internal/godoc/dochtml: use natural sorting for items

1 view
Skip to first unread message

Egon Elbre (Gerrit)

unread,
Jan 15, 2026, 6:31:11 AM (3 days ago) Jan 15
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Egon Elbre has uploaded the change for review

Commit message

internal/godoc/dochtml: use natural sorting for items

This ensures that simd/archsimd package items are sorted numerically as well, e.g.

Uint8
Uint16
Uint32

Rather than

Uint16
Uint32
Uint8

Updates #77160
Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65

Change diff

diff --git a/internal/godoc/dochtml/dochtml.go b/internal/godoc/dochtml/dochtml.go
index 8264170..df86e38 100644
--- a/internal/godoc/dochtml/dochtml.go
+++ b/internal/godoc/dochtml/dochtml.go
@@ -19,6 +19,7 @@
"go/doc"
"go/printer"
"go/token"
+ "slices"
"sort"
"strings"

@@ -30,6 +31,7 @@
"golang.org/x/pkgsite/internal/derrors"
"golang.org/x/pkgsite/internal/godoc/dochtml/internal/render"
"golang.org/x/pkgsite/internal/log"
+ "golang.org/x/pkgsite/internal/natsort"
"golang.org/x/text/cases"
"golang.org/x/text/language"
)
@@ -151,9 +153,26 @@
for _, t := range p.Types {
types = append(types, typeToItem(t, exmap))
}
+
+ slices.SortFunc(consts, compareItems)
+ slices.SortFunc(vars, compareItems)
+ slices.SortFunc(funcs, compareItems)
+ slices.SortFunc(types, compareItems)
+
+ for _, typ := range types {
+ slices.SortFunc(typ.Consts, compareItems)
+ slices.SortFunc(typ.Vars, compareItems)
+ slices.SortFunc(typ.Funcs, compareItems)
+ slices.SortFunc(typ.Methods, compareItems)
+ }
+
return consts, vars, funcs, types
}

+func compareItems(a, b *item) int {
+ return natsort.Compare(a.Name, b.Name)
+}
+
func valuesToItems(vs []*doc.Value) []*item {
var r []*item
for _, v := range vs {
@@ -402,7 +421,7 @@
sort.SliceStable(exs.List, func(i, j int) bool {
// TODO: Break ties by sorting by suffix, unless
// not needed because of upstream slice order.
- return exs.List[i].ParentID < exs.List[j].ParentID
+ return natsort.Less(exs.List[i].ParentID, exs.List[j].ParentID)
})
return exs
}
diff --git a/internal/godoc/dochtml/dochtml_test.go b/internal/godoc/dochtml/dochtml_test.go
index f57cce3..80feba9 100644
--- a/internal/godoc/dochtml/dochtml_test.go
+++ b/internal/godoc/dochtml/dochtml_test.go
@@ -48,7 +48,7 @@
func TestRender(t *testing.T) {
ctx := context.Background()
LoadTemplates(templateFS)
- for _, pkg := range []string{"everydecl", "comments"} {
+ for _, pkg := range []string{"everydecl", "comments", "order"} {
t.Run(pkg, func(t *testing.T) {
fset, d := mustLoadPackage(pkg)
parts, err := Render(ctx, fset, d, testRenderOptions)
diff --git a/internal/godoc/dochtml/testdata/order.go b/internal/godoc/dochtml/testdata/order.go
new file mode 100644
index 0000000..b8a82bf
--- /dev/null
+++ b/internal/godoc/dochtml/testdata/order.go
@@ -0,0 +1,55 @@
+// Copyright 2026 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package order exercises natural sorting of symbols.
+package order
+
+// Uint32x16 represents a 128-bit unsigned integer.
+type Uint32x16 struct {
+ data [16]uint32
+}
+
+// AsUint8x64 converts a Uint32x16 to a Uint8x64.
+func (u Uint32x16) AsUint8x64() Uint8x64 {
+ return Uint8x64{}
+}
+
+// AsUint64x8 converts a Uint32x16 to a Uint64x8.
+func (u Uint32x16) AsUint64x8() Uint8x64 {
+ return Uint64x8{}
+}
+
+// Uint8x64 represents a 128-bit unsigned integer.
+type Uint8x64 struct {
+ data [64]uint8
+}
+
+// AsUint32x16 converts a Uint8x64 to a Uint32x16.
+func (u Uint8x64) AsUint32x16() Uint32x16 {
+ return Uint32x16{}
+}
+
+// AsUint64x8 converts a Uint8x64 to a Uint64x8.
+func (u Uint8x64) AsUint64x8() Uint64x8 {
+ return Uint64x8{}
+}
+
+// Uint64x8 represents a 128-bit unsigned integer.
+type Uint64x8 struct {
+ data [8]uint64
+}
+
+// AsUint8x64 converts a Uint64x8 to a Uint8x64.
+func (u Uint64x8) AsUint8x64() Uint8x64 {
+ return Uint8x64{}
+}
+
+// AsUint32x16 converts a Uint64x8 to a Uint32x16.
+func (u Uint64x8) AsUint32x16() Uint32x16 {
+ return Uint32x16{}
+}
+
+func ExampleUint64x8_AsUint32x16() {}
+
+func ExampleUint64x8_AsUint8x64() {}
diff --git a/internal/godoc/dochtml/testdata/order.golden b/internal/godoc/dochtml/testdata/order.golden
new file mode 100644
index 0000000..2695cf2
--- /dev/null
+++ b/internal/godoc/dochtml/testdata/order.golden
@@ -0,0 +1,292 @@
+<div class="Documentation-content js-docContent"> <section class="Documentation-overview">
+<h3 tabindex="-1" id="pkg-overview" class="Documentation-overviewHeader">Overview <a href="#pkg-overview" title="Go to Overview" aria-label="Go to Overview">¶</a></h3>
+<p>Package order exercises natural sorting of symbols.
+</p>
+</section><section class="Documentation-index">
+<h3 id="pkg-index" class="Documentation-indexHeader">Index <a href="#pkg-index" title="Go to Index" aria-label="Go to Index">¶</a></h3>
+<ul class="Documentation-indexList">
+<li class="Documentation-indexFunction">
+<a href="#ExampleUint64x8_AsUint8x64">func ExampleUint64x8_AsUint8x64()</a></li>
+<li class="Documentation-indexFunction">
+<a href="#ExampleUint64x8_AsUint32x16">func ExampleUint64x8_AsUint32x16()</a></li>
+<li class="Documentation-indexType">
+<a href="#Uint8x64">type Uint8x64</a></li>
+<li><ul class="Documentation-indexTypeMethods">
+<li>
+<a href="#Uint8x64.AsUint32x16">func (u Uint8x64) AsUint32x16() Uint32x16</a></li>
+<li>
+<a href="#Uint8x64.AsUint64x8">func (u Uint8x64) AsUint64x8() Uint64x8</a></li>
+</ul></li>
+<li class="Documentation-indexType">
+<a href="#Uint32x16">type Uint32x16</a></li>
+<li><ul class="Documentation-indexTypeMethods">
+<li>
+<a href="#Uint32x16.AsUint8x64">func (u Uint32x16) AsUint8x64() Uint8x64</a></li>
+<li>
+<a href="#Uint32x16.AsUint64x8">func (u Uint32x16) AsUint64x8() Uint8x64</a></li>
+</ul></li>
+<li class="Documentation-indexType">
+<a href="#Uint64x8">type Uint64x8</a></li>
+<li><ul class="Documentation-indexTypeMethods">
+<li>
+<a href="#Uint64x8.AsUint8x64">func (u Uint64x8) AsUint8x64() Uint8x64</a></li>
+<li>
+<a href="#Uint64x8.AsUint32x16">func (u Uint64x8) AsUint32x16() Uint32x16</a></li>
+</ul></li>
+</ul>
+</section><h3 tabindex="-1" id="pkg-constants" class="Documentation-constantsHeader">Constants <a href="#pkg-constants" title="Go to Constants" aria-label="Go to Constants">¶</a></h3>
+<section class="Documentation-constants"><p class="Documentation-empty">This section is empty.</p></section>
+<h3 tabindex="-1" id="pkg-variables" class="Documentation-variablesHeader">Variables <a href="#pkg-variables" title="Go to Variables" aria-label="Go to Variables">¶</a></h3>
+<section class="Documentation-variables"><p class="Documentation-empty">This section is empty.</p></section>
+<h3 tabindex="-1" id="pkg-functions" class="Documentation-functionsHeader">Functions <a href="#pkg-functions" title="Go to Functions" aria-label="Go to Functions">¶</a></h3>
+<section class="Documentation-functions"><div class="Documentation-function">
+<h4 tabindex="-1" id="ExampleUint64x8_AsUint8x64" data-kind="function" class="Documentation-functionHeader">
+<span>func <a class="Documentation-source" href="src">ExampleUint64x8_AsUint8x64</a> <a class="Documentation-idLink" href="#ExampleUint64x8_AsUint8x64" title="Go to ExampleUint64x8_AsUint8x64" aria-label="Go to ExampleUint64x8_AsUint8x64">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func ExampleUint64x8_AsUint8x64()</pre>
+</div>
+</div><div class="Documentation-function">
+<h4 tabindex="-1" id="ExampleUint64x8_AsUint32x16" data-kind="function" class="Documentation-functionHeader">
+<span>func <a class="Documentation-source" href="src">ExampleUint64x8_AsUint32x16</a> <a class="Documentation-idLink" href="#ExampleUint64x8_AsUint32x16" title="Go to ExampleUint64x8_AsUint32x16" aria-label="Go to ExampleUint64x8_AsUint32x16">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func ExampleUint64x8_AsUint32x16()</pre>
+</div>
+</div></section>
+<h3 tabindex="-1" id="pkg-types" class="Documentation-typesHeader">Types <a href="#pkg-types" title="Go to Types" aria-label="Go to Types">¶</a></h3>
+<section class="Documentation-types"><div class="Documentation-type">
+<h4 tabindex="-1" id="Uint8x64" data-kind="type" class="Documentation-typeHeader">
+<span>type <a class="Documentation-source" href="src">Uint8x64</a> <a class="Documentation-idLink" href="#Uint8x64" title="Go to Uint8x64" aria-label="Go to Uint8x64">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>type Uint8x64 struct {
+<span id="Uint8x64.data" data-kind="field"> data [64]<a href="/builtin#uint8">uint8</a>
+</span>}</pre>
+</div>
+<p>Uint8x64 represents a 128-bit unsigned integer.
+</p>
+<div class="Documentation-typeMethod">
+<h4 tabindex="-1" id="Uint8x64.AsUint32x16" data-kind="method" class="Documentation-typeMethodHeader">
+<span>func (Uint8x64) <a class="Documentation-source" href="src">AsUint32x16</a> <a class="Documentation-idLink" href="#Uint8x64.AsUint32x16" title="Go to Uint8x64.AsUint32x16" aria-label="Go to Uint8x64.AsUint32x16">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func (u <a href="#Uint8x64">Uint8x64</a>) AsUint32x16() <a href="#Uint32x16">Uint32x16</a></pre>
+</div>
+<p>AsUint32x16 converts a Uint8x64 to a Uint32x16.
+</p>
+</div><div class="Documentation-typeMethod">
+<h4 tabindex="-1" id="Uint8x64.AsUint64x8" data-kind="method" class="Documentation-typeMethodHeader">
+<span>func (Uint8x64) <a class="Documentation-source" href="src">AsUint64x8</a> <a class="Documentation-idLink" href="#Uint8x64.AsUint64x8" title="Go to Uint8x64.AsUint64x8" aria-label="Go to Uint8x64.AsUint64x8">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func (u <a href="#Uint8x64">Uint8x64</a>) AsUint64x8() <a href="#Uint64x8">Uint64x8</a></pre>
+</div>
+<p>AsUint64x8 converts a Uint8x64 to a Uint64x8.
+</p>
+</div>
+</div><div class="Documentation-type">
+<h4 tabindex="-1" id="Uint32x16" data-kind="type" class="Documentation-typeHeader">
+<span>type <a class="Documentation-source" href="src">Uint32x16</a> <a class="Documentation-idLink" href="#Uint32x16" title="Go to Uint32x16" aria-label="Go to Uint32x16">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>type Uint32x16 struct {
+<span id="Uint32x16.data" data-kind="field"> data [16]<a href="/builtin#uint32">uint32</a>
+</span>}</pre>
+</div>
+<p>Uint32x16 represents a 128-bit unsigned integer.
+</p>
+<div class="Documentation-typeMethod">
+<h4 tabindex="-1" id="Uint32x16.AsUint8x64" data-kind="method" class="Documentation-typeMethodHeader">
+<span>func (Uint32x16) <a class="Documentation-source" href="src">AsUint8x64</a> <a class="Documentation-idLink" href="#Uint32x16.AsUint8x64" title="Go to Uint32x16.AsUint8x64" aria-label="Go to Uint32x16.AsUint8x64">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func (u <a href="#Uint32x16">Uint32x16</a>) AsUint8x64() <a href="#Uint8x64">Uint8x64</a></pre>
+</div>
+<p>AsUint8x64 converts a Uint32x16 to a Uint8x64.
+</p>
+</div><div class="Documentation-typeMethod">
+<h4 tabindex="-1" id="Uint32x16.AsUint64x8" data-kind="method" class="Documentation-typeMethodHeader">
+<span>func (Uint32x16) <a class="Documentation-source" href="src">AsUint64x8</a> <a class="Documentation-idLink" href="#Uint32x16.AsUint64x8" title="Go to Uint32x16.AsUint64x8" aria-label="Go to Uint32x16.AsUint64x8">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func (u <a href="#Uint32x16">Uint32x16</a>) AsUint64x8() <a href="#Uint8x64">Uint8x64</a></pre>
+</div>
+<p>AsUint64x8 converts a Uint32x16 to a Uint64x8.
+</p>
+</div>
+</div><div class="Documentation-type">
+<h4 tabindex="-1" id="Uint64x8" data-kind="type" class="Documentation-typeHeader">
+<span>type <a class="Documentation-source" href="src">Uint64x8</a> <a class="Documentation-idLink" href="#Uint64x8" title="Go to Uint64x8" aria-label="Go to Uint64x8">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>type Uint64x8 struct {
+<span id="Uint64x8.data" data-kind="field"> data [8]<a href="/builtin#uint64">uint64</a>
+</span>}</pre>
+</div>
+<p>Uint64x8 represents a 128-bit unsigned integer.
+</p>
+<div class="Documentation-typeMethod">
+<h4 tabindex="-1" id="Uint64x8.AsUint8x64" data-kind="method" class="Documentation-typeMethodHeader">
+<span>func (Uint64x8) <a class="Documentation-source" href="src">AsUint8x64</a> <a class="Documentation-idLink" href="#Uint64x8.AsUint8x64" title="Go to Uint64x8.AsUint8x64" aria-label="Go to Uint64x8.AsUint8x64">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func (u <a href="#Uint64x8">Uint64x8</a>) AsUint8x64() <a href="#Uint8x64">Uint8x64</a></pre>
+</div>
+<p>AsUint8x64 converts a Uint64x8 to a Uint8x64.
+</p>
+</div><div class="Documentation-typeMethod">
+<h4 tabindex="-1" id="Uint64x8.AsUint32x16" data-kind="method" class="Documentation-typeMethodHeader">
+<span>func (Uint64x8) <a class="Documentation-source" href="src">AsUint32x16</a> <a class="Documentation-idLink" href="#Uint64x8.AsUint32x16" title="Go to Uint64x8.AsUint32x16" aria-label="Go to Uint64x8.AsUint32x16">¶</a></span>
+<span class="Documentation-sinceVersion">
+</span>
+</h4>
+<div class="Documentation-declaration">
+<pre>func (u <a href="#Uint64x8">Uint64x8</a>) AsUint32x16() <a href="#Uint32x16">Uint32x16</a></pre>
+</div>
+<p>AsUint32x16 converts a Uint64x8 to a Uint32x16.
+</p>
+</div>
+</div></section></div>
+----
+<ul>
+<li>
+<a href="#pkg-overview" data-gtmc="doc outline link">Overview</a>
+</li>
+<li class="DocNav-overview">
+<a href="#pkg-index" data-gtmc="doc outline link">
+Index
+</a>
+</li>
+<li class="DocNav-constants">
+<a href="#pkg-constants" data-gtmc="doc outline link">
+Constants
+</a>
+</li>
+<li class="DocNav-variables">
+<a href="#pkg-variables" data-gtmc="doc outline link">
+Variables
+</a>
+</li>
+<li class="DocNav-functions">
+<a href="#pkg-functions" data-gtmc="doc outline link">
+Functions
+</a>
+<ul>
+<li>
+<a href="#ExampleUint64x8_AsUint8x64" title="ExampleUint64x8_AsUint8x64()" data-gtmc="doc outline link">
+ExampleUint64x8_AsUint8x64()
+</a>
+</li>
+<li>
+<a href="#ExampleUint64x8_AsUint32x16" title="ExampleUint64x8_AsUint32x16()" data-gtmc="doc outline link">
+ExampleUint64x8_AsUint32x16()
+</a>
+</li>
+</ul>
+</li>
+<li class="DocNav-types">
+<a href="#pkg-types" data-gtmc="doc outline link">
+Types
+</a>
+<ul>
+<li>
+<a href="#Uint8x64" title="type Uint8x64" data-gtmc="doc outline link">
+type Uint8x64
+</a>
+<ul>
+<li>
+<a href="#Uint8x64.AsUint32x16" title="(u) AsUint32x16()"
+data-gtmc="doc outline link">
+(u) AsUint32x16()
+</a>
+</li>
+<li>
+<a href="#Uint8x64.AsUint64x8" title="(u) AsUint64x8()"
+data-gtmc="doc outline link">
+(u) AsUint64x8()
+</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Uint32x16" title="type Uint32x16" data-gtmc="doc outline link">
+type Uint32x16
+</a>
+<ul>
+<li>
+<a href="#Uint32x16.AsUint8x64" title="(u) AsUint8x64()"
+data-gtmc="doc outline link">
+(u) AsUint8x64()
+</a>
+</li>
+<li>
+<a href="#Uint32x16.AsUint64x8" title="(u) AsUint64x8()"
+data-gtmc="doc outline link">
+(u) AsUint64x8()
+</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Uint64x8" title="type Uint64x8" data-gtmc="doc outline link">
+type Uint64x8
+</a>
+<ul>
+<li>
+<a href="#Uint64x8.AsUint8x64" title="(u) AsUint8x64()"
+data-gtmc="doc outline link">
+(u) AsUint8x64()
+</a>
+</li>
+<li>
+<a href="#Uint64x8.AsUint32x16" title="(u) AsUint32x16()"
+data-gtmc="doc outline link">
+(u) AsUint32x16()
+</a>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+----
+<optgroup label="Documentation">
+<option value="pkg-overview">Overview</option>
+<option value="pkg-index">Index</option>
+</optgroup>
+<optgroup label="Functions">
+<option value="ExampleUint64x8_AsUint8x64">ExampleUint64x8_AsUint8x64()</option>
+<option value="ExampleUint64x8_AsUint32x16">ExampleUint64x8_AsUint32x16()</option>
+</optgroup>
+<optgroup label="Types">
+<option value="Uint8x64">type Uint8x64</option>
+<option value="Uint8x64.AsUint32x16">(u) AsUint32x16()</option>
+<option value="Uint8x64.AsUint64x8">(u) AsUint64x8()</option>
+<option value="Uint32x16">type Uint32x16</option>
+<option value="Uint32x16.AsUint8x64">(u) AsUint8x64()</option>
+<option value="Uint32x16.AsUint64x8">(u) AsUint64x8()</option>
+<option value="Uint64x8">type Uint64x8</option>
+<option value="Uint64x8.AsUint8x64">(u) AsUint8x64()</option>
+<option value="Uint64x8.AsUint32x16">(u) AsUint32x16()</option>
+</optgroup>

Change information

Files:
  • M internal/godoc/dochtml/dochtml.go
  • M internal/godoc/dochtml/dochtml_test.go
  • A internal/godoc/dochtml/testdata/order.go
  • A internal/godoc/dochtml/testdata/order.golden
Change size: L
Delta: 4 files changed, 368 insertions(+), 2 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
  • requirement is not satisfiedkokoro-CI-Passes
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: pkgsite
Gerrit-Branch: master
Gerrit-Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65
Gerrit-Change-Number: 736561
Gerrit-PatchSet: 1
Gerrit-Owner: Egon Elbre <egon...@gmail.com>
unsatisfied_requirement
satisfied_requirement
open
diffy

Egon Elbre (Gerrit)

unread,
Jan 15, 2026, 6:35:47 AM (3 days ago) Jan 15
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Egon Elbre voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
  • requirement is not satisfiedkokoro-CI-Passes
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: pkgsite
Gerrit-Branch: master
Gerrit-Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65
Gerrit-Change-Number: 736561
Gerrit-PatchSet: 1
Gerrit-Owner: Egon Elbre <egon...@gmail.com>
Gerrit-Reviewer: Egon Elbre <egon...@gmail.com>
Gerrit-Comment-Date: Thu, 15 Jan 2026 11:35:41 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

kokoro (Gerrit)

unread,
Jan 15, 2026, 7:00:22 AM (2 days ago) Jan 15
to Egon Elbre, goph...@pubsubhelper.golang.org, Go LUCI, golang-co...@googlegroups.com
Attention needed from Egon Elbre

kokoro voted kokoro-CI+1

Kokoro presubmit build finished with status: SUCCESS
Logs at: https://source.cloud.google.com/results/invocations/3a124837-495f-4266-a262-8e3a69e7f2c7

kokoro-CI+1
Open in Gerrit

Related details

Attention is currently required from:
  • Egon Elbre
Submit Requirements:
    • requirement is not satisfiedCode-Review
    • requirement satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    • requirement satisfiedTryBots-Pass
    • requirement satisfiedkokoro-CI-Passes
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: pkgsite
    Gerrit-Branch: master
    Gerrit-Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65
    Gerrit-Change-Number: 736561
    Gerrit-PatchSet: 1
    Gerrit-Owner: Egon Elbre <egon...@gmail.com>
    Gerrit-Reviewer: Egon Elbre <egon...@gmail.com>
    Gerrit-Reviewer: kokoro <noreply...@google.com>
    Gerrit-CC: kokoro <noreply...@google.com>
    Gerrit-Attention: Egon Elbre <egon...@gmail.com>
    Gerrit-Comment-Date: Thu, 15 Jan 2026 12:00:16 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    unsatisfied_requirement
    satisfied_requirement
    open
    diffy

    Egon Elbre (Gerrit)

    unread,
    Jan 16, 2026, 4:45:03 AM (yesterday) Jan 16
    to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
    Attention needed from Egon Elbre

    Egon Elbre uploaded new patchset

    Egon Elbre uploaded patch set #2 to this change.
    Following approvals got outdated and were removed:
    • TryBots-Pass: LUCI-TryBot-Result+1 by Go LUCI
    • kokoro-CI-Passes: kokoro-CI+1 by kokoro
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Egon Elbre
    Submit Requirements:
      • requirement is not satisfiedCode-Review
      • requirement satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      • requirement is not satisfiedTryBots-Pass
      • requirement is not satisfiedkokoro-CI-Passes
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: newpatchset
      Gerrit-Project: pkgsite
      Gerrit-Branch: master
      Gerrit-Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65
      Gerrit-Change-Number: 736561
      Gerrit-PatchSet: 2
      unsatisfied_requirement
      satisfied_requirement
      open
      diffy

      Michael Pratt (Gerrit)

      unread,
      Jan 16, 2026, 3:38:55 PM (yesterday) Jan 16
      to Egon Elbre, goph...@pubsubhelper.golang.org, Michael Pratt, kokoro, Go LUCI, golang-co...@googlegroups.com
      Attention needed from Egon Elbre

      Michael Pratt added 1 comment

      Commit Message
      Line 14, Patchset 4 (Latest):Updates #77160
      Michael Pratt . unresolved

      ```suggestion
      Updates golang/go#77160
      ```

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Egon Elbre
      Submit Requirements:
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedNo-Unresolved-Comments
        • requirement is not satisfiedReview-Enforcement
        • requirement is not satisfiedTryBots-Pass
        • requirement is not satisfiedkokoro-CI-Passes
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: pkgsite
        Gerrit-Branch: master
        Gerrit-Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65
        Gerrit-Change-Number: 736561
        Gerrit-PatchSet: 4
        Gerrit-Owner: Egon Elbre <egon...@gmail.com>
        Gerrit-Reviewer: Egon Elbre <egon...@gmail.com>
        Gerrit-Reviewer: kokoro <noreply...@google.com>
        Gerrit-CC: Michael Pratt <mpr...@google.com>
        Gerrit-CC: kokoro <noreply...@google.com>
        Gerrit-Attention: Egon Elbre <egon...@gmail.com>
        Gerrit-Comment-Date: Fri, 16 Jan 2026 20:38:52 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        unsatisfied_requirement
        open
        diffy

        Egon Elbre (Gerrit)

        unread,
        Jan 16, 2026, 3:58:56 PM (yesterday) Jan 16
        to goph...@pubsubhelper.golang.org, Michael Pratt, kokoro, Go LUCI, golang-co...@googlegroups.com
        Attention needed from Michael Pratt

        Egon Elbre added 1 comment

        Commit Message
        Michael Pratt . resolved

        ```suggestion
        Updates golang/go#77160
        ```

        Egon Elbre

        Fix applied.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Michael Pratt
        Submit Requirements:
          • requirement is not satisfiedCode-Review
          • requirement satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          • requirement is not satisfiedTryBots-Pass
          • requirement is not satisfiedkokoro-CI-Passes
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: pkgsite
          Gerrit-Branch: master
          Gerrit-Change-Id: Ie08696262496e226120ae1b31ca81e02b7f20c65
          Gerrit-Change-Number: 736561
          Gerrit-PatchSet: 4
          Gerrit-Owner: Egon Elbre <egon...@gmail.com>
          Gerrit-Reviewer: Egon Elbre <egon...@gmail.com>
          Gerrit-Reviewer: kokoro <noreply...@google.com>
          Gerrit-CC: Michael Pratt <mpr...@google.com>
          Gerrit-CC: kokoro <noreply...@google.com>
          Gerrit-Attention: Michael Pratt <mpr...@google.com>
          Gerrit-Comment-Date: Fri, 16 Jan 2026 20:58:49 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Michael Pratt <mpr...@google.com>
          unsatisfied_requirement
          satisfied_requirement
          open
          diffy
          Reply all
          Reply to author
          Forward
          0 new messages