v0.5.1
[0.5.0] - 2026-06-01
Added
- Customizable keymaps — all 21 keymaps configurable via
setup({ keys = { ... } }); set tofalseto disable - Theme-adaptive highlights — all highlight groups derive from Neovim theme (
Comment,DiffAdd,DiagnosticOk, etc.) with no hardcoded colors - Granular default permissions editor — interactive floating window with 14 permission toggles, toggle-all switch, color-coded highlights for enabled/disabled/unknown states
- Edit invite links — frontend wrapper and UI entry for editing invite links (member limit + expiration)
- Expiration support for invite links — create/edit invite links with optional expiry time
- @username search for adding members — search by username instead of raw numeric user ID
- Invite link fallback — when adding a member to a supergroup fails, the invite link is returned to the user instead of a generic error
- Member list includes admins and creator — dual-filter search merges
chatMembersFilterAdministratorsandchatMembersFilterMembers - WebSocket sync for chat metadata — user name changes, online/offline status, group description/member count, group kicked/banned now sync in real-time from other clients
- Online status — user is marked as online after login with periodic heartbeat (30s), visible to other clients
- Device model — session shows as
telegram.nvim(with version and OS) in Telegram device list - Defensive error guards —
getChatInviteLinkshandlesgetMe()failure;handleChatMemberUpdateguards undefined user IDs; SIGTERM now does graceful shutdown
Fixed
- Channel unsubscribe now actually leaves — changed from
deleteChatHistorytoleaveChat restrictChatMember/unrestrictChatMembernot working — used wrong TDLib fieldcan_send_messagesinstead ofcan_send_basic_messages- Member actions shown regardless of status — Ban/Unban/Restrict/Promote now dynamically shown based on member's current status
- promoteChatMember grants
can_promote_members— removed to prevent privilege escalation - Title float covering messages — buffer padding now syncs with float height on every
update_title()call, preventing overlap (#123) - Cursor move freeze —
msg_line_countscache eliminates#fmt_msg()re-render on every cursor movement - WinScrolled storm — debounced
update_title()calls (100ms) reduce float recreation overhead on scroll - User name not updating in rendered messages — on
userUpdate, sender names in existing messages are refreshed viarender() ChatPositionevent name mismatch — migrated frombroadcastRaw(uppercase) to explicit lowercase handlertruncate_textnegative width — pinned message/description titles no longer break at narrow window widths
Changed
- Removed nui.nvim dependency — help popup and input editor migrated from
nui.popupto built-innvim_open_win request_async— restored to prefervim.net.requestwith curl fallback (reverted experimental change)set_groups— now storesuser_idfor private chat lookups
What's Changed
- chore(deps-dev): bump tsx from 4.22.3 to 4.22.4 by @dependabot[bot] in #128
New Contributors
- @dependabot[bot] made their first contribution in #128
Full Changelog: v0.5.0...v0.5.1