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
It would be useful to upload a ZIP file through the admin dashboard to register multiple custom emojis at once.
I’m considering using the folder name inside the ZIP as the category and the image filename as the shortcode. For example, animals/cat.png would be registered under the animals category with the shortcode :cat:.
I’ve built a local prototype of this behavior. What do you think about adding this feature?
For transparency, I consulted Codex during implementation and received code examples and implementation advice. I made the changes to the repository myself.
I agree with @aliceif that supporting an existing package format would be useful. I'd suggest starting with Misskey's packed emoji format, since it already uses ZIP and includes emoji names and categories in its manifest. Mastodon's format would be a welcome addition if you have time, but it doesn't need to be part of the first PR.
Please run extraction and import through Fedify's custom background tasks, which Hollo already uses for other jobs, so the HTTP request doesn't have to wait for the import to finish. The uploaded archive should be stored privately somewhere the worker can access, with only a job ID passed through the queue. Please also show the job's status and a summary of imported, skipped, and failed entries.
A few other things to account for:
Skip duplicate shortcodes by default, including duplicates across categories, without overwriting existing images. Retrying a partially completed job should also be safe.
Limit the archive's extracted size and entry count, validate the actual image contents, and reject unsafe archive paths.
Clean up uploaded archives once they're no longer needed, as well as any image files left behind by failed registrations.
One more thing: please include a changelog fragment under changes.d/ in your PR. Hollo uses Sacho to manage changelogs; Sacho's everyday workflow guide explains how to add a fragment.
Also credit yourself at the end of the entry with [[#686], [#XXX] by nove-b], replacing XXX with your PR number. Run sacho resolve-links to pin the issue and PR links, then mise run fmt to format the fragment and update CHANGES.md.
Activity
aliceif commentedon Oct 26, 2026
I would recommend supporting at least one of the common emoji package formats in use on fedi instead of rolling something new that may not work with existing tooling:
Mastodon uses plain .tar.gz archives, for example: https://docs.joinmastodon.org/admin/tootctl/#emoji-import
Misskey uses a .zip archive with a manifest file for more in-depth configuration: https://misskey-hub.net/en/docs/for-admin/features/managing-emojis/#packed-emoji-format
dahlia commentedon Oct 26, 2026
Thanks for working on this! I'd welcome a PR.
I agree with @aliceif that supporting an existing package format would be useful. I'd suggest starting with Misskey's packed emoji format, since it already uses ZIP and includes emoji names and categories in its manifest. Mastodon's format would be a welcome addition if you have time, but it doesn't need to be part of the first PR.
Please run extraction and import through Fedify's custom background tasks, which Hollo already uses for other jobs, so the HTTP request doesn't have to wait for the import to finish. The uploaded archive should be stored privately somewhere the worker can access, with only a job ID passed through the queue. Please also show the job's status and a summary of imported, skipped, and failed entries.
A few other things to account for:
dahlia commentedon Oct 26, 2026
One more thing: please include a changelog fragment under changes.d/ in your PR. Hollo uses Sacho to manage changelogs; Sacho's everyday workflow guide explains how to add a fragment.
Also credit yourself at the end of the entry with
[[#686], [#XXX] by nove-b], replacingXXXwith your PR number. Runsacho resolve-linksto pin the issue and PR links, thenmise run fmtto format the fragment and update CHANGES.md.nove-b commentedon Oct 27, 2026
@aliceif @dahlia
Thank you both for your feedback!
I'll go with Misskey's packed emoji format to ensure compatibility with existing tools.
I also appreciate the detailed implementation guidance and considerations. I'll keep these points in mind as I work on the PR.
nove-b commentedon Nov 2, 2026
@dahlia
#688
I've submitted a pull request. I'd appreciate it if you could take a look when you have a chance!