# 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с на большом файле).