forked from retoor/devplacepy
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
This commit is contained in:
@@ -13,8 +13,8 @@
|
||||
"isAdmin": is_admin(user)
|
||||
} | tojson | safe }};</script>
|
||||
<div class="docs-layout">
|
||||
<aside class="sidebar-card">
|
||||
<div class="sidebar-heading">Documentation</div>
|
||||
<aside class="sidebar-card" role="navigation" aria-label="Documentation">
|
||||
<div class="sidebar-heading" role="heading" aria-level="2">Documentation</div>
|
||||
<form class="docs-search-form" method="get" action="/docs/search.html" role="search">
|
||||
<input type="search" name="q" value="{{ search_query|default('', true) }}" placeholder="Search docs…" aria-label="Search documentation" class="docs-search-input">
|
||||
</form>
|
||||
@@ -24,9 +24,9 @@
|
||||
Search
|
||||
</a>
|
||||
{% for audience, tiers in nav %}
|
||||
<div class="sidebar-heading sidebar-tier">{{ audience }}</div>
|
||||
<div class="sidebar-heading sidebar-tier" role="heading" aria-level="2">{{ audience }}</div>
|
||||
{% for section, section_pages in tiers %}
|
||||
<div class="sidebar-heading sidebar-subheading">{{ section }}</div>
|
||||
<div class="sidebar-heading sidebar-subheading" role="heading" aria-level="3">{{ section }}</div>
|
||||
{% for p in section_pages %}
|
||||
<a href="/docs/{{ p.slug }}.html" class="sidebar-link sidebar-link-nested {% if p.slug == current %}active{% endif %}">
|
||||
<span class="icon">📘</span>
|
||||
@@ -36,7 +36,7 @@
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="sidebar-heading docs-download-heading">Download</div>
|
||||
<div class="sidebar-heading docs-download-heading" role="heading" aria-level="2">Download</div>
|
||||
<div class="sidebar-nav">
|
||||
<a href="/docs/download.html" class="sidebar-link"><span class="icon">📥</span> Single HTML</a>
|
||||
<a href="/docs/download.md" class="sidebar-link"><span class="icon">📝</span> Markdown</a>
|
||||
|
||||
Reference in New Issue
Block a user