R7's emoji id is /grimaces/{shortcode}, the owner's name

The federated id of a local custom emoji (LocalEmojis.Path) was the plan's /emojis/{shortcode} awaiting the owner; it is
/grimaces/{shortcode}, in the style of the other routes, and freezes once it deploys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-18 10:29:53 +02:00
1 parent 9b792042e6
commit 048eb15bb7
9 files changed
+23 -25

No files matched your search

@@ -22,7 +22,7 @@ namespace PrivaPub.Controllers.ClientToServer
{
// The server's custom emoji from the administrator's page (completion program R7): listed, added, changed and deleted
// by an administrator, checked again against the database. Every act is kept in the staff's log (emoji.insert,
// emoji.update, emoji.delete). An emoji is never renamed: its shortcode is its id on other servers (/emojis/{shortcode}).
// emoji.update, emoji.delete). An emoji is never renamed: its shortcode is its id on other servers (/grimaces/{shortcode}).
[ApiController,
Route("clientapi/admin/emoji"),
Authorize(Policy = Policies.IsAdmin)]
+1 -1
View File
@@ -21,7 +21,7 @@ namespace PrivaPub.Domain.Content
{
/// <summary>Where each emoji is served as an ActivityPub `Emoji` object: /emojis/{shortcode}, its id on other servers.
/// The plan's name, waiting for the owner's confirmation; it is frozen once it has federated (CLAUDE.md, routes).</summary>
public const string Path = "emojis";
public const string Path = "grimaces";
public const int MaxShortcodeLength = 64;
public const int MaxPerObject = 64;//what ObjectShapes reads of anyone's object
const string ServerUsePrefix = "emoji:";
@@ -11,7 +11,7 @@ using System.Text.Json.Nodes;
namespace PrivaPub.Federation.Controllers
{
// Each of the server's custom emoji as an ActivityPub `Emoji` object at its id, /emojis/{shortcode} (completion program
// Each of the server's custom emoji as an ActivityPub `Emoji` object at its id, /grimaces/{shortcode} (completion program
// R7; the path is LocalEmojis.Path): the tag that posts, actors and reactions carry, with its @context. GoToSocial takes
// an emoji only with an id, and may read it there. A disabled emoji is not served (404, it may come back); a deleted one
// answers 410 with a Tombstone. An emoji tells nothing about anyone, so it is served unsigned under SecureMode too, as the
+1 -1
View File
@@ -4,7 +4,7 @@ namespace PrivaPub.Models.Post
{
// One of this server's own custom emoji (completion program R7), added by an administrator
// (/clientapi/admin/emoji, EmojiAdminController). Its shortcode is its name everywhere: `:shortcode:` in a post, and
// its federated id (/emojis/{shortcode}, Domain/Content/LocalEmojis.Path), which is why it is never renamed. Its picture
// its federated id (/grimaces/{shortcode}, Domain/Content/LocalEmojis.Path), which is why it is never renamed. Its picture
// is a MediaAttachment nobody owns, held by ServerUse "emoji:<shortcode>" while the emoji exists. Deleted, the row stays
// (DeletedAt) so its id answers 410; adding the same shortcode again brings the row back with a new picture.
public class LocalEmoji : Entity