Skip to content

TuneWizard: этап 1 — каркас, проверки лога, шаг 0 - #2

Merged
deathnemo merged 13 commits into
tune-wizard-stage1-basefrom
tune-wizard
Oct 25, 2026
Merged

deathnemo merged 13 commits into
tune-wizard-stage1-basefrom
tune-wizard

Conversation

@deathnemo

Copy link
Copy Markdown
Owner

Этап 1 уже влит в main (fast-forward, 24.10.2026), поэтому PR открыт не в main, а в ветку tune-wizard-stage1-base. Она указывает на исходный upstream 05d6177, с которого начиналась работа. В PR видны ровно изменения этапа 1, PR служит записью этапа. Слияние ничего не меняет в main.

Что сделано

  • Дизайн и план: docs/plans/2026-10-23-tune-wizard-design.md — мастер из шести шагов, ядро core/ без DOM, правила с источниками, шесть этапов; docs/plans/2026-10-23-tune-wizard-stage1.md — план этапа.
  • core/log.js: сведения о логе, история параметров, окно полёта по газу, средний газ висения, сводка VIBE по экземплярам (включая старый формат VIBE).
  • core/checks.js: проверки пригодности лога — вибрации, клиппинг, время висения, газ висения с учётом пределов обучения, биты логирования гироскопов и PID.
  • Страница TuneWizard/: каркас, полоса шагов, шаг 0 — загрузка лога, сведения, проверки, график полёта с интервалом, ошибки загрузки.
  • Тесты: тесты ядра в tests/tunewizard.test.cjs под Node; браузерный smoke-тест шага 0 tests/tunewizard-browser.cjs (npm run test:tunewizard, Chrome через CHROME_PATH, лог из TuneWizard/logs/).
  • Readme мастера.

Светлая тема и переключатель тем этапа 1 позже убраны на этапе 2: осталась одна тёмная «Графит» (87eaef3, PR #1).

13 файлов, +3340 / −1.

🤖 Generated with Claude Code

deathnemo and others added 13 commits October 23, 2026 19:54
Утверждённый дизайн инструмента, объединяющего FilterReview и PIDReview
в пошаговый мастер настройки Copter: структура, ядро без DOM, шаги,
правила предложений с источниками, тесты и этапы реализации.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Пошаговый план с кодом ядра log.js/checks.js, тестами под Node,
страницей index.html и wizard.js. Папка TuneWizard/logs/ добавлена
в .gitignore для локальных логов.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Чистые функции без DOM с тестами под Node: история параметров,
флаги сообщений, окно полёта по газу, сводка VIBE, log_info.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Настоящий парсер отдаёт сообщения с экземплярами (VIBE, ESC, IMU, GYR)
только через get_instance; get() на них падает. Поддельный лог в тестах
повторяет это поведение. Максимум по длинным рядам считается циклом,
а не через spread в Math.max (переполнение стека).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…, отступы тестов

max_of вместо array_max: имя совпадало с поэлементным array_max(A, B)
из Libraries/Array_Math.js. IMU пишется по экземплярам, log.get() на нём
падает — убран из списка для длительности. Тесты — 4 пробела, как в tests/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ки по ревью

vibe_summary не падает на логах без Clip (суммирует Clip0..Clip2) и без
экземпляров; throttle_series проверяет наличие полей; log_info отдаёт
time_start/time_end; percentile сортирует типизированным массивом.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Аппарат, бит PID, данные гироскопа, pre/post, источник трекинга,
длительность полёта, VIBE и clipping, газ висения с учётом предела
обучения 0.125. Пороги в одном блоке check_rules с указанием источника.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…в обучения

Подсказки по INS_RAW_LOG_OPT/INS_LOG_BAT_OPT добавляют биты, а не
перезаписывают значение. Расхождение газа висения считается к
достижимому обученному значению (0.125…0.6875). Тексты полёта и VIBE
уточнены, добавлены тесты на набор проверок и граничные случаи.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Страница мастера с токенами двух тем и переключателем, навигация
по шести шагам, шаг 0: загрузка лога, карточка сведений, список
проверок, график полёта в цветах темы с выбором интервала анализа.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Правило [hidden]{display:none!important}: секции других шагов и пустые
блоки шага 0 перекрывались display:flex/grid. Добавлена иконка страницы,
как у остальных инструментов (убирает 404 в консоли).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ки по ревью

Ошибка парсера показывается в вердикте, а не вешает оверлей; интервал
зажимается до проверки и не инвертируется; пустые сообщения лога не
роняют график; ползунок диапазона и печать в тёмной теме; экранирование
строк из лога; сброс экрана при повторной загрузке; доступ к выбору
файла с клавиатуры; убраны неиспользуемые библиотеки.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Тест tests/tunewizard-browser.cjs гоняет шаг 0 в настоящем Chrome
(CHROME_PATH) на локальном логе и пропускается без лога; скрипт
npm run test:tunewizard. Ошибка загрузки сбрасывает состояние и
называет файл в вердикте.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Сервер и браузер поднимаются внутри try и всегда закрываются; ошибка
запуска python видна; число проверок не привязано к одному логу.
Все три пути ошибки загрузки сбрасывают состояние, называют файл и
очищают поле выбора.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@deathnemo
deathnemo merged commit 8c99352 into tune-wizard-stage1-base Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant