services/debug/browserver: Syncbase UI tweaks

- Fix error introduced in
  https://vanadium-review.googlesource.com/#/c/22411/
  SyncgroupSpec.Prefix is no longer a field so the template
  rendering had errors
- Don't print out empty "NotIn" lists for brevity in the common-case
- List out all collections in a syncgroup
- Add line breaks between elements to help visually identify where
  one Collection/Syncgroup ends and the other begins.

Change-Id: Ife7b7b8c80aa46b89604653ff5e8173a8be0cd50
diff --git a/services/debug/debug/browseserver/assets.go b/services/debug/debug/browseserver/assets.go
index 957d1ba..04dda58 100644
--- a/services/debug/debug/browseserver/assets.go
+++ b/services/debug/debug/browseserver/assets.go
@@ -283,7 +283,7 @@
 	return a, nil
 }
 
-var _syncbaseHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\xdf\x6f\x22\x37\x10\x7e\xe7\xaf\x18\xa1\x28\x4d\xae\x65\xe9\x9d\xd4\x3e\x9c\x60\xab\x24\x5c\x25\xa4\x4b\x74\x12\x69\xdf\xbd\xf6\x00\x96\x8c\xbd\xb2\x0d\x2a\x5a\xed\xff\xde\xf1\xae\xf7\x17\x90\xf4\xa8\x2e\x4f\x78\xe6\x9b\x1f\xdf\x37\xb3\x76\x8a\x62\xfa\x61\x04\xf4\xf7\x64\xf2\xa3\x95\x9b\xad\x87\x4f\xbf\x7e\xfc\x1d\x5e\xb7\x08\x7f\x33\xcd\x84\xdc\xef\xe0\x61\xef\xb7\xc6\xba\x04\x1e\x94\x82\x0a\xe4\xc0\xa2\x43\x7b\x40\x91\x54\xd1\x7f\x39\x04\xb3\x06\xbf\x95\x0e\x9c\xd9\x5b\x8e\xc0\x8d\x40\xa0\xe3\xc6\x1c\xd0\x6a\x14\x90\x1d\x81\xc1\xe3\x6a\x31\x71\xfe\xa8\xb0\x0a\x53\x92\xa3\xa6\x50\xbf\x65\x1e\x38\xd3\x90\x21\xac\xcd\x5e\x0b\x90\x9a\x8c\x08\x5f\x97\x4f\x5f\x5e\x56\x5f\x60\x2d\x15\x26\xa3\x0f\xd3\xb2\x1c\x8d\x8a\x42\xe0\x5a\x6a\x84\x31\x37\xda\xa3\xf6\xe3\x60\x9d\x39\xe4\x5e\x1a\x0d\x5c\x31\xe7\xe6\xe3\x78\x9c\x4c\xa8\x82\x47\x0b\x3b\xa1\x26\x1b\x2b\xc5\x38\xad\x2a\xcf\xb6\xbf\xa5\xab\xa3\xe6\x19\x73\x38\x9b\xd2\xa1\xb6\x0a\x79\x68\x12\x84\x00\x8e\x44\xb8\xf9\x31\x99\x7c\xfc\x34\xe1\x46\xc5\x0c\x00\x2b\x12\x80\x08\xc0\xb8\x28\x92\x57\x8b\x98\x44\x43\xf2\xe7\x5e\xa9\x17\xb6\xc3\xb2\x1c\xd7\x69\xa7\x94\x37\x1d\xcd\xa6\xb1\xa9\x34\x90\xb0\x4c\x6f\x10\xea\xc0\x45\xe6\x88\x03\x01\xaf\x23\x51\x14\x70\x23\x32\xf8\x3c\x87\x64\xc1\x3c\x0b\x5c\x92\xa5\x80\x2a\x55\x4d\xb1\x31\x87\x1e\x09\x9a\xc4\xae\x3a\xc6\xd7\x72\x06\x78\xc8\x73\x78\x54\xe8\x9c\xd4\x9b\x26\x6d\x73\x6e\x08\xb7\x94\xff\x5f\x89\x99\x50\xdd\xa1\x55\xea\xc9\x28\x55\xeb\xe1\x22\xc3\x06\xed\xd3\xce\x57\x4d\x63\x29\x5a\xa6\xe4\x1c\x60\x45\xfa\x64\x91\x79\x63\x7f\x72\x61\x6b\xed\x80\x4b\x08\xec\x71\x21\x12\xe2\x34\x7a\xc6\x60\x6b\x71\x4d\xb3\x89\xdb\x33\xe5\x6d\xed\x3f\xf4\x9c\xf4\xa8\xd6\x00\x6d\xdd\xc0\xad\xc8\xe6\xa7\x1a\xdd\x0a\x3d\xef\x8f\xe3\x96\x07\xcc\xb0\xf6\x2d\xd7\xf3\x01\x91\xf4\xd9\x58\x4c\x92\x64\x36\x65\xe9\xb0\xaf\xa2\x40\xe5\xf0\x4c\x92\x3b\x6d\xa0\x6b\xcd\xdd\x53\x90\x1f\x04\x69\xd1\xc6\x90\x2f\x2a\xde\x9b\xdb\x75\x53\xbb\x3c\xb3\xf0\x89\x6d\xac\xd9\xe7\xe7\x23\x6b\x5d\x9f\x09\xde\x01\x3b\xca\x17\x46\x17\x8a\x04\x73\xa3\x53\xc5\x29\x38\x4e\x33\x74\x42\x56\x5a\x55\xfc\x2e\x4e\x33\x26\x5c\xa0\xe3\x56\xe6\x41\xa9\x36\x67\xd8\x87\x55\x8e\x3c\xe9\x39\x9b\xa5\xf8\xcf\x84\xdf\xf6\x99\x92\x6e\x0b\xcd\x1d\x03\x81\xd3\xa0\xdd\x90\x39\xa2\x1a\x50\xe4\xfd\x6e\x81\xde\xf1\x44\xf4\xa1\xf4\x37\x9e\x6d\x7e\x81\x1b\xc6\x39\x29\xf1\x55\x3a\x5f\x5d\x13\x75\x55\xb4\x3b\x07\x83\x81\x74\x63\xa1\xc5\xa4\xc8\xb2\x84\x9c\x50\x92\x44\x8c\x8a\x5c\x00\x8b\xf4\x67\x42\x77\x15\x92\xa5\x8e\xdd\x5f\x04\x4f\x86\xe0\x17\xe3\xdf\xc2\x0f\x97\x33\x66\x98\x0e\xb9\xbe\x2b\x3e\x7d\xa0\xf2\x1f\x74\xe7\x7a\x47\xc7\xf7\xae\xc5\x33\xbd\x45\xfe\x95\x65\xea\x42\xae\x9e\xef\x7b\xd3\x2d\xdd\x37\x2b\x0f\xcc\x9f\x2f\x42\xeb\xf9\x61\xe3\xdf\xe1\x2e\x43\x4b\x1b\x20\xf5\xda\x54\xb3\x7f\xae\x2c\xee\x8d\xb9\xd7\xde\xb7\x47\x4d\xc3\xab\x53\xd2\x6a\xdc\x85\x85\xa5\x86\x8d\x95\xfe\x18\xae\xb2\x50\x23\xe9\x1b\x09\xf4\xa8\x4c\xb6\xc0\xc3\xeb\x31\xc7\x16\xd2\xb3\x95\xe5\xfd\x8f\x19\xfd\x3b\xd7\x9f\x6b\x6f\x9f\x6b\x6f\xbf\xde\x53\xdd\xcb\x7f\xed\xff\x18\x57\x3e\x7b\x77\x2f\x06\x44\x7c\xb0\xdd\xfd\xe9\x43\x3a\xeb\x77\x54\x75\x3f\x6a\x7f\xfd\x1b\x00\x00\xff\xff\x14\x60\xd4\x06\xc6\x09\x00\x00")
+var _syncbaseHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\x5f\x6b\x23\x37\x10\x7f\xf7\xa7\x18\x4c\x48\x93\x6b\xbd\xee\x1d\xb4\x0f\xc1\xde\x92\xc4\x57\x30\x5c\xc2\x81\xd3\xbe\x94\x7b\xd0\x4a\x63\xaf\x40\x96\x8c\x24\xbb\x98\xc5\xdf\xbd\xa3\xfd\xbf\xf6\x26\xd7\x0d\xe7\x27\x6b\xfe\xff\x7e\x33\xa3\x55\x96\x4d\x3f\x8c\x80\x7e\x8f\x66\x77\xb4\x72\x93\x7a\xf8\xf4\xeb\xc7\xdf\xe1\x25\x45\xf8\x9b\x69\x26\xe4\x7e\x0b\xf7\x7b\x9f\x1a\xeb\x22\xb8\x57\x0a\x72\x23\x07\x16\x1d\xda\x03\x8a\x28\xf7\xfe\xcb\x21\x98\x35\xf8\x54\x3a\x70\x66\x6f\x39\x02\x37\x02\x81\x8e\x1b\x73\x40\xab\x51\x40\x72\x04\x06\x0f\xab\xc5\xc4\xf9\xa3\xc2\xdc\x4d\x49\x8e\x9a\x5c\x7d\xca\x3c\x70\xa6\x21\x41\x58\x9b\xbd\x16\x20\x35\x09\x11\xbe\x2c\x1f\x3f\x3f\xaf\x3e\xc3\x5a\x2a\x8c\x46\x1f\xa6\xa7\xd3\x68\x94\x65\x02\xd7\x52\x23\x8c\xb9\xd1\x1e\xb5\x1f\x07\xe9\xcc\x21\xf7\xd2\x68\xe0\x8a\x39\x37\x1f\x97\xc7\xc9\x84\x32\x78\xb4\xb0\x15\x6a\xb2\xb1\x52\x8c\xe3\x3c\xf3\x2c\xfd\x2d\x5e\x1d\x35\x4f\x98\xc3\xd9\x94\x0e\x85\x54\xc8\x43\x15\x20\x38\x70\x24\xc0\xd5\x9f\xc9\xe4\xe3\xa7\x09\x37\xaa\x8c\x00\xb0\x22\x02\x08\x00\x8c\xb3\x2c\x7a\xb1\x88\x51\x29\x88\xfe\xdc\x2b\xf5\xcc\xb6\x78\x3a\x8d\x8b\xb0\x53\x8a\x1b\x8f\x66\xd3\xb2\xa8\x38\x80\xb0\x4c\x6f\x10\x0a\xc7\x45\xe2\x08\x03\x19\x0e\x03\x91\x65\x70\x25\x12\xb8\x9b\x43\xb4\x60\x9e\x05\x2c\xd1\x52\x40\x1e\xaa\x80\x58\x89\x43\x8d\x64\x1a\x95\x55\x35\x88\x87\x62\x06\xb8\xdf\xed\xe0\x41\xa1\x73\x52\x6f\xaa\xb0\xd5\xb9\x02\x5c\x43\x7e\x5f\x8a\x99\x50\xcd\xa1\x66\xea\xd1\x28\x55\xf0\xe1\x4a\x84\x95\xb5\x8f\x1b\xdd\x5d\xde\x8e\xa5\xa8\xa1\x92\xb6\x63\x2c\xe2\x47\x8b\xcc\x1b\xfb\x93\x0b\x63\x6b\x3b\x60\x82\x63\x0b\x0c\xa1\x10\xe7\xde\x33\x06\xa9\xc5\x35\x35\xa7\x1c\x9f\x29\xaf\x93\xff\xa1\xe7\x44\x48\x3e\x07\x68\x8b\x02\xae\x45\x32\x3f\x27\xe9\x5a\xe8\x79\xbb\x1f\xd7\x3c\xd8\x74\x73\x5f\x73\x3d\xef\x00\x89\x9f\x8c\xc5\x28\x8a\x66\x53\x16\x77\xeb\xca\x32\x54\x0e\x2f\x38\xb9\xd1\x06\x9a\xd2\xdc\x2d\x39\xf9\x8e\x93\x16\xb5\x0f\xe9\x4a\xca\x5b\x8d\x1b\xd6\xb6\xfe\xa6\x85\x1d\xdb\x58\xb3\xdf\x5d\xf6\xac\x56\xdd\x91\x79\x63\xd8\x40\xee\x69\x5d\x48\x12\xc4\x15\x4f\x39\xa6\xa0\x38\x8f\xd0\x10\x99\x73\x95\xe3\xeb\xed\x66\x19\x70\x81\x8e\x5b\xb9\x0b\x4c\xd5\x31\xc3\x3c\xac\x76\xc8\xa3\x96\xb2\x1a\x8a\xef\x06\xfc\xba\x4f\x94\x74\x29\x54\x97\x0c\x04\x4c\x9d\x72\x43\xe4\xd2\xaa\x32\x2a\x71\xbf\x99\xa0\x75\x3c\x23\xbd\x4b\xfd\x95\x67\x9b\x5f\xe0\x8a\x71\x4e\x4c\x7c\x91\xce\xe7\xf7\x44\x91\x15\xed\xd6\x41\xa7\x21\x4d\x5b\x68\x30\xc9\xf3\x74\x82\x1d\x59\x49\x22\xb1\x64\xa4\xc7\x58\xc4\x3f\x93\x75\x93\x21\x5a\xea\xb2\xfa\x0b\xe3\x2c\xfb\x57\xfa\xb4\x5d\x4e\xf4\x6c\x7c\xb0\xef\x8d\x3b\x21\x82\x5e\x0f\xd5\x9e\xdc\xb7\xa4\xcd\x54\xd7\xe7\x4e\xbc\xb2\xa8\x9e\x26\x0f\x98\x92\xa6\xd2\xde\x96\x5d\xd6\xd5\xc9\xda\x3b\x00\x6f\x8f\x54\xdb\xf6\xfd\x55\x7c\x7f\x94\xba\xf7\xaa\xbb\x1c\x82\x66\xc9\x03\x92\xd7\xae\xe7\x22\x55\x28\xf6\xee\x1f\xaa\xb2\x40\xf8\xad\xbe\x75\x73\x61\xb3\xad\xdf\x2e\x7b\xfe\x9e\xce\xb6\x69\x7b\xa2\x07\x85\x7f\x61\x09\xe5\xb8\xd8\xbf\x96\xee\xff\xde\x14\x4b\xf7\xd5\xca\x03\xf3\x97\xcb\x5c\x6b\x7e\xd8\x0a\x6f\x71\x9b\xa0\xa5\x2d\x96\x7a\x6d\xf2\xfd\x7d\xca\x25\xe7\x0c\x57\xed\x2a\xb4\xaf\xaf\x2b\x6d\x6b\x11\x92\xd6\xfb\x26\xcc\x11\x15\x6c\xac\xf4\xc7\xf0\x39\x0a\x39\xa2\xb6\x90\x8c\x1e\x94\x49\x16\x78\x78\x39\xee\xb0\x36\x69\xc9\x4e\xa7\xdb\xbe\x1d\x1d\xde\xb1\x37\x3e\x61\xae\xfe\x82\x0c\xfd\x82\xb5\xde\x5b\xad\xf8\x43\x1f\x8a\x03\xdf\x2e\x37\xcf\x06\x44\xf9\xea\x72\xb7\xe7\xaf\xa1\x59\xbb\xa2\xbc\xfa\x51\xfd\xef\xbf\x00\x00\x00\xff\xff\x5c\x44\xcd\x6b\x8b\x0b\x00\x00")
 
 func syncbaseHtmlBytes() ([]byte, error) {
 	return bindataRead(
diff --git a/services/debug/debug/browseserver/assets/syncbase.html b/services/debug/debug/browseserver/assets/syncbase.html
index 18d1243..1831f83 100644
--- a/services/debug/debug/browseserver/assets/syncbase.html
+++ b/services/debug/debug/browseserver/assets/syncbase.html
@@ -23,7 +23,7 @@
       <div class="mdl-cell mdl-cell--12-col">
         <dl>
         {{range .Collections}}
-          <dt>Collection "{{.Id.Name}}"<dt>
+          <dt>Collection: "{{.Id.Name}}"<dt>
           <dd>Creator's User Blessing "{{.Id.Blessing}}"</dd>
           <dd><a href="syncbase/collection?n={{$.ServerName}}&db={{$db.Blessing}}&dn={{$db.Name}}&cb={{.Id.Blessing}}&cn={{.Id.Name}}">More...</a></dd>
         {{else}}
@@ -43,11 +43,26 @@
               {{range $tag, $accessList := .Spec.Perms }}
                 <dt>{{$tag}} permission</dt>
                 <dd>+{{$accessList.In}}</dd>
-                <dd>-{{$accessList.NotIn}}</dd>
+                {{with $accessList.NotIn}}
+                <dd>-{{.}}</dd>
+                {{end}}
               {{end}}
             </dl>
           </dd>
-          <dd><dl><dt>Prefixes</dt><dd>{{.Spec.Prefixes}}</dd></dl></dd>
+          {{with .Spec.Description}}
+          <dd><dl><dt>Description</dt><dd>{{.}}</dd></dl></dd>
+          {{end}}
+          {{with .Spec.PublishSyncbaseName}}
+          <dd><dl><dt>PublishSyncbaseName</dt><dd>{{.}}</dd></dl></dd>
+          {{end}}
+          <dd>
+            <dl>
+            <dt>Collections</dt>
+            {{range .Spec.Collections}}
+            <dd>Name:[{{.Name}}] Blessing:[{{.Blessing}}]</dd>
+            {{end}}
+            </dl>
+          </dd>
           <dd><dl><dt>MountTables</dt><dd>{{.Spec.MountTables}}</dd></dl></dd>
           <dd><dl><dt>IsPrivate</dt><dd>{{.Spec.IsPrivate}}</dd></dl></dd>
           <dd>
diff --git a/services/debug/debug/browseserver/sbtree/sbtree.go b/services/debug/debug/browseserver/sbtree/sbtree.go
index e52a34b..96df9f5 100644
--- a/services/debug/debug/browseserver/sbtree/sbtree.go
+++ b/services/debug/debug/browseserver/sbtree/sbtree.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package syncbase provides data structs used by HTML templates to build the
+// Package sbtree provides data structures used by HTML templates to build the
 // web pages for the Syncbase debug viewer.  To minimize mixing of code and
 // presentation, all the data for use in the templates is in a form that is
 // convenient for accessing and iterating over, i.e struct fields, no-arg