From 8223e0ac14a01cc7c27016e0a0faf06f05d3d8da Mon Sep 17 00:00:00 2001
From: Igor20264 <76581675+Igor20264@users.noreply.github.com>
Date: Tue, 20 Oct 2026 11:38:06 +0300
Subject: [PATCH] v0.6.0 BigUpdate
---
.../newgui_technology_stack_a6f38fd9.plan.md | 61 +
AI-Docs_WriteHuman/context/diagrams.md | 35 +-
AI-Docs_WriteHuman/prompts/report-pis.md | 3 +-
NewGUI/DESIGN.md | 250 +
NewGUI/code.html | 442 ++
NewGUI/screen.png | Bin 0 -> 952446 bytes
PROJECT.md | 11 +-
_tmp_kr.docx | Bin 0 -> 1660070 bytes
_tmp_kr_fixed.docx | Bin 0 -> 1660070 bytes
_tmp_kr_nosplit.docx | Bin 0 -> 1656091 bytes
desktop/.gitignore | 5 +
desktop/electron.vite.config.ts | 32 +
desktop/package-lock.json | 4333 +++++++++++++++++
desktop/package.json | 42 +
desktop/src/main/index.ts | 75 +
desktop/src/main/wordcraft.ts | 60 +
desktop/src/preload/index.ts | 21 +
desktop/src/renderer/index.html | 12 +
desktop/src/renderer/src/App.tsx | 31 +
.../renderer/src/components/EditorHost.tsx | 88 +
.../src/renderer/src/components/HelpPanel.tsx | 66 +
desktop/src/renderer/src/components/Icon.tsx | 7 +
.../src/renderer/src/components/MenuBar.tsx | 283 ++
.../renderer/src/components/SettingsPanel.tsx | 297 ++
.../src/renderer/src/components/Sidebar.tsx | 626 +++
.../src/renderer/src/components/StatusBar.tsx | 52 +
.../src/renderer/src/components/TitleBar.tsx | 228 +
.../renderer/src/components/WordPreview.tsx | 442 ++
desktop/src/renderer/src/css.d.ts | 1 +
desktop/src/renderer/src/documents.ts | 370 ++
.../src/renderer/src/editor/NotionEditor.tsx | 325 ++
.../src/renderer/src/editor/SourceEditor.tsx | 277 ++
desktop/src/renderer/src/editor/blocks.ts | 126 +
desktop/src/renderer/src/env.d.ts | 11 +
desktop/src/renderer/src/explorer.ts | 59 +
desktop/src/renderer/src/helpTopics.ts | 38 +
desktop/src/renderer/src/main.tsx | 22 +
desktop/src/renderer/src/preview.ts | 151 +
desktop/src/renderer/src/previewFile.ts | 239 +
desktop/src/renderer/src/session.tsx | 211 +
desktop/src/renderer/src/settings.tsx | 176 +
desktop/src/renderer/src/styles.css | 252 +
desktop/src/renderer/src/tree.ts | 44 +
desktop/src/shared/chrome.ts | 8 +
desktop/src/shared/host.ts | 15 +
desktop/tsconfig.json | 7 +
desktop/tsconfig.node.json | 19 +
desktop/tsconfig.web.json | 19 +
docs/markdown.md | 5 +-
docs/schemes.md | 24 +-
md2gost/checker/__init__.py | 27 +-
md2gost/dfd_gs.py | 961 ++++
md2gost/diagram_renderer.py | 24 +-
md2gost/diagram_schemes.py | 4 +
md2gost/diagrams/schemes.json | 2 +-
md2gost/extended_markdown/caption.py | 2 +-
md2gost/extended_markdown/table.py | 5 +-
md2gost/gui.py | 95 +-
md2gost/help_content.py | 23 +-
md2gost/office/detect.py | 63 +-
md2gost/office/dispatch.py | 14 +-
md2gost/office/open_doc.py | 17 +-
md2gost/office/uno_fix.py | 13 +-
md2gost/office/uno_helpers.py | 125 +
md2gost/office/uno_worker.py | 98 +-
md2gost/page_fill_check.py | 12 +-
md2gost/pipeline.py | 3 +-
md2gost/renderable/image.py | 13 +-
md2gost/renderable/list.py | 61 +-
md2gost/renderer.py | 34 +
md2gost/word_fix.py | 174 +-
tests/test_dfd_gs.py | 202 +
tests/test_gui_output.py | 61 +
tests/test_landscape.py | 118 +
tests/test_office.py | 52 +-
tests/test_table_merge.py | 44 +
tests/test_word_fix.py | 127 +
77 files changed, 12158 insertions(+), 117 deletions(-)
create mode 100644 .cursor/plans/newgui_technology_stack_a6f38fd9.plan.md
create mode 100644 NewGUI/DESIGN.md
create mode 100644 NewGUI/code.html
create mode 100644 NewGUI/screen.png
create mode 100644 _tmp_kr.docx
create mode 100644 _tmp_kr_fixed.docx
create mode 100644 _tmp_kr_nosplit.docx
create mode 100644 desktop/.gitignore
create mode 100644 desktop/electron.vite.config.ts
create mode 100644 desktop/package-lock.json
create mode 100644 desktop/package.json
create mode 100644 desktop/src/main/index.ts
create mode 100644 desktop/src/main/wordcraft.ts
create mode 100644 desktop/src/preload/index.ts
create mode 100644 desktop/src/renderer/index.html
create mode 100644 desktop/src/renderer/src/App.tsx
create mode 100644 desktop/src/renderer/src/components/EditorHost.tsx
create mode 100644 desktop/src/renderer/src/components/HelpPanel.tsx
create mode 100644 desktop/src/renderer/src/components/Icon.tsx
create mode 100644 desktop/src/renderer/src/components/MenuBar.tsx
create mode 100644 desktop/src/renderer/src/components/SettingsPanel.tsx
create mode 100644 desktop/src/renderer/src/components/Sidebar.tsx
create mode 100644 desktop/src/renderer/src/components/StatusBar.tsx
create mode 100644 desktop/src/renderer/src/components/TitleBar.tsx
create mode 100644 desktop/src/renderer/src/components/WordPreview.tsx
create mode 100644 desktop/src/renderer/src/css.d.ts
create mode 100644 desktop/src/renderer/src/documents.ts
create mode 100644 desktop/src/renderer/src/editor/NotionEditor.tsx
create mode 100644 desktop/src/renderer/src/editor/SourceEditor.tsx
create mode 100644 desktop/src/renderer/src/editor/blocks.ts
create mode 100644 desktop/src/renderer/src/env.d.ts
create mode 100644 desktop/src/renderer/src/explorer.ts
create mode 100644 desktop/src/renderer/src/helpTopics.ts
create mode 100644 desktop/src/renderer/src/main.tsx
create mode 100644 desktop/src/renderer/src/preview.ts
create mode 100644 desktop/src/renderer/src/previewFile.ts
create mode 100644 desktop/src/renderer/src/session.tsx
create mode 100644 desktop/src/renderer/src/settings.tsx
create mode 100644 desktop/src/renderer/src/styles.css
create mode 100644 desktop/src/renderer/src/tree.ts
create mode 100644 desktop/src/shared/chrome.ts
create mode 100644 desktop/src/shared/host.ts
create mode 100644 desktop/tsconfig.json
create mode 100644 desktop/tsconfig.node.json
create mode 100644 desktop/tsconfig.web.json
create mode 100644 md2gost/dfd_gs.py
create mode 100644 tests/test_dfd_gs.py
create mode 100644 tests/test_gui_output.py
diff --git a/.cursor/plans/newgui_technology_stack_a6f38fd9.plan.md b/.cursor/plans/newgui_technology_stack_a6f38fd9.plan.md
new file mode 100644
index 0000000..b6d44a0
--- /dev/null
+++ b/.cursor/plans/newgui_technology_stack_a6f38fd9.plan.md
@@ -0,0 +1,61 @@
+---
+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.
diff --git a/AI-Docs_WriteHuman/context/diagrams.md b/AI-Docs_WriteHuman/context/diagrams.md
index 511b3ee..4c8fc03 100644
--- a/AI-Docs_WriteHuman/context/diagrams.md
+++ b/AI-Docs_WriteHuman/context/diagrams.md
@@ -39,7 +39,8 @@
| ` ```archimate `, ` ```uml-archimate ` | макросы ArchiMate 3.2, без обёртки | PlantUML + stdlib ArchiMate |
| ` ```mermaid `, ` ```mmd ` | синтаксис Mermaid | локальный Mermaid или Kroki |
| ` ```idef0 `, ` ```uml-idef0 ` | DSL IDEF0 | локальный рендер (Pillow) |
-| ` ```dfd `, ` ```uml-dfd `, ` ```data-flow-diagram `, ` ```yourdon ` | DSL потоков данных | Graphviz или Kroki |
+| ` ```dfd `, ` ```uml-dfd `, ` ```data-flow-diagram `, ` ```yourdon ` | DSL потоков данных (Йордон) | Graphviz или Kroki |
+| ` ```dfd-gs `, ` ```gane-sarson ` | DSL потоков данных (Гейн–Сарсон) | локальный рендер (Pillow) |
Правило про обёртку: в ` ```uml ` пишешь `@startuml` … `@enduml` **обязательно**; в схемах (`c4`, `usecase`, `archimate` и любых из `md2gost.schemes.json`) — **никогда**, схема подставит обёртку и `!include` сама.
@@ -527,6 +528,35 @@ Ship --> Client уведомление
Правила нотации: на контекстной диаграмме один процесс; хранилища не соединяются напрямую с внешними сущностями; каждый процесс имеет и вход, и выход.
+### Гейн–Сарсон
+
+Оградка ` ```dfd-gs ` (то же: ` ```gane-sarson `, ` ```uml-dfd-gs `). Те же `entity` / `process` / `store` и `A --> B подпись`, но фигуры другие: сущность — прямоугольник с тенью и номером, процесс — скруглённый прямоугольник с номером внизу справа, хранилище — прямоугольник с полосой и кодом `D1`. Рендер локальный, Graphviz не нужен.
+
+Номер процесса — сам id, если это `1` или `3.1`, иначе порядок объявления. Код хранилища — id вида `D2`, иначе `D1`, `D2`, … по порядку. У сущности номер в углу — порядок объявления.
+
+Шапка листа, как у Ramus: `title`, `node`, `number`, `author`, `project`, `date`, `rev`, `status`, `used_at`. `form kit` (по умолчанию, со штампом) или `form plain`.
+
+Раскладка сама: сущности слева, процессы в центре, хранилища справа. Стрелка между соседними колонками идёт по зазору. Координат в тексте нет.
+
+~~~markdown
+%dfd_gs Приёмка работы
+
+```dfd-gs
+title Зафиксировать решение приёмки
+node A44
+number 1
+author Иванов И. И.
+project ИС ArtFreelance
+
+entity Artist Художник
+process 1 Принять файлы результата
+store D2 Файлы работ
+
+Artist --> 1 файлы работы
+1 --> D2 превью и хеш
+```
+~~~
+
---
## 8. Что нужно для отрисовки
@@ -536,7 +566,8 @@ Ship --> Client уведомление
| PlantUML, C4, ArchiMate, Use Case | Java и `plantuml.jar` (вшит в exe-сборку) | локальный Kroki, затем `kroki.io` при `--diagram-fallback remote` |
| Mermaid | системный Chrome или Edge; либо скачанный Chromium; либо QuickJS | Kroki |
| IDEF0 | ничего, локальный рендер | не требуется |
-| DFD | Graphviz (вшитый, из `PATH` или кнопка «Скачать Graphviz») | Kroki |
+| DFD (Йордон, ` ```dfd `) | Graphviz (вшитый, из `PATH` или кнопка «Скачать Graphviz») | Kroki |
+| DFD Гейна–Сарсона (` ```dfd-gs `) | ничего, локальный рендер | не требуется |
Ключи: `--plantuml-jar`, `--kroki-url`, `--diagram-fallback local|remote|off`, `--diagram-format png|svg`, `--diagram-scale N` (по умолчанию 2 — качество растра).
diff --git a/AI-Docs_WriteHuman/prompts/report-pis.md b/AI-Docs_WriteHuman/prompts/report-pis.md
index f7e9d2b..9a23651 100644
--- a/AI-Docs_WriteHuman/prompts/report-pis.md
+++ b/AI-Docs_WriteHuman/prompts/report-pis.md
@@ -135,7 +135,8 @@ def is_valid(number: str) -> bool:
| ` ```archimate ` | макросы ArchiMate 3.2 |
| ` ```mermaid ` | синтаксис Mermaid |
| ` ```idef0 ` | DSL IDEF0: `[A1] Имя`, `<-` вход, `^` управление, `->` выход, `v` механизм |
-| ` ```dfd ` | DSL потоков данных: `entity` / `process` / `store` и `-->` |
+| ` ```dfd ` | DSL потоков данных Йордона: `entity` / `process` / `store` и `-->` |
+| ` ```dfd-gs ` | то же DSL, нотация Гейна–Сарсона (скруглённый процесс, хранилище `D1`, штамп) |
Флаги подписи: `+landscape` — альбомная страница под широкую схему, `+listing` — вывести исходник схемы отдельным Листингом.
diff --git a/NewGUI/DESIGN.md b/NewGUI/DESIGN.md
new file mode 100644
index 0000000..e943c7d
--- /dev/null
+++ b/NewGUI/DESIGN.md
@@ -0,0 +1,250 @@
+---
+name: GhostEditor Desktop
+colors:
+ surface: '#0b1326'
+ surface-dim: '#0b1326'
+ surface-bright: '#31394d'
+ surface-container-lowest: '#060e20'
+ surface-container-low: '#131b2e'
+ surface-container: '#171f33'
+ surface-container-high: '#222a3d'
+ surface-container-highest: '#2d3449'
+ on-surface: '#dae2fd'
+ on-surface-variant: '#bdc8d1'
+ inverse-surface: '#dae2fd'
+ inverse-on-surface: '#283044'
+ outline: '#87929a'
+ outline-variant: '#3e484f'
+ surface-tint: '#7bd0ff'
+ primary: '#8ed5ff'
+ on-primary: '#00354a'
+ primary-container: '#38bdf8'
+ on-primary-container: '#004965'
+ inverse-primary: '#00668a'
+ secondary: '#c0c1ff'
+ on-secondary: '#1000a9'
+ secondary-container: '#3131c0'
+ on-secondary-container: '#b0b2ff'
+ tertiary: '#56e5a9'
+ on-tertiary: '#003824'
+ tertiary-container: '#30c88f'
+ on-tertiary-container: '#004e34'
+ error: '#ffb4ab'
+ on-error: '#690005'
+ error-container: '#93000a'
+ on-error-container: '#ffdad6'
+ primary-fixed: '#c4e7ff'
+ primary-fixed-dim: '#7bd0ff'
+ on-primary-fixed: '#001e2c'
+ on-primary-fixed-variant: '#004c69'
+ secondary-fixed: '#e1e0ff'
+ secondary-fixed-dim: '#c0c1ff'
+ on-secondary-fixed: '#07006c'
+ on-secondary-fixed-variant: '#2f2ebe'
+ tertiary-fixed: '#6ffbbe'
+ tertiary-fixed-dim: '#4edea3'
+ on-tertiary-fixed: '#002113'
+ on-tertiary-fixed-variant: '#005236'
+ background: '#0b1326'
+ on-background: '#dae2fd'
+ surface-variant: '#2d3449'
+typography:
+ headline-lg:
+ fontFamily: Space Grotesk
+ fontSize: 18px
+ fontWeight: '600'
+ lineHeight: 24px
+ letterSpacing: -0.01em
+ headline-md:
+ fontFamily: Space Grotesk
+ fontSize: 15px
+ fontWeight: '600'
+ lineHeight: 20px
+ letterSpacing: -0.005em
+ headline-sm:
+ fontFamily: Space Grotesk
+ fontSize: 13px
+ fontWeight: '500'
+ lineHeight: 18px
+ body-lg:
+ fontFamily: Inter
+ fontSize: 13px
+ fontWeight: '400'
+ lineHeight: 20px
+ body-md:
+ fontFamily: Inter
+ fontSize: 12px
+ fontWeight: '400'
+ lineHeight: 18px
+ body-sm:
+ fontFamily: Inter
+ fontSize: 11px
+ fontWeight: '400'
+ lineHeight: 16px
+ code-editor:
+ fontFamily: JetBrains Mono
+ fontSize: 13px
+ fontWeight: '400'
+ lineHeight: 22px
+ code-gutter:
+ fontFamily: JetBrains Mono
+ fontSize: 11px
+ fontWeight: '400'
+ lineHeight: 22px
+ label-md:
+ fontFamily: JetBrains Mono
+ fontSize: 11px
+ fontWeight: '500'
+ lineHeight: 14px
+ letterSpacing: 0.02em
+ label-sm:
+ fontFamily: JetBrains Mono
+ fontSize: 10px
+ fontWeight: '500'
+ lineHeight: 12px
+ letterSpacing: 0.03em
+ status-indicator:
+ fontFamily: JetBrains Mono
+ fontSize: 10px
+ fontWeight: '600'
+ lineHeight: 12px
+rounded:
+ sm: 0.125rem
+ DEFAULT: 0.25rem
+ md: 0.375rem
+ lg: 0.5rem
+ xl: 0.75rem
+ full: 9999px
+spacing:
+ gutter-xs: 0.25rem
+ gutter-sm: 0.5rem
+ gutter-md: 0.75rem
+ gutter-lg: 1rem
+ panel-padding-compact: 0.375rem
+ panel-padding-default: 0.75rem
+ window-bar-height: 2.25rem
+ status-bar-height: 1.625rem
+ sidebar-min-width: 15rem
+ sidebar-default-width: 18rem
+ sidebar-max-width: 26rem
+ page-canvas-padding: 2rem
+---
+
+## Brand & Style
+
+This design system defines an engineering-grade, native-feeling desktop IDE engineered specifically for rigorous academic, standard-compliant (ГОСТ / md2gost), and technical document authoring.
+
+### Personality & Tone
+- **Precision-Engineered:** Every line, margin, and rule feels calibrated with CAD-like certainty. There are no ornamental flourishes or arbitrary paddings.
+- **Academic Authority Meets Modern Tooling:** Bridges the gap between contemporary developer tooling (VS Code, Obsidian) and the strict, formal demands of state academic and technical publishing standards.
+- **Unobtrusive Immersion:** The dark UI recedes into the background, leaving center stage for high-contrast, mathematically correct A4 sheet previews and clean markdown source code.
+
+### Design Style Movement
+- **Technical Studio Minimalism with Skeuomorphic Document Fidelity:** A high-density dark workspace environment composed of tonal layers, precise 1px borders, and low-saturation slate panels. This directly contrasts with an authentic physical paper canvas viewport simulating A4 aspect ratios, metric margins, and physical paper drop shadows.
+
+## Colors
+
+The palette establishes an ergonomic, fatigue-reducing environment for long-form writing and technical auditing.
+
+### Palette Roles
+- **Primary (`#38bdf8` - Sky Blue):** Active cursor cues, focused outline nodes, live sync indicators, and interactive syntax tokens.
+- **Secondary (`#6366f1` - Indigo):** Structural elements, secondary selection bounds, active tabs, and git branch states.
+- **Tertiary / Success (`#10b981` - Emerald):** Passed ГОСТ compliance rules, healthy compilation states, and PlantUML render success.
+- **Warning (`#f59e0b` - Amber):** Lint warnings, missing references, table overflow notices, and unformatted bib items.
+- **Critical / Error (`#f43f5e` - Rose):** ГОСТ structural violations, syntax errors, and missing image anchors.
+- **Neutrals (Slate Tiers):**
+ - Deepest Base (`#0b0f19`): Main application backdrop, title bar, and canvas workspace gutter.
+ - Surface Level 1 (`#0f172a`): Primary sidebars, status bar, and panel trays.
+ - Surface Level 2 (`#1e293b`): Active pane backgrounds, editor gutters, and menu flyouts.
+ - Borders & Dividers (`#334155`): Strict 1px panel separations and tab dividers.
+ - Muted Text (`#64748b`): Line numbers, metadata tags, and disabled states.
+ - Primary UI Text (`#f1f5f9`): High-legibility UI labels, inspector values, and navigation titles.
+
+### Document Preview Isolation
+- **Paper Canvas (`#ffffff`):** Pure print white, explicitly decoupled from the UI theme.
+- **Paper Ink (`#000000` to `#111827`):** High-density text reproduction conforming to strict print standards.
+
+## Typography
+
+The type system separates application chrome, markdown code editing, and compiled document rendering into three distinct semantic layers:
+
+1. **Application Shell (`Space Grotesk` & `Inter`):** Space Grotesk provides structured, technical authority to section headers, panel drawers, and modal dialogs. Inter maintains neutral, uncompromised legibility for inspector panels, tree views, and configuration screens.
+2. **Editor Core (`JetBrains Mono`):** Dedicated to the markdown source pane, status metrics, and terminal diagnostics. It uses ligatures, fixed character bounds, and balanced punctuation to keep dense markdown, LaTeX math equations, and ГОСТ macro tags aligned.
+3. **Print Output Pane (Independent Document Engine):** The live ГОСТ preview bypasses application UI font rules entirely. It renders in true `Times New Roman` (or standard metrically equivalent `Liberation Serif` fallback) with explicit 14pt sizing, 1.5 line pitch, and standard 1.25cm paragraph indents as required by standard specifications.
+
+## Layout & Spacing
+
+This layout uses a continuous, rigid docked IDE grid without floating fluid gutters. The viewport is divided into distinct, resizable operational sectors:
+
+### Grid & Pane Distribution
+- **Top Window Bar (36px):** Native OS controls, project switcher, build trigger, and quick layout toggles.
+- **Left Tool Palette & Sidebar (Collapsible, 240px–416px):** Accommodates file navigation, ГОСТ table-of-contents hierarchy, diagnostics inspector, and diagram snippets.
+- **Center Editor Workcell (Split 50/50 Default):**
+ - **Left Sub-cell (Source):** Full-bleed markdown code buffer with fixed line gutters and diagnostic minimap.
+ - **Right Sub-cell (Canvas):** Dark virtual desk (`#0b0f19`) containing an A4 sheet rendered to scale (ratio 1:1.414) with dynamic zoom levels.
+- **Bottom Status Ribbon (26px):** Persistent hardware and compilation state (active ГОСТ profile, word/page totals, syntax engine, PlantUML daemon state).
+
+### Spacing Rules
+- UI density is compact; standard horizontal padding between metadata elements is 6px to 8px.
+- Pane splitters are 1px visual rules backed by a 5px interactive hit zone.
+- Paper canvas maintains an isolated virtual viewport with centered dynamic padding (minimum 32px on all sides) to preserve document boundary clarity.
+
+## Elevation & Depth
+
+This system avoids expressive blur-heavy shadows in the application chrome, relying instead on mechanical surface layering and razor-sharp separation:
+
+### Tonal Hierarchy
+- **Level 0 (App Shell/Workspace Cavity):** `#0b0f19` — the deepest recessed floor, visible beneath the canvas and title bar.
+- **Level 1 (Side Panels & Status Bar):** `#0f172a` — anchored static modules, bordered with 1px `#334155` solid strokes.
+- **Level 2 (Active Editor & Tool Panels):** `#1e293b` — interactive focal spaces.
+- **Level 3 (Overlays & Menus):** `#1e293b` with a 1px border of `#475569` and a precise drop shadow: `0 4px 16px -2px rgba(0, 0, 0, 0.5)`.
+
+### Document Skeuomorphism
+The central preview pane treats the A4 sheet as a tangible physical substrate:
+- **Sheet Surface:** Solid `#ffffff`.
+- **Sheet Elevation:** A layered, neutral shadow that conveys true physical weight:
+ - `box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3), 0 12px 32px -4px rgba(0, 0, 0, 0.65);`
+- **Page Breaks:** Explicit 16px gap between consecutive A4 sheets in continuous preview mode, showing paper borders and cut lines.
+
+## Shapes
+
+The design system uses a strict **Soft (`roundedness: 1`)** geometric model to preserve an industrial, engineering-focused look.
+
+### Radii Tokens
+- **Base (0.25rem / 4px):** Form inputs, buttons, status chips, inspector rows, and tree nodes.
+- **Large (0.5rem / 8px):** Dialog windows, hover popovers, and quick-picker modals.
+- **Zero (0px):** Editor panes, status bar, title bar, tabs, preview paper, and pane divider rails.
+
+Sharp geometric discipline ensures that nested panels lock cleanly into the desktop frame without wasteful dead corner space.
+
+## Components
+
+### Action Controls (Buttons)
+- **Primary Action (e.g., "Build PDF / ГОСТ"):** Solid `#38bdf8` fill, `#0f172a` bold text, 4px corner radius, 28px height. Focus states apply a 2px outer ring in `#38bdf8` with 2px offset.
+- **Secondary / Ghost Action:** Flat background with a 1px `#334155` border, `#f1f5f9` text, transitioning to `#1e293b` fill on hover.
+- **Icon Quick-actions:** 24x24px bounds, 0px border, transparent background, `#94a3b8` icon fill, transitioning to `#ffffff` with a `#334155` background on hover.
+
+### Status Indicators & Badges
+- **Format Audit Badges:** Monospace text in 10px uppercase, padding 2px 6px, radius 2px.
+ - *Compliant:* `#10b981` text over `rgba(16, 185, 129, 0.1)` background with `rgba(16, 185, 129, 0.25)` border.
+ - *Non-compliant:* `#f43f5e` text over `rgba(244, 63, 94, 0.1)` background with `rgba(244, 63, 94, 0.25)` border.
+- **Compiler Daemon Light:** 6px circular dot with a soft radial glow when compiling, turning solid emerald when idle and amber during recalculation.
+
+### Editor & Workspace Tabs
+- **Tab Header:** 32px height, 0px border radius, separated by 1px `#334155` vertical rules.
+- **Active Tab:** `#1e293b` background with a top 2px indicator line in `#38bdf8`.
+- **Inactive Tab:** `#0f172a` background with `#94a3b8` text.
+
+### Tree Navigation (File Explorer & Outline)
+- 24px row height with a strict hierarchical indentation of 12px per level.
+- Left-aligned indicator caret with hover highlights spanning the full panel width (`rgba(51, 65, 85, 0.4)`).
+- Active item uses `#38bdf8` text with a subtle `rgba(56, 189, 248, 0.08)` background fill and a 2px left-border accent.
+
+### Input Fields & Search Bars
+- Background `#0b0f19`, border 1px solid `#334155`, text `#f1f5f9`, font JetBrains Mono 12px.
+- Focused state transitions border to `#38bdf8` without changing the bounding box dimensions.
+
+### Diagnostics & Validation Panel
+- List view segmented by file position `[Line:Col]`.
+- Severity icons: 12px monospace indicators (`[E]` in Rose, `[W]` in Amber, `[I]` in Sky Blue).
+- Direct click jumps the markdown source line and centers the preview canvas on the corresponding page section.
\ No newline at end of file
diff --git a/NewGUI/code.html b/NewGUI/code.html
new file mode 100644
index 0000000..0f27e7c
--- /dev/null
+++ b/NewGUI/code.html
@@ -0,0 +1,442 @@
+
+
+
+save_as main
data_object UTF-8
Ln 142, Col 28
3,480 слов
description 24 стр. (A4)
Local Kroki (Ready) | plantuml.jar (v1.2024)
Таблицы: Word COM (Active)
Заполнение: 94%
zoom_out 100% zoom_in
\ No newline at end of file
diff --git a/NewGUI/screen.png b/NewGUI/screen.png
new file mode 100644
index 0000000000000000000000000000000000000000..6200245f5a9e7f5625050ba3d91c66843e266e5f
GIT binary patch
literal 952446
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