Files
devplacepy/devplacepy/templates/docs/emoji-shortcodes.html
T
retoor 741d7aade6
DevPlace CI / test (push) Failing after 2m7s
docs: add block/mute user relations, emoji-sync CLI, and uid indexes
- Add `/block`, `/mute` endpoints with block/unblock and mute/unmute functionality in `routers/relations.py`, hiding blocked users' content everywhere except their own profile while muting only suppresses notifications
- Introduce `devplace emoji-sync` CLI command to regenerate `static/js/emoji-shortcodes.js` from the emoji library, documented in `CLAUDE.md` and wired in `cli.py`
- Create `get_blocked_uids()` database helper and apply it in `content.py` `load_detail()` to filter blocked users' posts from detail views
- Implement `_uid_index()` and `_drop_index()` helpers in `database.py` for unique uid indexes across tables, with `user_relations` added to `SOFT_DELETE_TABLES`
- Document new routes in `AGENTS.md` and `README.md`, including emoji shortcodes rendering behavior distinct from the emoji picker
2026-06-19 08:06:09 +00:00

49 lines
1.8 KiB
HTML

<div class="docs-content" data-render>
# Emoji shortcodes
Type a colon-wrapped name like `:rocket:` in any text you write and it is replaced with the matching
emoji 🚀 when the content is shown. This is the same `:name:` convention used by GitHub and Discord, so
shortcodes you already know work here too.
## How to use it
Write the shortcode inline with your text:
- `:smile:` becomes 😄
- `:rocket:` becomes 🚀
- `:tada:` becomes 🎉
- `:fire:` becomes 🔥
- `:+1:` becomes 👍 and `:-1:` becomes 👎
- `:smiling_imp:` becomes 😈 and `:imp:` becomes 👿
A shortcode that is not a real name is left exactly as you typed it, so `:not_an_emoji:` stays as plain
text. Names are case-insensitive.
## Where it works
Shortcodes are expanded everywhere your prose is rendered:
- Posts, comments, and post and comment titles
- Project and gist titles and descriptions
- News articles
- Direct messages
- Live content as it appears (new comments, chat replies, message bubbles)
Both the server-rendered pages and the live, in-browser updates use the **same shortcode list**, so what
you see while typing matches what everyone else sees after the page reloads.
## The full set
The list is the complete standard emoji set, the same one GitHub and Discord draw from: several thousand
names covering faces, hands, hearts, objects, food, flags, and symbols. If a name exists in that
standard set, it works here.
If you prefer to pick from a visual grid instead of remembering names, use the **emoji picker** button in
the composer; it inserts the actual emoji directly.
## Code stays untouched
Shortcodes inside code spans and fenced code blocks are never expanded, so technical text such as
`a:rocket:b` written as code keeps its colons. This keeps snippets and configuration examples exact.
</div>