kingkont 0.20.8 → 0.20.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.html +37 -15
- package/lib/providers.js +8 -3
- package/main.js +3 -4
- package/package.json +3 -3
- package/renderer/board.js +3632 -2943
- package/renderer/chat.js +4 -0
- package/renderer/cloudFs.js +174 -3
- package/renderer/cloudProjects.js +205 -93
- package/renderer/drawings.js +259 -0
- package/renderer/generate.js +5 -0
- package/renderer/notifyPanel.js +4 -1
- package/renderer/state.js +18 -10
- package/renderer/styles.css +85 -1
- package/server.js +35 -0
package/index.html
CHANGED
|
@@ -7,6 +7,15 @@
|
|
|
7
7
|
<link rel="stylesheet" href="renderer/styles.css">
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
|
+
<script>
|
|
11
|
+
// Electron: preload.js выставляет window.cloudFs. Если есть — юзер
|
|
12
|
+
// работает локально и всегда в edit-mode (нет share-preview как в web).
|
|
13
|
+
// Без этой строки в Electron .kk-edit-only элементы остаются скрытыми
|
|
14
|
+
// до тех пор пока openFilm/renderTemplateOverlay добавят body.edit-mode —
|
|
15
|
+
// юзер видит «голый» UI без панелей секунду. На web window.cloudFs
|
|
16
|
+
// undefined → noop, режим определяет web-shim.js по URL.
|
|
17
|
+
if (window.cloudFs) document.body.classList.add('edit-mode');
|
|
18
|
+
</script>
|
|
10
19
|
|
|
11
20
|
<aside class="sidebar">
|
|
12
21
|
<div class="sidebar-header">
|
|
@@ -28,20 +37,20 @@
|
|
|
28
37
|
(cloud или папочный). Облачный — обновляет существующую запись;
|
|
29
38
|
папочный — открывает диалог «куда сохранить» (новый/обновить
|
|
30
39
|
существующий, см. saveCurrentProjectAsCloud). -->
|
|
31
|
-
<button id="saveProjectCloud" title="Загрузить весь проект на сервер" style="display:none; margin-top:6px;">☁ Сохранить на сервер</button>
|
|
40
|
+
<button id="saveProjectCloud" class="kk-edit-only" title="Загрузить весь проект на сервер" style="display:none; margin-top:6px;">☁ Сохранить на сервер</button>
|
|
32
41
|
<div id="rootInfo" style="font-size: 12px; color: #aaa; word-break: break-all;"></div>
|
|
33
42
|
</div>
|
|
34
43
|
|
|
35
|
-
<div class="sidebar-search-row">
|
|
44
|
+
<div class="sidebar-search-row kk-edit-only">
|
|
36
45
|
<input id="sidebarSearch" type="text" placeholder="Поиск…" autocomplete="off">
|
|
37
46
|
</div>
|
|
38
47
|
|
|
39
|
-
<div class="sidebar-section">
|
|
48
|
+
<div class="sidebar-section kk-edit-only">
|
|
40
49
|
<h3>Персонажи <button id="newCharacter" disabled title="Создать персонажа">+</button></h3>
|
|
41
50
|
<div class="sidebar-list" id="characterList"></div>
|
|
42
51
|
</div>
|
|
43
52
|
|
|
44
|
-
<div class="sidebar-section">
|
|
53
|
+
<div class="sidebar-section kk-edit-only">
|
|
45
54
|
<h3>Общее <button id="newLocation" disabled title="Создать общую доску">+</button></h3>
|
|
46
55
|
<div class="sidebar-list" id="locationList"></div>
|
|
47
56
|
</div>
|
|
@@ -49,7 +58,7 @@
|
|
|
49
58
|
<div class="sidebar-section flex">
|
|
50
59
|
<h3>
|
|
51
60
|
<span>Сцены</span>
|
|
52
|
-
<span style="display:flex; gap:4px;">
|
|
61
|
+
<span style="display:flex; gap:4px;" class="kk-edit-only">
|
|
53
62
|
<button id="newEpisode" disabled title="Создать сцену">+</button>
|
|
54
63
|
<!-- Кнопка 🎨 «Шаблоны» убрана из sidebar'а внутри проекта:
|
|
55
64
|
scene-templates в текущей модели не используются (см. упрощение
|
|
@@ -61,7 +70,7 @@
|
|
|
61
70
|
</h3>
|
|
62
71
|
<div class="sidebar-list" id="episodeList"></div>
|
|
63
72
|
</div>
|
|
64
|
-
<div class="sidebar-footer">
|
|
73
|
+
<div class="sidebar-footer kk-edit-only">
|
|
65
74
|
<div id="balancesAll" style="display:flex; flex-direction:column; gap:4px;"></div>
|
|
66
75
|
<!-- jobsInfo + hint убраны (юзер: «убери инфу 'в фоне' и 'перетаскивай
|
|
67
76
|
файлы на холст'»). Отступ сохранён через min-height в CSS — UI
|
|
@@ -117,13 +126,23 @@
|
|
|
117
126
|
|
|
118
127
|
<main class="main">
|
|
119
128
|
<div class="toolbar">
|
|
120
|
-
<button id="addText" disabled title="Создать пустую текстовую ноду">✏️ Написать</button>
|
|
121
|
-
<button id="genText" disabled title="Сгенерировать текст">📝 Текст</button>
|
|
122
|
-
<button id="genAudio" disabled title="Сгенерировать голос">🎙 Голос</button>
|
|
123
|
-
<button id="genImage" disabled title="Сгенерировать картинку">🖼 Картинка</button>
|
|
124
|
-
<button id="genVideo" disabled title="Сгенерировать видео">🎬 Видео</button>
|
|
125
|
-
<button id="genSfx" disabled title="Сгенерировать звуковой эффект (ElevenLabs)">💥 SFX</button>
|
|
126
|
-
<button id="genMusic" disabled title="Сгенерировать музыку (ElevenLabs)">🎵 Музыка</button>
|
|
129
|
+
<button id="addText" class="kk-edit-only" disabled title="Создать пустую текстовую ноду">✏️ Написать</button>
|
|
130
|
+
<button id="genText" class="kk-edit-only" disabled title="Сгенерировать текст">📝 Текст</button>
|
|
131
|
+
<button id="genAudio" class="kk-edit-only" disabled title="Сгенерировать голос">🎙 Голос</button>
|
|
132
|
+
<button id="genImage" class="kk-edit-only" disabled title="Сгенерировать картинку">🖼 Картинка</button>
|
|
133
|
+
<button id="genVideo" class="kk-edit-only" disabled title="Сгенерировать видео">🎬 Видео</button>
|
|
134
|
+
<button id="genSfx" class="kk-edit-only" disabled title="Сгенерировать звуковой эффект (ElevenLabs)">💥 SFX</button>
|
|
135
|
+
<button id="genMusic" class="kk-edit-only" disabled title="Сгенерировать музыку (ElevenLabs)">🎵 Музыка</button>
|
|
136
|
+
<span class="toolbar-sep kk-edit-only"></span>
|
|
137
|
+
<button data-draw-tool="pencil" class="kk-edit-only" title="Карандаш — тонкая стрелка (Esc выход, удаление через Backspace или ×)">✏</button>
|
|
138
|
+
<button data-draw-tool="lead" class="kk-edit-only" title="Грифель — средняя стрелка">𓇼</button>
|
|
139
|
+
<button data-draw-tool="paint" class="kk-edit-only" title="Краска — толстая стрелка">🖌</button>
|
|
140
|
+
<!-- View-only banner: in-place в toolbar'е (вместо edit-кнопок).
|
|
141
|
+
Видна только в body.view-only-mode (см. styles.css .kk-view-only-banner). -->
|
|
142
|
+
<div id="viewOnlyBanner" class="kk-view-only-banner">
|
|
143
|
+
<span class="kk-vo-label">👁 <b>Только просмотр</b></span>
|
|
144
|
+
<button id="viewOnlyCloneBtn" class="primary">📋 Скопировать себе</button>
|
|
145
|
+
</div>
|
|
127
146
|
<span class="spacer"></span>
|
|
128
147
|
<div class="zoom-ctl">
|
|
129
148
|
<button id="zoomOut" title="Уменьшить (Cmd −)">−</button>
|
|
@@ -131,8 +150,8 @@
|
|
|
131
150
|
<button id="zoomIn" title="Увеличить (Cmd +)">+</button>
|
|
132
151
|
</div>
|
|
133
152
|
<button id="charSettingsBtn" style="display:none;" title="Настройки персонажа">⚙</button>
|
|
134
|
-
<button id="timelineBtn" title="Показать/скрыть таймлайн">🎬 Таймлайн</button>
|
|
135
|
-
<button id="chatBtn" title="Открыть/скрыть чат с KingKont (⌘J / Ctrl+J)" onclick="window.kingChat?.toggle?.()">💬 Чат <span style="opacity:0.6; font-size:10px;">⌘J</span></button>
|
|
153
|
+
<button id="timelineBtn" class="kk-edit-only" title="Показать/скрыть таймлайн">🎬 Таймлайн</button>
|
|
154
|
+
<button id="chatBtn" class="kk-edit-only" title="Открыть/скрыть чат с KingKont (⌘J / Ctrl+J)" onclick="window.kingChat?.toggle?.()">💬 Чат <span style="opacity:0.6; font-size:10px;">⌘J</span></button>
|
|
136
155
|
<!-- скрытые, но используемые элементы (logic ссылается по id) -->
|
|
137
156
|
<span id="hint" class="path" style="display:none;"></span>
|
|
138
157
|
<span id="boardBadge" class="badge" style="display:none;"></span>
|
|
@@ -620,6 +639,9 @@
|
|
|
620
639
|
<script src="renderer/chat.js"></script>
|
|
621
640
|
<!-- notifyPanel.js — окно событий (генерации, чат-ответы, ошибки). 🔔 в углу. -->
|
|
622
641
|
<script src="renderer/notifyPanel.js"></script>
|
|
642
|
+
<!-- drawings.js — freehand-стрелки на доске (карандаш/грифель/краска).
|
|
643
|
+
После board.js — использует state.currentBoard и хук в renderConnections. -->
|
|
644
|
+
<script src="renderer/drawings.js"></script>
|
|
623
645
|
|
|
624
646
|
</body>
|
|
625
647
|
</html>
|
package/lib/providers.js
CHANGED
|
@@ -1092,8 +1092,12 @@ async function deleteTemplate(id, s) {
|
|
|
1092
1092
|
|
|
1093
1093
|
async function listProjects(s) {
|
|
1094
1094
|
const headers = chatiumAuthHeaders(s);
|
|
1095
|
-
|
|
1096
|
-
|
|
1095
|
+
// /proj_list — новый endpoint, отдаёт isPublic / shared / permission /
|
|
1096
|
+
// canModify / firstImageUrl. Старый /projects~list закеширован под
|
|
1097
|
+
// owner-only без этих полей; см. spaces/server/api/proj_list.ts.
|
|
1098
|
+
const url = chatiumBase(s) + '/app/spaces/server/api/proj_list';
|
|
1099
|
+
logCall('GET ', 'Chatium', url);
|
|
1100
|
+
const r = await fetch(url, { headers });
|
|
1097
1101
|
const text = await r.text();
|
|
1098
1102
|
let d; try { d = JSON.parse(text); } catch { d = { raw: text }; }
|
|
1099
1103
|
if (!r.ok) throw new Error(d?.error || d?.reason || `HTTP ${r.status}`);
|
|
@@ -1102,7 +1106,8 @@ async function listProjects(s) {
|
|
|
1102
1106
|
|
|
1103
1107
|
async function getProject(id, s) {
|
|
1104
1108
|
const headers = chatiumAuthHeaders(s);
|
|
1105
|
-
|
|
1109
|
+
// /proj_get — расширенный endpoint с isPublic + permission + share-grants.
|
|
1110
|
+
const url = `${chatiumBase(s)}/app/spaces/server/api/proj_get?id=${encodeURIComponent(id)}`;
|
|
1106
1111
|
logCall('GET ', 'Chatium', url);
|
|
1107
1112
|
const r = await fetch(url, { headers });
|
|
1108
1113
|
const text = await r.text();
|
package/main.js
CHANGED
|
@@ -953,10 +953,9 @@ function buildMenu() {
|
|
|
953
953
|
{ role: 'reload' },
|
|
954
954
|
{ role: 'toggleDevTools' },
|
|
955
955
|
{ type: 'separator' },
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
{ role: '
|
|
959
|
-
{ type: 'separator' },
|
|
956
|
+
// Zoom-роли (Cmd+0 / Cmd+= / Cmd+-) сознательно убраны: с zoom'ом
|
|
957
|
+
// ломалась раскладка холста и юзер случайно его триггерил при
|
|
958
|
+
// обычной правке. Если когда-то понадобится — `{ role: 'zoomIn' }`.
|
|
960
959
|
{ role: 'togglefullscreen' },
|
|
961
960
|
],
|
|
962
961
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kingkont",
|
|
3
|
-
"version": "0.20.
|
|
4
|
-
"description": "KingKont
|
|
3
|
+
"version": "0.20.9",
|
|
4
|
+
"description": "KingKont \u00b7 Chatium \u2014 \u043d\u043e\u0434-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0441\u0446\u0435\u043d \u0441 AI-\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438/\u0432\u0438\u0434\u0435\u043e/\u0433\u043e\u043b\u043e\u0441/SFX/\u043c\u0443\u0437\u044b\u043a\u0430/\u0442\u0435\u043a\u0441\u0442)",
|
|
5
5
|
"main": "main.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"kingkont": "bin/kingkont.js"
|
|
@@ -89,4 +89,4 @@
|
|
|
89
89
|
"icon": "assets/logo-1024.png"
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
}
|
|
92
|
+
}
|