Reuse previewRotationDeg for video scenes across editor, control,
presentation and overlays via ContainedVideo layout parity.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prevent stale TTRPGPlayer-x64.AppImage on the updates host when
electron-builder leaves an x86_64 alias beside an older x64 file.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enable scene editor, overlays, effects, and darkness on video scenes; brighten GM trap markers; document snap, NPC types, materials, and control controls in RU/EN help.
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid crashing Electron at startup when sharp is corrupt, and fail pack if asarUnpack natives look truncated.
Co-authored-by: Cursor <cursoragent@cursor.com>
Re-enable users-branch UI, snap session tokens to square/hex grid from the control preview, refine inactive/open-info NPC menus, block marker actions while an effect brush is active, and dim materials/NPC overlays only when they are open.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add USERS_BRANCH_FEATURES_ENABLED (off by default) to hide Players library, session tokens, and related UI while keeping the preview import fix. Restore primary Run button when the flag is off.
Co-authored-by: Cursor <cursoragent@cursor.com>
Serialize updateProject and preview finalize, drain before pack/close, buffer zip entries, and abort finalize cleanly when leaving the project to avoid ENOENT on multi-image drops.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align control/presentation with presentation screen rect and darkness z-order; sync window titles and session window cleanup. Pack Win/Mac/Linux with npmRebuild disabled and release-native-prep for classic-level and sharp.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the system View menu across windows, show the open project name above Game properties, and keep scene list kebab visible with truncated titles and overflow tooltips.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add Hostile/Neutral/Friendly ring types with session-only inactive overrides on control, plus launch-with-players flow and live player tokens on the map.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add userData players/teams, scene npcTokens with hex-inscribed sizing, session scale synced to presentation, and Playwright e2e coverage.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove storyline/scene NPC binding and export chosen NPCs with relations/groups. Harden export modal so a missing npcs payload no longer blacks out the editor.
Co-authored-by: Cursor <cursoragent@cursor.com>
Warm and show the NPC window sooner, lazy-load ReactFlow/TipTap, overlay save progress like materials, and fix the undefined controlStyles crash after creating an NPC.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stretch key action buttons, center empty audio/image pickers, and require confirmation before deleting a scene.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add configurable square/hex grid in the scene editor (persisted and shown on control/presentation) and keep trap activation effects above trap icons.
Co-authored-by: Cursor <cursoragent@cursor.com>
Block the editor with a spinner and percent stages during material upsert so long image optimization is visible and non-interactive.
Co-authored-by: Cursor <cursoragent@cursor.com>
Deselect effect tools by default and on re-click, block the editor during session launch, and fix NPC overlay/window empty-state layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wire mimic/pit/arrow/laser media on activate, poison/explosion via effects, and document the scene editor and traps in Instructions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add trap overlays with session state, material legend editor/panel, and a dedicated scene editor window wired through IPC and project persistence.
Co-authored-by: Cursor <cursoragent@cursor.com>
Compare blank/invalid locale normalization against inferEditorLocaleFromSystem()
so the test passes consistently when Node exposes navigator.languages.
Co-authored-by: Cursor <cursoragent@cursor.com>
Water and rain erase fire under a tight brush hit radius; add looping fire/rain ambients and an Effects sound slider that also scales one-shot effect SFX.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip full project broadcast on graph/NPC position commits, send session.stateChanged only to consumer windows, and force one Pixi render before stopping the idle ticker so Clear effects actually clears the canvas.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move audio scrub/volume and brush drafts off root React ticks, coalesce overlay layout IPC, cache machine fingerprint and asset URLs, share one scene overlay host, and stop idle Pixi ticker. Also harden console against EPIPE on window load failures.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use OS machine identifiers (Windows MachineGuid, macOS IOPlatformUUID, Linux machine-id) hashed as deviceId so all accounts on one PC share one license slot. Keep legacy userData/device.id for migration and retire it on re-activation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match NPC drag-to-rotate on the material frame during playback, and change the add/edit Save button to Saving… while import runs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drag the top-edge handle to rotate the whole frame with the avatar; remove unused zoom controls from the session NPC window.
Co-authored-by: Cursor <cursoragent@cursor.com>
Toggle NPCs independently from the characters window, keep one shared dim/close-all, and scroll descriptions for all selected characters.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nested NPC groups with color, graph filter, and scene/storyline binding; Foundry worlds/modules import actors into groups; storyline merge asks on NPC name conflicts and reports NPC counts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add a dedicated NPC editor window, directed relations, control/presentation avatar overlay, and ru/en help for the new section.
Co-authored-by: Cursor <cursoragent@cursor.com>
Let GMs manage and show images over the scene from the editor and control panel, with zoom tools, help docs, and full ru/en i18n.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rename the effects subgroup from Tools to Cleanup/Очистка and document the description tools and viewer in the instructions.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add TipTap editing in the editor and an Electron window on the control panel to read the current scene description.
Co-authored-by: Cursor <cursoragent@cursor.com>
Можно перетащить изображения/видео в колонку сцен: создаются новые сцены
с превью и названием из файла, с полноэкранным прогрессом и отчётом о
пропущенных файлах.
Добавлен ручной порядок сцен в списке (sceneListOrder) с сохранением в
проект; перетаскивание карточек отделено от импорта файлов. Во время
сортировки снова работает скролл колесом.
Исправлен залипающий disabled у «+ Новая сцена» после создания сцены.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлена загрузка файлов перетаскиванием в блоки «Аудио игры», «Аудио сцены»
и «Превью сцены»: подсветка зоны, подсказки, фильтрация по типу, импорт без диалога.
IPC и main принимают пути файлов напрямую; для Electron 41 пути получаются через
webUtils.getPathForFile в preload (File.path в renderer больше недоступен).
Улучшен dev-запуск: Vite слушает 127.0.0.1, ожидание готовности по localhost.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлена полноценная поддержка побочных сюжетных линий в редакторе и на
пульте: визуальное выделение компонент графа, запрет недопустимых связей
между основной и побочными линиями, метки «ПОБОЧНАЯ» и названия линий.
Реализован 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>