01a0abd6 - Put the closed Moderators group on /moderate - #243
Open
TaprootFreakAI wants to merge 22 commits into
Open
TaprootFreakAI wants to merge 22 commits into
TaprootFreakAI wants to merge 22 commits into
Conversation
TaprootFreakAI
marked this pull request as ready for review
September 16, 2026 22:42
TaprootFreakAI
marked this pull request as draft
September 17, 2026 08:07
TaprootFreakAI
force-pushed
the
feat/01a0abd6-moderator-inbox
branch
2 times, most recently
from
September 17, 2026 09:16
7881bd7 to
cfa156b
Compare
TaprootFreakAI
marked this pull request as ready for review
September 17, 2026 17:43
TaprootFreakAI
marked this pull request as draft
September 17, 2026 18:37
TaprootFreakAI
force-pushed
the
feat/01a0abd6-moderator-inbox
branch
3 times, most recently
from
September 17, 2026 22:37
73761a8 to
2c308db
Compare
After rebasing onto develop the inbox card has no back control and every conversation carries `unread`. The staff room follows both: `/moderate/group` gets its only back control in the page chrome (`ProfileChromeLeft` to `/moderate`), `InboxScreen` loses `backLabel`, and the group screen drops its in-card back link. `?c=` still opens only after the inbox list loaded, so the list-is-null badge fallback and the stale-list read guard can no longer run and are removed with their three tests. Moderator-group fixtures and the wrapper schema test carry `unread`; three thread-fetch assertions wait for the effect instead of reading it in the same tick.
TaprootFreakAI
force-pushed
the
feat/01a0abd6-moderator-inbox
branch
from
September 18, 2026 19:02
fe4a593 to
08551fc
Compare
The staff room reused the inbox card with an Amount field that could not be typed into; `InboxScreen` gains `showAmount` and the group screen turns it off. Its heading now always comes from `moderate.groupLabel` instead of the api row name, and non-moderators read `moderate.groupForbidden` because founders are not admitted there. On `/messages` the moderator lookup runs once per opened id and shows neutral loading instead of the list while it runs. `conversationOneSchema` becomes `conversationResponseSchema` like the other envelope schemas, and the handbook names every caller of `fetchModeratorGroup` and the exact `?c=` guard.
The 20 `/moderate/group` baselines follow the chrome-only back, the text-only composer, and the new forbidden copy. The four `welcome overlay-external-link` baselines are the images develop itself renders since Gift moved to replies (byte-identical to the ones in the develop unblocker), so this branch is green on its own.
Rows now count as loaded only for the session that fetched them, so a session change waits for the new list before any thread fetch and the badge is never computed from another session's rows. The `/moderate/group` forbidden variant needle follows the new copy, so the e2e gate checks this screen again instead of matching the hub's text. TSDoc of `InboxLoader`, `InboxScreen` and `ModeratorGroupScreen` and a `/moderate/group` recipe in docs/ui.md describe the lookup, `showAmount` and the catalog heading.
The session can only change through passkey login, where neither the inbox nor the staff room is mounted, and through hydration, which refuses to swap one token for another (`current.session !== null && current.session !== token`). A token-to-token change on a mounted `InboxLoader` is therefore not reachable, so the `listSession` gate guarded a state the app cannot enter and left the composer callbacks and the staff room inconsistent with it. The loader logic is back to the reviewed one; the needle, TSDoc, docs/ui.md recipe and the falsifiable neutral-loading test stay.
Collaborator
Author
|
EN: DE: DetailsHead Rebase reconciliation
Fixed during review
Decided, not changed
Baselines
Verification at the head
Rollout note
|
TaprootFreakAI
marked this pull request as ready for review
September 18, 2026 20:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
EN:
Moves the closed Moderators group off /messages onto /moderate.
Confirmed moderators open it from the hub as /moderate/group; the page chrome is its only back control and the composer is text only.
The inbox never lists that thread and does not open it through
?c=.Release the api first: the app needs
GET /conversations/moderator-group.DE:
Verschiebt die geschlossene Moderatoren-Gruppe von /messages nach /moderate.
Bestätigte Moderatorinnen und Moderatoren öffnen sie vom Hub unter /moderate/group; das einzige Zurück ist die Seitenleiste, der Composer ist reiner Text.
Die Inbox listet den Thread nicht und öffnet ihn auch nicht per
?c=.Zuerst die API ausrollen: die App braucht
GET /conversations/moderator-group.Details
role === 'moderator') get a further tool linking to/moderate/group. Founders and everyone else seemoderate.groupForbiddenthere and nothing is fetched.ModeratorGroupScreenfetchesGET /conversations/moderator-groupthen the thread and reusesInboxScreenas one open thread (showFilterfalse,showAmountfalse, heading alwaysmoderate.groupLabel). Back to/moderateisProfileChromeLeftin the page chrome; the card has no back control, matching the one-back inbox.moderator_grouprows are never listed.?c=opens only after the list loaded. A listedmoderator_groupid never opens. For a confirmed moderator an unlisted?c=first resolves the staff-room id once (neutral loading, not the list); a match never opens andfetchConversationis not called. Other roles and a failed lookup fall through to the api, which rejects accounts that may not read the thread.GET /conversations/moderator-group;conversationResponseSchemaparses{ conversation }includingunread./moderate/groupLinux baselines from CI. The 4welcome overlay-external-linkbaselines are the images develop itself renders (develop is red on that test); they are byte-identical to the develop unblocker af507305 - Unblocks develop: refresh the external-link overlay baselines #273.