feat(guilds): declare a second place on the guild page, for core's forum #12
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/teams-phase4-forum-slot"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
The module half of Teams phase 4 � Forum 5a. Targets
edgealongside the corework in website#153 and the docs in docs#157.
The mirror of the activity feed, one phase later. Core owns the Team forum �
membership, manual grants and the member/guest split are all core's rules, and a
module reimplementing any of them would be reimplementing a security boundary � but
core publishes no Team page, because it does not own the word "guild". So this
module declares the place and core puts the forum in it.
TWO declarations rather than one, and that is the part worth reviewing. A slot
holds one component and the first fill wins, so folding the forum into
uo.guild.detailalongside the feed would hand core the decision about where eachof its two contributions sits on a page this module owns. Separate slots also keep
them independent: with the forum switched off, the feed renders exactly as before.
The rule this establishes for the inverted slot direction � one slot per PLACE,
not one per page � is written into
MODULE_API.md§3.7a in the docs PR.How it was tested
npm testinclient/� 42 pass. The registration test now asserts the SET ofdeclared slots, and that every one of them is rendered by the page that owns
it, rather than naming a single slot twice. A slot nothing renders is a slot core
fills into the void.
npm testinserver/� 428 pass, untouched by this change.npm run buildinclient/� the prebuilt chunk is rebuilt and committed.Checklist
AI-assisted contributions (required)
Claude Code. I have reviewed and understandevery change, and take responsibility for it. AI-authored commits are
marked with a
Co-Authored-Bytrailer.License
(GNU GPL v3.0 or later), and I have the right to contribute it.
One thing that is not phase 4: the core pin
frozen-manifesthas been red since Teams phase 2, on #11 as well as here, andthe red was real. The pin (website#140) predates
api.registerTeamProvider, whichthis module has called since phase 1 of its Teams work — so the module fails to
LOAD in the pinned checkout, and a module that does not load adds no routes, which
the job correctly reports as the module having removed everything it serves.
Bumped to
edgeat Teams phase 3 (website#152), the first core with bothregisterTeamProviderand the roster projection this module implements. The wholejob was reproduced locally against that core: core's own manifest is current at the
new pin, the module loads, and the difference is 73 routes, all documented.
routes.manifest.jsonis unchanged — the expected result for a client-only change.Not bumped to the phase 4 core, deliberately: that is website#153 and is not merged
yet, and nothing here needs it. The second slot is a client-side declaration, and
the route manifest cannot see it.