panel: org pill (dues paid by OC organization) + Matrix handle under each email (external MXID or local identity)

This commit is contained in:
Inferencebot committed 2026-10-20 23:02:01 -06:00
1 parent 71c4e68a5c
commit f0cf8d9663
1 file changed
+10 -1
+10 -1
View File
@@ -253,6 +253,7 @@ PAGE_HTML = """<!DOCTYPE html>
.pill.active { background: #eaf3ea; color: #2f5c30; }
.pill.inactive { background: #f6e9e5; color: var(--danger); }
.pill.manual { background: #f1e8da; color: #a97a4a; }
.pill.org { background: #e7edf5; color: #4a6a8a; }
.num { font-variant-numeric: tabular-nums; }
.remaining-col { font-weight: 700; color: var(--green-deep); background: #eaf3ea; }
.flash { padding: 12px 16px; border-radius: 8px; margin: 16px 0; font-size: 14px; display: none; }
@@ -522,8 +523,16 @@ function renderMembers() {
const src = m.manual
? '<span class="pill manual" title="Manual member (no OC subscription; exempt from sweep)">manual</span>'
: '<span class="pill active" title="Open Collective Membership subscription">OC</span>';
const org = m.org
? ' <span class="pill org" title="Organizational membership — dues paid by OC org \\' + esc(m.org) + '\\')">org: ' + esc(m.org) + '</span>'
: '';
// Effective Matrix handle: dashboard-set external MXID, else the local
// @username:inference.coop identity (pending users have no username yet).
const mxid = m.matrix_mxid || (m.username ? '@' + m.username + ':inference.coop' : '');
const mxidLine = mxid ? '<div style="color:var(--muted);font-size:11px">' + esc(mxid) + '</div>' : '';
return '<tr>' +
'<td>' + esc(m.email) + (m.username ? '<div style="color:var(--muted);font-size:11px">' + esc(m.username) + '</div>' : '') + '</td>' +
'<td>' + esc(m.email) + (m.username ? '<div style="color:var(--muted);font-size:11px">' + esc(m.username) + '</div>' : '') + mxidLine +
(org ? '<div style="margin-top:3px">' + org + '</div>' : '') + '</td>' +
'<td><span class="pill ' + pill + '">' + pill + '</span></td>' +
'<td>' + act + '</td>' +
'<td>' + src + '</td>' +