Releases
v3.61.0
Compare
Sorry, something went wrong.
No results found
3.61.0 (2026-06-19)
New Features
add cabinet admin api for legal pages (5dc9f63 )
add display mode cycle button to bot admin page editors (f3a1dd7 )
add display mode settings for built-in info sections (575ce2b )
add display_mode column to info pages (9c5c79f )
add overpay payment option selection in bot (68657ce )
add overpay terminal, direct qr and eur settings (31e7ce6 )
add telegram html renderer and splitter for info pages (6b8a522 )
admin: overpay certificate upload in bot (3a71ad3 )
admin: quick amounts management section in bot admin (3321a92 )
autopay: add AUTOPAY_FAIL_* notification antispam settings (5dff8d8 )
autopay: per-cycle Redis+memory state helpers, replace cooldown methods (10769ee )
autopay: pure decision fn + per-cycle state, drop 6h cooldown constant (8df8db4 )
autopay: route failure notifications through per-cycle policy + final reminder text (d3e8eea )
bot: quick amounts keyboard in top-up prompts for inline providers (2537fbb )
bot: quick amounts keyboard in top-up prompts for legacy providers (6e37578 )
bot: quick top-up amounts keyboard (6b0ed74 )
cabinet: allow new animated background types in animation-config validation (0ed3b4e )
cabinet: expose quick_amounts in payment methods API (b339c3a )
cabinet: overpay certificate admin endpoint (c03bd3a )
email-templates: common placeholders available in every template (4fd82a7 )
email-templates: expand common placeholders to recipient-level vars (76cd71c )
expose overpay int sub-option and cabinet payment option (b9f2ec0 )
filter cabinet info endpoints by display mode (af5fef2 )
gate bot info sections by display mode and render custom info pages (3150ac2 )
make DB connection pool params configurable via env (#3000 ) (610add5 )
notification: add user ID coercion for Telegram profile links (4ded56b )
notification: enhance ticket notification buttons based on user role (fdfda9e )
notification: handle TelegramBadRequest for unchanged message content (a766ccc )
notification: implement safe editing/resending of messages for photo notifications (0ab57d2 )
overpay terminals and direct qr, per-method quick top-up amounts, page display modes (ac53fa0 )
overpay: certificate upload service (de0514b )
payments: add quick_amounts column to payment method configs (fda59ef )
payments: quick amounts validation and effective values in config service (d1c0960 )
route overpay payments by option with eur conversion and direct qr (de2fc34 )
subscription: free-tariff switch fixes — reset tool, day-reset, expired menu (3b3633c )
support overpay s2s order init and redirect link polling (3703710 )
tickets: improve ticket reply handling for admin notifications (9920b93 )
tickets: let moderators use ticket-notification action buttons (016a79a ), closes #2988
tickets: open admin ticket in cabinet from notification buttons (1bdf8f2 ), closes #2988
tickets: show reliable (non-FSM) buttons in group/channel admin chat (de66f07 ), closes #2988
tickets: update ticket status handling for notification buttons (b091aa3 )
yclid-keyed Yandex offline conversions for repeat-purchase attribution (cde4baa )
Bug Fixes
address review feedback on overpay and cabinet admin (a09b57b )
admin-sync: repair UUID-wiped subscriptions from panel + fix squad extraction (440de7d )
autopay: never starve the final reminder; keep email cause text (db76789 )
backup: free table locks before restore TRUNCATE to avoid LockNotAvailableError (712d502 )
backup: skip missed schedule slots so auto-backup can't fire a burst (f947fed )
bot: derive BOT_USERNAME from live get_me() so links survive a bot swap (be0d7c9 )
cabinet: time-bound inline RemnaWave sync on pay endpoints (a2913d3 )
email-templates: editor baked sample values into saved overrides (#667043 ) (40f5214 )
enhance campaign payload handling by optimizing database checks (a01ecc2 )
etoplatezhi: use unique user_id as customer_id (telegram-less users got customer_id=None -> anti-fraud declines) (f688b19 )
forward overpay sub-option in guest payments (055e7c1 )
group info pages settings under interface category (b440a3f )
guard display mode cycling against env overrides (7945628 )
handle database check failures in channel checker and improve Redis logging (6364d75 )
harden telegram html splitter against oversized links and malformed markup (151abbf )
implement first-touch attribution protection for campaigns (be78179 )
logo: write resized Telegram logo to a writable temp dir (381d123 )
menu: /start renders the same subscription block as menu navigation (ff8b6cd )
notifications: convert missed /devices/purchase notification to create_bot + sort imports (5cb81d1 )
oauth: backfill email on account link + normalize OAuth email (707a819 )
oauth: backfill email_verified for existing VK/Yandex OAuth users (0092) (7399eae )
optimize campaign attribution handling by reducing database calls (8d522d0 )
overpay: mask p12 passphrase and harden certificate upload (4063259 )
payments: Lava top-up via cabinet failed with 422 invalid successUrl/failUrl (983f84a )
persist CID before central purchase fire in tariff_switch + paid-trial (review #2982 ) (eb35142 )
promo-offers: don't time out the broadcast request on large fan-outs (d24a78c )
promocode: repair activation across all types, modes and surfaces (dd434d9 )
remnawave: remove_device reports the real result, not just "no error" (c5b51c7 )
security: cabinet/webapi audit fixes + regression tests (8b5b8c2 )
subscription: apply paid tariff traffic limit on autopay trial→paid conversion (703940e )
subscription: ensure idempotency and handle race conditions in trial subscription creation (27e54cc )
subscription: optimize status handling by using a precomputed tuple for alive subscription statuses (6fc24c8 )
tidy quick amount prompt deletes and respect eur floor in overpay buttons (1bb98c9 )
timezone: panel returns UTC, stop shifting cabinet sync dates by local offset (7e732a4 ), closes #2990
trial: hide trial button/offer when trial is disabled (fffa863 )
update save_pending_campaign to return None on Redis error and improve logging (c459a0f )
use bot factory for admin notifications (a67ca04 )
user: handle IntegrityError for duplicate telegram_id during user creation (a91355e )
webhook: don't expire sibling subscriptions on user.deleted unless the panel confirms they're gone (d7341e9 )
Refactoring
drop now-dead get_user_by_id fetch (09a910b )
email: single source of truth for auth email templates (998f9d7 )
Documentation
account-merge: correct stale 'NO JWT required' comment (c2fd6ab )
autopay: document AUTOPAY_FAIL_* settings in .env.example (05bfbc0 )
You can’t perform that action at this time.