--- name: NewGUI technology stack overview: Отдельное Electron-приложение в desktop/. Существующие пакеты, GUI и сборка exe не меняются. Сейчас только каркас, на который потом сядут три редактора и Python. todos: - id: scaffold content: Папка desktop/ — Electron, Vite, React, TypeScript, Tailwind, токены из NewGUI/DESIGN.md, шрифты и иконки локально status: completed - id: shell content: Каркас окна по макету — шапка, сайдбар, центр, статус-бар. Данные статичные, без файлов проекта и без md2gost status: completed - id: editors content: Общий буфер строки и три сменных панели — CodeMirror (код и Obsidian) и TipTap (Notion), без диалекта md2gost status: completed - id: bridge content: Пустой контракт preload/IPC под будущий Python-сайдкар. Реализации convert и check нет status: completed isProject: false --- # База NewGUI Новый код живёт только в [desktop/](desktop/). [md2gost/](md2gost/), [md2latex/](md2latex/), [md2fodt/](md2fodt/), [word2md/](word2md/), [pyproject.toml](pyproject.toml), тесты и `build-exe*.bat` не меняются. Tkinter-окно остаётся текущим GUI. Макет [NewGUI/code.html](NewGUI/code.html) и токены [NewGUI/DESIGN.md](NewGUI/DESIGN.md) — только образец вёрстки. Сборка DOCX, чекер, Word COM, Kroki и диалект (`# *ВВЕДЕНИЕ`, `%id`, `^` / `>`) в эту базу не входят. Их подключат отдельным шагом, когда каркас уже стоит. ```mermaid flowchart LR subgraph desktopApp [desktop] shell[Shell] session[DocumentSession] codePane[CodeMirror] obsidianPane[CodeMirror_live] notionPane[TipTap] bridge[HostApi_stub] shell --> session session --> codePane session --> obsidianPane session --> notionPane shell --> bridge end md2gost[md2gost_unchanged] bridge -.->|"позже"| md2gost ``` ## Что появляется - **Стек:** Electron, Vite, React, TypeScript, Tailwind. Свой `package.json` внутри `desktop/`. Установщик NSIS на этом шаге не собирается: приложение запускается через `npm run dev`. - **Тема:** цвета, шрифты, радиусы и отступы из `DESIGN.md`. Space Grotesk, Inter, JetBrains Mono и Material Symbols лежат в `desktop/`, без CDN. - **Оболочка:** шапка, сайдбар, центральная область и статус-бар по макету. Подписи и дерево — заглушки из макета, не чтение диска и не вызов `convert()`. - **Три ввода одной строки.** `DocumentSession` держит текст в памяти. - Код — CodeMirror 6, сырой текст, номера строк. - Obsidian — тот же CodeMirror, режим live preview. Переключение с кода буфер не пересоздаёт. - Notion — TipTap с обычным Markdown на вход и выход. Узлов ГОСТ нет: спецразделы, слияния ячеек и `%id` появятся позже. - **Мост:** в preload один объект `HostApi` с методами-заглушками (`open`, `save`, `check`, `build`). Они возвращают «не подключено». Python-процесс не стартует. ## Чего нет в этом шаге - Правок пакетов Python и точки входа `python -m md2gost`. - Сайдкара, PyInstaller и electron-builder. - Окна спецификации диалекта, предпросмотра A4 и вставки сниппетов. - Сериализации диалекта md2gost в TipTap.