kingkont 0.20.32 → 0.20.34

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/renderer/board.js +16 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kingkont",
3
- "version": "0.20.32",
3
+ "version": "0.20.34",
4
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": {
package/renderer/board.js CHANGED
@@ -3615,13 +3615,25 @@ async function checkExternalChanges() {
3615
3615
  stopExternalWatcher();
3616
3616
  return;
3617
3617
  }
3618
- // Если у нас сейчас pending save (saveTimer != null в media.js) — пропускаем
3619
- // тик; иначе сравним свой grace-mtime с актуальным после нашего же flush.
3620
- // Для простоты не лезем в saveTimer dirty флаг покрывает этот сценарий.
3618
+ // Во время активной генерации НЕ реагируем на изменения mtime. Юзер:
3619
+ // «больше с этими файлами никто не работает, это происходит во время
3620
+ // генерации». pollJob и mutateNode регулярно мутируют scene.json через
3621
+ // scheduleSave (статус «submitting» → «queued» → «generating»…), и
3622
+ // микросекундная рассинхронизация между нашим записанным mtime и
3623
+ // snapshot'ом `lastDiskMtime` приводила к ложным алертам «изменён извне».
3624
+ // Watcher остаётся осмысленным для CLI / git-pull / другого редактора —
3625
+ // те случаи естественно происходят когда генерации не запущены.
3626
+ if (state.jobs && state.jobs.size > 0) return;
3627
+ // Grace-period 2s после последнего нашего save: на случай если только
3628
+ // что отстреливший save обновил lastDiskMtime с лагом и watcher попал
3629
+ // в окно «mtime записан, snapshot ещё обновляется». 2s достаточно для
3630
+ // любых внутренних async-цепочек, но мало чтобы реально пропустить
3631
+ // внешнее изменение — watcher подхватит его через следующие 3s тика.
3632
+ const GRACE_MS = 2000;
3621
3633
  const mtime = await _readSceneMtime(state.currentBoard.handle);
3622
3634
  if (mtime == null || state.currentBoard.lastDiskMtime == null)
3623
3635
  return;
3624
- if (mtime <= state.currentBoard.lastDiskMtime)
3636
+ if (mtime <= state.currentBoard.lastDiskMtime + GRACE_MS)
3625
3637
  return;
3626
3638
  // Обнаружено внешнее изменение.
3627
3639
  _externalReloadInFlight = true;