# MDView - CHANGELOG

Формат: версии и даты по git-истории проекта. Файл сохранён в CP866 -
его удобно читать самим MDView (заодно это тест автодетекта кодировки).

## v1.0 (b3) - 2026-07-05

- Фоновая подготовка второго набора кодировки: пока пользователь читает
  документ, паузы между клавишами тратятся на индексацию второго набора
  (UTF-8 при 8-битном первичном и наоборот). К первому F8 набор обычно
  уже готов - переключение мгновенно. F8 до готовности не строит набор
  заново, а докручивает начатое фоном (ждать остаётся меньше).
- Фон полностью невидим: экран не трогается, после каждой клавиши
  выдерживается холдаун - при скролле с автоповтором фон не вклинивается.
- Индексатор переведён на резюмируемые шаги (index_begin/index_step);
  побочно закрыт край: обрыв UTF-конвертации на сверхдлинном (>4 КБ)
  абзаце больше не обрезает остаток документа.
- Кодировка в статус-баре показывается сразу: детектированная - в момент
  начала первой индексации, новая по F8 - в момент переключения, не
  дожидаясь конца сборки набора.

## v1.0 (b1) - 2026-07-05

- Новый HEX-режим (F4): дамп ОРИГИНАЛЬНОГО файла в формате
  "0x012340 : 16 байт hex : 16 печатных символов".
  Печатная колонка учитывает текущую кодировку; для UTF-8 глиф
  ставится на позиции лид-байта, continuation-байты - точкой.
  Смена кодировки (F8) в HEX меняет только печатную колонку.
- Прокрутка HEX на одну строку - аппаратный скролл с подрисовкой
  одного ряда (как в MD/RAW).
- Справка: добавлена клавиша F4, версия v1.0 (b1).

## v1.0 (a4) - 2026-07-04

- Единая позиция при переключениях видов и кодировок: F2 (MD/RAW),
  F8 (8-битные / UTF-8) сохраняют текущее место в документе.
  Между наборами разного размера позиция переносится пропорционально
  байтам с точностью до строки.
- Исправлено: F8 в RAW-режиме рисовал MD-вид поверх RAW.
- Оптимизация размера: exe 28215 -> 25100 байт (-11%):
  агрессивная аллокация регистров SDCC (--max-allocs), зануление
  _DATA в crt0 (сняты все "= 0" у статиков), дедупликация парсера,
  слияние двух сканеров inline-разметки в один scan_stream.

## v1.0 (a3) - 2026-06-30

- Лимит файла 256 КБ: больший файл обрезается с предупреждением,
  прочитанная часть доступна.
- Обрыв по исчерпанию индекса/кэша завершается строкой-сообщением
  с причиной (вместо тихой потери строк).
- Полировка статус-бара и справки; процент прокрутки на 16-битной
  арифметике (без 32-битного деления).
- Тестовые файлы граничных случаев (testfiles/, генератор).

## v1.0 (a2) - 2026-06-26

- Монолит расщеплён на модули: ядро + index/md/raw/enc/table/status/help
  (размер-нейтрально, читаемость).
- Исправлен дубликат строки в RAW при скролле у конца файла.

## v1.0 (a1) - 2026-06-25

- Поддержка кодировок CP866/CP1251/KOI8-R/UTF-8 (F8):
  автоопределение при открытии, мгновенный ремап 8-битных,
  UTF-8 декодируется в отдельный набор (инкрементально).
- RAW-просмотр исходника (F2): перенос кратно 80 или панорама (F3).
- Оптимизация размера кода (-1.9 КБ).

## v1.0 (a0) - 2026-06-23..24

- Первый выпуск: render-cache архитектура - один проход парсера,
  готовые строки (символ+атрибут) в EMM, мгновенная прокрутка.
- Markdown: заголовки, списки, цитаты, разделители, fenced-код,
  таблицы с рамкой и авто-шириной колонок, inline-разметка
  (жирный/курсив/подчёркнутый/зачёркнутый/код, экранирование).
- Прогрессивная загрузка: первый экран сразу, индексация в фоне,
  навигация по готовой части, Esc/F10 прерывает.
- Горизонтальный скролл кодовых блоков и таблиц.
- Ускорение препроцессинга (22с -> 10с на большом файле).
