170 Commits

Author SHA1 Message Date
min
2f9d6a21f6 fix(rbxl-importer): CORS preflight + открыт для всех
Фронт студии (studio.rublox.pro) делал POST /import/rbxl/analyze
на minecraftia-school.ru/api-rbxl, preflight (OPTIONS) не получал
Access-Control-Allow-Origin → CORS ошибка.

Фиксы:
- after_request гарантированно ставит CORS-заголовки на ВСЕ ответы
  (включая OPTIONS) — раньше flask-cors иногда их не отдавал
- Явный handler для OPTIONS /import/rbxl/analyze + create
- Headers: Allow-Origin=*, Allow-Methods, Allow-Headers content-type+x-user-id
- Убрал ALLOWED_USER_IDS=[1] (импорт открыт всем — кнопка
  в UI уже без гейтинга, см. вики «Импорт из Roblox»)

Деплой: вручную через SSH на VM 130 (rbxl-importer не имеет CI/CD).
2026-06-10 01:27:48 +03:00
min
b03027e3d5 merge main (синхрон перед PR графики)
Some checks failed
CI / Lint (pull_request) Failing after 1m5s
CI / Build (pull_request) Successful in 1m58s
CI / Secret scan (pull_request) Successful in 27s
CI / PR size check (pull_request) Successful in 12s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
# Conflicts:
#	src/editor/engine/BabylonScene.js
2026-06-10 01:27:04 +03:00
min
8ccea76dc0 feat(studio): система графики/эффектов (шейдеры) + материалы + перенос Оформления
GraphicsManager: постобработка (bloom/FXAA/виньетка/цветокор/DoF) + тени/SSAO,
10 пресетов, mobile-safe, выкл по умолчанию. Новые материалы примитивов
(chrome/water/iridescent + улучшены glass/neon). API game.graphics.*. Графика +
Стартовый экран (Ken Burns) + Экран загрузки вынесены из Настроек в новый
GameDecorModal, открываются из вкладки «Игра» (группа «Оформление»). Вики-раздел
«Графика и эффекты» (GR1-GR4) + AI-контекст обновлён.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 01:24:30 +03:00
min
f7441b0bd6 feat: 50 ��� �� Lua + ������ Roblox ��� ���� + ������ ����
Some checks failed
CI / Lint (push) Failing after 1m8s
CI / Build (push) Successful in 1m58s
CI / Secret scan (push) Successful in 23s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m28s
2026-06-09 21:59:19 +00:00
min
9e89fb1936 Merge pull request 'Team Create: ������� GUI, ����� � userModels' (#37) from restore/all-tasks into main
All checks were successful
CI / Lint (push) Successful in 1m11s
CI / Build (push) Successful in 1m58s
CI / Secret scan (push) Successful in 21s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m27s
2026-06-08 04:05:13 +00:00
min
b95e5c7401 merge main (синхрон перед PR GUI/папок/моделей)
All checks were successful
CI / Lint (pull_request) Successful in 1m7s
CI / Build (pull_request) Successful in 1m59s
CI / Secret scan (pull_request) Successful in 23s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-08 06:56:30 +03:00
min
4757bf95a0 feat(studio): Team Create — синхрон GUI, папок и userModels
Дополнил коллаб-синхрон: GUI-элементы (guiManager create/update/remove),
папки (folderManager createFolder/renameFolder/removeFolder, id выравнивается
у соавторов через Map), пользовательские модели (userModelManager addInstance
с forceInstanceId / removeInstance). Списки в Hierarchy обновляются штатным
setInterval. Теперь синхронятся: примитивы, модели, блоки, скрипты, GUI,
папки, userModels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 06:56:19 +03:00
min
d45a55031f Merge pull request 'Team Create: ������� �������� + ����� 5 ���������' (#36) from restore/all-tasks into main
All checks were successful
CI / Lint (push) Successful in 1m8s
CI / Build (push) Successful in 1m58s
CI / Secret scan (push) Successful in 22s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m28s
2026-06-08 03:39:29 +00:00
min
73d7ae4765 merge main (синхрон перед PR синхрона скриптов)
All checks were successful
CI / Lint (pull_request) Successful in 1m6s
CI / Build (pull_request) Successful in 1m59s
CI / Secret scan (pull_request) Successful in 28s
CI / PR size check (pull_request) Successful in 10s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-08 06:28:56 +03:00
min
58edaef2ab fix(studio): Team Create — синхрон скриптов (upsertScript/removeScript)
Раньше синхронизировались только примитивы/модели/блоки, а скрипты нет —
у соавтора было 0 скриптов. Перехватываем scene.upsertScript/removeScript,
шлём op scriptUpsert/scriptRemove; applyRemoteOp применяет их у соавтора
(список в Hierarchy обновляется штатным setInterval). Лимит соавторов 5
(MAX_COLLABORATORS в realtime StudioRoom, задеплоен на VM110).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 06:28:45 +03:00
min
dbd23e474a Merge pull request 'feat: импорт Roblox .rbxl карт (тест-фича МИНа)' (#33) from feat/rbxl-import into main
All checks were successful
CI / Lint (push) Successful in 1m8s
CI / Build (push) Successful in 1m59s
CI / Secret scan (push) Successful in 21s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m24s
2026-06-08 03:25:58 +00:00
min
2b98d8338b Merge remote-tracking branch 'origin/main' into feat/rbxl-import
All checks were successful
CI / Lint (pull_request) Successful in 1m8s
CI / Build (pull_request) Successful in 2m8s
CI / Secret scan (pull_request) Successful in 23s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
# Conflicts:
#	src/editor/HierarchyPanel.jsx
2026-06-08 06:24:27 +03:00
min
9caea93d32 feat(rbxl-import): single-VM Lua runtime + GUI tree + Touched/click events
All checks were successful
CI / Lint (pull_request) Successful in 1m6s
CI / Build (pull_request) Successful in 1m58s
CI / Secret scan (pull_request) Successful in 23s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
ITERATION 6 (single-VM rewrite):
  - RobloxLuaSharedWorker: один wasmoon-state на 742 скрипта (не 742 VM)
  - Pre-populated Workspace + Player.PlayerGui перед addScripts
  - На каждом Part — Touched/TouchEnded сигналы; на каждом TextButton —
    MouseButton1Click/Activated/MouseEnter/Leave; Humanoid с Died/Health
  - Двухфазный init: addScriptsBatch ВСЕ скрипты → kickoff() с PlayerAdded
  - wait()/task.wait/task.spawn/task.delay через scheduler+coroutines
  - guiClick от Rublox-GUI → fireEvent → инстанс.MouseButton1Click.Fire()
  - playerTouch → part.Touched.Fire(HumanoidRootPart) + humanoid.Touched

ITERATION 7 (nullStub compatibility):
  - debug.setmetatable(nil, ...) + debug.setmetatable(function() end, ...)
    с полным набором __index/__newindex/__call/__add/__sub/.../__len/__concat
  - Возврат undefined из FindFirstChild/WaitForChild (вместо JS proxy)
  - Lua-side __null_stub_singleton с Connect/connect/Wait/Fire (lowercase aliases)
  - __rbxl_lookup_part через __rbxl_parts_by_id table (не ipairs на JS array)
  - script.Parent гарантированно не nil (либо реальный Part либо null stub)
  - RbxSignal: Connect+connect, Wait+wait, Fire+fire, Disconnect+disconnect
  - SIGNAL_NAMES whitelist расширен: Tool (Selected/Equipped), Remote (OnInvoke),
    ChatMakeSystemMessage, etc.

Converter:
  - GUI: UDim2 dataclass правильно резолвится (scale*100 + offset/viewport*100)
  - размеры в процентах (как Rublox-GuiOverlay ожидает)
  - ScreenGui.Enabled → пропагируется в детей
  - Эвристика скрыть HD Admin/Chat/CommandBar/TeleportTo модалки
  - rbxasset:// rbxassetid:// фильтруются на пустой URL

Hierarchy:
  - scroll-to-selected раскрывает workspace+rootPrims+folders перед scroll
  - data-sel-id на всех ItemRow с rAF×2 timing

Известные ограничения:
  - Synapse X obfuscated скрипты часто всё равно падают (требуют конкретный Roblox-VM)
  - но debug.setmetatable перехват не даёт скриптам валиться на indexing/arithmetic
  - реальные пользовательские KillBrick (Touched) теперь работают
  - GUI кнопки → MouseButton1Click работают

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 06:18:55 +03:00
min
7cbcdce6f9 Merge pull request 'Fix Team Create: ����� �������� ������ � ������, ������ ����� ����, ���� �� �������' (#35) from restore/all-tasks into main
All checks were successful
CI / Lint (push) Successful in 1m7s
CI / Build (push) Successful in 1m56s
CI / Secret scan (push) Successful in 22s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m25s
2026-06-08 03:07:24 +00:00
min
9c990bb80c merge main (синхрон перед PR фиксов Team Create)
All checks were successful
CI / Lint (pull_request) Successful in 1m4s
CI / Build (pull_request) Successful in 1m54s
CI / Secret scan (pull_request) Successful in 33s
CI / PR size check (pull_request) Successful in 15s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-08 05:58:06 +03:00
min
c0613853a2 fix(studio): Team Create — экран загрузки только в плеере, коллаб новой игры, вход по инвайту
1) Стартовый экран загрузки больше НЕ показывается в студии при тестовом
запуске (scene._editorMode), только в плеере на rublox.pro «Играть».
2) Новая игра: коллаб-сессия поднимается сразу после первого сохранения
(без перезагрузки) + кнопка «Пригласить» авто-сохраняет проект.
3) Незалогиненный по collab-ссылке → форма входа rublox.pro/login (origin без
/app, был 404) с ?return → возврат на инвайт-ссылку.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 05:57:55 +03:00
min
70731dae31 Merge pull request 'Team Create (���������� ��������������) + ���������� ���� + ������ 16/17/20/40/44/05' (#34) from restore/all-tasks into main
Some checks failed
CI / Secret scan (push) Successful in 21s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m31s
CI / Lint (push) Has been cancelled
CI / Build (push) Has been cancelled
2026-06-08 01:12:57 +00:00
min
6943e93818 ci: перезапуск (build-job упал на docker RWLayer/volume — flaky раннер, не код)
Some checks failed
CI / Build (pull_request) Successful in 2m2s
CI / Secret scan (pull_request) Successful in 22s
CI / PR size check (pull_request) Successful in 8s
CI / Lint (pull_request) Has been cancelled
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 03:38:40 +03:00
min
e48338376a merge main into restore/all-tasks (синхрон перед PR)
Some checks failed
CI / Build (pull_request) Failing after 1m55s
CI / Lint (pull_request) Has been cancelled
CI / PR size check (pull_request) Successful in 8s
CI / Secret scan (pull_request) Failing after 14m39s
CI / Deploy to S1 + S2 (pull_request) Has been cancelled
2026-06-08 03:28:29 +03:00
min
ab11ac0b4e docs(studio): вики — рецепты скриптов, контекст для нейронки, Team Create, актуализация
Новые разделы: «Скрипты: рецепты» (S1-S12: килблок/касание/исчезновение/телепорт/
свойства примитивов/таймеры/враги/сохранение), «Контекст для нейронки» (полный
game-API одним copy-paste блоком для ChatGPT), «Вместе с друзьями» (V1-V3 Team
Create). Раздел «Системы» дополнен G7-G12 (лидерборды/floaters/инвентарь/небо/
меню/машины). Иконка users. 80 секций вики.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 03:27:41 +03:00
min
fbf7ef680b feat(studio): Team Create — совместное редактирование игры в реальном времени
StudioCollab (Colyseus studio-room): синхрон операций примитивов/моделей/блоков,
presence (курсоры/камера/выделение), soft-lock объектов, перехват менеджеров.
CollabOverlay: DOM-курсоры соавторов + онлайн-аватарки + тосты. Кнопки
«Скины»+«Пригласить» в TopRibbon вкладка «Игра». Гость-режим (скрыты
Настройки/Сохранить/Опубликовать). Autosave только host. Вход по ?collab-токену.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 03:27:38 +03:00
min
513c9ce26f fix(hierarchy): scroll-to-selected раскрывает workspace+группы+папки
Бага: при выделении объекта в 3D-сцене иерархия не скроллила к нему
потому что:
  - workspaceOpen=false скрывал всю секцию Сцены
  - rootPrimsOpen/rootBlocksOpen/rootModelsOpen=false скрывали корневые
    группы
  - openFolders=пустой Set скрывал все папки с импортированной геометрией

Фикс: effect раскрывает все секции содержащие выбранный объект перед
скроллом. После раскрытия использует rAF×2 чтобы дать React дорендерить
ItemRow'ы, потом scrollIntoView.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 02:21:29 +03:00
min
cc6447b851 fix(rbxl-import): UDim2 viewport-relative + rbxasset URL filter
All checks were successful
CI / Lint (pull_request) Successful in 1m5s
CI / Build (pull_request) Successful in 2m1s
CI / Secret scan (pull_request) Successful in 27s
CI / PR size check (pull_request) Successful in 11s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
- UDim2: scale теперь умножается на viewport reference (1280×720),
  раньше игнорировался — фреймы получали 0×0 и фейлились на дефолт 100×30
  или наоборот заполняли всё окно
- _udim2_pair(): пара (x,y) через _udim2_to_rublox(axis='x'|'y')
- Фильтр rbxasset:// rbxassetid:// rbxhttp:// rbxthumb:// URL'ов на пустую
  строку — браузер их не загружает, спам в console исчезает

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 01:49:20 +03:00
min
624bbc636b feat(rbxl-import): single-VM, Touched, scroll-to-selected, GUI
Some checks failed
CI / Lint (pull_request) Failing after 1m5s
CI / Build (pull_request) Failing after 49s
CI / Secret scan (pull_request) Successful in 25s
CI / PR size check (pull_request) Successful in 9s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Все 5 задач итерации:

1. Single-VM mode (RobloxLuaSharedWorker/Sandbox):
   - один Worker, одна wasmoon-VM на ВСЕ скрипты проекта
   - addScript() для каждого, общий tick/event broadcast
   - снимает WASM OOM (1 VM 16MB вместо 742 × 16MB)
   - убран per-script лимит 50, теперь все 742 загружаются

2. Touched events:
   - sendGlobalEvent в shared sandbox распознаёт playerTouch
     и пересылает в Worker как 'touched' с primId
   - Worker находит Part по __primId в workspace и Fire'ит
     его Touched сигнал — Lua-обработчики работают

3. Click в иерархии → scroll-to-selected:
   - useEffect в HierarchyPanel ловит изменение selection
     и scrollIntoView для нужного ItemRow
   - data-sel-id атрибут на primitive/model/block строках

4. GUI Roblox в конвертере:
   - ScreenGui/Frame/TextLabel/TextButton/ImageLabel/TextBox →
     scene.gui c полным набором свойств (UDim2→pixel, Color3→hex,
     BackgroundTransparency→bgOpacity, parentId)

5. Чистка:
   - удалены debug-console.warn из PlayerController._loadPlayerModel
     (убирает spam '[PlayerController.devlog]' в consoles)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-08 01:39:43 +03:00
min
412bb2fad9 feat(rbxl-import): студия исполняет импортированные Roblox-Lua скрипты
All checks were successful
CI / Lint (pull_request) Successful in 2m43s
CI / Build (pull_request) Successful in 1m57s
CI / Secret scan (pull_request) Successful in 1m21s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Сегодня доведены до играбельного состояния:
- UI модалка импорта подключена в KubikonStudio (кнопка для МИНа в навигации)
- Converter: SCALE 0.35 (карта пропорциональна R15-персонажу),
  playerModelType='skin_bacon-hair', Lua упакован в поле code с маркером
  // @roblox-lua (storys API сохраняет только {id,code,target,name})
- vite.config: api+статика через rublox.pro/minecraftia-school.ru
- GameRuntime: распознаёт маркер, запускает через RobloxLuaSandbox
  + wasmoon Worker. Фильтрация: target!=null + lua<2500б +
  лимит 50 sandbox'ов (WASM OOM при >50 VM)
- roblox-shim: nullStub (Proxy с no-op методами) вместо null
  для FindFirstChild/WaitForChild — цепочки не падают
- require() заменён на nullStub
- RobloxLuaSandbox: совместимость с интерфейсом ScriptSandbox
  (sendGlobalEvent/SceneSnapshot/etc — no-op заглушки)
- RobloxLuaWorker: pcall обёртка над user-кодом
- remoteDevlog.js + /devlog endpoint: автосбор browser-логов
- PlayerController._loadSkinManifest: dev-fallback на studio.rublox.pro

Тест на Easy Obby:
- 8205 instances → 2245 primitives + 742 Lua-scripts
- 50/742 Lua-VM запущены (KillBrick handlers и т.п.),
  151 отфильтровано как admin/chat services, 541 пропущено по памяти
- Скин bacon-hair виден, FPS 20-25
- Сцена играется, можно ходить, прыгать

TODO (следующая итерация):
- Single-VM mode для wasmoon (один Lua-state на 742 скрипта,
  убрать WASM OOM)
- Реализовать select/focus в иерархии для импортированных карт
- Touched events от Babylon impostor → Lua-shim сигналы
- Поддержка GUI (ScreenGui/Frame/TextLabel) в конвертере

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 21:13:16 +03:00
min
cb41ea0062 docs(studio): вики статья guide-loadingscreen + карточка #66 (задача 05, восстановление)
Восстановлена полная ветка работ (задачи 16/17/20/40/44 + UX) из c8a9618 +
применена задача 05 (Ken Burns экран загрузки). Карточки g5: skybox/leaderstats/
floaters/inventory/loadingscreen. Ошибки 'items.define/autoMobFloaters/setSkybox
is not a function' были из-за работы на служебной CI-ветке без задач 40/44.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 20:02:57 +03:00
min
c31b1ed3d6 feat(studio): задача 05 — экран загрузки (Ken Burns + название места)
LoadingScreenOverlay: Ken-Burns фон (CSS pan+zoom) + 4 стиля (ken-burns/static/
parallax/particles) + карточка-композиция (cover/название места/автор/verified-SVG).
Стартовый экран при входе в Play (showStartupLoadingScreen из enterPlayMode +
поля проекта loadingScreen.* + serialize/deserialize). API game.loading.
setBackground/isVisible/onHide + расширенный show. UI редактора: секция
«Стартовый экран входа (Ken Burns)». Вики g5 #62 + статья. Тест-игра 2713.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 20:01:00 +03:00
min
c375ae01ac feat(rbxl-import): импорт Roblox .rbxl карт в Rublox-проекты
All checks were successful
CI / Lint (pull_request) Successful in 1m6s
CI / Build (pull_request) Successful in 2m2s
CI / Secret scan (pull_request) Successful in 26s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Тест-фича для МИНа. Полное описание в rbxl-importer/INFO_PROCESS.md.

Backend (rbxl-importer/ на VM 130 S1):
- Python-парсер Roblox Binary (28+ типов значений)
- Asset downloader через Marfusha proxy + .ROBLOSECURITY cookie
- Mesh→GLB конвертер (v1-v5)
- Converter Roblox-классов → project_data
- Flask API: /analyze + /create

Frontend:
- API.js + components/RbxlImportModal.jsx (drag-n-drop)

Тестовый импорт Easy Obby: project_id 2697,
2244 primitives + 742 lua-scripts + 5 ассетов.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 18:24:27 +03:00
min
6dcbb8483a Merge pull request 'ci: redeploy3 (build perms S2)' (#32) from ci/redeploy3 into main
All checks were successful
CI / Lint (push) Successful in 1m5s
CI / Build (push) Successful in 1m58s
CI / Secret scan (push) Successful in 24s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Successful in 3m32s
2026-06-07 14:58:40 +00:00
min
781d95e599 ci: redeploy3 (chown build min:www-data на S2)
All checks were successful
CI / Lint (pull_request) Successful in 1m6s
CI / Build (pull_request) Successful in 1m55s
CI / Secret scan (pull_request) Successful in 26s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 17:54:08 +03:00
min
08786dbc2f Merge pull request 'ci: redeploy2 (deploy-key � S2)' (#31) from ci/redeploy2 into main
Some checks failed
CI / Lint (push) Successful in 1m5s
CI / Build (push) Successful in 1m58s
CI / Secret scan (push) Successful in 22s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Failing after 3m3s
2026-06-07 14:45:07 +00:00
min
76598c80ef ci: redeploy после добавления deploy-ключа в S2 authorized_keys
All checks were successful
CI / Lint (pull_request) Successful in 1m7s
CI / Build (pull_request) Successful in 2m0s
CI / Secret scan (pull_request) Successful in 27s
CI / PR size check (pull_request) Successful in 11s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 17:39:33 +03:00
min
cf72526036 Merge pull request 'ci: redeploy KNOWN_HOSTS S2' (#30) from ci/redeploy-knownhosts into main
Some checks failed
CI / Lint (push) Successful in 1m6s
CI / Build (push) Successful in 1m58s
CI / Secret scan (push) Successful in 35s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Failing after 3m7s
2026-06-07 14:30:19 +00:00
min
9fde464085 ci: redeploy с обновлённым KNOWN_HOSTS (S2 host-key сменился)
All checks were successful
CI / Lint (pull_request) Successful in 1m5s
CI / Build (pull_request) Successful in 1m53s
CI / Secret scan (pull_request) Successful in 24s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 17:20:48 +03:00
min
552b8719b1 ������ 4: ������ 16/17/20/40/44 + UX + ���� (#29)
Some checks failed
CI / Lint (push) Successful in 1m7s
CI / Build (push) Successful in 2m0s
CI / Secret scan (push) Successful in 26s
CI / PR size check (push) Has been skipped
CI / Deploy to S1 + S2 (push) Failing after 3m2s
2026-06-07 13:41:01 +00:00
min
c363acdf28 ci: финальная проверка зелёного пайплайна
All checks were successful
CI / Lint (pull_request) Successful in 1m13s
CI / Build (pull_request) Successful in 2m1s
CI / Secret scan (pull_request) Successful in 24s
CI / PR size check (pull_request) Successful in 7s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 16:30:00 +03:00
min
42a684ef4c chore: финальная проверка CI на актуальном main 2026-06-07 16:28:38 +03:00
min
c8a961815e chore: проверка CI после фикса runner network (job→gitea:3000)
Some checks failed
CI / Lint (pull_request) Failing after 2m8s
CI / Build (pull_request) Failing after 39s
CI / Secret scan (pull_request) Failing after 37s
CI / PR size check (pull_request) Failing after 31s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 15:17:31 +03:00
min
9f2cca1a49 docs(studio): вики задача 44 — карточка #65 + статья «Сбор и сортировка (инвентарь drag-drop)»
Карточка g5 #65 guide-inventory (openProjectId 2685) + статья: items.define,
inventory.give/take, окно по I (сетка 8×5 + хотбар 9), drag-drop, стаки,
редкости, ПКМ-меню, tooltip, сортировка. 2 скрина (scene окно / play сбор).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 15:07:42 +03:00
min
f46e6f0102 fix(studio): убрал 2 eslint-ошибки в main (showToast no-undef + text self-assign) — CI был красным для всех PR
Some checks failed
CI / Lint (pull_request) Failing after 28s
CI / Build (pull_request) Failing after 31s
CI / Secret scan (pull_request) Failing after 34s
CI / PR size check (pull_request) Failing after 32s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 15:06:28 +03:00
min
e15dc56de3 fix(studio): self.delete снимает interact-подсказку (E больше не висит на пустоте)
_applySelfDelete удалял меш, но запись в _interactables оставалась → промпт
«E Собрать» висел на месте собранного предмета. Теперь запись чистится по ref.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:59:25 +03:00
min
c62073f7f8 chore: проверка CI с восстановленным runner (ubuntu-latest label)
Some checks failed
CI / Lint (pull_request) Failing after 37s
CI / Build (pull_request) Failing after 31s
CI / Secret scan (pull_request) Failing after 32s
CI / PR size check (pull_request) Failing after 36s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 14:54:25 +03:00
min
661ff60bdf fix(studio): инвентарь — собранное идёт сначала в hotbar (виден), hotbar поднят над подсказкой
1) add() заполняет сначала hotbar, потом grid → собранные предметы сразу видны
   в постоянном хотбаре (раньше уходили в скрытую сетку — хотбар казался пустым).
2) Хотбар поднят bottom 14→64px, не перекрывает подсказку внизу экрана.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:51:27 +03:00
min
42f1334908 feat(studio): задача 44 — drag-drop инвентарь (сетка 8×5 + hotbar 9 + стаки + редкости)
InventoryUI.js: DOM-оверлей — окно инвентаря по I (сетка 8×5), постоянный
hotbar 9 (клавиши 1-9), drag-drop между слотами (HTML5), стаки с maxStack,
5 редкостей (цвет рамки), tooltip на hover, ПКМ-меню (использовать/разделить/
выбросить), сортировка по редкости. API: game.items.define([...]),
game.inventory.give/take/open/toggle/sort/setActiveHotbar. onUseEffect heal/speed.
Сериализация scene.inventory2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:45:24 +03:00
min
b1fbc3790e chore: re-trigger CI after runner restart
Some checks failed
CI / Lint (pull_request) Failing after 40s
CI / Build (pull_request) Failing after 29s
CI / Secret scan (pull_request) Failing after 36s
CI / PR size check (pull_request) Failing after 36s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 14:43:27 +03:00
min
2645337bdd chore: e2e-тест workflow разработчиков после восстановления
Some checks failed
CI / Lint (pull_request) Failing after 3m7s
CI / Build (pull_request) Failing after 40s
CI / Secret scan (pull_request) Failing after 29s
CI / PR size check (pull_request) Failing after 39s
CI / Deploy to S1 + S2 (pull_request) Has been skipped
2026-06-07 14:36:52 +03:00
min
48e2e83ef7 docs(studio): вики задача 40 — превью/скрин = кадр с облачками урона над зомби
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:22:11 +03:00
min
c20ac56895 docs(studio): вики задача 40 — обновлена под зомби-арену (бластер + autoMobFloaters + волны)
Карточка #64 «Зомби-арена — бластер и цифры урона» + статья переписана:
giveTool бластер, autoMobFloaters (авто-облачко над мобами), spawnNpc+follow
волны зомби, прицел в точку клика, ручной damageFloater (типы/стек/комикс).
Новые скрины scene/play (зомби-шутер).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:18:53 +03:00
min
931d53b4d9 fix(studio): бластер от 3-го лица стреляет в точку клика, а не в центр камеры
При свободном курсоре (нет pointer-lock, 3-е лицо) выстрел шёл из getForwardRay
(фокус камеры). Теперь onDown берёт координаты клика → setAimScreenPoint → луч
через точку клика; onMove обновляет _holdAim для авто-огня при удержании. При
pointer-lock (1-е лицо, курсор в центре) — прежнее поведение (центр).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 14:01:14 +03:00
min
e4fdd91b12 fix(studio): оружие попадает по NPC (pickable+npcId) → авто-floater урона работает
Меши NPC ставились isPickable=false → raycast бластера/меча проходил сквозь
них, урон и авто-floater не срабатывали. Теперь меши NPC pickable + npcId в
metadata; damageByMesh находит NPC по metadata (быстро) или по rootMesh.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 13:49:06 +03:00