# История версий LogsView
***
---
## build 1.3.115
Правки по итогам работы с BIN-логами: таблица каналов, математика, окно
спектра и тёмная тема.

### Открытие BIN
1. Если файл открыт **без словаря и без "Настроек"**, каналы больше не
   остаются безымянными — им даются имена `Канал_1 … Канал_N` по порядку
   параметров. Имена из словаря или "Настроек" по-прежнему в приоритете.
2. Если в файле "Настроек" **тип данных не указан** (пустое поле или `None`
   от старых версий), канал открывается как `Double`, а не с пустым типом —
   колонка "Data" у таких каналов больше не остаётся пустой.

### Таблица каналов
3. **Сканер при включении встаёт в точку лога**, а не в середину видимого
   диапазона. Раньше значение в этой позиции считалось интерполяцией между
   соседними точками, и у целочисленных логов в колонках "Значение" и "Data"
   сразу после включения сканера появлялись дробные значения, которых в
   данных нет.
4. **Значения в редакторах видно.** В узких колонках ("iq", "Mply") поле
   редактирования не оставляло места под текст — цифры обрезались или поле
   выглядело пустым. Теперь редактор при необходимости расширяется.
5. **Правка по второму клику:** первый клик выделяет строку, второй по
   ячейке открывает редактор (двойной клик работает как раньше). Имя и числа
   открываются с выделенным текстом — новое значение печатается сразу,
   без стирания старого.
6. **Колонка "Тип" ведёт себя как обычный выпадающий список:** стрелка вниз
   видна прямо в ячейке, список открывается одним кликом, выбор сразу
   применяется. Раньше требовался двойной клик, а текст в поле "уезжал".
7. Новый тип данных **`Word`** — "сырое" значение, как оно лежало в
   BIN-файле, без множителя и без iq. Удобно сверять пересчёт с исходником.
8. Колонка "Цвет" открывается только диалогом выбора цвета (раньше по ней
   мог открыться текстовый редактор с кодом цвета), колонка "Data" больше не
   предлагает редактирование — это вычисляемое значение.

### Верхняя панель
9. Режим **"Точки"** (F8) продублирован кнопкой рядом с "глазиками" в группе
   "Всегда под рукой" — переключать разметку точек стало можно, не уходя на
   вкладку "Просмотр". Сама галочка на вкладке осталась.
10. Содержимое вкладки теперь начинается ровно под её ярлыком: блок
    "Обрезка данных" больше не съезжает левее вкладки "Диапазон".

### Математика
11. Новые функции:
    - `int(x)` / `trunc(x)` — целая часть (дробная отбрасывается в сторону
      нуля), `frac(x)` — дробная часть, `round(x)` — округление;
    - `if(условие, если_да, если_нет)` — условие; сравнения задаются
      функциями `gt/ge/lt/le/eq/ne`, логика — `and/or/not`;
    - **биты и сдвиги:** `band(a, b)` и `bor(a, b)` — побитовые И/ИЛИ,
      `shl(a, N)` и `shr(a, N)` — сдвиги на N разрядов. Работают по целой
      части аргументов — то, что нужно для слов состояния и масок.
    В каталоге функций появился раздел "Биты и сдвиги"; справка по
    математике обновлена.
12. **Предпросмотр:** автомасштаб по оси X срабатывает всегда. Раньше, если
    исходный канал в предпросмотре оказывался пустым, масштаб по X оставался
    от предыдущей формулы.

## Спектр (FFT)
13. По умолчанию включено окно **Hamming**, оно же первое в списке;
    прямоугольное ("без окна") — последнее. Прямоугольное окно на реальном
    логе почти всегда даёт растекание спектра из-за разрыва на стыке краёв,
    и его ложные "гармоники" легко принять за настоящие. Выбор окна
    действует на текущий сеанс: при открытии окна спектра всегда Hamming.

## Тёмная тема
14. Поля "Обрезка данных" и "Просмотр" больше не остаются белыми — цвет
    подсветки (в том числе красной, когда диапазон задан неверно) следует
    теме. То же исправлено для подсветки активных фильтров над таблицей
    каналов.
---
## build 1.3.114
Новый дизайн окна **"Спектр (FFT)"**. Расчёт спектра не менялся — числа,
THD/THD+N/SINAD, пики помех и усреднение остались прежними, переделан
только интерфейс.

1. Пять рядов настроек заменены двумя вкладками — **Расчёт** и **Вид**.
   Правило простое: на "Расчёте" всё, что меняет **числа** (окно, режим FFT,
   убрать DC, сглаживание краёв, тип анализа, амплитуды, усреднение), на
   "Виде" — всё, что меняет только **картинку** (лог. масштаб и floor,
   диапазон частот, сетка, осциллограмма, раскладка). Floor, шаг dB и
   Fmin/Fmax переехали в "Вид" — это границы и разметка осей.
   До графика теперь около 180 px вместо 330: на ноутбучном экране спектру
   достаётся заметно больше места.
2. Всегда на виду, независимо от вкладки: диапазон точек и шаг, режим мыши,
   кнопка **Расчёт** (F5), тема и справка.
3. **Сканер и Маркеры стали режимом мыши** — три кнопки "Выбор / Сканер /
   Маркеры", как в главном окне, вместо трёх независимых галочек, которые
   можно было включить одновременно. F7 по-прежнему переключает сканер.
   "2-й маркер" показывается только в режиме "Маркеры" — это его настройка,
   а не отдельный режим.
4. **Каналы окна — чипы вместо таблицы.** Строка чипов: цвет, имя, краткая
   сводка (THD или уровень шума), глаз "показать/скрыть" и крестик "убрать".
   Выбранный канал видно сразу — он подсвечен и подчёркнут, а не выделен
   жирным шрифтом, как раньше. Остальное — по правому клику на чипе:
   "Без DC" для одного канала, цвет, убрать из окна.
   - **Добавление канала — через поиск**, а не выбором из списка на сотню
     позиций: начните печатать имя, Enter добавит канал, Ctrl+Enter добавит
     и оставит окошко открытым (удобно набирать три фазы подряд).
   - Если каналов много, строка чипов переключается в **панель слева от
     графика** — иконкой в самом списке каналов. Состав каналов, выбранный
     канал и масштаб графика при переключении не теряются.
5. **Строка результата всегда видна** — переехала вниз, в строку состояния,
   отдельной подсвеченной плашкой. Раньше она молча пропадала, если окно
   было узким. Рядом — состояние ("Готово"), параметры расчёта
   (N, Fs, Δf, окно, DC, Avg), фактически выбранный режим FFT и кнопка
   копирования результата в буфер.
6. **Прогресс-бар и "Стоп" видны только во время расчёта** — раньше пустая
   полоса занимала место постоянно.
7. **Кнопки масштаба — прямо на графике**, в правом верхнем углу: авто по X,
   авто по Y и "вписать всё". В раскладках "друг под другом" и "слева
   направо" они относятся к активной области.
8. **Тема** переключается кнопкой солнце/луна в правом углу окна и следует
   за темой главного окна. График, сетка, легенда и подписи перекрашиваются
   вместе с ней; цвета каналов, выставленные вручную, остаются как есть.
Настройки прошлых версий читаются: тип окна, галочки, раскладка, число
гармоник, Avg N — всё восстанавливается как раньше.
---
## build 1.3.113
Полная переработка диалога **"Математический график"**.

1. Список из 62 одинаковых кнопок заменён каталогом функций слева: поиск по
   названию, описанию и синонимам ("50 Гц" находит режекторный фильтр,
   "сглаживание" — скользящее среднее), категории по смыслу задачи
   (Фильтры, Тригонометрия, Кларк и Парк...), у каждой функции — короткое
   описание под названием.
2. Параметры функции больше не набираются вслепую скобками и запятыми —
   выбор функции открывает карточку с полями: единицы измерения, пределы,
   значения по умолчанию, готовая строка формулы внизу и кнопка "Вставить
   в формулу". Для фильтров (их было 12 разных кнопок: Butterworth / Bessel
   / FIR × низкие / высокие / полоса) — одна карточка с переключателями
   "Тип" и "Полоса"; введённые значения не теряются при переключении.
   Есть подсказка, если частота среза выше половины частоты записи лога —
   с кнопкой "Поставить" правильное значение.
3. Строка формулы теперь показывает состояние: зелёная плашка "Формула
   верна" с числом точек и диапазоном значений, жёлтая — предупреждение
   (не блокирует создание графика), красная — ошибка с волнистым
   подчёркиванием места и кнопкой действия ("Открыть карточку",
   "Добавить скобку").
4. Справа — живой предпросмотр графика по мере набора формулы: один канал —
   исходный и результат, несколько каналов — только результат (по кнопке
   "Слагаемые" можно посмотреть и составляющие). Расчёт идёт в фоне, не
   подвисает интерфейс даже на больших логах. Клик по каналу в списке
   показывает его на предпросмотре вместо результата формулы — удобно
   свериться, не отменяя набранное; кнопка "Показать результат формулы"
   возвращает обратно.
5. Список каналов (слева от предпросмотра): цветной квадрат, поиск по
   имени, двойной клик вставляет канал в формулу на место курсора.
6. Поле "Имя графика" в диалоге — предзаполнено осмысленно (по именам
   каналов формулы и, для фильтров, короткой пометкой вроде "LP200"),
   можно поправить перед созданием, и комбобокс "Слой".
7. Рецепты (кнопка "Рецепты" или Ctrl+R) — готовые связки формул для
   Кларк/Парк-преобразований в один клик вместо ручного набора 2-4 функций:
   "Трёхфазный ток → dq", "Трёхфазный ток → αβ", "dq → трёхфазное
   напряжение", "Модуль и фаза вектора". Свою часто используемую формулу
   тоже можно сохранить как рецепт — галочка "Сохранить как рецепт" внизу
   диалога, каналы автоматически становятся "дырками", которые рецепт
   потом просит заполнить.
Формат формул не изменился — старые формулы и история продолжают работать
как прежде.
---
## build 1.3.112
Новый дизайн главного окна — верхняя панель, иконки, темы. Скачок номера
версии с 1.2.x на 1.3.x — из-за масштаба изменений, не всё ещё доделано
(меню и диалог открытия .bin — в следующих обновлениях).

1. Верхняя панель собрана в два ряда вместо одной длинной ленты кнопок,
   которая переставала помещаться и обрезалась при уменьшении окна.
   - Ряд 1: меню, рядом — вкладки **Диапазон · Просмотр · Слои · Анализ**
     (переключают, какие настройки показаны ниже), справа — режим мыши,
     тема, справка.
   - Ряд 2: слева — то, что нужно всегда под рукой независимо от вкладки
     (Открыть, все вкл/выкл, обновить, Σ, БПФ), посередине — настройки
     активной вкладки, справа — масштаб (X/Y/АвтоЗум/Автовысота слоёв).
   - Под панелью — короткая подсказка по смыслу текущей вкладки, её можно
     скрыть крестиком (запоминается).
2. **Режимы мыши** (Выбор / Курсор / Сканер / Измеритель) собраны в одну
   группу кнопок с иконками вместо разрозненных галочек — включён может
   быть только один режим. Сканер и Измеритель работают как раньше.
3. Иконки во всём приложении заменены на единый набор (тонкая линия,
   одинаковая толщина) вместо разномастных старых картинок.
4. Добавлена **тёмная тема** — меню "Вид → Тема": Светлая / Тёмная / Как в
   системе, переключается без перезапуска. Цвета графиков, курсор,
   измеритель и разметка слоёв тоже перекрашиваются. Вручную выбранный
   цвет канала при смене темы не сбрасывается.
5. Часть подписей и полей переименована и перегруппирована для ясности:
   "Обрезка данных" теперь явно показывает, сколько всего точек в файле;
   "Окно по X" переименовано в "Видимое окно по X"; частота и толщина
   линии — с явными единицами (точек/сек, px).
6. Мелкие правки по месту: иконки в таблице каналов и цвет ячеек колонки
   "Тип" теперь читаемы в тёмной теме; кнопка БПФ в таблице больше не
   считалась недоступной по ошибке для обычных (не цифровых) каналов;
   кнопки автомасштаба по X/Y снова сразу перестраивают график, а не
   только после клика по нему.
---
## build 1.2.111
1. Исправлен поиск кусков в логе из нескольких кусков записи (см. build
   1.2.109): одиночный сбойный "скачок" канала-маркера на одну строку иногда
   принимался за отдельную границу куска, из-за чего вместо реальных двух
   кусков находилось пять. Теперь такие одиночные выбросы (значение резко
   прыгает и на следующей же строке возвращается обратно) не считаются
   границами.
---
## build 1.2.109
1. Авто-поиск: лог из нескольких кусков записи. Раньше распознавалась только
   склейка ровно двух кусков по каналу "global_seconds*10". Теперь:
   - канал-маркер границ можно выбрать вручную (как канал-счётчик для
     развёртки) - на случай, если он называется иначе;
   - поддерживаются логи из трёх и более кусков записи, а не только двух.
   В диалоге "Авто-поиск" и в кнопке "Авторазворот графика в ноль" вместо
   кнопок "Оставить быстрый/медленный" теперь список всех найденных кусков -
   какой оставить, выбирает пользователь.
2. Окно "Спектр" (FFT) запоминает свои настройки между запусками программы:
   тип окна, все галочки (без DC, сглаживание краёв, лог. шкала, автомасштаб,
   сетка, показ сигнала и т.д.), раскладку, нормировку, режим анализа. Не
   нужно каждый раз настраивать окно заново. Список каналов и диапазон точек
   по-прежнему не запоминаются - они относятся к конкретному логу, а не к
   настройкам окна.
---
## build 1.2.108
1. Авто-поиск: поддержка двухкомпонентных логов (склейка быстрого и
   медленного кусков записи в один файл, различаются по каналу
   "global_seconds*10"). Диалог "Авто-поиск" и кнопка "Авторазворот графика
   в ноль" теперь показывают предупреждение о находке и предлагают оставить
   быстрый или медленный кусок - выбор за пользователем.
2. Одиночные "провалы до нуля" (сбой записи на одну точку среди значащих
   соседей) больше не путают ни поиск границы двухкомпонентного лога, ни
   классическую авторазвёртку по счётчику (count_step_run).
3. Автообрезка хвостовых нулей стала точнее: строка считается концом
   значащих данных, только если ненулевых каналов не меньше двух. Раньше
   хватало одного - изредка в дочитанном "с запасом" хвосте остаётся
   случайный ненулевой "огрызок" в одном канале, и обрезка на нём
   останавливалась на строку раньше, чем нужно.
---
## build 1.2.107
1. Верхняя ось "Точки" больше не пропадает на неравномерных логах.
  Раньше номера точек считались пересчётом времени по постоянному шагу,
  поэтому на логе с неравномерной сеткой ось просто скрывалась. Теперь номер
  берётся у фактической точки, и ось работает на любом логе одного файла.
  При нескольких открытых файлах ось по-прежнему не показывается: "точка N"
  у разных файлов приходится на разное время, общего номера у них нет.
2. Убрана пустая полоса над верхним графиком. Когда ось "Точки" не
  показывалась, её заголовок всё равно занимал строку - около 50 пикселей
  пустоты сверху.
3. Подписям нижней оси X теперь выделяется собственное место. Раньше они
  заходили в промежуток между слоями и в подпись "Время, мсек" - при
  включённом глобальном времени, когда снизу добавляются ещё и даты по краям,
  это было особенно заметно.
4. Даты по краям оси X перестали "плавать". Их отступ от графика считался
  в процентах от высоты слоя: на высоком слое они уезжали далеко вниз,
  на низком - налезали на подписи времени. Теперь отступ постоянный.
5. Легенда больше не закрывает данные.
  Раньше она лежала внутри графика, в левом верхнем углу, поверх кривых -
  полупрозрачность помогала слабо. Теперь по умолчанию легенда идёт полосой
  НАД областью построения. Слой теряет высоту ровно на строку легенды, и
  только тот слой, где она реально показана. Если имена каналов не влезают
  в одну строку, лишние переносятся на вторую.
6. Расположение легенды выбирается для каждого слоя.
  Нижняя кнопка в столбце слоя открывает меню: "Над графиком",
  "В графике: сверху слева / справа", "снизу слева / справа",
  "Не показывать". Значок на кнопке показывает текущее расположение, так что
  состояние слоя видно без открытия меню.
  Расположение по умолчанию - меню Настройки -> "Легенда": применяется сразу
  ко всем слоям и запоминается между запусками.
7. На цифровых слоях кнопки масштаба больше не показываются: диапазон там
  фиксирован под ступеньки, а имена каналов и так подписаны у своих кривых.
  Такие слои снова стали компактнее по высоте.
8. Полоса легенды переносится на несколько строк (до четырёх), поэтому
  каналов в ней помещается заметно больше, чем прежние десять. Сколько имён
  влезет в строку - зависит от ширины окна: разверните окно пошире, и
  легенда покажет больше каналов. Если строк набирается больше четырёх,
  легенда прячется - окинуть её взглядом уже не получится.
9. Клик по имени канала в легенде выделяет этот канал: кривая подсвечивается,
  таблица встаёт на его строку - то же самое, что клик по самой кривой.
  Повторный клик снимает выделение.
10. Подпись Сканера с номером точки больше не перекрывается легендой:
  когда легенда стоит полосой над графиком, подписи резервируется своё место
  над областью построения. Заодно увеличен зазор между полосой легенды и
  подписями верхней оси "Точки" - раньше они выглядели слипшимися.
---
## build 1.2.105
1. Кнопки масштаба переехали: место на экране расходуется экономнее.
 - Кнопки оси X (время) больше не повторяются на каждом слое. Ось времени
  общая для всех графиков, поэтому теперь это одна группа внизу окна, рядом
  с подписью "Время, мсек": "Ось X: (+) (-) (Авто)".
 - Кнопки оси Y стоят вертикальным столбцом слева от своего слоя, сверху:
  (+) (-) (Авто) и замок. Столбец занял пустую полосу между краем графика
  и подписями оси, поэтому высоту слоя он не отнимает - раньше на каждый
  слой уходило по 22 пикселя высоты.
 - "Авто" по оси X теперь показывает все данные окна, а не только того слоя,
  на котором нажали.
  Убрать все кнопки по-прежнему можно: Настройки -> "Кнопки масштаба
  на графике". Выбор запоминается.
---
## build 1.2.104
1. Исправлены легенды графиков при импорте настроек вида (меню "Вид").
   Легенда на слое могла не появиться после импорта, даже если на слое всего
   несколько графиков - её видимость не пересчитывалась и оставалась такой,
   какой была до импорта.
2. Восстановление математических каналов при импорте.
   И "Вид -> Импортировать", и "Импорт настроек" теперь умеют довосстановить
   математические каналы, которых нет среди текущих загруженных (например,
   после переоткрытия файла с нуля). Если в файле есть формулы, которых
   сейчас нет, - один общий вопрос "Добавить?" со списком формул. Каналы,
   которые уже есть (совпадают по формуле - добавлены вручную или из
   предыдущего импорта), не дублируются.
---
## build 1.2.103
1. Ускорено чтение CSV с числовыми каналами, где встречается десятичная
   запятая (например, температуры вида "4,3"). Раньше замена запятой на
   точку выполнялась для каждой ячейки без разбора, даже для целых чисел -
   теперь только там, где запятая действительно есть.
---
## build 1.2.102
1. Исправлено зависание при открытии больших логов, склеенных из нескольких
   кусков записи (например, из нескольких суток), где время в файле не идёт
   строго по порядку. Раньше построение графиков на таком файле могло висеть
   десятки минут и постепенно съедать всю память программы - теперь такие
   файлы открываются штатно.
2. Для таких же "склеенных" логов исправлен номер точки под курсором и
   в измерителе (Сканер, P1/P2) - раньше он мог указывать на соседнюю по
   времени точку из другого куска записи.
3. Немного ускорено и облегчено по памяти чтение CSV с общей колонкой Time.
---
## build 1.2.100
1. Кнопки масштаба прямо на графике.
  В верхнем поле каждого слоя, слева, появился ряд кнопок:
  "Ось X: (+) (-) (Авто)" и "Ось Y: (+) (-) (Авто) (замок)".
 - X (+) / (-) - приблизить / отдалить по времени. Ось X общая, поэтому
  масштаб меняется сразу на всех слоях.
 - X (Авто) - показать по X все данные этого слоя.
 - Y (+) / (-) / (Авто) - то же по вертикали, но только для своего слоя.
  Ряд занимает часть высоты слоя. Если слоёв много и высота дорога, ряд
  убирается: Настройки -> "Кнопки масштаба на слоях". Выбор запоминается.
2. Замок - фиксация масштаба Y отдельного слоя.
  Закрытый замок означает "не трогать ось Y этого слоя": автоматика больше
  не пересчитывает её ни при включении/выключении каналов, ни при переносе
  канала на слой, ни при "АвтоМасштаб Y". Сам замок ничего не пересчитывает
  в момент нажатия - он запоминает ровно тот масштаб, который вы настроили.
  У каждого слоя замок свой. Ручные кнопки Y (+) (-) (Авто) работают и при
  закрытом замке.
  Общие кнопки формы сильнее замков: "АвтоМасштаб X", "АвтоМасштаб Y",
  "АвтоЗум", "Обновить" и Escape в фокусе графика снимают фиксацию со всех
  слоёв и пересчитывают масштаб заново.
3. Исправлен автомасштаб по Y для каналов с постоянным (или почти
  постоянным) значением. Раньше каждое нажатие "Авто" делало такой график
  всё мельче: запас по краям добавлялся к уже расширенному диапазону, а
  сузить диапазон для канала без размаха было нечем. Теперь границы всегда
  считаются заново по данным - повторные нажатия ничего не меняют, а
  плоский канал получает разумный диапазон вокруг своего уровня.
4. Зазор по краям оси X стал одинаковым везде.
  Раньше он зависел от способа: "АвтоЗум" оставлял один зазор, кнопка "Авто"
  на слое - другой, а после сброса обрезки зазора не было вовсе. Теперь это
  одна и та же небольшая величина в пикселях, чтобы крайние точки не
  сливались с рамкой.
5. Перенос канала на другой слой больше не сбивает масштаб соседних слоёв.
  Масштаб по Y пересчитывается только у слоя-приёмника и у слоя, откуда
  канал уехал.
6. Обновлена встроенная справка (меню "?"): раздел "Кнопки масштаба на слое"
  в "Графики и слои", поведение автомасштаба в "Масштаб и навигация".
---
## build 1.2.99
1. Галочка "Вкл." больше не сбрасывает масштаб по оси X.
  Приближённый участок времени остаётся на месте - каналы можно перебирать
  по очереди и сравнивать их на одном и том же интервале.
  Масштаб по Y по-прежнему подстраивается (если включён "АвтоМасштаб Y"),
  иначе только что включённый канал мог бы оказаться за границами вида.
  Вернуть полный диапазон по X - кнопка "AutoZoom" или F5.
2. Колесо мыши меняет масштаб по X в любом месте графика.
  Раньше зум работал только у самих осей (курсор-"лупа") и целиться
  в тонкую полоску оси X было неудобно. Над областью оси Y колесо, как
  и раньше, меняет масштаб по Y этого слоя. Ctrl + колесо - сразу по X и Y.
3. Перенос на слой одним кликом (иконка "Переместить" в колонке "Действие").
 - ЛКМ - канал сразу выносится на новый слой, без вопросов.
 - ПКМ - открывается меню выбора слоя, как раньше.
 - Если в таблице выделено несколько строк, операция выполняется над всей
  группой: все выделенные каналы уезжают на один новый слой. Клик по иконке
  в уже выделенной строке групповое выделение не сбрасывает.
4. Цвета графиков при добавлении файлов больше не повторяются.
  Раньше каждый файл начинал раздачу цветов с начала палитры, и, например,
  3-й канал первого файла совпадал по цвету с 3-м каналом второго - при
  сравнении одинаковых процессов это сбивало. Теперь каждый дополнительно
  открытый файл начинает со сдвигом +1 по палитре.
  Отключается галочкой Настройки -> "Сдвигать цвета для каждого нового файла"
  (по умолчанию включена). Файл, открытый взамен уже загруженных, всегда
  начинает с первого цвета.
5. Обновлена встроенная справка (меню "?") под новое поведение: колесо мыши,
  перенос на слой через иконку, цвета при добавлении файлов.
---
## build 1.2.98
1. Обновлена встроенная справка (меню "?").
 - Новый раздел "FFT (БПФ)": окно спектра целиком - каналы окна и раскладки,
  выбор активного канала, анализ THD и шума, относительные амплитуды,
  сканер и маркеры, график сигнала.
 - Раздел "Форматы файлов": описано, когда программа спрашивает единицы
  времени, а когда определяет их сама; добавлено чтение CSV из DSView/sigrok.
 - Новый раздел "Инструменты": Сдвиг времени и Авто-поиск (обрезка/развёртка),
  включая кнопку "Авторазворот графика в ноль" на панели.
---
## build 1.2.97
1. Окно FFT: работа с несколькими каналами.
 - Каналы окна собраны в таблицу: показ, выбор канала, цвет, "Без DC",
  кнопки добавить/убрать. Одновременно до 8 каналов.
 - Раскладка: "Наложить" (все на одном графике), "Друг под другом",
  "Слева направо".
 - Активный канал выбирается кликом по строке таблицы, по легенде или
  по области графика. Его кривая выделяется толщиной, остальные приглушаются.
  Повторный клик снимает выбор - тогда все кривые рисуются одинаково.
 - Переключатель "Раздельный масштаб Y" для раскладок с отдельными областями.
  По умолчанию выключен: масштаб общий, спектры можно сравнивать на глаз.
2. Окно FFT: анализ качества сигнала.
 - Гармонический сигнал: THD, THD+N, SINAD, SNR, частота и амплитуда
  1-й гармоники. Гармоники помечаются на спектре (H1..Hn).
 - Постоянный сигнал: уровень DC, СКЗ и размах шума, пульсации в %, ОСШ
  и частота самой мощной помехи. Пики помех помечаются (P1..Pn).
  Раньше для такого сигнала считался THD и выдавал сотни процентов.
 - Тип сигнала определяется автоматически, можно задать вручную.
 - Краткая сводка по каждому каналу - в колонке "Анализ" таблицы, она
  считается всегда. Подробная строка и маркеры - по переключателю "Анализ".
 - Кнопка "Копировать" кладёт строку результата в буфер обмена.
3. Окно FFT: относительные амплитуды.
  В режиме "Амплитуды: Относительные" уровни каждого канала делятся на его
  собственную опорную амплитуду - 1-ю гармонику или уровень DC. Сразу видно,
  насколько канал зашумлён относительно своего полезного сигнала.
4. Окно FFT: мелочи.
 - Сканер работает по тому спектру, над которым мышь; в подписи курсора
  указано имя канала. Плашка у края графика больше не обрезается.
 - У графика сигнала сверху добавлена шкала номеров точек.
 - Перекрестие сканера стало тёмно-серым, чтобы не путаться с цветными
  кривыми; второй маркер отличается штриховкой.
 - Esc больше не закрывает окно - выход крестиком.
---
## build 1.2.96
1. Окно FFT: расчёт THD и наложение нескольких каналов на один спектр.
2. Окно FFT: в списке каналов показывается номер файла - каналы с одинаковыми
  именами из разных файлов больше не путаются. Добавлен фильтр
  "Только показанные".
3. Чтение CSV из DSView / sigrok (логический анализатор). Нерегулярный
  "сжатый" лог читается как есть, каналы рисуются ступеньками на Digital-слое,
  частота дискретизации берётся из шапки файла. Единицы времени не спрашиваются.
4. Кнопка "Авторазворот графика в ноль" на панели: выполняет Авто-поиск
  (автообрезка хвостовых нулей + авторазвёртка по каналу-счётчику)
  без открытия диалога.
---
## build 1.2.95
1. Сохраняет обрезку/развёртку при полном ребилде графика.
---
## build 1.2.94
1. Новая форма "Авто-поиск" в меню Инструменты для текущего файла:
 - Автообрезка: spinEnd на последнюю строку, где хоть у одного канала данные != 0
  (убирает незначащие хвостовые нули от чтения памяти с запасом).
 - Авторазвёртка: по каналу-счётчику (напр. count_step_run) ищет разрыв
  кольцевого буфера и ставит развёртку в реальное начало лога. Разность шага
  берётся по модулю 65536, поэтому переход через границу знакового 16-бит
  считается как +1, а настоящий разрыв выделяется.
 - AutoFind: сначала обрезка, затем развёртка.
 - Канал-счётчик определяется по имени count_step_run, иначе подбирается
  монотонный +1; можно выбрать вручную в комбобоксе.
---
## build 1.2.93
1. фикс значения под курсором в режиме Сканер
---
## build 1.2.92
1. Смена сервера обновлений.
---
## build 1.2.91
1. Самоописательный формат: в заголовок пишется Time, мсек / Time, сек,   при чтении единица берётся из подписи (поддержка сек/мсек/мксек/нсек)
2. Исправлен баг: колонка Time помечалась глобальным временем только по имени,   из-за чего мсек читались как сек и не показывался диалог выбора единиц.
   Теперь распознавание единое и идёт по данным (looksLikeGlobalTimeColumn, добавлен формат даты dd/MM/yyyy) 
3. Старый простой Time с числами -> спрашивает единицу (отмена -> мсек)
---
## build 1.2.90
1. Улучшена страница Help. Добавлены описания возможностей программы.
2. Оптимизация кода + фикс мелких ошибок.
---
## build 1.2.88
1. Фикс с авторазмером левой панели.
---
## build 1.2.87
1. В нижнем блоке битовых полей добавлена временная подсветка изменившихся битов.
2. В таблице колонка Значение / Data теперь обновляется для всех каналов при включённом Сканере, а не только для видимых графиков.
3. Очистка старых имён графиков при открытии нового файла.
4. Сброс “Окно по X” после изменения Обрезки.
---
## build 1.2.85
1. Улучшили поведение автомасштаба в окне fft.
---
## build 1.2.84
1. Улучшили поведение меню переноса графика на слой. Теперь Аналог нельзя перенести на Digital слой.
2. Исправление поведение легенд на графиках и слоях.
---
## build 1.2.83
1. Добавлены фильтры IIR в математику.
   Новые функции в формулах
   - lowpass(x, fc_hz, order)
   - highpass(x, fc_hz, order)
   - lowhighpass(x, f_low_hz, f_high_hz, order) (внутри: HP(order,f_low) → LP(order,f_high))
   Узкополосный режектор (notch / band-stop). Теперь можно в формуле использовать:
   - notch(x, f0_hz, Q) — обычный notch 2-го порядка
   - notch_n(x, f0_hz, Q, order) — notch повышенного порядка как каскад biquad, order = 2,4,6..12
   Важные ограничения (сделано намеренно):
   - Для логов с неравномерной сеткой времени (custom keys, isIntervalsEqual()==false) фильтр выдаст ошибку: filter: неравномерная сетка времени (custom keys) не поддержана
   - order ограничен 1..12 (защита по производительности/памяти)
2. Добавлены FIR фильтры:
   - fir_lowpass(x, fc_hz, taps)
   - fir_highpass(x, fc_hz, taps)
   - fir_bandpass(x, f1_hz, f2_hz, taps)
   Реализация: windowed-sinc + окно Hamming, состояние — кольцевой буфер на taps, вычисление — честная свёртка O(taps) на точку.
3. Мелкие улучшения UI.
---
## build 1.2.82
1. В расчете FFT добавлены новые алгоритмы расчета FFT : 
   - FFTW (lib) - внешняя библиотека FFTW 3.0 - самая быстрая
   - PocketFFT - внешняя библиотека
   - Pad->Pow2 (Radix2)
   - Pad->Goodsize 2-3-5
---
## build 1.2.81
1. Зум мышью теперь нормальный. Изменено напрвление кручение колеса мыши для зума осей.
---
## build 1.2.80
1. Улучшен расчет fft. Добавлен режим Сгладить края. Улучшена работа масштаба графика.
2. Мелкие фиксы.
---
## build 1.2.79
1. Подправлены константы time, pi в разделе Математики.
---
## build 1.2.78
1. Смена адреса обновления приложения с http:\\ на https:\\
2. Мелкие правки в интерфейсе.
---
## build 1.2.77
1. Новый интерфейс просмотра при открытии нескольких файлов. Новая вкладка Файлы.
---
## build 1.2.76
1. Добавлена история введеных математических формул.
2. В таблице графиков доступна сортировка, фильтраця, быстрые действия, быстрое меню переноса на слой.
3. Поправлен запуск Сканера - иногда падал.
4. Авторасчет fft для очень больших массивов теперь берется Radix2. 
5. Сдвиг времени файлов теперь выведен в отдельное меню Инструменты-Сдвиг времени...
---
## build 1.2.74
1. Фикс с автомасштабом осей.
---
## build 1.2.73
1. Добавлена возможность менять высоту слоев-графиков потянув за Splitter.
2. Улучшен алгоритм определения цифровых данных. Ждем только 0/1 в данных.
3. Добавлен режим автосокрытия цифровых графиков при открытии файла - для минимизации ненужных слоев.
4. Более понятный зум осей с помощью колесика мыши. Зум происходит только если курсор мыши находится над осью X или Y. Добавлена иконка лупы в этом режиме.
5. Режим перетаскивания на графиках по ЛКМ.
6. Режим масштаба на графиках по Сtrl+ЛКМ.
7. Даблклик по оси дает автомасштаб этой оси.
8. Улучшение режима выкл/вкл слоев.
---
## build 1.2.71
1. Ускорен алгоритм удаления и восстановления графиков.
---
## build 1.2.70
1. Глобальный рефакторинг кода.
2. Улучшена работа Сканера. Теперь прыгает по узлам.
---
## build 1.2.67
1. Добавлен функционал автоматического определения цифровых данных - логические сигналы 0/1. 
Сигналы отправятся на отдельный слой Digital. Просмотр как логический анализатор.
2. Фикс работы на разном DPI.
3. Добавлены кнопки Math, FFT на основную форму.
4. Фикс определения времени для файлов tek*.csv

---
## build 1.2.64
1. В fft форму добавили возможность показать исходный сигнал по галочке.

---
## build 1.2.63
1. Переработка окна **Обновление** и **Что нового**, теперь в едином стиле с Помощью.
---
## build 1.2.62
1. Улучшение работы с вводом математических формул. Автоввод, заполнение, скобки.
2. В расчет FFT добавлено новое окно Hamming и вычитание DC из сигнала.
3. Поправлен расчет FFT с прореживанием.
---
## build 1.2.61
1. Добавлен экспорт данных таблицы (срез - одна точка во времени) в Excel по ПКМ.
---
## build 1.2.60
1. При сохранении файла :если 1 файл, то заголовки без изменений. а если 2+ файла, то сохраняем в имени принадлежность к # файла.
2. Режим Удаления можно откатить по ПКМ - Отменить.
---

## build 1.2.59
1. Добавлена возможность удаление графиков из списка.
---

## build 1.2.58
1. MathEngine: расширение математических функций и преобразований:
- Добавлены зарезервированные идентификаторы time (сек) и pi
- Реализованы функции sin, cos, abs, ampl, im, WHamming
- Добавлены прямые и обратные преобразования Clarke / Park:
 - clarke_*, inv_clarke_*
 - park_*, inv_park_*
 - прямые abc_d/q и обратные dq_a/b/c

2. Расширен парсер формул: поддержка 3–4 аргументов, регистронезависимые имена
3. Исправлена логика разбора аргументов функций
---
## build 1.2.57
1. Экспорт всегда через единую ось X
 	- В файле всегда одна колонка Time
 	- Она всегда ось X, а не “канал”
 	- Никаких дубликатов Time / Время, мсек больше не возникает
2. Пользователь управляет осью X при сохранении
	Диалог реально влияет на результат:
	- Значение Time
	- как отображается сейчас
	- глобальный DateTime
	- относительное (t − t₀)
	- абсолютное числовое

        Сетка Time:
	- нерегулярная (union ключей)
	- регулярная (dt, auto/manual)

	Заполнение пропусков

	- пусто
	- last-hold
	- линейная интерполяция

	И всё это применяется одинаково к:
	- обычному CSV
	- calc CSV
3. Импорт ↔ экспорт симметричны
---
 
## build 1.2.55
1. Убран лишний запрос про период данных, если есть поле Time.
2. Оптимизация кода.
3. Поле Time теперь показывается там где надо.
---
## build 1.2.53
1. Добавлен режим Глобального времени для логов не периодической формы с полем Time куда обычно кладется московское время.
2. Возможно объединение логов с глобальным временем на одном графике.
3. Возможно одновременное открытие разных логов с осциллографа с разной временной сеткой.
4. Поддержка логов с пульта 23550.1

---
## build 1.2.50
1. Новый алгоритм расчета FFT. 
2. Автошаг для сдвига графиков по Х.

---
## build 1.2.48
1. Добавлен Измеритель. Показывает дельту между двумя точками измерения P1 и P2.

---
## build 1.2.47
1. Авто выбор режима расчета Фурье - Авто, Точный, Быстрый.
2. Авто расчет шага для сдвига графиков по оси Х для нескольких файлов.
3. Фильтр по файлам Вкл/Выкл.

---
## build 1.2.46
1. Мелкие правки с дизайном формы.

---
## build 1.2.45
1. Теперь можно открывать несколько файлов одновременно, с их объединением по оси Х. Вывод производится на один график. Номер файла выведен в доп колонке Файл#.

---
## build 1.2.42
1. Добавлена функция rms_t() и новый вариант rms() с возможностью задать окно.
---
## build 1.2.41
1. Мелкие правки. Иконки.
2. В окне fft по умолчанию включен Сканер.

---
## build 1.2.40
Множество изменений и улучшений.
1. Добавлен механизм математики над каналами. Функции сложения, умножения, вычитания, фильтрации, rms, логические и т.д. Требуется внимательное тестирование.
2. Лобавлен механизм расчета FFT БПФ. Для любого канала.
3. Переработан механизм первоначального вырезания и разворацивания. Добавлено окно по оси Х работающее после Вырезания.
4. Убрано моргание галочек при обновлении.
5. Подписаны слои. Переработано меню переноса на слои.
5. Множество других изменений и улучшений.

---
## build 1.1.33
1. Исправление ошибок отображения графиков при переносе на другой слой #38

---
## build 1.1.32
1. Не рабочая. Теперь при импорте/экспорте учитывается состояние Включено/Выключено. 
   Старые файлы поддерживаются с оговоркой, что при их импорте все поля считаются включенными. #38

---
## build 1.1.31
1. Проверка на пустые строки в алгоритме восстановления порядка для корректного отображения масштаба.

---
## build 1.1.30
1. #36 Есть возможность установить отдельный диапазон, если центровая линия равна нулю. Пока что стоит (-1; +1)

---
## build 1.1.29
1. #36 Тестовое изменение алгоритма масштабирования

---
## build 1.1.28
1. Добавлена опциональная возможность при открытии файла с логами сформировать координатную ось для него  #34
2. Исправление проблемы некорректного отслеживания при экспорте и импорте настроек вида. #35
3. Исправление бага, при котором отмена открытия файла на этапе ввода настроек, если этот или другой файл уже был открыт ранее, приводила к вылету программы.

---
## build 1.1.27
Подправлена работа запуска программы и ее закрытие. Баг #33.

---
## build 1.1.26

### Add Convertor csd #30 #31

Добавлен конвертор, поддерживающий два режима работы:
1) Последовательная конвертация файлов с применением общих настроек (изменение имён каналов).
2) Слияние файлов с нескольких осциллографов на основе файлов первого осциллографа.
Чтобы открыть конвертор, выберите в основном окне в меню сверху: Модули -> Конвертор csd.
Поддерживаются файлы, содержащие до 8 каналов. Количество осциллографов задаётся в правом верхнем углу окна конвертора.
Словарь можно выбрать, нажав на кнопку в левом верхнем углу окна Конвертора.

### Добавлена функция отмены операции по слиянию файлов

Обновление алгоритма слияния файлов #32
Комментарии к CsdConvert

### Обновление интерфейса осциллографа

Добавлена возможность посмотреть список выбранных файлов для осциллографа.
Двойной клик показывает в проводнике расположение файла.

### Добавлена возможность прервать операцию при закрытии главного окна

---
## build 1.1.25
- Добавлен экспорт файла как .csd #29
  Файл -> Экспортировать как... -> .csd

---
## build 1.1.24
- Обновление #28
  Во время проверки новой версии совершается запрос файла build_[номер версии].md
  Например "build_1.1.22.md"
  Если такой файл был обнаружен, то в предупреждении о новой версии появляется возможность посмотреть
  список изменений из этого файла, а также запустить установку обновления.
- Изменение файла для истории обновлений #28
  Теперь программа сверяется с файлом Readme.md
  содержащим всю историю обновлений.
  Программа сверяет свою версию по списку
  и отображает только нововведения,
  произошедшие после текущей сборки.
- Добавлена возможность посмотреть историю обновлений #28

---
## build 1.1.23
- Исправление визуального бага. 
  Корректное отображение слоёв, если слои
  у элементов в таблице идут не по порядку.
- Обновление пункта "Вид" #27 
  Теперь, перед импортом новых настроек, происходит сброс старых.

- Добавлена возможность сбросить настройки вида (Слой и альтернативная ось) к настройкам по умолчанию.

- Добавлена возможность упорядочить график в случае, если произошёл разрыв между слоями (слой 0, 1, 3, 4), 
  из-за чего возникает визуальный баг отображения графиков.



---
## build 1.1.22
- Оптимизация алгоритма отображения промежуточных слоёв.


---
## build 1.1.21
- Добавлена функция отмены закрытия программы.
- Добавлено отображение полного имени файла в названии и в правом нижнем углу #26.
- Минорные изменения алгоритма для корректного отображения временной линии.
- Исправление визуального бага. 
  Некорректное отображение временной линии при работе с несколькими слоями.
- Обновление выбора даты и времени. Проверка файла с настройками вида. 
  Добавлена пользовательская подсказка для выбора временной линии.
  Теперь в выборе доступны только элементы, содержащие дату и время, а не все.
- Добавлена проверка файла с настройками вида на валидность.
- Исправление визуального бага с подписями по оси "Время" при импорте настроек вида.

---
## build 1.1.20
- Сохранение настроек отображения слоёв #16.
  Добавил возможность импортировать и  экспортировать параметры отображения графиков - текущий слой и настройку альтернативной оси.

---
## build 1.1.19
- Минорное обновление интерфейса
- Исправлено отсутствие управления сканером через стрелки.
- Исправление автоматического масштабирования #24.
  При открытии файла или добавлении нового слоя графики строятся в режиме масштабирования для корректного отображения.
- Исправление фризов при массовом внесении изменений в таблицу #23.
  При изменении диапазона фризы появлялись из-за вызова функции valuesAtCursor(x) каждый раз при внесении изменений в строку таблицы.

  Сейчас алгоритм изменён:
  Изменения в таблицу записываются не построчно, а по столбцам. В конце итерации производится проверка - нужно ли обновление значений на сканере.

---
## build 1.1.18
- Хотфикс #24.
  Исправление ошибки отрисовки при переносе элемента на другой слой.

- Исправление ошибки с отображением сканера при повторном открытии файла.
- Изменение отображения времени.
  Теперь время в правом верхнем углу главного окна отображается с миллисекундами.
- Отладочная заплатка #23.
  При изменении сканер отключается в начале и включается по завершению. Позиция сохраняется. Нужно проверить, пропадут ли фризы. У меня время изменения сократилось кратно.

---
## build 1.1.17
- Добавлена поддержка нескольких экранов #20.
- Перемещение диалога с выбором слоя теперь ограничено доступной областью экрана #20.
- Перемещение диалога с выбором слоя ближе к курсору #20.
- Настройка минимального размера графика #16.
- Добавлены отступы в таблице, удаление авторазмера #22.


