You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A member's profile links to their invite tree for viewers holding invites_manage (#423).
The link opens /user/{id}/invite-tree, served under the same permission by GET /users/{id}/invite-tree. Before, nothing linked to it.
It isn't shown on your own profile; your tree is on /invite.
It's hidden when the member is known to have invited nobody, as in the legacy implementation.
When the count is unknown (the member hides ratio stats from a viewer who isn't staff), the link still shows, so the permission never loses access to a tree that exists.
Upload an image for your avatar, donor icon or second avatar from settings (#275).
Each of the three fields takes an upload, through the control described under Changed (#434). An upload fills the field with the stored image's /api/asset/… address, and the form's own save stores it.
Each upload names the field it will replace, so a member at their rank's limit can still upload the replacement (stellar-api#871).
A rank that can't upload (assetLimit 0) gets a note instead. The two donor fields take an upload only when the perk is unlocked.
The type is checked before sending. An oversize image says so, and "limit reached" says how to free a slot.
This re-vendors the contract for userRank.assetLimit on the session (stellar-api#716) and the upload's field.
Staff can delete a release that has no contributions (#429). A [Delete release] action in the release page's links shows to communities_manage once the release's contributions have loaded and there are none, which is the only release DELETE /communities/{id}/releases/{id} accepts (stellar-api#793). It asks for confirmation, and returns to the community on success. A refusal shows the api's message.
Fixed
The promotion editor follows the api's ladder rule (#383).
"Promotes to" is now fixed: it shows the next primary rank up, the only target the api accepts, instead of a select listing every rank.
The section is hidden on secondary ranks and on the top rung, which can hold no valid rule.
Rules are matched by their rank pair rather than by the first one leaving the rank.
Every other rule leaving the rank is listed as out of date, with a Delete button.
A refused save now shows the api's own message.
A rank save that takes promotion rules off the ladder now says so (#383).
The api reports those rules in staleRules (stellar-api#718).
The page stays open and links each rule's rank to its promotion section.
This re-vendors the contract for that field.
Staff ranks are no longer offered as a promotion target (#425).
The editor offered "Promotes to Staff" on Stellarige, though the api refuses that rule (stellar-api#866).
The next rung is now the next rank with autoManaged set, so Stellarige is the top rung.
The section is hidden on a staff rank, unless old rules leave it, which it lists for deletion with the reason.
The ui reads the api's autoManaged and never copies the level threshold.
A rank save that moves the rank on or off the auto-managed ladder now says so (#425).
The page stays open and names what changed for members holding the rank as their primary rank: auto-promotion and demotion, the inactivity sweep and the invite handout.
The same notice still lists any promotion rules the save stranded.
An emptied donor field now clears (#432). The donor rewards and forum-title saves sent each field as value || undefined, and the api leaves an undefined field alone. So emptying any reward field, or the title prefix or suffix, reported success and kept the old value. Each field is now sent as the member left it. This is also what lets clearing the donor icon or second avatar free its upload slot (stellar-api#871).
Changed
The vendored contract drops the profile's inviteTree and its InviteNode schema, and gains UserRank.autoManaged (#424).
stellar-api#856 removed inviteTree, which the ui never read. The ui's invite tree reads GET /users/{id}/invite-tree, which is unchanged.
The unused InviteNode type export is gone from types/index.ts.
autoManaged (stellar-api#866) arrives with this re-vendor; ui#425 puts it to use.
The three image fields are upload-only (#434). Avatar, donor icon and second avatar each show a small preview of the current image, a [Browse] button that opens a file picker and names the chosen file, and [Remove], which empties the field so the save clears it (and releases the upload, stellar-api#871).
There is no address box any more, so a new https:// address can't be entered. A saved one still previews through the api's resolved *Src, never loading the remote host, and can be removed or replaced.
A rank with assetLimit 0 gets no [Browse] but can still remove. A locked donor field shows its preview and lock note only.
The rank editor sets every rank field the api accepts (#342, absorbing #376).
New fields: the author stylesheet limit, the image upload limit (assetLimit), and the rank's colour and badge, with a preview of the name in them. An emptied colour or badge clears it.
Every limit that can be unlimited reads the same way: personal collages, author stylesheets, image uploads and notification filters each have a number, where 0 is none, and an Unlimited checkbox, which sends null. Before, the collage limit read 0 as unlimited, beside fields where 0 meant none. The api changed its meaning in stellar-api#881.
A new rank starts every limit at 0.
The rank list shows each rank in its colour with its badge, and its collage limit as ∞, none or the cap.
Creating a personal collage reads the session's null as unlimited and 0 as none, which says the rank can't create one.
A refused save shows the api's reason, such as the entry rank keeping level 100 (stellar-api#882), instead of a generic failure.
This re-vendors the contract for stellar-api#881 (both limits nullable on the session and on ranks) and #882 (the entry rank's 409).