v1.5.0
• پیامهای push در حالت Full Tunnel حالا تقریباً با تأخیر RTT میرسن، نه بعد از یک کامل tick کلاینت (#173): مکانیزم drain خود tunnel-node از sleep ثابت ۱۵۰ms به wake مبتنی بر Notify (event-driven) تبدیل شد. sessionهای idle حالا long-poll دارن تا ۵ ثانیه — اولین بایت ورودی wake میکنه. تلگرام و چتها بهطور قابلتوجه قابل لمستر شدن. backward-compat با tunnel-nodeهای قدیمیتر خودکار: اگه empty poll round-trip در زیر ۱.۵ ثانیه با هیچ data برمیگرده، کلاینت تشخیص میده server long-poll پشتیبانی نمیکنه و به cadence قدیمی برمیگرده — sticky AtomicBool برای کل عمر mux
• تصویر Docker آماده برای tunnel-node (ghcr.io/therealaleph/mhrv-tunnel-node): راهاندازی Full Tunnel mode حالا یک خطی هست به جای rustup + cargo build. multi-arch (amd64 + arm64). تگهای :latest, :1.5, :1.5.0. اجرا بهعنوان non-root user. مستندات کامل در tunnel-node/README.md
• یادداشت کوتاه فارسی "تغییرات این نسخه" بالای لینکهای پست تلگرام: تیترهای bullet از فایل docs/changelog/v<ver>.md خودکار استخراج میشن و بهعنوان بالای دو لینک repo و release میان. کلیکپذیری روی شمارهٔ issue/PR از طریق تبدیل markdown به HTML
• body صفحهٔ release گیتهاب دیگه فقط لینک comparison نیست — حالا محتوای کامل docs/changelog/v<ver>.md (فارسی + انگلیسی) بهعنوان توضیحات اصلی release نمایش داده میشه، و **Full Changelog**: ...compare... بهعنوان footer اضافه میشه
• body صفحهٔ release گیتهاب دیگه فقط لینک comparison نیست — حالا محتوای کامل
docs/changelog/v<ver>.md (فارسی + انگلیسی) بهعنوان توضیحات اصلی release نمایش داده میشه، و **Full Changelog**: ...compare... بهعنوان footer اضافه میشه• Full Tunnel mode push notifications now arrive in roughly RTT instead of waiting for the next client poll tick (#173): the tunnel-node's batch drain switched from a fixed 150 ms sleep to an event-driven Notify wait. Idle sessions now hold open in a long-poll up to 5 s — the first incoming byte wakes the batch. Telegram, chat apps, and any push-driven flow feel noticeably snappier. Backward compat with pre-#173 tunnel-nodes is automatic: if an empty round-trip returns under 1.5 s with no data, the client concludes the server is doing the legacy fixed-sleep drain and reverts to the pre-long-poll cadence (sticky for the lifetime of the mux). 92 client tests + 17 tunnel-node tests including end-to-end TCP-pair verification of the notify wiring
• Prebuilt Docker image for tunnel-node (ghcr.io/therealaleph/mhrv-tunnel-node): setting up Full Tunnel mode is now a one-liner instead of rustup + cargo build on a small VPS. Multi-arch (linux/amd64 + linux/arm64), tagged :latest, :1.5, :1.5.0. Runs as a non-root user. Full deployment docs in tunnel-node/README.md. The image is ~32 MB compressed
• Brief Persian "what's new" note above the links in every Telegram release post: bullet headlines are auto-extracted from docs/changelog/v<ver>.md and rendered as a Telegram <blockquote> above the two existing repo + release links. Markdown links / inline-code in the headlines convert to Telegram HTML so issue/PR refs stay clickable. Cap-budget-aware truncation at bullet boundaries keeps total caption under Telegram's 1024-char limit
• GitHub Releases page bodies now lead with the changelog content (Persian section + --- separator + English section) instead of just the auto-generated **Full Changelog**: …compare… link, which was empty for fix-forward releases like v1.4.1. The auto comparison link is appended at the bottom rather than removed
What's Changed
- feat(tunnel): event-driven drain with adaptive long-poll by @dazzling-no-more in #173
Full Changelog: v1.4.1...v1.5.0