- commit
- 804d5ccf436b895509287d0f73cc02eecff36862
- parent
- e83c920902fe954e262fa70a07e2ff880b8580f5
- author
- Dami <dami.etoile@gmail.com>
| M | internal/ | 4 | ++++ |
| M | internal/ | 2 | +- |
| M | internal/ | 5 | +++-- |
| M | internal/ | 12 | ++++++++++-- |
@@ -27,6 +27,7 @@ var (
2727 2828 func (b *agentsBackend) Query(_ context.Context, method string, params []json.RawMessage, actor string) (any, error) {2929 b.calls = append(b.calls, method+":"+actor)30+ b.params = params3031 owner := b.policy.Owner3132 now := time.Now().Unix()3233 scope := func(rooms []string, repos []map[string]any, wiki string, kinds []int) map[string]any {@@ -121,6 +122,9 @@ func TestAgentsPageRendersTableCardsActivityAndGrantForm(t *testing.T) {
121122 if got := strings.Join(backend.calls, " "); got != "listagents:"+backend.policy.Owner+" browseagent:"+backend.policy.Owner {122123 t.Fatalf("backend calls = %s", got)123124 }125+ if !strings.Contains(string(backend.params[0]), agentActive) {126+ t.Fatalf("default selection should be the first active agent: %s", backend.params[0])127+ }124128 // ?agent= selects whose activity shows.125129 backend.calls = nil126130 recorder = httptest.NewRecorder()@@ -41,7 +41,7 @@
4141 <agent-card id="agent-{{$pk}}">4242 <h3>{{agentLabel $a}} <small><span data-state="{{$state}}">{{$state}}</span> | signed by {{if eq (str (index $a "owner")) $.Actor}}you{{else}}{{template "nostrKey" (str (index $a "owner"))}}{{end}} | expires {{short (index $a "expires")}}</small></h3>4343 <table>44-<tr><th>key</th><td>{{template "nostrKey" $pk}} <code>{{$pk}}</code></td></tr>44+<tr><th>key</th><td><nostr-key hex="{{$pk}}" title="{{$pk}}">{{$pk}}</nostr-key> <small>click to copy</small></td></tr>4545 <tr><th>rooms</th><td>{{or (scopeList $a "rooms") "none"}}</td></tr>4646 <tr><th>repositories</th><td>{{range $i, $r := index $scope "repos"}}{{$repo := asMap $r}}{{if $i}}<br>{{end}}<code>{{str (index $repo "identifier")}}</code> {{str (index $repo "level")}}, owner {{template "nostrKey" (str (index $repo "owner"))}}{{else}}none{{end}}</td></tr>4747 <tr><th>wiki</th><td>{{or (str (index $scope "wiki")) "none"}}</td></tr>@@ -141,7 +141,8 @@ agent-card table{border-collapse:collapse;font:13px var(--mono);width:auto;margi
141141 agent-card th{text-align:left;font-weight:normal;color:var(--muted);width:9em;padding:3px 0;border:0;vertical-align:top}agent-card td{padding:3px 0;border:0;overflow-wrap:anywhere}142142 agent-card td code{color:var(--muted)}143143 agent-card p{margin:8px 0 0}agent-card rpc-form{display:inline-block;border:0;padding:0;margin:0 8px 0 0;vertical-align:top}agent-card rpc-form output:empty{display:none}144-agent-card p>a{font:12px var(--mono)}144+agent-card p>a{display:inline-block;font:12px var(--mono);line-height:29px;vertical-align:top}145+#rows:has(td[data-state]){table-layout:fixed}#rows:has(td[data-state]) td:nth-child(3){width:110px}#rows:has(td[data-state]) td:last-child{width:150px}145146 [data-state=active],#rows td[data-state=active]{color:var(--accent)}[data-state=paused],#rows td[data-state=paused]{color:var(--bark)}[data-state=revoked],#rows td[data-state=revoked]{color:var(--alert)}146147 agent-grant{display:block;border-bottom:1px solid var(--line);padding:10px 0;max-width:720px}147148 agent-grant label{display:inline-block;margin:0 10px 6px 0;vertical-align:top;font:13px var(--sans);color:var(--muted)}@@ -232,6 +233,6 @@ html,body{overflow:auto}
232233 #navigation-status:not(:empty),#session-status:not(:empty){position:absolute;bottom:100%;left:0;right:0;padding:6px 12px;background:var(--rail);border-top:1px solid var(--line);white-space:normal}233234 #split,#split>tbody,#split>tbody>tr,#split>tbody>tr>td{display:block;width:auto}234235 #tree{border-right:0;border-bottom:1px solid var(--line)}235-#rows{table-layout:fixed}#rows td{white-space:normal;overflow-wrap:anywhere;height:auto;padding:8px 6px;line-height:1.35}#rows td:first-child{width:90px}#rows td:last-child{width:80px}connect-list #rows td:nth-child(2),connect-list #rows th:nth-child(2){display:none}connect-list #rows td:nth-child(3),connect-list #rows td:last-child{width:auto}connect-list #rows td:last-child{white-space:normal}connect-list #rows td:last-child button{margin:2px 0}236+#rows{table-layout:fixed}#rows td{white-space:normal;overflow-wrap:anywhere;height:auto;padding:8px 6px;line-height:1.35}#rows td:first-child{width:90px}#rows td:last-child{width:80px}#rows:has(td[data-state]) td:nth-child(3),#rows:has(td[data-state]) th:nth-child(3){display:none}#rows:has(td[data-state]) td:last-child{width:80px}connect-list #rows td:nth-child(2),connect-list #rows th:nth-child(2){display:none}connect-list #rows td:nth-child(3),connect-list #rows td:last-child{width:auto}connect-list #rows td:last-child{white-space:normal}connect-list #rows td:last-child button{margin:2px 0}236237 #grid,#gridhead,h2:has(+#gridhead){display:none}237238 }@@ -840,8 +840,16 @@ func (a *App) agentsPage(request *http.Request, actor string, data *PageData) {
840840 }841841 data.Feed = browseRows(result)842842 selected := request.URL.Query().Get("agent")843- if selected == "" && len(data.Feed) > 0 {844- selected = plainString(valueMap(data.Feed[0])["pubkey"])843+ if selected == "" {844+ // Without a choice, show the first agent that can still publish.845+ for _, agent := range data.Feed {846+ if selected == "" || agentState(agent) == "active" {847+ selected = plainString(valueMap(agent)["pubkey"])848+ }849+ if agentState(agent) == "active" {850+ break851+ }852+ }845853 }846854 if selected == "" {847855 return