feat(editor): побочные сюжетные линии и импорт/экспорт линий

Добавлена полноценная поддержка побочных сюжетных линий в редакторе и на
пульте: визуальное выделение компонент графа, запрет недопустимых связей
между основной и побочными линиями, метки «ПОБОЧНАЯ» и названия линий.

Реализован partial export/import сюжетных линий:
- экспорт выбранных линий в урезанный .ttrpg.zip с manifest в project.json;
- импорт в открытый проект с выбором линий, разрешением конфликтов названий
  сцен (одна модалка на операцию) и отчётом о результате;
- новое окно источника импорта: «Из проекта» (dropdown, без текущего) или
  «Из файла»; на главном экране — только полный импорт из файла.

Исправлены гонки при открытии/закрытии проекта (сериализация open/close в
main, сброс зависших состояний UI), залипание оверлея прогресса экспорта и
старт Electron в dev после готовности Vite.

Добавлены unit-тесты для lineage, export/import и контрактов zipStore.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-07-09 14:47:28 +08:00
parent de9190959c
commit c8ab9dd567
26 changed files with 3507 additions and 266 deletions
@@ -8,6 +8,12 @@
height: 8px;
}
.handleSide {
background: var(--side-story-handle);
width: 8px;
height: 8px;
}
.card {
box-sizing: border-box;
width: 100%;
@@ -26,6 +32,13 @@
0 25px 50px -12px rgba(167, 139, 250, 0.12);
}
.cardActiveSide {
border-color: rgba(0, 120, 212, 0.95);
box-shadow:
0 0 0 2px rgba(0, 120, 212, 0.35),
0 25px 50px -12px rgba(0, 120, 212, 0.12);
}
.previewShell {
position: relative;
width: 100%;
@@ -65,6 +78,21 @@
box-shadow: var(--shadow-start-badge);
}
.badgeSideStory {
position: absolute;
top: 8px;
left: 8px;
z-index: 2;
font-size: 8.5px;
font-weight: 800;
letter-spacing: 0.4px;
padding: 4px 8px;
border-radius: 8px;
background: var(--side-story-fill-solid);
color: var(--text-on-accent);
box-shadow: var(--shadow-side-story-badge);
}
.cornerBadges {
position: absolute;
top: 8px;