| … | … | @@ -1674,8 +1674,19 @@ export function settings (profile, message, handle = null, namespace = null, tok |
| 1674 | 1674 | const shownBanner = p.banner |
| 1675 | 1675 | ? '<p><img class="banner-lg" src="/avatar/' + esc(p.banner) + '" alt="your banner"></p>' |
| 1676 | 1676 | : '' |
| 1677 | // ⛔ THE IDENTITY ROOT, which settings never showed. It named nothing but the feed key — a LOCATOR |
| 1678 | // that changes with a feed migration — while the identity every post is signed under (the keet / |
| 1679 | // hyperident public key, the authority of every `favela://` URI) was already in `profile.root` from |
| 1680 | // the founder record and dropped here. Demoted like every key (keys.test.js): a short prefix in view, |
| 1681 | // the whole thing one click away and selectable. |
| 1682 | const identity = p.root |
| 1683 | ? '<p>Your identity <code>' + esc(String(p.root).slice(0, 12)) + '…</code></p>' + |
| 1684 | keyline('full identity key', p.root) + |
| 1685 | '<p class="who">The key your posts are signed under. It stays the same across devices and feed ' + |
| 1686 | 'moves, and it is what other people verify you by.</p>' |
| 1687 | : '<p class="warn">This node has no identity yet, so it cannot post or claim a name.</p>' |
| 1677 | 1688 | return layout('settings', note + updateSettings(update) + blueskySection(did, reach) + fediverseSection(reach) + |
| 1678 | | '<h1>Settings</h1>' + shown + |
| 1689 | '<h1>Settings</h1>' + identity + shown + |
| 1679 | 1690 | '<form method="post" action="/settings" enctype="multipart/form-data">' + |
| 1680 | 1691 | '<p><label>Display name<br><input type="text" name="name" value="' + esc(p.name || '') + |
| 1681 | 1692 | '" placeholder="what people see instead of 64 hex characters"></label></p>' + |
| … | … | @@ -1861,6 +1872,8 @@ export function status ({ me = null, ns = null, following = [], missing = [], pr |
| 1861 | 1872 | const row = (k, v, why) => '<tr><td class="who">' + esc(k) + '</td><td>' + v + |
| 1862 | 1873 | (why ? '<br><span class="who">' + esc(why) + '</span>' : '') + '</td></tr>' |
| 1863 | 1874 | |
| 1875 | // The identity root of THIS node, from the same `profiles` map every byline uses. |
| 1876 | const myRoot = me && me.feed && profiles && profiles[me.feed] ? profiles[me.feed].root || null : null |
| 1864 | 1877 | const held = (following || []).map((f) => (typeof f === 'string' ? f : f && f.feed)).filter(Boolean) |
| 1865 | 1878 | const gone = new Set((missing || []).map((f) => (typeof f === 'string' ? f : f && f.feed)).filter(Boolean)) |
| 1866 | 1879 | |
| … | … | @@ -1884,8 +1897,10 @@ export function status ({ me = null, ns = null, following = [], missing = [], pr |
| 1884 | 1897 | |
| 1885 | 1898 | '<h2>This node</h2><table>' + |
| 1886 | 1899 | row('feed', me && me.feed ? '<code>' + short(me.feed) + '</code>' : '<span class="who">unknown</span>') + |
| 1887 | | row('identity', me && me.linked ? 'linked' : '<span class="warn-inline">not linked</span>', |
| 1888 | | me && me.linked ? '' : 'This node cannot claim a name or sign until an identity is minted.') + |
| 1900 | row('identity', me && me.linked |
| 1901 | ? 'linked' + (myRoot ? ' — <code>' + short(myRoot) + '</code>' + keyline('full identity key', myRoot) : '') |
| 1902 | : '<span class="warn-inline">not linked</span>', |
| 1903 | me && me.linked ? '' : 'This node cannot claim a name or sign until an identity is minted.') + |
| 1889 | 1904 | '</table>' + |
| 1890 | 1905 | |
| 1891 | 1906 | '<h2>Namespace</h2><table>' + |