Releases: mammothcoding/maxoxide
Releases · mammothcoding/maxoxide
v1.0.0
[1.0.0] - 2026-03-25
EN
Release summary
This release promotes maxoxide from 0.1.0 to 1.0.0, adds a real interactive live API test harness for MAX, fixes several real-API mismatches, and makes message delivery APIs explicit about whether they target a chat_id or a user_id.
Breaking changes
- Removed the old shorthand methods:
send_textsend_markdownsend_message
- Added explicit recipient-specific methods:
send_text_to_chat(chat_id, text)send_text_to_user(user_id, text)send_markdown_to_chat(chat_id, text)send_markdown_to_user(user_id, text)send_message_to_chat(chat_id, body)send_message_to_user(user_id, body)
- Migration for apps still on
0.1.0:- Replace
send_text(chat_id, text)withsend_text_to_chat(chat_id, text) - Replace
send_markdown(chat_id, text)withsend_markdown_to_chat(chat_id, text) - Replace
send_message(chat_id, body)withsend_message_to_chat(chat_id, body) - If you only know a global MAX
user_id, use the new*_to_user(...)methods
- Replace
Added
- Added
examples/live_api_test.rs, an interactive real-API harness with:- English and Russian language selection
- runtime input for token, bot URL, webhook settings, file path, delays, and timeouts
- manual tester-driven steps in the MAX client
- optional group-chat phase
PASS / FAIL / SKIPsummary- non-blocking manual waits with
continue / skip / fail
- Added a
/get_my_idlive-test flow and senderuser_idlogging - Added live coverage for both
*_to_chatand*_to_usermethods, including attachment sending viauser_id - Added tests that explicitly verify the difference between
chat_idanduser_id
Changed
- Clarified throughout the docs that:
user_idis the global MAX user identifierchat_idis the identifier of a concrete dialog, group, or channel
- Updated README, README.ru, examples, and crate-level docs to use only the explicit
*_to_chat/*_to_userAPIs - Reworked API tables so chat-targeted and user-targeted methods are listed side by side
- Bumped the crate version to
1.0.0
Fixed
- Fixed
answer_callbackto sendcallback_idas a query parameter, matching the real MAX API - Fixed
edit_messageto returnSimpleResultinstead of incorrectly deserializing aMessage - Switched HTTP response parsing to
bytes + String::from_utf8_lossyto avoid crashes on invalid UTF-8 - Added lossy attachment deserialization so malformed or unknown attachments do not break entire update/message parsing
- Updated action handling and live testing to use the real MAX action value
typing_on
MAX platform gaps documented by live testing
request_contactis documented by MAX, but live tests received a contact attachment with emptycontact_idand emptyvcf_phonerequest_geo_locationis documented by MAX, and the mobile client shows a sent location card, but the bot did not receive a matching update in live polling teststyping_onreturns a successful API response, but the client-side typing indicator was not reliably visible in live testingset_my_commandsremains experimental: livePOST /me/commandsrequests returned404, and the public MAX REST docs do not currently expose a documented write endpoint for command menu updates
Verification
cargo fmt --allcargo check --example live_api_testcargo test- The live API test was successfully completed against a real MAX bot during this release cycle
RU
Кратко о релизе
Этот релиз переводит maxoxide с ветки 0.1.0 на 1.0.0, добавляет полноценный интерактивный live-тест на реальном API MAX, исправляет несколько несовпадений с реальным поведением платформы и делает API отправки сообщений явным по типу получателя: chat_id или user_id.
Ломающие изменения
- Удалены старые сокращённые методы:
send_textsend_markdownsend_message
- Добавлены явные методы по типу адресата:
send_text_to_chat(chat_id, text)send_text_to_user(user_id, text)send_markdown_to_chat(chat_id, text)send_markdown_to_user(user_id, text)send_message_to_chat(chat_id, body)send_message_to_user(user_id, body)
- Миграция приложений со старой
0.1.0:- Заменить
send_text(chat_id, text)наsend_text_to_chat(chat_id, text) - Заменить
send_markdown(chat_id, text)наsend_markdown_to_chat(chat_id, text) - Заменить
send_message(chat_id, body)наsend_message_to_chat(chat_id, body) - Если приложению известен только глобальный MAX
user_id, использовать новые методы*_to_user(...)
- Заменить
Добавлено
- Добавлен
examples/live_api_test.rs— интерактивный harness для проверки реального API, который включает:- выбор языка English / Russian
- ввод токена, URL бота, webhook-настроек, пути к файлу, задержек и таймаутов во время старта
- ручные шаги тестера в клиенте MAX
- необязательный этап группового чата
- итоговую сводку
PASS / FAIL / SKIP - ручное ожидание без
Ctrl+Cчерезcontinue / skip / fail
- Добавлен live-сценарий
/get_my_idи выводsender.user_id - Добавлено live-покрытие новых методов
*_to_chatи*_to_user, включая отправку вложения поuser_id - Добавлены тесты, которые явно проверяют различие между
chat_idиuser_id
Изменено
- Во всей документации явно зафиксировано:
user_id— глобальный идентификатор пользователя MAXchat_id— идентификатор конкретного диалога, группы или канала
- README, README.ru, примеры и crate docs переведены только на явные методы
*_to_chat/*_to_user - Таблицы API перестроены так, чтобы chat-методы и user-методы стояли рядом
- Версия крейта повышена до
1.0.0
Исправлено
- Исправлен
answer_callback: теперьcallback_idотправляется query-параметром, как требует реальный MAX API - Исправлен
edit_message: теперь метод возвращаетSimpleResult, а не пытается неверно десериализоватьMessage - Разбор HTTP-ответов переведён на
bytes + String::from_utf8_lossy, чтобы не падать на невалидном UTF-8 - Добавлена lossy-десериализация вложений: неизвестный или кривой attachment больше не валит весь update или message
- Для действий бота и live-теста закреплено реальное значение MAX
typing_on
Ограничения платформы MAX, выявленные live-тестами
request_contactзадокументирован в MAX, но в live-тестах contact приходил с пустымиcontact_idиvcf_phonerequest_geo_locationзадокументирован в MAX, мобильный клиент показывает отправленную карточку геопозиции, но бот не получил соответствующий update в live pollingtyping_onвозвращает успешный API-ответ, но видимый индикатор набора текста в клиенте live-тестами не подтверждёнset_my_commandsостаётся experimental helper: live-запросыPOST /me/commandsвозвращают404, а публичный REST MAX сейчас не показывает документированного write-эндпоинта для меню команд
Проверка
cargo fmt --allcargo check --example live_api_testcargo test- Живой тест на реальном MAX-боте был успешно пройден в рамках этого релиза
v0.1.0
First release.