Meridian Office

Meridian Office — основание проекта (библия)

Документ-источник истины для всех остальных документов, макетов и кода. Если что-то здесь противоречит другому документу — прав этот документ, а другой нужно исправить. Версия 0.1 · 2026-10-03 · язык документации — русский; идентификаторы, код, имена файлов — английский.


1. Что мы строим

Meridian Office («Меридиан Офис») — полный офисный пакет для Windows, Linux и macOS, который:

  1. Читает всё. Открывает любой распространённый формат документов, таблиц, презентаций, изображений, схем, заметок, почты и баз данных — Microsoft Office (включая устаревшие бинарные), OpenDocument, Apple iWork, Google-экспорт, PDF, растровые и векторные форматы — с точностью отображения не хуже оригинала.
  2. Имеет свои форматы. У каждого приложения есть собственный открытый формат семейства Meridian Open Package (MOP) — ZIP-контейнер с XML и ресурсами, по духу близкий к OOXML/ODF, но проще, строже и с встроенной историей изменений.
  3. Лучше, а не «тоже». Единое ядро (одна модель текста, одна модель таблиц, один движок рендера и формул во всех приложениях), современный интерфейс одного стиля, локальная работа без облака, совместное редактирование по желанию, скрипты вместо макросов, встроенный ассистент.
  4. Один код — три платформы. Это десктопные приложения (решение владельца, 2026-10-03): ядро на Rust, оболочка на Qt 6; одинаковое поведение и внешний вид на Windows 10/11, macOS 13+ (Intel и Apple Silicon) и Linux (Flatpak/AppImage/deb/rpm, X11 и Wayland). Полноценная работа офлайн, установка на компьютер, нативные диалоги, печать, интеграция с проводником/Finder. Веб-версия и мобильные клиенты — не цель проекта; архитектура их лишь не исключает (ядро компилируется в WebAssembly), и они могут появиться отдельным решением после фазы 7.
  5. Коммерческий продукт с первого дня. Система аккаунтов (Meridian ID), лицензионные ключи, активация, редакции и подписки закладываются в структуру проекта с фазы 0 — см. раздел 9.

1.1 Целевые пользователи

Сегмент Что им важно Как отвечаем
Частные пользователи и студенты бесплатно/недорого, открывает присланные .docx/.xlsx без искажений точный импорт OOXML, лёгкий интерфейс, Hub с шаблонами
Малый и средний бизнес привычный Word/Excel-подход, почта + календарь, формы, простые БД Write/Sheets/Mail/Forms/Base, ribbon-интерфейс, скрипты
Корпорации и госсектор офлайн-работа, контроль данных, свои серверы, совместимость, политики локальный режим, Meridian Cloud на своём сервере, подпись документов, групповые политики
Образование дёшево, кроссплатформенно, совместная работа Linux-первый класс, совместное редактирование, Forms
Творческие и технические специалисты Paint/Draw/Math/PDF, скрипты, большие таблицы слои в Paint, коннекторы в Draw, LaTeX-ввод в Math, миллионы строк в Sheets

1.2 Принципы продукта


2. Состав пакета

2.1 Приложения

# Приложение Аналоги Назначение Фаза
0 Meridian Hub стартовое окно Office, LibreOffice Start Center единая точка входа: недавние файлы, шаблоны, облако, поиск, аккаунт, настройки, обновления 1
1 Meridian Write Word, LibreOffice Writer, Pages текстовый процессор: документы, письма, отчёты, книги, рецензирование 1
2 Meridian Sheets Excel, Calc, Numbers электронные таблицы: формулы, сводные таблицы, диаграммы, данные 2
3 Meridian Slides PowerPoint, Impress, Keynote презентации: слайды, анимации, режим докладчика 3
4 Meridian Draw Visio, LibreOffice Draw, draw.io векторная графика, схемы, блок-схемы, планы, коннекторы 3
5 Meridian Paint Paint, Paint.NET, Krita-lite растровый редактор: слои, кисти, выделения, фильтры, скриншоты 4
6 Meridian PDF Acrobat Reader/Standard, Preview просмотр, аннотации, формы, редактирование, конвертация, подпись PDF 4
7 Meridian Math LibreOffice Math, Equation Editor редактор формул (визуальный + LaTeX/UnicodeMath), встраивается во все приложения 4
8 Meridian Notes OneNote, Evernote, Notion-lite записные книжки: свободный холст, разделы, рукописный ввод, вырезки 5
9 Meridian Mail Outlook, Thunderbird почта, календарь, контакты, задачи (PIM) 5
10 Meridian Base Access, LibreOffice Base настольные базы данных: таблицы, запросы, формы, отчёты, коннекторы к серверным СУБД 5
11 Meridian Forms Microsoft Forms, Google Forms формы и опросы, сбор ответов в Sheets 5
12 Meridian Publisher MS Publisher, Scribus-lite настольная вёрстка: буклеты, визитки, печатная продукция 7
13 Meridian Plan MS Project, Planner планирование проектов: диаграммы Ганта, ресурсы, задачи 7

2.2 Общие модули (не приложения, а библиотеки ядра)

Модуль Назначение
Meridian Kernel модели документов, раскладка текста, движок формул, графика сцены, растр, undo/redo, история
Meridian Codecs импорт/экспорт всех форматов (OOXML, ODF, бинарные MS, PDF, RTF, HTML, изображения, …)
Meridian Render список отображения → Skia (CPU/GPU) → экран, печать, PDF, растровые снимки
Meridian Chart единый движок диаграмм (во всех приложениях)
Meridian Scene общая сцена фигур (геометрия prstGeom, стили заливки/обводки, группы, коннекторы) для Write, Sheets, Slides, Draw, Notes, Forms
Meridian Diagram «диаграммы-схемы» (аналог SmartArt): типы списков/процессов/иерархий/циклов с автораскладкой, во всех приложениях
Meridian Color управление цветом: ICC-профили (lcms2), sRGB/Display P3/CMYK, общий для Paint, PDF, Print, Chart
Meridian Crypto подписи и шифрование документов (XAdES/PAdES, AES-256-GCM, Argon2id), доверенные хранилища ОС, ГОСТ через плагин
Meridian Broker фоновый процесс пакета: единственный экземпляр, межпроцессное взаимодействие, глобальные клавиши, планировщик задач, восстановление; Hub — его окно
Meridian Lingo проверка орфографии, грамматики, переносы, тезаурус, автозамена, языковые данные
Meridian Script скрипты и автоматизация: JavaScript/TypeScript (QuickJS) с синхронной объектной моделью, запись макросов (recorder) как обязательная функция, Python (опц.), транслятор VBA
Meridian Sync совместное редактирование (CRDT), синхронизация с облаками и своим сервером
Meridian Print печать, настройки принтера, предпросмотр, PDF/A, PDF/UA
Meridian Assist ИИ-функции (локальные модели или облако): переписать, подытожить, формула по описанию, перевод
Meridian Shell общая оболочка: окна, ribbon, панели, диалоги, темы, доступность, локализация
Meridian ID клиент системы аккаунтов: вход, токены в хранилище ОС, организации, роли, устройства
Meridian License лицензионные ключи, активация (онлайн/офлайн), проверка подписанных лицензий, плавающие лицензии, пробный период, включение функций по редакции
Meridian Update каналы обновлений (stable/beta/nightly), дельта-обновления, подпись пакетов, откат

3. Имена, форматы, расширения

3.1 Семейство форматов Meridian Open Package (MOP)

3.2 Таблица расширений

Приложение Документ Шаблон Плоский XML Пространство имён
Write .mwx .mwt .mwxf urn:meridian:office:write:1
Sheets .msx .mst .msxf urn:meridian:office:sheets:1
Slides .mpx .mpt .mpxf urn:meridian:office:slides:1
Draw .mvx .mvt .mvxf urn:meridian:office:draw:1
Paint .mpi — — urn:meridian:office:paint:1 (ZIP: слои PNG/EXR + image.xml)
PDF .pdf (стандарт) — — аннотации по стандарту PDF; свой формат не нужен
Math .meq — — urn:meridian:office:math:1 (MathML + своя разметка)
Notes .mnx — — urn:meridian:office:notes:1 (одна книжка = пакет)
Mail .mmx (архив) — — архив писем/календаря/контактов (EML + ICS + VCF + индекс)
Base .mbx — — файл SQLite + служебные таблицы meridian_* (формы/запросы/отчёты как XML)
Forms .mfx .mft — urn:meridian:office:forms:1
Publisher .mpub .mpubt — urn:meridian:office:publisher:1
Plan .mpln — — urn:meridian:office:plan:1

Дополнительные расширения (решения 2026-10-03, см. раздел 10): .mvs — трафарет Draw (пакет библиотеки фигур), .mcht — шаблон диаграммы Meridian Chart, .mfr — пакет ответов Forms, .mnt — шаблон страницы Notes, .meqf — плоская формула Math, .mxt — пакет расширения/скрипта (подписанный ZIP с манифестом), .mkeys — схема горячих клавиш, .mlic/.mreq — лицензия и запрос офлайн-активации (раздел 9).

MIME-типы: application/vnd.meridian.<app> (например application/vnd.meridian.write), плоские — application/vnd.meridian.<app>+xml.

3.3 Чужие форматы — сводная матрица (R — чтение, W — запись, R* — чтение с ограничениями)

Приложение Полная поддержка (R/W) Чтение Экспорт
Write .docx .docm .dotx .doc .rtf .odt .ott .txt .md .html .fb2 .epub .pages .wpd .abw .wps .pub(R*, фаза 3–4) .xml(DocBook) .tex(подмножество) .pdf .pdf/a .epub .html .md .tex .png/.svg страниц
Sheets .xlsx .xlsm .xltx .xls .ods .ots .csv .tsv .xlsb .numbers .gnumeric .dif .sylk .dbf .parquet .json .xml .pdf .html .csv .json .parquet .png диаграмм
Slides .pptx .pptm .potx .ppt .odp .otp .key .sxi .pdf .mp4/.webm (видео) .png/.svg/.jpg слайдов .html
Draw .mvx .mvs .svg .odg .vsdx .vsd .vsdm .vssx(трафареты) .emf .wmf .dxf .drawio .pub(R*) .cdr(подмн.) .pdf .png .svg .emf .vsdx
Paint .png .jpg .webp .gif .bmp .tiff .ico .ora .psd .xcf .heic .avif .svg(растрирование) .raw(через libraw) .png .jpg .webp .gif(анимация) .bmp .tiff .ico .psd(базово) .pdf
PDF .pdf .xps .oxps .djvu .cbz .pdf/a .pdf/ua .png .jpg .txt .docx(через Write)
Math .meq .mml(MathML) .tex .odf(формулы) OMML(из docx) .mml .tex .svg .png
Notes .mnx .enex(Evernote) .one/.onepkg(OneNote, R*) .md-папки .html .pdf .md .html
Mail .eml .mbox .ics .vcf .pst .ost(R*) .msg .ldif .eml .mbox .ics .vcf .pdf
Base .mbx .sqlite .csv .accdb .mdb .odb .xlsx(импорт) ODBC/коннекторы PostgreSQL MySQL MS SQL .csv .xlsx .sql .pdf отчётов
Forms .mfx импорт вопросов из .docx/.xlsx ответы → .msx/.xlsx/.csv, форма → .pdf

4. Технологический стек (решение)

Слой Выбор Почему
Ядро (модели, раскладка, формулы, кодеки, растр) Rust (стабильный toolchain, рабочее пространство cargo) безопасность памяти при разборе чужих файлов, скорость как у C++, компиляция в WebAssembly для веб-версии
Рендер Skia (skia-safe) с бэкендами Metal/Vulkan/D3D12/OpenGL + CPU; экспериментально vello (wgpu) лучший в индустрии растеризатор текста и векторов, печать/PDF из того же списка отображения
Шейпинг текста HarfBuzz (rustybuzz), unicode-bidi, unicode-linebreak, переносы по TeX-шаблонам (hyphenation), шрифты через fontdb + системные API (DirectWrite/CoreText/fontconfig) корректные арабский, иврит, индийские письменности, лигатуры, кернинг
Оболочка (UI) Qt 6.8 LTS (C++ + QML, Qt Quick Controls с собственным стилем «Meridian»), мост в Rust через cxx-qt зрелость на трёх ОС, IME, доступность, печать, нативные диалоги, Wayland/HiDPI; десятки больших приложений на Qt (Krita, WPS, Telegram)
Холст документа Rust → список отображения → Skia → текстура GPU → QQuickItem (QRhi) один код рендера для экрана, печати, PDF и веб
Скрипты QuickJS-ng (JavaScript/TypeScript через встроенный транспилятор), опционально CPython 3.12 (плагин), транслятор VBA→MeridianScript для простых макросов лёгкая песочница, типизированный API, знакомый язык
Совместная работа Yrs (Rust-порт Yjs, CRDT) + WebSocket-сервер «Meridian Cloud» (Rust, axum) офлайн-первый CRDT, конфликтов нет, работает с любым хранилищем
Локальные данные SQLite (Base, Mail, Notes, индекс Hub), sled/redb для кэшей один файл, транзакции, переносимость
Проверка языка Hunspell-словари (hunspell-rs), LanguageTool-совместимый локальный сервер (опц.), ICU4X для сортировки/чисел/дат офлайн, 40+ языков
Шрифты в комплекте Liberation (метрически = Arial/Times/Courier), Carlito/Caladea (= Calibri/Cambria), Gelasio (= Georgia), Selawik (≈ Segoe UI), Noto (все письменности), PT Sans/Serif, Inter, JetBrains Mono, STIX Two Math + Latin Modern Math + Noto Math (формулы). Для Aptos (шрифт Office по умолчанию с 2024) метрического клона нет: таблица компенсации ширин в фазе 1 и заказ OFL-клона в фазе 2 документы из MS Office выглядят одинаково без их шрифтов
PDF-рендер на старте — pdfium (BSD) в песочном процессе; собственный писатель PDF на Rust с первого дня; переход на собственный рендер поэтапно (см. docs/apps/pdf.md) скорость выхода без компромисса по лицензии (MuPDF/Poppler — AGPL/GPL)
Управление цветом lcms2 (MIT) через крейт meridian-color один движок ICC для Paint, PDF, печати и диаграмм
Видеокодеры (Slides) платформенные API: Media Foundation (Windows), VideoToolbox (macOS), GStreamer/VA-API (Linux); без встроенных H.264-кодеров лицензии кодеков не нужны
Qt-лицензия LGPLv3, динамическая линковка (пользователь может заменить библиотеки Qt); коммерческая лицензия Qt — по решению владельца позже
Минимальные ОС Windows 10 21H2+ и 11; macOS 13+; Linux с glibc 2.35+ (Ubuntu 22.04+, Fedora 36+), для старых — Flatpak
Сборка и CI cargo + CMake (Qt), just для задач, GitHub/Gitea Actions: windows-2022, macos-14 (arm64+x86_64), ubuntu-22.04; кросс-проверка Wayland/X11 матрица из трёх ОС на каждый коммит
Установка Windows: MSIX + MSI (WiX 4), подпись EV; macOS: DMG + нотаризация, universal binary; Linux: Flatpak (главный), AppImage, deb/rpm, Snap; автообновление — свой модуль (дельты, каналы stable/beta/nightly)
Тесты unit (cargo test), снимочные тесты рендера (корпус из 10 000+ реальных документов → PNG → сравнение), фаззинг парсеров (cargo-fuzz), UI-тесты (Qt Test + Squish), бенчмарки (criterion) точность импорта измеряется числом, а не ощущениями

Альтернативы, которые рассмотрены и отклонены (подробнее — в 03-architecture.md): Electron/Tauri с веб-UI (тяжелее, хуже IME и доступность на десктопе), Flutter (слабая поддержка сложного текстового ввода и a11y на десктопе), Avalonia/.NET (меньше экосистема рендера), чистый C++ без Rust (риски безопасности в парсерах).


5. Стиль компании и дизайн-система (Meridian Design System, MDS)

5.1 Идея бренда

Меридиан — линия отсчёта, точность, навигация. Метафора: карта, компас, штурманский стол. Бренд спокойный, инженерный, без «игрушечности»; цвета глубокие, акценты тёплые.

5.2 Токены (единые для Qt-темы, веб-версии и макетов)

Цвета бренда и приложений (светлая тема; в тёмной — те же оттенки на 1 ступень светлее):

Токен Значение Применение
--m-ink / --app-hub #0B3C5D бренд, Hub, заголовки
--m-sun #F2A541 тёплый акцент (выделения, «звёздочки», прогресс)
--app-write #3B5BDB Write
--app-sheets #1E8E5A Sheets
--app-slides #E25C3D Slides
--app-draw #0E8A8A Draw
--app-paint #C2309B Paint
--app-pdf #C92A2A PDF
--app-math #495057 Math
--app-notes #7048E8 Notes
--app-mail #1C7ED6 Mail
--app-base #A61E4D Base
--app-forms #5C940D Forms
--app-publisher #D6336C Publisher
--app-plan #E67700 Plan

Нейтральные: светлая тема — фон окна #F5F6F8, поверхность #FFFFFF, граница #E1E4E8, текст #1A1D21, вторичный текст #5C636E; тёмная — фон #16181D, поверхность #1F2228, граница #2E3238, текст #E6E8EB, вторичный #9AA1AB. Контраст текста к фону ≥ 7:1 (AAA) для основного, ≥ 4.5:1 для вторичного.

Геометрия: сетка 4 px (компоненты) / 8 px (раскладка); радиусы 6 px (кнопки, поля), 10 px (карточки, панели), 14 px (всплывающие окна); толщина обводки 1 px; фокус — кольцо 2 px цвета приложения с 2 px отступом.

Типографика интерфейса: Inter (резерв: Segoe UI / SF Pro / Cantarell), размеры 11/12/13 (основной)/15/18/24/32 px, моноширинный — JetBrains Mono. Шрифты документов по умолчанию: «Carlito» 11 pt (= Calibri) для совместимости, «PT Serif/Sans» в русских шаблонах, «Liberation Serif» для академических.

Иконки: набор Meridian Glyphs — контурные, 20 px (ribbon — 20 и 32 px), штрих 1,5 px, скругления 2 px; активное состояние — залитая версия. Основа на этапе прототипа — Lucide/Fluent (MIT), затем свой набор.

Движение: 120–200 мс, ease-out; уважение к системному «уменьшить движение».

5.3 Каркас окна (одинаков для всех приложений)

┌───────────────────────────────────────────────────────────────────────┐
│ Заголовок: [значок] Имя документа — Meridian Write  [поиск ⌘⇧P] [☁][👤] │  ← на macOS нативный, на Win/Linux свой (CSD); вкладки документов в одном окне (P0)
├───────────────────────────────────────────────────────────────────────┤
│ Файл  Главная  Вставка  Дизайн  Макет  Ссылки  Рецензирование  Вид  Скрипты │  ← вкладки ribbon (+ контекстные)
│ [группа команд] [группа] [группа] ...                     [⌄ свернуть] │  ← лента 92 px; компактный режим 40 px
├────────┬──────────────────────────────────────────────┬───────────────┤
│ Навиг. │                                              │ Боковая панель│
│ панель │           Холст документа                    │ (свойства,    │
│ (опц.) │                                              │ стили, исправ-│
│        │                                              │ ления, …)     │
├────────┴──────────────────────────────────────────────┴───────────────┤
│ Стр. 3 из 12 · 1 254 слова · Русский · [режимы] [масштаб ───●─── 100%] │  ← строка состояния 24 px
└───────────────────────────────────────────────────────────────────────┘

6. Архитектура — верхний уровень

┌──────────────── Meridian Shell (Qt 6 / QML, C++) ─────────────────┐
│ Hub │ Write │ Sheets │ Slides │ Draw │ Paint │ PDF │ Notes │ Mail │ Base │ Forms │
├──────────────── FFI (cxx-qt, C ABI, stable) ──────────────────────┤
│                      Meridian Kernel (Rust)                        │
│  text-model · text-layout · grid-model · calc-engine · scene       │
│  raster · chart · math · undo/crdt · styles · fields · search      │
├─────────────── Meridian Codecs (Rust) ────────────────────────────┤
│  ooxml · odf · msbinary(doc/xls/ppt) · rtf · pdf(read/write) ·     │
│  html/md · images · svg · vsdx · pst/eml · accdb · iwork · …       │
├─────────────── Platform (Rust + C++) ─────────────────────────────┤
│  render(Skia) · fonts · print · ime · a11y · fs/cloud · script(QuickJS) · sync(Yrs) │
└───────────────────────────────────────────────────────────────────┘

Процессная модель: один процесс на документ-окно (как у браузеров) + общий «брокер» (Hub) для буфера, недавних, облака и обновлений; парсеры чужих форматов — в отдельном песочном процессе (crash ≠ потеря документа). Автосохранение — журнал операций каждые 2 с, восстановление после сбоя.


7. Фазы (сводно; подробно — 08-roadmap.md)

Фаза Название Срок (от старта) Результат
0 Основание 0–3 мес библия, дизайн-система, прототип ядра текста + рендера, репозиторий, CI, корпус тестовых файлов, схема лицензирования и редакций, каркас Meridian ID / License (клиент + сервер)
1 Ядро и Write 3–12 мес Meridian Hub + Write 1.0: .mwx, импорт/экспорт docx/odt/rtf/pdf, исправления и сравнение документов, печать; отображение (без редактирования) формул OMML и диаграмм из docx; вкладки документов; журналы операций моделей сразу CRDT-совместимые; вход в аккаунт, активация ключом, пробный период, портал аккаунта, продажа лицензий (биллинг)
2 Sheets 6–16 мес движок формул (500+ функций), сводные, диаграммы (Meridian Chart), xlsx/ods
3 Slides и Draw 12–22 мес презентации с анимациями и режимом докладчика (экспорт видео — P1); Draw с коннекторами; pptx/vsdx; Business «стартовый»: консоль администратора v1, SSO OIDC, Education
4 Paint, PDF, Math 16–26 мес растровый редактор со слоями; PDF-редактор; формулы во всех приложениях
5 Notes, Mail, Base, Forms 22–34 мес записные книжки, почта/календарь, базы данных, формы (сбор ответов офлайн/PDF/почта; веб-сбор — в 3.5 вместе с облаком); виртуальный принтер «Печать в Notes/PDF»
6 Совместная работа и облако 28–40 мес Meridian Cloud (свой сервер и on-prem для Enterprise), CRDT-редактирование между десктопными клиентами, корпоративная консоль администратора, плавающие лицензии
7 Экосистема 36–48 мес магазин скриптов и шаблонов, Assist (ИИ), Publisher, Plan; веб-просмотрщик (WASM) — только если будет решение владельца

Фазы перекрываются: команды Sheets и Slides стартуют, когда ядро стабилизировано (конец фазы 0 / середина фазы 1).


8. Соглашения для документов этого репозитория


9. Лицензирование, аккаунты и редакции (закладывается с фазы 0)

Требование владельца (2026-10-03): система аккаунтов и лицензионных ключей — часть структуры проекта с самого начала, а не надстройка «потом». Подробно — docs/10-licensing-accounts.md; здесь — решения верхнего уровня.

9.1 Редакции

Редакция Для кого Что входит Модель
Free личное использование Hub, Write, Sheets, Slides, Math (с 2.5; до этого — только отображение формул); все форматы чтения/записи этих приложений; локальные скрипты и запись макросов; просмотр (режим «только чтение») файлов Draw/Paint/Notes/Forms; PDF: просмотр, поиск, печать, заполнение форм, простые комментарии; инструмент «Снимок»; без облака, совместной работы, Assist, Base, Mail, редактирования PDF, магазина скриптов бесплатно, без аккаунта
Home дом (до 5 устройств одного владельца; аккаунт не обязателен, перенос через ключ) всё из Free + Paint, Draw, Notes, Mail (IMAP/POP3/CalDAV, без Exchange), PDF-редактор, Forms (все каналы, кроме веб-сбора), экспорт видео в Slides, Base в режиме выполнения готовых баз (BaseRuntime) разовая покупка (вечная лицензия: версия + 12 мес. функциональных обновлений + 5 лет обновлений безопасности) или подписка
Pro фрилансеры, специалисты (до 5 устройств) всё из Home + Base (конструктор), Assist, Meridian Cloud 100 ГБ, совместная работа, веб-сбор ответов Forms, приоритетная поддержка, Publisher/Plan (фаза 7) подписка (месяц/год) или разовая покупка без облака; после 12 оплаченных месяцев подписки — право на вечную версию годичной давности (fallback)
Business компании, за рабочее место всё из Pro + консоль администратора (v1 — фаза 3, v2 — фаза 6), SSO (OIDC — фаза 3, SAML/SCIM — фаза 6), политики, централизованная раздача ключей, аудит, Exchange/Graph в Mail, 1 ТБ на организацию, Home Use Program для сотрудников подписка за место/год
Enterprise крупные компании, госсектор всё из Business + on-prem сервер лицензий и облака, офлайн-активация, плавающие лицензии, SLA, собственные сборки/политики, поддержка 152-ФЗ/ГОСТ-подписи договор, объёмные ключи
Education школы, вузы как Business с ограничениями (без облачного Assist по умолчанию, облако 100 ГБ/пользователь), лицензии на класс/кампус; бесплатный уровень для школ (Hub, Write, Sheets, Slides, Forms) — предварительно, требует подтверждения владельца подписка/грант
Trial все Pro на 30 дней, без карты автоматически при первом запуске (по желанию)

9.2 Meridian ID (аккаунты)

9.3 Лицензионные ключи и активация

9.4 Серверная часть (Rust/axum + PostgreSQL, Docker-образы, on-prem вариант для Enterprise)

Сервис Назначение
id-service аккаунты, сессии, OAuth/OIDC/SAML, 2FA, организации, устройства, аудит
license-service выпуск/активация/проверка/отзыв ключей и лицензий, плавающие аренды, объёмные ключи
billing-service тарифы, подписки, платежи (адаптеры: ЮKassa, CloudPayments, Stripe), счета для юрлиц, НДС, промокоды, реселлеры
portal (веб) личный кабинет: покупки, ключи, устройства, подписки, счета; консоль администратора организации
update-service манифесты обновлений по каналам и редакциям, дельты, подпись
cloud-service (фаза 6) хранилище, совместная работа (CRDT-сервер), общий доступ
telemetry-service только по согласию: анонимные метрики и отчёты о сбоях

Домены (план): id.meridian-office.<tld>, license.…, account.… (портал), update.…, cloud.…. Enterprise получает тот же набор как docker compose для своей сети.

9.5 Как это живёт в структуре кода

kernel/crates/meridian-license/   ← проверка лицензий, отпечаток, аренда, флаги функций (Rust, без сети)
kernel/crates/meridian-id/        ← клиент аккаунтов: OAuth-поток, токены, хранилище ОС (Rust)
shell/src/account/                ← диалоги входа/активации, менеджер лицензий, значки состояния (QML/C++)
services/id-service/ services/license-service/ services/billing-service/ services/portal/ services/update-service/
tools/keygen/                     ← выпуск ключей и подпись лицензий (только у владельца, HSM/YubiKey)

Все функции, зависящие от редакции, в коде включаются через один механизм Features::has(Feature::X), а не разбросанными проверками; интерфейс показывает «замок» и предложение перейти на редакцию выше.


10. Решения по вопросам из документов (журнал, 2026-10-03)

Каждый документ заканчивается разделом «Вопросы к библии». Здесь — принятые решения; документы приводятся в соответствие постепенно, при расхождении действует этот раздел.

№ Вопрос (откуда) Решение
1 Ctrl+K: палитра или гиперссылка (write, sheets, slides) Гиперссылка — Ctrl+K/⌘K, как в Office. Командная палитра — Ctrl+Shift+P/⌘⇧P, псевдоним Alt+Q. Раздел 5.3 и макеты исправлены
2 Единицы длины (formats, write, notes, architecture) Целые EMU (914 400 на дюйм) и в файлах MOP, и во внутренней арифметике раскладки (Length = i64 EMU в meridian-core); детерминизм без плавающей точки. Write переводит Lu = 1/64 pt на EMU при реализации; Notes хранит координаты холста в EMU
3 Где лежат документы ядра (sheets, chart) Папка docs/algorithms/ — модули ядра (chart-engine.md, kernel-core.md); docs/03-architecture.md — скрипты, синхронизация, процессы. Ссылки исправлены
4 Business/SSO: фазы 2–3 или 6 (roadmap, licensing) Двухступенчато: Business «стартовый» в фазе 3 (консоль v1, OIDC, Education), Enterprise в фазе 6 (on-prem, плавающие и объёмные лицензии, SAML/SCIM, консоль v2). Таблица фаз обновлена
5 Платные форматы (draw, slides, licensing) Форматы внутри приложения никогда не платные. Платными бывают приложения (Draw, Paint, Mail, Base…) и функции (облако, совместная работа, Assist, экспорт видео = Home+, веб-сбор Forms = Pro+). Флаги DrawVsdxExport и подобные удалить из матрицы лицензирования
6 Free и просмотр чужих приложений (paint, pdf, draw, mail) Free открывает файлы Draw/Paint/Notes/Forms в режиме просмотра (без сохранения изменений), включает инструмент «Снимок», просмотр/печать/заполнение/простые комментарии PDF. Mail в Free отсутствует полностью. Раздел 9.1 обновлён
7 Скрипты в Free (sheets, market) Локальные скрипты, запись макросов и редактор — во всех редакциях, включая Free (как VBA). Магазин и Python-плагин — Home+. Синхронная объектная модель и recorder — требования P0 (раздел 2.2)
8 Лимиты Sheets (market, sheets) Минимум 1 048 576 × 16 384 (совместимость с Excel); «большой режим» 16 777 216 строк — P1, с предупреждением при экспорте в xlsx
9 Шрифт Aptos (market) Таблица компенсации ширин (фаза 1), заказ OFL-клона (фаза 2). Раздел 4 обновлён
10 Вкладки документов в одном окне (market) P0 для Shell (фаза 1); PDF — вкладки в одном процессе окна
11 Publisher и .pub (market) Publisher остаётся в фазе 7; чтение .pub (R*) в Write/Draw — фазы 3–4
12 Home: число устройств, Family, fallback, HUP, безопасность вечных лицензий (market, licensing) Home — 5 устройств; вечная лицензия = версия + 12 мес. функциональных обновлений + 5 лет обновлений безопасности; fallback после 12 месяцев подписки; Home Use Program для Business/Enterprise. «Family» и бесплатный Education для школ — предварительно да, подтверждает владелец
13 Лицензия исходного кода (architecture) Открытый вопрос владельца: проприетарный код или open core (ядро форматов под MPL-2.0). До решения — проприетарный монорепозиторий
14 Qt LGPLv3, магазины, минимальные ОС (architecture) LGPLv3 с динамической линковкой; App Store/Microsoft Store — отдельные песочные сборки в фазе 7, основной канал — прямая загрузка; минимальные ОС — раздел 4
15 Совместная работа в Paint; WebView для расширений; телеметрия в Trial (architecture) Paint — без CRDT (только файл); расширения — декларативные QML-панели, WebView-панель в песочнице — P2; телеметрия всегда по согласию, в Trial — один запрос согласия при первом запуске
16 Фокус, тёмные цвета, --text-3, выделение, тени, радиусы, высоты, HC-акцент, 32 px, стиль «Обычный», заголовок 36 px, минимум окна (design-system) Принято всё: фокус — кольцо 2 px цвета приложения с отступом 2 px (CSS макетов — приближение); тёмная тема — ступень 500 цветов приложений; --text-3 только для необязательных подсказок; выделение — единое indigo; 5 уровней теней; токены --r-xs 4px, --r-pill; высота контролов 30 px — зафиксированное исключение из сетки 4 px; hc.accent #FFD400; стиль «Обычный» — Carlito 11 pt, интервал 1,08, после абзаца 8 pt; заголовок окна 36 px; минимум окна 960 × 600
17 Значки-буквы и эмодзи в макетах (design-system) В макетах допустимы как заглушки; в продукте — глифы из mockups/assets/icons.svg и набор Meridian Glyphs
18 Вечная лицензия и мажорные версии; pdfium; CRDT-журналы с фазы 1; Forms-веб; видео Slides; Math в Free; Education-консоль (roadmap) Приняты предложения плана: pdfium как временный рендер; журналы операций CRDT-совместимы с фазы 1; веб-сбор Forms — в 3.5; экспорт видео — P1; до 2.5 Free показывает формулы без редактирования; Education-консоль — 3.6. GA за 3–4 недели до конца фазы — норма
19 Ключ: 28 бит MAC + 5 бит контрольного символа; «мягкий режим» 7 дней; регионы; CRL через update-service (licensing) Принято
20 Кэш значений формул в .msx; comments.xml; порог строк; ShapeSheet; усечение history/ (formats) Кэш значений — для всех формульных ячеек (быстрое открытие, просмотрщики); comments.xml — для потоковых обсуждений, заметки — в листе; порог строк проверить на корпусе; «живое» подмножество ShapeSheet — решение фазы 3; history/ усекать автоматически после 50 МБ с сохранением снимков-вех
21 .mcht, геоданные, 3D (chart) .mcht добавлен; карты — P2 с отдельными загружаемыми пакетами геоданных; объёмные диаграммы и 3D-фигуры — вне 1.0 и вне критерия «не хуже оригинала»
22 BaseRuntime для Home; единый язык выражений; пространство имён; SQLCipher (base) Принято: Feature::BaseRuntime в Home; выражения Base = движок формул Sheets; urn:meridian:office:base:1 для XML-частей в .mbx; SQLCipher статически
23 .mvs, meridian-scene, .vssx (draw); Diagram-модуль, кодеки (slides) Принято: расширения и модули добавлены в разделы 2.2, 3.2, 3.3, 4
24 forms-service до фазы 6; .mfr; forms:// в Sheets (forms) .mfr добавлен; веб-сбор — 3.5; источник forms:// описать в документе Sheets при реализации
25 Брокер; глобальные клавиши; .mxt/.mkeys; каталог шаблонов (hub, notes) Брокер — отдельный процесс meridian-broker, Hub — его окно (раздел 2.2); глобальные клавиши регистрирует брокер; расширения добавлены; домен templates.meridian-office.<tld> добавить в 9.4 при реализации
26 Exchange/Graph — Business+; регистрация OAuth-клиентов; .msg запись (mail) Принято; регистрации OAuth — организационная задача фазы 1–2 в плане
27 .meqf; шрифты Math; общий реестр клавиш; формулы в Sheets; PDF/UA-теги формул (math) .meqf и шрифты добавлены; docs/shell/keymap.md — результат фазы 0 (единый реестр сочетаний для всех приложений); формулы-дроби в Sheets — P2; теги формул PDF/UA — P1
28 Шаблоны Notes; виртуальный принтер (notes, pdf) .mnt добавлен; виртуальный принтер «Meridian» (Windows — подписанный драйвер, macOS — PDF-служба, Linux — бэкенд CUPS) — фаза 5, общий для Notes и PDF
29 ICC-движок; 32-бит float; .mpi; общий диалог экспорта (paint) lcms2 через meridian-color (раздел 4); 32-бит float — P2; .mpi оставляем (MIME решает конфликты); общий диалог экспорта изображений — в Shell
30 meridian-crypto; tessdata; печать в PDF (pdf) Крейт meridian-crypto добавлен (раздел 2.2); языковые пакеты OCR загружаются по требованию через update-service; печать в PDF — см. п. 28
31 Бинарные части MOP для больших листов; INDIRECT/OFFSET (sheets) Столбцовые бинарные части data/*.bin в .msx — P1, описать в 04-file-formats при реализации; динамические зависимости вместо волатильности — принято, задокументировать как отличие с тем же результатом
32 Вкладка «Дизайн»; сравнение P0; «Исправления»; history/snapshots; subdoc/ (write) Вкладка «Дизайн» добавлена в 5.3; сравнение документов — P0; термин UI — «Исправления» (как в Word RU); снимки истории и subdoc/ — дополнить 04-file-formats при реализации
33 Юридическая проверка ленты (market) Задача фазы 0 для юриста: патенты Microsoft на ribbon (большинство истекли/истекают 2026–2027), программа Office UI Licensing закрыта; зафиксировать отличия реализации