Перестройка LARD в структуру «исходники отдельно, готовые продукты отдельно».
Отмечать выполненное прямо здесь: [ ] → [x].
Резервная копия перед началом:
E:\Project Programming\VS CODE\lard-2026-08-19_22-13.rar (50.1 МБ)
Комментарий архива: «Исходник который работал. До маштабной перестройки».
Внутри всё, кроме node_modules — они восстанавливаются через npm install.
LARD/
├─ task.md ← этот файл
├─ README.md
├─ docs/ ← документация проекта
│ ├─ install.md ← как запускать в разных IDE
│ └─ LARD.md ← чем форк отличается от signal
├─ source_dev/ ← всё для разработки
│ ├─ core/ ← ядро и всё основополагающее
│ │ ├─ src/ ← сам пакет @lard/core
│ │ ├─ electron/ ← оболочка окна программы
│ │ ├─ tools_shell/ ← оболочка окна редакторов
│ │ ├─ scripts/ ← служебные скрипты, в том числе сборка
│ │ ├─ cloud_functions/ ← облачные функции
│ │ └─ packages/ ← библиотеки signal
│ ├─ app/ ← основное приложение (пианоролл)
│ │ ├─ src/
│ │ └─ src_Tools/
│ │ ├─ src_Theme/ ← редактор тем
│ │ ├─ src_Workspace/ ← редактор рабочих областей
│ │ ├─ src_Language/ ← редактор переводов
│ │ └─ src_VSTHostManager/← пока пустая папка
│ └─ Tools_presets/ ← заготовки пресетов, не собираются
│ ├─ Theme/ Workspace/ Language/
│ └─ VSTHostManager/
└─ app_r/
└─ 0.1.0/
├─ Windows_Standalone/
│ ├─ LARD.exe
│ ├─ core_app/
│ ├─ Tools/
│ │ ├─ [LARD] Theme Editor.exe
│ │ ├─ [LARD] Workspace Editor.exe
│ │ ├─ [LARD] Language Editor.exe
│ │ └─ [LARD] VST Host Manager.exe
│ └─ Data/
│ └─ Theme/ Workspace/ Language/
├─ VST/ ← пустая
├─ VST3/ ← пустая
└─ CLAP/ ← пустая
Про имена exe. В схеме от 20.08.2026 они были записаны как
LARD:ed - Theme.exe. Двоеточие Windows в именах файлов запрещает — такой
файл не создать, — поэтому имя выбрано [LARD] Theme Editor.exe.
Спорные места, где формулировка задачи допускала несколько прочтений. Если решение не устраивает — скажи, переделаю.
-
Пресеты живут в
source_dev/Tools_presets/. Сначала они лежали в корне репозитория; 20.08.2026 по указанию автора переехали вsource_dev/Tools_presets/. Это заготовки: в сборку они не компилируются, а копируются вData/рядом с готовой программой. -
Что считаем «ядром» (
source_dev/core/). Не «все библиотеки подряд», а то, что нужно и основному приложению, и трём редакторам изTools: формат и загрузка пресетов (темы, языки, рабочие области) плюс общий разбор папок пресетов. Это и есть настоящая причина выносить ядро — иначе каждый редактор переписывал бы формат заново и они бы разъехались. -
Что такое Workspace. В задаче не определено. Беру по аналогии с темами и языками: рабочая область — это пресет раскладки интерфейса (какие панели видны, их размеры и порядок), JSON-файл в папке
Workspace/. Формат и поведение — по мануалу FL Studio. -
Версия первой сборки —
0.1.0. Вpackage.jsonсейчас0.0.1(унаследовано от signal), у Electron0.4.0. Дляapp_rзавожу собственную нумерацию LARD с0.1.0.
- Архив
lard-2026-08-19_22-13.rarс комментарием - Проверена целостность архива
- Проверено, что комментарий читается дословно
- Этот файл
task.md
Механическая, но рискованная часть: почти все конфиги ссылаются на пути.
- Создать
source_dev/ - Перенести
app/,packages/,electron/,scripts/,functions/ - Перенести служебные конфиги сборки (
turbo.json,biome.json,package.json,package-lock.json,.env.example) и облачные (firebase*,vercel.json,Dockerfile,compose.yaml) -
workspacesправить не пришлось:package.jsonпереехал целиком, а пути внутри него относительные -
envDirи алиасreact— тоже относительные, остались верными - Починить
server.fs.allow(папки пресетов теперь на два уровня выше) - Починить пути глобов тем и языков в
Theme.tsиlocalization.ts - Починить
includeвapp/tsconfig.json - Пути в конфигах Electron оказались внутренними, правки не требовали
- Починить
working-directoryв.github/workflows/node.js.yml - Обновить пути в
docs/LARD.mdиREADME.md - Проверить:
npm installпроходит - Проверить:
tsc --noEmitбез ошибок - Проверить: тесты зелёные (55/55)
- Проверить: сборка проходит (4/4 задачи)
- Проверить: окно LARD запускается, пианоролл рисуется,
инструменты переключаются, тема грузится из корневой
Theme/
Заметка про замки Windows. VS Code держал дескрипторы каталогов
packages/* и electron, и обычное переименование не проходило. Помогло
копирование с последующим удалением: удалять файлы система разрешает, а
переименовывать каталог — нет. Осталась запертая пустышка LARD/electron/
с одним файлом внутри; она исчезнет после перезапуска VS Code и ни на что
не влияет.
Пакет: source_dev/core — @lard/core.
Описание: source_dev/core/README.md.
- Завести пакет
@lard/coreв workspaces - Перенести в него схему и загрузку тем
- Перенести в него схему и загрузку языков
- Завести схему и загрузку рабочих областей
- Общий поиск файлов пресетов в папке (один код на три вида пресетов)
- Переключить основное приложение на
@lard/core - Тесты на ядро (34 теста, зелёные)
- Проверить, что приложение работает как раньше:
tsc --noEmitчист,turbo test5/5 задач (89 тестов), сборка 4/4, dev-сервер разворачивает обе папки пресетов и резолвит@lard/core
Что попало в ядро, а что нет. В ядре — формат пресетов и правила их
слияния. Чтения файлов там нет намеренно: в приложении папку разворачивает
сборщик (import.meta.glob), в редакторах это будет файловая система
Electron. Ядру передают уже прочитанное, и оно годится обоим.
В приложении от прежних Theme.ts и localization.ts остались короткие
переходники: они разворачивают папку и отдают её ядру. Все места, которые
раньше импортировали оттуда темы и переводы, менять не пришлось.
Заметка про Biome. Настройки biome.json переехали в source_dev, а
.gitignore остался в корне репозитория — Biome искал его рядом с собой и
падал, то есть проверка стиля не работала с самого переезда. Указать другую
папку нельзя: с vcs.root Biome перестаёт находить сам конфиг. Поэтому
исключения перечислены в конфиге явно, а файл переименован в biome.jsonc —
комментарии (а весь конфиг здесь с пояснениями) обычный biome.json не
разрешает и молча откатывается на настройки по умолчанию.
Файл: docs/install.md
- Как запускать в VS Code (основной и рекомендуемый способ)
- Как запускать в JetBrains IntelliJ IDEA / WebStorm
- Как запускать в Visual Studio 2026
- Как запускать вообще без IDE, из терминала
- Требования: Node, npm, Git, что ставить на чистой машине
- Частые ошибки и что с ними делать
- Таблица «куда что положено»
Сначала сама возможность, потом редактор к ней — иначе редактировать нечего.
- Изучить раскладку окон в офлайн-мануале FL Studio
(
M:\Program Files\Image-Line\FL Studio 2026\Help, страницы «Main Windows» и меню «View»). Взято оттуда: раскладка — это именованный набор окон, каждое показывается или прячется, готовые раскладки идут списком (Desktop, Alternate, Tablet, Custom), любую можно сохранить своей. Панели инструментов переключаются отдельно от окон. - Формат файла рабочей области (JSON, как у тем) —
source_dev/core/src/workspace/Workspace.ts, описание для пользователя вTools_presets/Workspace/README.md - Загрузка рабочих областей из папки
Workspace/ - Применение раскладки в интерфейсе
- Встроенные пресеты: раскладка LARD и раскладка в стиле FL Studio
- Выбор рабочей области в настройках (Settings → Рабочая область)
- Тесты (7 на применение раскладки в приложении, 7 на загрузку в ядре)
Как это устроено. Раскладка стала единственным местом, где записано
состояние панелей. Раньше у каждой панели был свой отдельный флаг, а ширина
жила прямо в разметке — сменить раскладку целиком было нечем. Теперь панель
берёт и видимость, и размер из рабочей области, а переключатели в тулбаре и
перетаскивание разделителей пишут туда же. Поэтому размеры задаются через
size, а не defaultSize: иначе пресет применялся бы только при первой
отрисовке.
Выбранная раскладка запоминается между запусками. Всё, что подвинуто руками,
живёт до конца сеанса — в FL Studio так же: изменённую раскладку нужно
сохранять отдельным действием. Этим и займётся редактор из Tools/Workspace.
Проверено: окно LARD запускается, панели встают по пресету — паттерны слева, стойка инструментов справа, полоса автоматизации снизу.
Крупный самостоятельный кусок: это четыре отдельных приложения, которых сейчас нет ни в каком виде. Делаю по одному, каждый — на общем ядре.
- Создан каркас папок с пояснениями, что куда ляжет
Приложение: source_dev/app/src_Tools/src_Theme — @lard/theme-editor,
запуск npm run dev -w @lard/theme-editor, порт 3100.
Описание — в README редактора.
- Каркас приложения на
@lard/core - Список тем из папки
Theme/и открытие любой из них - Правка цветов с наглядным превью
- Сохранение в JSON
- Создание темы из копии существующей (открыть → править → сохранить под своим именем)
- Мини-макет: слева настройки, справа окно LARD в миниатюре
- Редактор носит ту тему, которую правят
- Кнопка
Full/Prototypingсо значками (точка с полукругами / точка):Full— тема применяется ко всему редактору,Prototyping— только к макету - Вкладки макета: «Окно» (миниатюра LARD) и «Элементы» (интерфейс по частям с контрастом у каждой пары)
- Макет — рабочая копия редактора: те же панели, что в формате рабочей области, любую можно спрятать, боковые тянутся за разделитель
- Макет собирается: кнопки, паттерны и инструменты добавляются и убираются, «Сбросить макет» возвращает раскладку LARD
- Поправки поверх правил (Adjustments): Saturation, Brightness, Contrast, Text — ручками, с сохранением порогов WCAG
- Основа темы (тёмная / светлая) — отдельным переключателем, а не по яркости выбранного цвета
- Режим Fast Designed: базовый цвет, правило сочетания, окрашенный фон, больше акцентов — остальное считается
- Восемь правил сочетания, палитра из пяти цветов, жёсткая раздача ролей
- Контраст по WCAG держится сам: текст, надпись на кнопке, основной цвет на фоне
- Режим Advanced: ручные правки поверх правил, сообщения о поломанной читаемости под изменённой настройкой
- Проверка на дальтонизм (протанопия, дейтеранопия, тританопия)
- Режим Dev-Designed с предупреждением о необратимости и выбором «сохранить текущие / начать с нуля»
- Тесты: 148 в ядре (цвет, правила, сборка темы, проверки), 36 в редакторе
Что попало в ядро. Вся цветовая математика: перевод записей цвета, смешивание, контраст по WCAG, ΔE, дальтонизм, правила сочетания, сборка темы и её проверка. Редактор из этого только рисует интерфейс. Так же будет и с остальными редакторами: считает ядро, показывает редактор.
Формат темы дополнен. Появились cornerRadius и controlCornerRadius —
скругления, которые до этого были рассыпаны по разметке приложения числами, —
и необязательный блок generator с настройками, которыми тему собрали.
Приложение его не читает; нужен он редактору, чтобы открыть сохранённую тему в
том же режиме.
Чего пока нет. В задаче для разработчикового режима упомянуты анимации и сторонние алгоритмы стилизации. В формате темы LARD таких полей нет — есть цвета, шрифты и скругления, — и придумывать их «на будущее» я не стал: приложение всё равно ничего бы с ними не сделало. Появятся такие поля — редактор их подхватит, место под них в нём уже есть.
- Каркас приложения на
@lard/core - Список языков из папки
Language/ - Таблица «ключ — английский оригинал — перевод»
- Подсветка непереведённых строк
- Сохранение
- Каркас приложения на
@lard/core - Наглядная сборка раскладки
- Сохранение в JSON
- Оформление по стандарту FL Studio
- Создать папку-заглушку (назначение будет описано позже)
- Структура
app_r/0.1.0/ - Папки
VST/,VST3/,CLAP/— плагинов пока нет - В каждой пока пустой папке лежит
null-time.txtс текстом «Временное». Он нужен только затем, чтобы git видел саму папку: пустые каталоги система контроля версий не отслеживает, и без файла структура не сохранилась бы в репозитории. Удалять по мере наполнения папок содержимым. - Сборка
LARD.exeвWindows_Standalone/ - Выделение общей части в
core_app/ - Копирование пресетов
Theme/,Workspace/,Language/в сборку - Сборка
[LARD] Theme Editor.exe - Сборка
[LARD] Language Editor.exe - Сборка
[LARD] Workspace Editor.exe - Заглушка
[LARD] VST Host Manager.exe - Одна команда, собирающая всё это целиком
Автор уточнил целевую структуру, папки переехали:
-
Theme/,Language/,Workspace/→source_dev/Tools_presets/ -
electron/,packages/,scripts/,functions/→ внутрьcore/(functions→cloud_functions), оболочка окон редакторов →core/tools_shell/ -
Tools/Theme→app/src_Tools/src_Theme, рядом заготовки папок для трёх остальных редакторов -
install.md→docs/install.md - Пути в конфигах, импортах, сборке и документации
- Имена продуктов:
LARD.exeи[LARD] Theme Editor.exe - Заголовок окна программы — «LARD», а не «signal»
- Проверено: тесты 6/6 задач, типы чисты, оба exe собираются и запускаются
Открытый вопрос. vercel.json ждёт собранный сайт в source_dev/dist —
его клал скрипт build:app, которого больше нет: LARD теперь программа с
окном, а не сайт. Если выкладка на Vercel ещё нужна, скажите — верну сборку
веб-версии отдельной командой.
Заметка про замки Windows. От source_dev/electron и source_dev/Tools
остались пустые папки: их каталожные дескрипторы держит VS Code, и удалить
их можно только после его перезапуска. Содержимого в них нет, ни на что не
влияют.
Делается последним: после переименования ломаются пути открытого проекта в VS Code и рабочий каталог запущенных процессов.
- Остановить dev-сервер и окно LARD
- Закрыть папку в VS Code (иначе Windows не отдаст её — уже упирались
в это при переносе
Language) - Переименовать
LARD→LARD-master - Открыть заново и проверить, что всё запускается
Этапы 2–4 — это аккуратный перенос, за день реально.
Этап 6 — не перестановка папок, а разработка четырёх приложений с нуля.
Каждый редактор это отдельное окно Electron со своим интерфейсом. Этап 7
поверх этого добавляет упаковку: каждый .exe тянет свою копию движка,
сборка всех четырёх — десятки минут и около гигабайта на диске.
Разумный порядок: сначала 2–5 (структура и рабочие области), затем редакторы по одному, начиная с тем — он самый простой и на нём проверится вся схема «ядро + редактор + пресеты».