@vnejs/docs 0.2.28 → 0.2.29

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/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
4
4
 
5
+ ## 0.2.29
6
+
7
+ - `core/memory` — `GET` / `SET` / `KEYS` больше не ждут `waitForModuleReg`. Все `MEMORY.REG` в `setup`: `scenario.label` / `line` / `lines`, `media.memory` (вместе с `#media`), `locs`, `history`. Незарегистрированный namespace: `GET` → `null`, `SET` no-op, `KEYS` → `[]`. Реестр — только `shared.memory` (создаётся в `Memory.postinject`). `GET` / `SET` / `KEYS` в `memory.store`, `CLEAR` в `memory.clear`. API: `shared.memory`.
8
+ - `modules_extensions/base` — в конце `inject` вызывается `postinject`, если метод есть. API: `Module.postinject()`.
9
+ - `packages/core`, `modules_extensions/base` — фаза `start` после всех `init` вместо `EVENTS.SYSTEM.STARTED` (`vne:system:started`). Перешли: `scenario.autostart`, `vendors.screen`, `cursor`, `cursor.view.set`, `layer.viewport`, `ratio`, `fps`, `gamepad.debug`, `electron`, `android`, `controls.hints.controller`, `interface.fastforward.controller`, mainmenu/save/intro/loading controllers, `mainmenu.socials.controller`, `gallery.controller`, `compatibility` text.smooth и canvas.layer/save. API: `Module.start()`, `window.unstartedModules`.
10
+ - `core/storage`, `core/settings`, `core/media`, `core/components` — провайдеры готовятся в `setup`: localforage / `shared.settings` / semaphore / `#components`. `STORAGE.INIT` и `SETTINGS.SET`/`INIT` ждут `ensureReady`. Снят `waitIsReady` / гарды `isReady` у `memory`, `media`, `mainmenu`, `logs`, `eula`, `scenario.label`, `settings.screen.controller`, `interface.fastforward.controller`. `logs` / `eula` регистрируют `SETTINGS.INIT` в `setup`. Остались `ModuleView` (`RENDER`) и `electron` (`STORAGE.CHANGED`).
11
+ - `packages/core`, `modules_extensions/base` — у всех модулей фаза `setup` до `init`: `inject → subscribe → setup → init → start`. Все `setup` завершаются раньше любого `init`. API: `Module.setup()`, `window.unsetupModules`.
12
+ - `core/stack` — перед `EMIT` / `CALL` / `JUMP` и preload jump/call на `LINE_LOAD` цепочка `PROHIBIT_REPLACE` (`isProhibited`); при запрете — `PROHIBITED` (`label`, `args`, `event` — `JUMP` / `CALL` / `EMIT` для повтора), без `LABEL_GET` и без `emitNext` на `$ stack jump/call`. `EMIT` / `JUMP` / `CALL` возвращают `false` при запрете, `true` после успешного `EMIT`. Хендлеры через `PROHIBIT_REPLACE_REG` (`return isProhibited || ownCheck`). Модуль `stack.replace`. API: `EVENTS.STACK.PROHIBIT_REPLACE`, `EVENTS.STACK.PROHIBIT_REPLACE_REG`, `EVENTS.STACK.PROHIBITED`, `CONST.STACK.LOGS_ACTIONS.PROHIBITED`, `StackProhibitReplacePayload`, `StackProhibitedPayload`.
13
+ - `vars/counters` — CHANGE / COMPARE в `vars.counters.handlers`; EXEC_INFO / EXEC_CHECK / EXEC_GET в `vars.counters.exec`; регистрация `LINE_EXEC` в `vars.counters.scenario` (бывший `vars.counters.exec`). События и payload без изменений.
14
+ - `cli/monorepo` — `run-changed` гоняет скрипты слоями графа зависимостей: внутри слоя параллельно (`--concurrency`), следующий слой ждёт предыдущий. `publish:changed:*` больше не собирает зависимый пакет, пока зависимость чистит `dist`. API: слои в dry-run / confirm; `--concurrency`, `--parallel-ms`, `--first-serial` без изменений.
15
+
5
16
  ## 0.2.26
6
17
 
7
18
  - `compatibility/views.scenario.interface/text` — TEXT → INTERFACE: `CHANGED` / `SPEAKER_CHANGED` / `EMIT_BEFORE` → `TEXT_CHANGED` / `SPEAKER_CHANGED` / `SHOW`; init `shared.interfaceTextShowAllTokensOnChange`. API: `@vnejs/compatibility.views.scenario.interface-with-text`.
package/architecture.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  - **`Observer`** — шина событий; модули подписываются (`on`) и публикуют (`emit`) по строковым ключам.
10
10
  - **`VNE`** — реестр, заполняемый при загрузке: `CONST`, `EVENTS`, `SETTINGS`, `PARAMS` — по namespace каждого плагина.
11
- - **`VneCore`** — runtime: собирает зарегистрированные модули, инжектит зависимости и запускает lifecycle (`inject → subscribe → init`).
11
+ - **`VneCore`** — runtime: собирает зарегистрированные модули, инжектит зависимости и запускает lifecycle (`inject → subscribe → setup → init → start`).
12
12
 
13
13
  Регистрация происходит **side-effect импортами** — при импорте пакета код сразу вызывает `regPlugin` или `regModule`, не дожидаясь явного вызова API.
14
14
 
@@ -263,9 +263,11 @@ flowchart LR
263
263
 
264
264
  Плагин — **набор модулей** с уникальным `name`. После `new VneCore()`:
265
265
 
266
- 1. **`inject`** — observer, global state, shared, media.
266
+ 1. **`inject`** — observer, global state, shared, media. В конце, если метод есть, вызывается `postinject`.
267
267
  2. **`subscribe`** — подписки на события.
268
- 3. **`init`** — асинхронная инициализация.
268
+ 3. **`setup`** — подготовка до `init` (все `setup` завершаются раньше любого `init`).
269
+ 4. **`init`** — асинхронная инициализация.
270
+ 5. **`start`** — после всех `init` (все `init` завершаются раньше любого `start`).
269
271
 
270
272
  ```mermaid
271
273
  sequenceDiagram
@@ -503,7 +505,7 @@ flowchart TD
503
505
 
504
506
  1. `bundles/` регистрирует `plugins/` и `compatibility/` в `VNE`.
505
507
  2. `cli/` собирает сценарий в JSON и клиент в `dist/`.
506
- 3. `new VneCore().init()` — модули, media, `SYSTEM.STARTED`.
508
+ 3. `new VneCore().init()` — модули, media, lifecycle до `start`.
507
509
  4. Игра живёт на событиях шины; cross-plugin связи — через `compatibility/` из `bundles/`.
508
510
 
509
511
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/docs",
3
- "version": "0.2.28",
3
+ "version": "0.2.29",
4
4
  "description": "VNEJS documentation for engine consumers and coding agents",
5
5
  "files": [
6
6
  "*.md",
@@ -29,7 +29,7 @@ React/DOM-контейнер для монтирования view-компоне
29
29
 
30
30
  | Модуль | Зона ответственности |
31
31
  | ------------------- | ------------------------------------------------------------------------------------------------------ |
32
- | `components.render` | Создаёт `#components` в DOM; обрабатывает `RENDER`; инициализирует `shared.viewForceAnimationSources`. |
32
+ | `components.render` | В `setup` создаёт `#components` в DOM и `shared.viewForceAnimationSources`; обрабатывает `RENDER`. |
33
33
  | `components.inject` | Регистрация и последовательный вызов inject-обработчиков на `INJECT` / `INJECT_REG`. |
34
34
  | `components.logs` | Логирование `RENDER` (результат фильтруется из ответа emit). |
35
35
 
@@ -25,13 +25,13 @@
25
25
 
26
26
  | Ключ | Тип | Смысл |
27
27
  | ------------------------------ | --------- | ------------------------------------------------------------ |
28
- | `ENABLED` (`vne:logs:enabled`) | `boolean` | Включено ли логирование; инициализируется при старте модуля. |
28
+ | `ENABLED` (`vne:logs:enabled`) | `boolean` | Включено ли логирование; `SETTINGS.INIT` в `setup`. |
29
29
 
30
30
  ## Модули
31
31
 
32
32
  | Модуль | Зона ответственности |
33
33
  | ------ | ----------------------------------------------------------------------------- |
34
- | `logs` | Очередь логов, `EMIT`/`PUSH`/`LOAD`/`CLEAR`; регистрация настройки `ENABLED`. |
34
+ | `logs` | Очередь логов, `EMIT`/`PUSH`/`LOAD`/`CLEAR`; регистрация настройки `ENABLED` в `setup`. |
35
35
 
36
36
  ## Близкие плагины
37
37
 
@@ -39,9 +39,9 @@
39
39
 
40
40
  | Модуль | Зона ответственности |
41
41
  | --------------- | ----------------------------------------------------------------------------------------------------------------------------- |
42
- | `media.load` | Semaphore-gated load, dedup, делегирование в process/memory. Слот всегда освобождается (`finally`), даже если process reject. |
42
+ | `media.load` | Semaphore в `setup`; gated load, dedup, делегирование в process/memory. Слот всегда освобождается (`finally`), даже если process reject. |
43
43
  | `media.process` | Fetch blob и создание DOM-медиа. HTTP не-ok и timeout fetch → `ERROR_FETCH`, без `SET`. |
44
- | `media.memory` | REG в memory, монтирование элементов в скрытый `#media`. |
44
+ | `media.memory` | В `setup`: скрытый `#media` и `MEMORY.REG` (`onAdd` / `onClear`). |
45
45
  | `media` | Высокоуровневый get/set. `GET` возвращает `null`, если asset нет или не готов (битая картинка, error). |
46
46
  | `media.logs` | Логирование lifecycle media. |
47
47
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Пакет: `@vnejs/plugins.core.memory` · namespace: `MEMORY`
4
4
 
5
- In-memory кэш с reference counting по namespace модуля; используется media, scenario и др.
5
+ In-memory кэш с reference counting по namespace модуля; используется media, scenario и др. Реестр namespace — `shared.memory`, создаётся в `Memory.postinject`.
6
6
 
7
7
  ## События
8
8
 
@@ -29,9 +29,11 @@ In-memory кэш с reference counting по namespace модуля; исполь
29
29
 
30
30
  ## Модули
31
31
 
32
- | Модуль | Зона ответственности |
33
- | -------- | ----------------------------------------------------------- |
34
- | `memory` | Единый модуль: reg/get/set/keys/clear и reference counting. |
32
+ | Модуль | Зона ответственности |
33
+ | -------------- | ------------------------------------------------------------------------------------------------------------- |
34
+ | `memory` | `REG` и `shared.memory = {}` в `postinject`. |
35
+ | `memory.store` | `GET` / `SET` / `KEYS` через `shared.memory`. Не ждут `REG` — namespace регистрируют в `setup`. Незарегистрированный: `GET` → `null`, `SET` no-op, `KEYS` → `[]`. |
36
+ | `memory.clear` | `CLEAR`: уменьшает счётчики в `shared.memory`, удаляет записи с нулевым счётчиком, `onClear`, затем `CLEARED`. |
35
37
 
36
38
  ## Близкие плагины
37
39
 
@@ -39,18 +39,18 @@
39
39
 
40
40
  | Поле | Тип | Смысл |
41
41
  | ------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
42
- | `shouldAutostartScenario` | `boolean` | На `SYSTEM.STARTED` модуль `scenario.autostart` эмитит `LABEL_GET` (init) и `NEXT`, только если не `false`. В `init` ставится `true` через `??=`; другие плагины могут выставить `false`. `STATE.CLEAR` по-прежнему грузит init label в `scenario.label` без этого гейта. |
42
+ | `shouldAutostartScenario` | `boolean` | В `start` модуль `scenario.autostart` эмитит `LABEL_GET` (init) и `NEXT`, только если не `false`. В `init` ставится `true` через `??=`; другие плагины могут выставить `false`. `STATE.CLEAR` по-прежнему грузит init label в `scenario.label` без этого гейта. |
43
43
 
44
44
  ## Модули
45
45
 
46
46
  | Модуль | Зона ответственности |
47
47
  | -------------------- | ------------------------------------------------------------------------------------------------------------ |
48
48
  | `scenario` | Главный цикл `NEXT`, exec строк, sync state. |
49
- | `scenario.autostart` | Дефолт `shared.shouldAutostartScenario`; на `SYSTEM.STARTED` — init label + `emitNext` при включённом флаге. |
49
+ | `scenario.autostart` | Дефолт `shared.shouldAutostartScenario`; в `start` — init label + `emitNext` при включённом флаге. |
50
50
  | `scenario.exec` | Dispatch `$module` / `%block`, registry handlers, `EXEC_DELAY`. |
51
- | `scenario.label` | `LABEL_GET`, preload меток; init label на `STATE.CLEAR`. Одна упавшая строка не валит всю метку. |
52
- | `scenario.line` | `LINE_LOAD` / `LINE_GET`, registry preload handlers. Executor `LINE_GET` всегда resolve. |
53
- | `scenario.lines` | Fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
51
+ | `scenario.label` | `LABEL_GET`, preload меток; `MEMORY.REG` в `setup`; init label на `STATE.CLEAR`. Одна упавшая строка не валит всю метку. |
52
+ | `scenario.line` | `MEMORY.REG` в `setup`; `LINE_LOAD` / `LINE_GET`, registry preload handlers. Executor `LINE_GET` всегда resolve. |
53
+ | `scenario.lines` | `MEMORY.REG` в `setup`; fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
54
54
 
55
55
  ## Близкие плагины
56
56
 
@@ -28,7 +28,7 @@
28
28
 
29
29
  | Модуль | Зона ответственности |
30
30
  | --------------- | --------------------------------------------------------------------- |
31
- | `settings` | Load из storage при init; `SET` / `INIT`; запись в `shared.settings`. |
31
+ | `settings` | Load из storage при `setup` (`ensureReady`); `SET` / `INIT` тоже ждут `ensureReady`. |
32
32
  | `settings.logs` | Логирование set/init/changed. |
33
33
 
34
34
  ## Близкие плагины
@@ -6,18 +6,21 @@
6
6
 
7
7
  ## События
8
8
 
9
- | Ключ | Строка | Смысл |
10
- | ---------- | -------------------- | --------------------------------------------------------------------------------------------------------- |
11
- | `EMIT` | `vne:stack:emit` | Перейти на метку: сброс `curLine`, clone args, preload label, clear memory. Payload: `{ label?, args? }`. |
12
- | `POP` | `vne:stack:pop` | Вернуться к предыдущей позиции в стеке или сбросить игру, если стек пуст. |
13
- | `CLEAR` | `vne:stack:clear` | Сбросить глобальный state и продолжить сценарий. |
14
- | `JUMP` | `vne:stack:jump` | Переход на метку без push в стек (делегирует в `EMIT`). |
15
- | `CALL` | `vne:stack:call` | Push текущей позиции, затем `EMIT` новой метки. |
16
- | `EXEC_ARG` | `vne:stack:exec_arg` | По токену строки вернуть значение аргумента из верхнего frame. Payload: `{ line? }`. |
9
+ | Ключ | Строка | Смысл |
10
+ | --------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
+ | `EMIT` | `vne:stack:emit` | Перейти на метку: сброс `curLine`, clone args, preload label, clear memory. Payload: `{ label?, args? }`. Перед переходом — `PROHIBIT_REPLACE`; при запрете — `PROHIBITED`, без `LABEL_GET`. |
12
+ | `POP` | `vne:stack:pop` | Вернуться к предыдущей позиции в стеке или сбросить игру, если стек пуст. |
13
+ | `CLEAR` | `vne:stack:clear` | Сбросить глобальный state и продолжить сценарий. |
14
+ | `JUMP` | `vne:stack:jump` | Переход на метку без push в стек (делегирует в `EMIT`). |
15
+ | `CALL` | `vne:stack:call` | `PROHIBIT_REPLACE`, затем push текущей позиции и `EMIT`. При запрете — `PROHIBITED`, без push. |
16
+ | `EXEC_ARG` | `vne:stack:exec_arg` | По токену строки вернуть значение аргумента из верхнего frame. Payload: `{ line? }`. |
17
+ | `PROHIBIT_REPLACE` | `vne:stack:prohibit_replace` | Цепочка `ModuleReplace`: можно ли идти на `label`. Payload: `{ label?, isProhibited? }`. Старт `isProhibited: false`. Возврат — итоговое `isProhibited`. |
18
+ | `PROHIBIT_REPLACE_REG` | `vne:stack:prohibit_replace_reg` | Зарегистрировать обработчик `PROHIBIT_REPLACE`. `{ handler, priority? }`. Не блокирующий хендлер: `return isProhibited`; запрет: `return isProhibited \|\| ownCheck`. |
19
+ | `PROHIBITED` | `vne:stack:prohibited` | Переход запрещён. Payload: `{ label?, args?, event? }` — `event` это `JUMP` / `CALL` / `EMIT`, чтобы повторить переход. `$ stack jump/call` при запрете не делает `emitNext`. |
17
20
 
18
21
  ## Константы
19
22
 
20
- - **`LOGS_ACTIONS`** — `emit`, `call`, `jump`, `pop`, `clear`.
23
+ - **`LOGS_ACTIONS`** — `emit`, `call`, `jump`, `pop`, `clear`, `prohibited`.
21
24
  - **`EXEC_ACTIONS`** — действия в строках `$stack`: `jump`, `call`, `pop`.
22
25
 
23
26
  ## Параметры
@@ -30,16 +33,17 @@
30
33
 
31
34
  ## Модули
32
35
 
33
- | Модуль | Зона ответственности |
34
- | ------------- | ------------------------------------------------------------------- |
35
- | `stack` | State стека; обработка `EMIT`; sync на `STATE.SET` / `CLEAR`. |
36
- | `stack.call` | Push frame + jump. |
37
- | `stack.jump` | Jump без сохранения. |
38
- | `stack.pop` | Pop frame. |
39
- | `stack.clear` | Clear state + next. |
40
- | `stack.args` | Резолв аргументов из строки сценария. |
41
- | `stack.exec` | Регистрация `$stack` handlers в scenario (jump/call/pop + preload). |
42
- | `stack.logs` | Логирование операций стека. |
36
+ | Модуль | Зона ответственности |
37
+ | --------------- | ------------------------------------------------------------------------------------------------------------- |
38
+ | `stack` | State стека; обработка `EMIT` (`PROHIBIT_REPLACE` → переход или `PROHIBITED`); sync на `STATE.SET` / `CLEAR`. |
39
+ | `stack.call` | `PROHIBIT_REPLACE`, затем push frame + `EMIT`. |
40
+ | `stack.jump` | Jump без сохранения. |
41
+ | `stack.pop` | Pop frame. |
42
+ | `stack.clear` | Clear state + next. |
43
+ | `stack.args` | Резолв аргументов из строки сценария. |
44
+ | `stack.exec` | Регистрация `$stack` handlers в scenario (jump/call/pop + preload). На `LINE_LOAD` jump/call — `PROHIBIT_REPLACE` до `LABEL_GET`. `onLineExec`: `emitNext` только если jump/call не вернули `false` (запрет); `pop` — как раньше. |
45
+ | `stack.replace` | Реестр обработчиков `PROHIBIT_REPLACE_REG`; наследник `@vnejs/module.replace`; `REPLACE_KEY` — `isProhibited`. |
46
+ | `stack.logs` | Логирование операций стека, в т.ч. `PROHIBITED`; в `init` регистрирует хендлер `PROHIBIT_REPLACE` (пропускает флаг). |
43
47
 
44
48
  ## Близкие плагины
45
49
 
@@ -40,7 +40,7 @@
40
40
  | `RM` | `vne:storage:rm` | Удалить один ключ. |
41
41
  | `RM_ALL` | `vne:storage:rm_all` | Удалить ключи модуля; с `group` — только группа. |
42
42
  | `KEYS` | `vne:storage:keys` | Список всех физических ключей в store. |
43
- | `INIT` | `vne:storage:init` | Инициализация IndexedDB driver, ожидание ready. |
43
+ | `INIT` | `vne:storage:init` | Инициализация IndexedDB driver, ожидание ready (`ensureReady`, не `isReady`). |
44
44
  | `CHANGED` | `vne:storage:changed` | В хранилище произошла запись, обновление или удаление. |
45
45
  | `IMPORT` | `vne:storage:import` | Заменить всё содержимое store данными из JSON-файла и перезагрузить страницу. |
46
46
  | `EXPORT` | `vne:storage:export` | Скачать всё хранилище как JSON. |
@@ -71,7 +71,7 @@
71
71
 
72
72
  | Модуль | Зона ответственности |
73
73
  | ----------------- | ----------------------------------------------- |
74
- | `storage` | Init localforage, `KEYS`, `CHANGED`, `INIT`. |
74
+ | `storage` | localforage в `setup` / `ensureReady`; `KEYS`, `CHANGED`, `INIT`. |
75
75
  | `storage.get` | `GET` / `GET_ALL`. |
76
76
  | `storage.set` | `SET` / `SET_ALL`. |
77
77
  | `storage.rm` | `RM` / `RM_ALL`. |
@@ -6,10 +6,9 @@
6
6
 
7
7
  ## События
8
8
 
9
- | Ключ | Строка | Смысл |
10
- | -------------- | ------------------------- | -------------------------------------------------------------------- |
11
- | `STARTED` | `vne:system:started` | Движок инициализирован: все модули ready, media-манифесты загружены. |
12
- | `RESIZE` | `vne:system:resize` | Изменились размеры окна приложения. |
9
+ | Ключ | Строка | Смысл |
10
+ | -------------- | ------------------------- | ----------------------------------------------------------- |
11
+ | `RESIZE` | `vne:system:resize` | Изменились размеры окна приложения. |
13
12
  | `RELOAD` | `vne:system:reload` | Перезагрузка страницы после фазы `CLOSE_BEFORE`. |
14
13
  | `FULLSCREEN` | `vne:system:fullscreen` | Переключение полноэкранного режима документа. |
15
14
  | `CLOSE` | `vne:system:close` | Закрытие окна приложения после фазы `CLOSE_BEFORE`. |
@@ -37,7 +37,7 @@
37
37
 
38
38
  | Модуль | Зона ответственности |
39
39
  | ------ | -------------------------------- |
40
- | `locs` | Обрабатывает LOAD, GET, CHANGED. |
40
+ | `locs` | `MEMORY.REG` в `setup`; LOAD, GET, CHANGED; `SETTINGS.INIT` / inject / replace в `init`. |
41
41
 
42
42
  ## Близкие плагины
43
43
 
@@ -45,7 +45,7 @@
45
45
 
46
46
  Пакет: `@vnejs/compatibility.views.scenario.interface-with-text.smooth`
47
47
 
48
- Связка с [interface.md](../views.scenario/interface.md): `CHANGED` → `INTERFACE.TEXT_CHANGED` (`tokens` из `globalState.text`, `tokensVisible`, `uid`). `SYSTEM.STARTED` сбрасывает `shared.interfaceTextShowAllTokensOnChange`.
48
+ Связка с [interface.md](../views.scenario/interface.md): `CHANGED` → `INTERFACE.TEXT_CHANGED` (`tokens` из `globalState.text`, `tokensVisible`, `uid`). `start` сбрасывает `shared.interfaceTextShowAllTokensOnChange`.
49
49
 
50
50
  ## Близкие плагины
51
51
 
@@ -30,10 +30,12 @@
30
30
 
31
31
  ## Модули
32
32
 
33
- | Модуль | Зона ответственности |
34
- | -------------------- | ------------------------------------------ |
35
- | `vars.counters` | Обрабатывает SET, GET, CHANGE, COMPARE, …. |
36
- | `vars.counters.exec` | Подмодуль `counters.exec` плагина. |
33
+ | Модуль | Зона ответственности |
34
+ | ------------------------ | ------------------------------------------------------------ |
35
+ | `vars.counters` | Обрабатывает SET, GET; регистрирует DEFAULT_REG. |
36
+ | `vars.counters.handlers` | Обрабатывает CHANGE, COMPARE. |
37
+ | `vars.counters.exec` | Обрабатывает EXEC_INFO, EXEC_CHECK, EXEC_GET. |
38
+ | `vars.counters.scenario` | Регистрирует LINE_EXEC для module/block (`$/% counter`). |
37
39
 
38
40
  ## Близкие плагины
39
41
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  | Модуль | Зона ответственности |
40
40
  | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
41
- | `controls.hints.controller` | Preload иконок на `SYSTEM.STARTED` / `MEMORY.CLEARED`; show/hide групп; `DEVICE_CHANGED`; `COMPONENTS.EXTERNAL_UPDATE` → `updateViewFast`. |
41
+ | `controls.hints.controller` | Preload иконок в `start` и на `MEMORY.CLEARED`; show/hide групп; `DEVICE_CHANGED`; `COMPONENTS.EXTERNAL_UPDATE` → `updateViewFast`. |
42
42
  | `controls.hints.view` | Рендер нескольких `View` + `Flex` + `Icon` + `Text`. |
43
43
 
44
44
  ## Близкие плагины
@@ -70,7 +70,7 @@
70
70
 
71
71
  Пакет: `@vnejs/compatibility.views.scenario.interface-with-text.smooth`
72
72
 
73
- На `TEXT_SMOOTH.CHANGED` эмитит `INTERFACE.TEXT_CHANGED` с `tokens` из `globalState.text`, `tokensVisible` и `uid`. На `SYSTEM.STARTED` ставит `shared.interfaceTextShowAllTokensOnChange` в `false`.
73
+ На `TEXT_SMOOTH.CHANGED` эмитит `INTERFACE.TEXT_CHANGED` с `tokens` из `globalState.text`, `tokensVisible` и `uid`. В `start` ставит `shared.interfaceTextShowAllTokensOnChange` в `false`.
74
74
 
75
75
  ## Близкие плагины
76
76
 
@@ -42,7 +42,7 @@
42
42
  | `eula.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP` / `ARROW_BOTTOM` по строкам текста; пустые строки через `isArrowItemAvailable`; смена `SETTINGS.EULA.LANG` сбрасывает индекс; PUSH/POP на SHOW/HIDE; эмитит `STATE_UPDATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
43
43
  | `eula.controller.accept` | Наследует `@vnejs/module.controller.accept`: только `ACCEPT` (`IS_INTERACT_ENABLED = false`) → `EULA.ACCEPT` → `ACCEPTED_VERSION`, `HIDE`; PUSH/POP на SHOW/HIDE. |
44
44
  | `eula.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
45
- | `eula` | `MAINMENU.SHOW` → `SHOW` (если версия не принята); `EXIT` → `SYSTEM.CLOSE`. |
45
+ | `eula` | В `setup` — `SETTINGS.INIT` для версии и языка; `MAINMENU.SHOW` → `SHOW` (если версия не принята); `EXIT` → `SYSTEM.CLOSE`. |
46
46
  | `eula.view` | Подмодуль `view` плагина. |
47
47
 
48
48
  ## Близкие плагины
@@ -48,7 +48,7 @@
48
48
  | `history.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP` / `ARROW_BOTTOM` по записям журнала; PUSH/POP controls на SHOW/HIDE; эмитит `STATE_UPDATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
49
49
  | `history.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
50
50
  | `history.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` → `HIDE` с `{ isForce: true }` (`IS_STATE_CLEAR_ENABLED = false`). |
51
- | `history` | Обрабатывает ADD, GET, LOAD, BACK, …. |
51
+ | `history` | `MEMORY.REG` в `setup`; ADD, GET, LOAD, BACK, …. |
52
52
  | `history.view` | Подмодуль `view` плагина. |
53
53
 
54
54
  ## Compatibility