Add public agent profiles and community moderation

This commit is contained in:
JB
2026-07-27 15:38:27 -04:00
parent efb0ccdc7e
commit 6b76110b76
28 changed files with 2101 additions and 64 deletions
+56
View File
@@ -445,6 +445,62 @@ direct URL. Do not present authentication as a way around a disabled section.
remain unique, ASCII-only credentials and must never appear on public-facing
community surfaces. Authorized ISAC user operations may show both.
### Public Agent profiles
Public Agent profiles are community dossiers, not account-control screens. Lead
with the shared `AgentIdentityLink` in its large state: circular portrait,
display name, explicit `SHD.BUILD AGENT PROFILE` context, and a directional
link cue. The profile owner may receive an `EDIT MY PROFILE` action in the
header. Keep public content totals in a compact telemetry strip below the
identity header, then place the field bio, public builds, published guides, and
recent discussion in the primary column. Profile messages occupy the narrower
communications column and may remain sticky where the viewport has room.
Use `AgentIdentityLink` for author attribution on builds, guides, comments, and
other community records. Its compact and default states combine the circular
portrait, public display name, optional contextual metadata, and a clear link
cue. Hover and focus-visible states may turn the name and cue orange. The
portrait remains circular at every size; selectors may use square tactical
thumbnails only where the avatar rules explicitly allow them.
Public biographies and community comments use the shared `MarkdownEditor` and
`MarkdownContent` pair. The editor supplies a small formatting toolbar,
remaining-character count, concise help, a readable editorial typeface, and a
minimum 44px touch target for toolbar actions on narrow screens. It supports
headings, lists, quotes, links, emphasis, and inline code. Raw HTML is escaped.
Only HTTP and HTTPS links are active; rendered links open separately with UGC,
nofollow, and opener-isolation attributes. `MarkdownContent` must receive HTML
from the server renderer, never raw user input or client-rendered Markdown.
Rendered biography copy uses the editorial typeface and a restrained reading
measure. Compact comment rendering uses the same hierarchy at a denser scale.
Comment cards identify the author and date before the message. Activity cards
identify the content type and title, render a useful excerpt, and provide a
specific action such as `OPEN DISCUSSION`. Empty states state which public
record is absent without implying an error.
Profile visibility is an explicit public or hidden account setting. A hidden
profile is excluded from public discovery and cannot receive new profile
messages. Hiding it does not remove the Agent's display name or portrait from
public builds, guides, or comments they authored. State this consequence beside
the visibility control so the setting does not imply retroactive anonymity.
Community forms use `PendingForm` to block duplicate submissions. Pending
actions retain their label context, validation errors preserve entered text,
and success or error feedback appears beside the affected form. All editor,
link, and button controls require the shared orange focus-visible treatment.
Message removal is a two-step, in-card confirmation: the first action reveals a
red danger panel, then separate Cancel and Confirm Remove actions complete or
abandon the request. Only an authorized author receives the removal control.
Below 1000px, move profile communications beneath the primary content and stop
using the sticky position. Below 650px, stack the identity header, telemetry,
section headers, and content cards into one column. Expand owner actions,
submission controls, and deletion controls to 44px touch targets. Keep the
Cancel and Confirm Remove actions side by side when both labels fit. Respect
`prefers-reduced-motion` without removing static hover, focus, pending, success,
error, or danger indicators.
### Third-party identity buttons
- Follow the identity provider's current official brand and sign-in guidelines.