<!-- see docs/changelog/v1.1.0.md for the file format: Persian, then `---`, then English. -->
• رفع مهم ‫Stop‬ که واقعاً متوقف نمی‌کرد (issue #99): قبلاً وقتی در ‫UI‬ ‫Stop‬ می‌زدید، فقط ‫accept loop‬ متوقف می‌شد ولی کلاینت‌های در حال اجرا با ‫DomainFronter‬ قدیمی ادامه می‌دادن. نتیجه: ۱) صفحه‌ها همچنان بارگذاری می‌شدن، ۲) تغییر ‫auth_key‬ و ‫Start‬ مجدد برای دامنه‌هایی که ‫keep-alive‬ فعال داشتن بی‌تأثیر بود، ۳) ‫quota‬ ‫Apps Script‬ بعد از ‫Stop‬ همچنان مصرف می‌شد. حالا تک‌تک تسک‌های کلاینت در یک ‫JoinSet‬ ردیابی می‌شن که روی ‫shutdown‬ همشون abort می‌شن — ‫DomainFronter‬ drop می‌شه، ‫socket‬ها بسته می‌شن، ‫pool‬ ‫TLS‬ پاک می‌شه
---
• Important fix for "Stop didn't actually stop" (issue #99): previously hitting Stop in the UI only aborted the accept loops, while per-client tasks kept running with their captured Arc of the old DomainFronter. User-visible effects: (1) requests kept succeeding after Stop, (2) changing auth_key + Start had no effect on domains with a live keep-alive to the proxy, (3) Apps Script quota could still be consumed after Stop. Per-client tasks are now tracked in a JoinSet that's dropped on shutdown, aborting every in-flight request — sockets close, the old fronter's TLS pool is dropped, and a subsequent Start picks up the fresh config cleanly.
