# Changelog Все заметные изменения проекта фиксируются в этом файле. ## [0.3.0] - 2026-08-20 ### Changed - BREAKING: `EpsonCodec::new` теперь валидирует `DisplaySettings` и возвращает `Result`. - Текстовые API нейтрализуют управляющие символы; произвольные ESC/POS-команды отправляются только через `write_raw`. - Worker ограничивает queued raw payload, длину marquee и максимальную скорость marquee публичными константами `MAX_QUEUED_RAW_BYTES`, `MAX_MARQUEE_CHARS` и `MAX_MARQUEE_CPS`. ### Fixed - Неподдерживаемые символы CP866/Windows-1251 заменяются одним байтом `?`, не нарушая ширину строки числовыми character references. - Некорректная геометрия codec-а возвращает `ConfigError` вместо позднего panic. ## [0.2.0] - 2026-08-16 ### Added - Добавлен crate-ready API `escpos-vfd` с импортом `escpos_vfd`. - Добавлены `VfdConfig`, `SerialSettings`, `DisplaySettings`, `TextEncoding` и пресет `Preset::Epson20x2Cp866` для прежнего 20x2 CP866 дисплея. - Добавлен ручной выбор baud rate, serial-режима, геометрии, кодировки, `ESC t` таблицы, диапазона яркости и ёмкости worker queue. - Добавлены sync worker с bounded queue, подтверждением после I/O и graceful shutdown. - Добавлен optional Tokio API через feature `tokio`: `AsyncVfd`, `AsyncVfdWorker`, `AsyncVfdHandle`. - Добавлены typed errors `ConfigError` и `VfdError`. - Добавлены русская rustdoc-документация, README, примеры preset/manual/Tokio и расширенные аппаратные demo-примеры. ### Changed - BREAKING: прежние фиксированные настройки `TABLE_CYR` и `FIXED_BAUD` заменены явной конфигурацией и пресетом. - BREAKING: ошибки публичного API теперь типизированы, вместо универсального `anyhow::Result`. - Логика строк и worker-кэш больше не предполагают строго две строки дисплея. - `print_line_diff` и `print_at` документированы как операции с 1-based координатами. ### Fixed - Исправлена рассинхронизация default-паузы marquee в taskfile: теперь везде `1500 ms`. - Документация методов и публичных типов проходит строгий `missing_docs` rustdoc gate.