chore(history): squash 59 commit(s) from 2026-09-23
- refactor(hud/weather/render): Scoreboard 931→240 + Rain 903→159 + UiMeshGeometry 956→99 (8.5.2) - refactor(chams): Chams 985 → 129 + 4×≤195 (8.5.2) - refactor(module): Module 1031 → 139 + 4×≤134 (8.5.2) - refactor(tooltips): BetterTooltips 960 → 181 + 4×≤199 (8.5.2) - refactor(clickgui): ClickGuiPickerState 970→166 + ModulesMenuScreen 966→145 (8.5.2) - refactor(clickgui): CombatProtocolHeuristicsEditorState 932→79 + 4×≤192 (8.5.2) - refactor(hud): CompactHudStatModel 894 → 125 + 4×≤175 (8.5.2) - refactor(iris): ShaderPatchCompiler 843→66 + 4×≤174 (8.5.2) - refactor(tab): CustomTabList 834→136 + 4×≤166 (8.5.2) - refactor(relations): OnlineRelationPlayerPickerComponent 837→74 + 4×≤192 (8.5.2) - refactor(hits): HitEffect 770→120 + 4×≤176 (8.5.2) - refactor(predict): Predictions 815→150 + 4×≤195 (8.5.2) - refactor(config): ConfigProfilesComponent 799→125 + 4×≤195 (8.5.2) - refactor(sim): PlayerMovementSimulation 757→157 + 4×≤194 (8.5.2) - refactor(predict): ProjectilePuncher 747→104 + 3×≤134 (8.5.2) - refactor(crosshair): Crosshair 743→143 + 4×≤167 (8.5.2) - refactor(mediaplayer): MediaPlayer 743→174 + 4×≤196 (8.5.2) - refactor(hud): Itemizer 699→193 + Cooldowns 707→151 (8.5.2) - refactor(hud): Potions 617→176 + 4×≤166 (8.5.2) - refactor(hud): Admins 702→118 + 4×≤138 (8.5.2) - refactor(hud): Keybinds 611→157 + 4×≤160 (8.5.2) - refactor(hud): ModuleList 499→181 + 3×≤150 (8.5.2) - refactor(hud): Radar 392→161 + 2×≤124 (8.5.2) - refactor(hud): Fps 309→168 + 3×≤107 (8.5.2) - refactor(hud): Memory 304→151 + 3×≤144 (8.5.2) - refactor(hud): Tps 339→154 + 3×≤143 (8.5.2) - refactor(hud): Ping 309→145 + 3×≤125 (8.5.2) - refactor(hud): SpeedBps 334→156 + 3×≤142 (8.5.2) - refactor(hud): GameTime 314→150 + 3×≤127 (8.5.2) - refactor(hud): SystemTime 300→136 + 3×≤130 (8.5.2) - refactor(hud): Coordinates 337→174 + 2×≤172 (8.5.2) - refactor(hud): Armor 324→162 + 2×≤148 (8.5.2) - refactor(hud): Inventory 476→153 + 3×≤181 (8.5.2) - docs(todo): обновлён 8.5.2 — отмечены готовые гиганты (BetterButtons/InventorySwap/Svg/Темы/WorldParticles/Module/Chams и хвост) - docs(api): папка combatant-client-26.2/docs + addons.md (API можно ломать при рефакторе) - refactor(visuals): BlockHighlight 692→271 + 4×≤200 (8.5.2) - refactor(mixins): GameRendererMixin 830→344 (хуки) + 4 хелпера (8.5.2) - refactor(visuals): WorldParticles 821→260 + 6×≤200, режимы добиты (8.5.2) - docs(todo): 8.5.2 — WorldParticles/GameRendererMixin/BlockHighlight отмечены ГОТОВО - refactor(render): MeshBuilder 738→447 (фасад write-API) + 3 хелпера, FrameStats снесён (8.5.2) - docs(todo): Фаза 10 — дизайн платформы (аккаунты/конфиги/аватарки), backlog RPC-чата - docs(todo): Подсистема 3 — Аддоны 2.0 (скрипты/версии) + витрина аддонов + админка - docs(todo): Подсистема 2 — RPC-чат/друзья/виджеты-телеметрия + рейт-лимиты, доп. правки Подсистемы 3 - chore: переименование combatant-client-26.2 -> mod, добавлены backend/ и frontend/ - docs(backend): implementation plan for accounts-service (Подсистема 1, часть 1) - chore: пересоздать backend/frontend через cargo new и bun create vite + tailwind; убрать таблицу компонентов из TODO.md - docs(backend): edition 2024 в плане вместо 2021 - chore: обновить версии до реально актуальных (проверено компиляцией) - docs: правила платформы (лимит 250 строк, антипаттерны backend/frontend по итогам ресёрча) + frontend/ARCHITECTURE.md - docs: добавить правило ≤4 файла на папку в правила платформы (backend/frontend) - docs: commit messages in English from now on - chore: gitignore .superpowers/ scratch directory - docs: commit messages in English from now on (mod) - feat(backend): scaffold accounts-service with health check - chore(backend): remove target/ build artifacts from git, add gitignore - chore: track docs/ in git (was accidentally gitignored, never committed) - chore(backend): convert to Cargo workspace, plan full microservice layout - feat(backend): accounts/avatars/device_links schema + migration - feat(backend): argon2id password hashing
This commit is contained in:
parent
ec10395511
commit
9d08fa910a
2239 changed files with 35265 additions and 28110 deletions
5
docs/README.md
Normal file
5
docs/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# docs
|
||||
|
||||
- `DEV_GUIDE.md` — единый справочник разработчика (сборка, правила ≤200/≤4, пакеты, модули/HUD/команды/миксины/рендер/тесты). Объединён из `DEV_GUIDE.md`+`DEVELOPMENT.md` 2026-09-23.
|
||||
- `api/addons.md` — API аддонов (`lovisual:addon`, жизненный цикл, что может аддон). Публичный API можно ломать свободно при рефакторинге (KISS > совместимость).
|
||||
- `TODO.md` в корне — план фаз (сейчас 8.5/9.1/9.2/10/11).
|
||||
73
docs/api/addons.md
Normal file
73
docs/api/addons.md
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# LoVisual Addon API (`api/v0`)
|
||||
|
||||
Аддоны — обычные Fabric-моды, которые расширяют LoVisual. Точка входа `lovisual:addon` в `fabric.mod.json`. Можно свободно менять публичный API при рефакторинге — владелец разрешил ломать совместимость ради KISS.
|
||||
|
||||
## Entrypoint
|
||||
|
||||
`fabric.mod.json`:
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "my-addon",
|
||||
"name": "My Addon",
|
||||
"entrypoints": {
|
||||
"lovisual:addon": ["com.example.MyAddon"]
|
||||
},
|
||||
"custom": {
|
||||
"lovisual:addon": { "api": 0, "icon": "assets/my-addon/icon.png" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Класс:
|
||||
```java
|
||||
public class MyAddon implements LoVisualAddon {
|
||||
public void onConfigureModules(LoVisualModuleLoadContext ctx) {
|
||||
ctx.disableBuiltInModule("killAura"); // выключить встроенный модуль до его создания
|
||||
}
|
||||
public void onInitialize(LoVisualAddonContext ctx) {
|
||||
ctx.registerModule(MyModule.class);
|
||||
ctx.registerDraggableHudElement(MyHud.class);
|
||||
ctx.registerStaticHudElement(MyStaticHud.class);
|
||||
ctx.registerCommand(new MyCommand());
|
||||
ctx.registerClickGuiSection(new MySection());
|
||||
ctx.addRenderCallback(LoVisualRenderStage.HUD_RAW, (c) -> { /* 2D */ });
|
||||
}
|
||||
public void onClientReady(LoVisualAddonRuntimeContext ctx) {}
|
||||
public void onShutdown(LoVisualAddonRuntimeContext ctx) {}
|
||||
public void onRuntimeSuspended(LoVisualAddonRuntimeContext ctx) {} // при выкл. аддона
|
||||
public void onRuntimeResumed(LoVisualAddonRuntimeContext ctx) {}
|
||||
}
|
||||
```
|
||||
|
||||
`LoVisualAddon.API_VERSION = 0` — сверяется в `AddonManager.java:438`, несовпадение → `WARNING`.
|
||||
|
||||
## Жизнь аддона (`AddonManager.java:39`)
|
||||
|
||||
1. `discoverEntrypoints:211` — `FabricLoader.getEntrypointContainers` → `ADDONS` map, `ENABLED_OVERRIDES` из `AddonStateStore` (вкл/выкл сохраняется).
|
||||
2. `prepareModuleLoading:58` — `configureEnabledAddons:230` → `onConfigureModules` (до `ModuleAutoLoader`).
|
||||
3. `init:65` — `reconcileModuleExclusions:255` + `initializeEnabledAddons:272` → `onInitialize`.
|
||||
4. `notifyClientReady:79` — `onClientReady` после загрузки конфигов.
|
||||
5. Вкл/выкл из `LoVisualAddonManagerScreen.java:548` `AddonManager.setEnabled:160` — `suspend/resumeRuntimeContributions:363` глушит модули/HUD, пишет `AddonStateStore`.
|
||||
|
||||
Статусы `AddonStatus.java:12`: `DISCOVERED → ACTIVE / DISABLED / ERROR / SUSPENDED`.
|
||||
|
||||
## Что может аддон
|
||||
|
||||
- **Модули** `ctx.registerModule(Class<? extends Module>)` — обычный `@ModuleInfo`, попадёт в `ModuleManager`, конфиг `addon:ID:module:ID`.
|
||||
- **HUD** `registerDraggableHudElement` / `registerStaticHudElement` — `@HudElementInfo` / `@HudElementRegister`, конфиг `addon:ID:hud.*`.
|
||||
- **Команды** `registerCommand(ClientCommand)` — `@CommandInfo`, префикс `%`.
|
||||
- **ClickGui секции** `registerClickGuiSection(LoVisualClickGuiSection)`.
|
||||
- **Рендер** `addRenderCallback(stage, callback)` / `addPostProcessCallback` — `LoVisualRenderStage` (`HUD_RAW`, `WORLD_*`).
|
||||
- **Расширения модулей** `LoVisualModuleExtension` — `beforeEnable/afterTick` и т.д. через `ModuleExtensionManager`.
|
||||
|
||||
Профили: `AddonManager.moduleProfileOwnerId:129` → `addon:ID:module:ID` для `.lvcfg`.
|
||||
|
||||
## Пример минимального аддона
|
||||
|
||||
См. `api/v0` JavaDoc и `addon/core/AddonManager.java:211`, `addon/pipeline/AddonSnapshot.java:14`, `features/gui/mainmenu/LoVisualAddonManagerScreen.java:48` (UI).
|
||||
|
||||
## Примечание по рефакторингу
|
||||
|
||||
Публичный Java API аддонов **можно ломать свободно** — KISS важнее обратной совместимости (решение владельца 2026-09-05, `TODO.md:9`). При рефакторе меняй сигнатуры, удаляй делегирование, обновляй вызывающих.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue