Лицензия, редактор, пульт и сборка

- Main: license service, IPC, router; закрытие окон; yauzl закрытие zip (EMFILE), zipRead тест
- Editor: стабильный projectState без мигания, логотип и меню, строки UI, LayoutShell overlay
- Control: ластик для всех типов эффектов, затухание/нарастание музыки при смене сцены
- Сборка: vite, build/dev scripts, obfuscate-main и build-env скрипты с тестами; package.json

Made-with: Cursor
This commit is contained in:
Ivan Fontosh
2026-04-19 20:11:24 +08:00
parent 5e7dc5ea19
commit 2fa20da94d
40 changed files with 2629 additions and 211 deletions
+4 -1
View File
@@ -7,13 +7,16 @@ type Props = {
left: React.ReactNode;
center: React.ReactNode;
right: React.ReactNode;
/** Блокировка основной области (под хедером), например без лицензии. */
bodyOverlay?: React.ReactNode;
};
export function LayoutShell({ topBar, left, center, right }: Props) {
export function LayoutShell({ topBar, left, center, right, bodyOverlay }: Props) {
return (
<div className={styles.root}>
<div className={styles.topBar}>{topBar}</div>
<div className={styles.body}>
{bodyOverlay ? <div className={styles.bodyOverlay}>{bodyOverlay}</div> : null}
<div className={styles.col}>{left}</div>
<div className={styles.col}>{center}</div>
<div className={styles.col}>{right}</div>