Improve moderation controls and term management

This commit is contained in:
JB
2026-07-27 16:44:53 -04:00
parent 27cbeca0ed
commit fe4acec191
8 changed files with 1065 additions and 362 deletions
+30 -9
View File
@@ -362,15 +362,23 @@ targets and keep status text within the viewport. Reduce the radar sweep and
other ambient motion under `prefers-reduced-motion`; retain the static rings,
nodes, and labels.
ISAC Site Controls use three connected command panels: Launch Gate, Account
Creation, and Public Sections. Use `SegmentedChoice` for each finite state.
Display the pending-change count outside the panels and require a confirmation
modal that lists every changed setting as previous state, arrow, and proposed
state. A successful save closes the modal and refreshes the network-state
summary. Keep a `PREVIEW PAGE` link in the command toolbar so authenticated
operators can inspect the promotional page without ending their session.
Operators need text for enabled, disabled, coming-soon, and public states; color
supports those labels.
ISAC Site Controls use collapsible command panels for Launch Gate, Account
Creation, Public Sections, moderation policy groups, thresholds, and the term
registry. Build these panels with `CollapsibleSection`. The disclosure button
must expose `aria-expanded` and `aria-controls`, retain its title and textual
status while closed, show a focus-visible outline, and provide at least a
44-pixel touch target. Keep panel content in the document and hide it while
closed so draft form state survives expansion changes. Disable motion under
`prefers-reduced-motion`.
Each command panel owns its save action, validation feedback, pending state,
and success notice. Do not place a page-wide review or save banner between
panels. Disable a panel's save button until that panel differs from saved
state. Saving one panel must update only its fields, retain the panel's open
state, and leave unsaved drafts in other panels unchanged. Keep `PREVIEW PAGE`
inside the Launch Gate save row so authenticated operators can inspect the
promotional page without ending their session. Operators need text for enabled,
disabled, coming-soon, and public states; color supports those labels.
The Launch Gate controls signed-out entry to the application. Public Section
controls apply to everyone. When an operator disables News, Database, Builds,
@@ -489,6 +497,19 @@ public. Flagged custom avatars use the default avatar publicly until approval.
Community Oversight shows automated evidence and Agent reports in one pending
queue, but labels their sources separately. Human approval, rejection, removal,
and report dismissal require a reason and confirmation.
The Site Controls term registry supports single-rule editing and an inline bulk
editor. The bulk editor accepts pasted lists, applies one effect and scope set
to the batch, previews the unique-entry count, and states the 250-rule limit.
Keep it inline because operators need the registry for context. Show exact-word
behavior beside the textarea, preserve pasted values after validation errors,
and clear the textarea while keeping the editor open after a successful import.
Search the registry on the server across term text, normalized text, rule type,
match mode, and operational note. Use the shared pagination rail with
namespaced URL parameters and 25 rows by default. Search applies before
pagination. Distinguish an empty registry from a search with no matches. The
registry toolbar, editors, search, and pagination stay inside the term
disclosure.
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.