Skip to content

v0.11.0: Docs, export, and GUI enhancements

Choose a tag to compare

@github-actions github-actions released this 01 Jun 18:32
· 48 commits to master since this release

Summary

Bundles the docs/TODO.md work (adopted into docs/plans/20260530-docs-export-gui-enhancements.md, executed via ralphex, then extended with follow-up fixes). Clearer docs, richer HTML/PDF exports, a more informative GUI, installable agent plugins, and a round of render bug fixes — without changing JSON/TXT output.

Changes

Docs

  • Reorder README (Usage above Installation); document GUI chat identifiers (Saved Messages, private group).

HTML/PDF export (#80)

  • Inline entity formatting (bold/italic/underline/strikethrough/code/links) in HTML and PDF via format_entities; href scheme allowlist drops javascript:.
  • Reply anchors + thread headers (HTML); reply citations to a topic root are suppressed (the header already names it).
  • PDF Cyrillic monospace fix: code/pre spans use a registered Unicode mono font (DejaVu/Noto/Liberation/Consolas) instead of Courier.

HTML export — forum topics

  • Forum topic names: headers/tabs use the real topic title (MessageActionTopicCreate, or fetched at download time) instead of a message's first line.
  • Topic tabs: default All + one tab per forum topic that filters the view; client-side, non-forum chats render no tabs.
  • Forum-only gating: topic headers/tabs appear only in forum supergroups — private chats and regular groups render replies as inline citations, no topic separators.
  • Windowed forum downloads (e.g. --last-days): group by the real forum topic id (not the reply chain) and fetch topic titles at download time, so topics stay intact and named even when their topic-create messages fall outside the window.
  • Discussion sub-threads (reply_to_top_id without forum_topic) correctly fold into General instead of becoming bogus Thread #<id> topics.
  • Anchor scrolling: header is static and bubbles use scroll-margin-top so jumping to a message no longer hides it behind the sticky tabs.

GUI

  • Structured progress events (media current/total, per-file, last-message date) consumed by the GUI instead of scraping log text.
  • Windows auto-update: core checker + Settings "Check updates" button that swaps to "Download" when an update is available.
  • Gray unchecked checkboxes matching the input background.
  • Chat-field help hint: an ⓘ tooltip + a collapsible "How to fill this?" block listing accepted identifiers (Saved Messages = me, @username/link, private/by id, phone, folder:Name, .json export). Toggleable via gui_chat_hint_tooltip / gui_chat_hint_help.

Media

  • --media summary: count + total size, downloaded vs cached, average MB/sec (downloaded-only), and retry stats.

Agent plugins (Claude / Cursor / Codex)

  • Installable per agent, generated from one source of truth (skills/telegram-download-chat/SKILL.md) by scripts/gen_agent_plugins.py: .claude-plugin/ manifests, .cursor/rules/*.mdc, .codex/prompts/*.md. A pytest fails if they drift.

Tests

  • Opt-in e2e export validation against the live test group: clean download (--overwrite) with --media, render HTML/PDF, assert inline formatting, reply anchors, topic names/tabs, reposts, and downloaded media.

Testing

  • pytest: 282 passed, 9 skipped (skips are the opt-in e2e + auth tests); black/isort clean.
  • Live e2e: 8 passed; forum topic-id fix also verified live on a real windowed forum download (real topic names + tabs, no Thread #<id> leftovers).

Closes #80

🤖 Generated with Claude Code