Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,8 @@ public/icons/*
!public/icons/abilities/**
!public/icons/items/
!public/icons/items/**
!public/icons/buildables/
!public/icons/buildables/**
# Ignore Python scripts
/*.py

Expand All @@ -318,6 +320,7 @@ static/prefab-slices/

# Local visual review artifacts
.codex-tmp/visual-review/
.codex-tmp/dev-review/
.codex-tmp/ingestion-readiness/
.codex-tmp/npc-display-source-audit/
.codex-tmp/asset-probe/
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- Binary changes are only allowed for:
- repo-owned curated ability icons under `public/icons/abilities/` (typically via `npm run refresh:db-assets`)
- repo-owned curated item icons under `public/icons/items/` (typically via `npm run refresh:db-assets`)
- repo-owned curated buildable portrait icons under `public/icons/buildables/` (typically via `npm run refresh:db-assets`)
- approved Data Base branding assets under `static/database-assets/`, with provenance recorded in that folder
- unchanged current-wiki branding and homepage artwork under `static/wiki-assets/`, sourced from `Odjit/VRising-Mod-Wiki` on branch `explore/theme-revamp`
- accepted visual review baselines under `tests/visual/baselines/`
Expand Down
30 changes: 25 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,12 @@ The structured generators currently read from source material in:

These markdown files are treated as extraction input, not as the public rendering model.

Optional enrichment snapshots and curated ability icons live in:
Optional enrichment snapshots and curated DB icons live in:

- `data/enrichment/*.json`
- `public/icons/abilities/*`
- `public/icons/items/*`
- `public/icons/buildables/*`

`content/dev`, `content/user`, and `content/editing` remain out of the current app scope unless we explicitly revive authored guides later.

Expand Down Expand Up @@ -98,15 +100,15 @@ This starts from a clean generated-output root so stale legacy files under `publ
npm run refresh:db-assets
```

This is a manual refresh step for repo-owned enrichment inputs. It reads local Bloodcraft resources plus the local AssetRipper-style asset dump, writes deterministic snapshots under `data/enrichment/`, normalizes canonical join maps (abilities, items, recipes, NPC classification/display, workstation display, and remaining DB display maps), and copies curated ability and item icons into `public/icons/abilities/` and `public/icons/items/`.
This is a manual refresh step for repo-owned enrichment inputs. It reads local Bloodcraft resources plus the local AssetRipper-style asset dump, writes deterministic snapshots under `data/enrichment/`, normalizes canonical join maps (abilities, items, recipes, NPC classification/display, workstation display, and remaining DB display maps), and copies curated ability, item, and buildable portrait icons into `public/icons/abilities/`, `public/icons/items/`, and `public/icons/buildables/`.

The refresh output now includes per-entry provenance (`sourceKind`, `sourceRef`) in enrichment maps, emits `data/enrichment/npc-classification-map.json` for NPC browse slices, and emits `data/enrichment/item-icon-unresolved.json` for icon curation follow-up. When the unresolved item-icon queue only contains `catalog-seed` generic equip-buff placeholders, treat it as parked until a source-backed icon appears instead of generating or guessing substitute artwork.

Asset dump discovery:

- `VRISING_ASSET_DUMP_DIR` selects a single dump root
- `VRISING_ASSET_DUMP_DIRS` checks multiple dump roots (comma/semicolon/newline separated)
- otherwise the scripts check known local defaults, including the moved `Documents/Unorganized/Assets` dump
- otherwise the scripts check the local default `C:/Users/mitch/Local/Assets`
- a usable dump must contain `Texture2D/` with `Stunlock_Icon_*.png` files

Optional legacy source discovery:
Expand Down Expand Up @@ -159,6 +161,7 @@ When Codex needs native process spawning for this repo, use repo-owned npm scrip
Approved spawn-enabled lanes:

- `npm run qa:spawn-readiness`
- `npm run dev:review`
- `npm run build`
- `npm run verify`
- `npm run visual:compare`
Expand All @@ -169,6 +172,22 @@ Approved spawn-enabled lanes:

If an exact-script approval is unavailable or inconvenient, use the GitHub Actions `Visual Review` artifact instead. Baseline refresh remains an explicit accepted-visual-change step even when the command is approved to spawn.

Local browser review helper:

```bash
npm run dev:review -- --path /db/recipes/recipe-armor-boots-t01-bone
```

This helper starts one strict-port Vite server for the selected route, writes `.codex-tmp/dev-review/latest.json`, and prints the exact local URL plus a Codex Browser Use handoff line. It defaults to `127.0.0.1:5173` and does not silently hop to another port.

If the port is occupied by a stale repo-local Vite server, retry with the explicit cleanup mode:

```bash
npm run dev:review -- --clean-stale --path /db/recipes/recipe-armor-boots-t01-bone
```

Cleanup is intentionally opt-in. Unknown port owners are reported but not killed. Use the printed `@browser-use open ...` line as a Codex instruction, not as text to paste into the browser address bar.

### Visual review screenshots

```bash
Expand Down Expand Up @@ -234,7 +253,7 @@ This helper is the non-mutating preflight companion to the accepted broad-run QA
- `npm run generate:db` builds DB section indexes and detail files
- `npm run generate:search` builds the lightweight unified search index
- `npm run generate:data` runs the full generation pipeline
- `npm run refresh:db-assets` refreshes canonical enrichment snapshots and curated ability/item icon inputs from local external dumps
- `npm run refresh:db-assets` refreshes canonical enrichment snapshots and curated ability/item/buildable icon inputs from local external dumps
- `npm run validate:data` performs path/slug sanity checks plus enrichment threshold-floor validation
- `npm run verify` runs the full pre-push verification path used locally and in CI
- `npm run visual:baseline` refreshes accepted visual baselines for the fixed screenshot review pack
Expand All @@ -245,14 +264,15 @@ This helper is the non-mutating preflight companion to the accepted broad-run QA
- `npm run visual:compare:capture:ci` compares screenshots from an already-built `dist/` while allowing screenshot diffs
- `npm run visual:feedback` writes a draft design-feedback packet from the latest visual-review `report.json`
- `npm run visual:summary` writes visual-review counts and artifact instructions to the GitHub Actions step summary when available
- `npm run dev:review` starts a strict local Vite server for an in-app browser review route and writes `.codex-tmp/dev-review/latest.json`
- `npm run test:visual-review` exercises the idempotent visual-review engine helpers and config validation through `jiti`, without `tsx`, esbuild, or Node's `--test` runner
- `npm run qa:accepted-broad-run` runs the accepted broad-run QA sequence for the Dual-Lane Review Loop
- `npm run qa:ingestion-readiness` writes a core-domain ingestion readiness report under `.codex-tmp/ingestion-readiness/`
- `npm run qa:spawn-readiness` reports whether the current shell can run native-spawn lanes required by build and visual capture commands

## Contributor Notes

- `public/data/` and `dist/` are build-generated. `public/icons/abilities/` is a repo-owned curated asset input preserved across generation.
- `public/data/` and `dist/` are build-generated. `public/icons/abilities/`, `public/icons/items/`, and `public/icons/buildables/` are repo-owned curated asset inputs preserved across generation.
- This project is an unofficial, non-commercial fan reference. V Rising names, art, and related assets remain the property of Stunlock Studios.
- Keep game-derived assets scoped to approved pipeline inputs and honor rights-holder takedown requests promptly.
- `src/config/sections.ts` is the app-level section contract for reference and DB routing.
Expand Down
15 changes: 14 additions & 1 deletion data/enrichment/asset-dump-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"texturePngCount": 12329,
"stunlockIconPngCount": 2139,
"textureAggregateSha256": "1D53084D1431B65D95FF5905ECC03D4BF8C36AD5392F69222E7AD3FB26B90734",
"materializedPublicIconCount": 767,
"materializedPublicIconCount": 780,
"materializedIcons": {
"public/icons/abilities/Stunlock_Icon_Ability_Spell_Blood_BloodFontain.png": "BF1F67BC06652D4E1B82EEB4E3597ED3E770D77636CC78CED20AD36E70FFA7AB",
"public/icons/abilities/Stunlock_Icon_Ability_Spell_Blood_BloodRage.png": "D1BD9EA8448FF1FE75FE581ACB89D335E7A6E716543F9049563CA57A8F38D99F",
Expand Down Expand Up @@ -64,6 +64,19 @@
"public/icons/abilities/Stunlock_Icon_Ability_Spell_Unholy_Soulburn.png": "6AB74BDC335D368D4963E5B5EDA1DB04DDA85F5876571D22010A60BFA6D738E9",
"public/icons/abilities/Stunlock_Icon_Ability_Spell_Unholy_VeilOfUnholy.png": "0A3A1605E9DCDFF582FCD15AC92DAB74519CDF9CE1B89710B71619A54F03EB0D",
"public/icons/abilities/Stunlock_Icon_Ability_Spell_Unholy_WardOfTheDamned.png": "A5AA041E3F781173B7F63628461FCBE338F6DCCB89A58C0C3382E2F00EBC6332",
"public/icons/buildables/StructureIcon_SawmillSmall_Normal.png": "BEE03860A3515B3AEC9D5878166FE8301CE899C82B4CDB5D6133C0C8921D5C0E",
"public/icons/buildables/Stunlock_Icon_Structure_Anvil.png": "C7AD789315C962381B3D29890AF951FFEB5C5889D95A95EBE843EB57A60B808E",
"public/icons/buildables/Stunlock_Icon_Structure_ArtisansCorner.png": "78A1166A6A1820D9798D205951B2C4F7D8D851B6AA8721B2D218F29718FF0B7A",
"public/icons/buildables/Stunlock_Icon_Structure_BloodMixer.png": "C3B62DC61FB263367AEBE194CC9841650F540BC15BBE7743E8D872D2CB3B166D",
"public/icons/buildables/Stunlock_Icon_Structure_Fabricator.png": "76FA9547E31A4DA74B3CA79A039CCB329BBE0743E747D517E2813477B572FD08",
"public/icons/buildables/Stunlock_Icon_Structure_FusionForge.png": "72AD66636A8BA1848D96D74E956BDB114DDD03C065054A3CEF0A2270129A6B5E",
"public/icons/buildables/Stunlock_Icon_Structure_JewelcraftingTable.png": "1221E32BDD4B54CD9CB066BB7A844074FD1C4A319738CF47CE957FF7580D5777",
"public/icons/buildables/Stunlock_Icon_Structure_NetherGate.png": "1D7CAA6441B89120187000072A1C4C3A2944F40BE9C0A9D324743BEE34529A4B",
"public/icons/buildables/Stunlock_Icon_Structure_SimpleCraftingBench.png": "9BADB6102E15C59B86F0BCFFD4DC687ECAC6EBF721B9605B61D2840EA13EEBDD",
"public/icons/buildables/Stunlock_Icon_Structure_Smithy.png": "960862365A1EA00CFAEDB645B37333E493C4F8A3D6787E22D4E70BD33E6CC78B",
"public/icons/buildables/Stunlock_Icon_Structure_Stables.png": "56EB989F27DD90D1CB1B1D3B4C7C51093C62A01667EAB24AFD7A5A2266FE53D7",
"public/icons/buildables/Stunlock_Icon_Structure_Tomb.png": "BD0B78B82F233DB67DCFF1D4C4BDEB1EC1D903830EB9EB6F0685C36CC626B921",
"public/icons/buildables/Stunlock_Icon_Structure_VerminNest.png": "76E6A23882AB17DCA92B73CA33EC0160B95614C7A541D5A6D482D0DAF53035B6",
"public/icons/items/FantasyIcon_Engineer (51).png": "523B5C219BB29F16D45AEDEE9DD198DFA77B972D09A2E5A28B4551AC6472087E",
"public/icons/items/FantasyIcon_Engineer (79).png": "39096FC13E17E4CC0ADE01071F0D24F256962E4AD9F20752C4A0A8E34424A257",
"public/icons/items/FantasyIcon_EngineerAddon_CanisterSludge.png": "EC91A2217D77DEB17E9B89455964A0E0274F9790EF906F1A11E0D0112A4DB6EC",
Expand Down
Loading
Loading