DevPlace CI / test (push) Failing after 2m7s
- 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
49 lines
1.8 KiB
HTML
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>
|