Files
devplacepy/devplacepy/templates/saved.html
T
retoor 6ceca3d0d4 docs: document server-side rendering pipeline, response timing middleware, and Telegram pairing API
- Add comprehensive documentation for backend content rendering in AGENTS.md, detailing the new `render_content` and `render_title` Jinja globals built on mistune with media processing, emoji shortcodes, and XSS protection
- Document the `X-Response-Time` header and bottom-left render time indicator in README.md
- Update bot token pricing documentation to clarify fallback vs gateway cost headers
- Add `email_accounts` to soft-delete tables and `idx_users_role` composite index in database schema
- Implement `telegram_pairings` and `telegram_links` table creation with column migration and indexes
- Add `/profile/{username}/telegram` endpoint to docs API with request/unpair actions
- Register `TelegramService` in main.py lifespan and add `response_timing` middleware emitting `X-Response-Time` header
- Introduce `TelegramPairForm` model and `guard_public_host_sync` synchronous host validation function
2026-06-18 22:09:34 +00:00

28 lines
1.0 KiB
HTML

{% extends "base.html" %}
{% block extra_head %}
<link rel="stylesheet" href="{{ static_url('/static/css/feed.css') }}">
<link rel="stylesheet" href="{{ static_url('/static/css/post.css') }}">
{% endblock %}
{% block content %}
<div class="saved-page">
<h1 class="saved-title">Saved</h1>
<div class="saved-list">
{% for item in items %}
<a href="{{ item.url }}" class="saved-item">
<span class="saved-type badge">{{ item.type_label }}</span>
<span class="saved-item-title">{{ render_title(item.title) }}</span>
<span class="saved-item-time">{{ dt_ago(item.created_at) if item.created_at else item.time_ago }}</span>
</a>
{% else %}
<div class="empty-state">Nothing saved yet. Use the Save button on posts, gists, projects and news.</div>
{% endfor %}
</div>
{% if next_cursor %}
<div class="load-more-wrap">
<a href="/bookmarks/saved?before={{ next_cursor }}" class="btn btn-secondary">Load more</a>
</div>
{% endif %}
</div>
{% endblock %}