Client-side optimizer for Neverness to Everness console builds. Imports a gear export from nte-history-exporter, keeps it in IndexedDB, and solves for the best module placement per character or across a team. - domain/: pure ports of the Python research scripts (shapes, cartridges, board tiling, stats, scoring, set bonuses, Arc effects, sheet prediction). No DOM, no storage imports, so they stay worker-safe and Node-testable. - solver/: single-character solve with branch and bound, plus a three-phase team solve (portfolio, leximin, column generation) over disjoint item sets. Runs in a Worker when one can be constructed, inline otherwise. - db/: three storage tiers selected by use rather than feature detection, fail-closed import validation, and undo that restores both sides of a steal. - ui/: React 19 views for items, characters and teams; the board is drawn as the deliverable rather than a score. - Two build targets: a hosted bundle and a single self-contained nte.html with no external requests. Values the model cannot measure are reported as unavailable rather than guessed: cartridge set bonuses, the level 80 base-stat multiplier, and the distinction between "optimal for this packing" and globally optimal. 145 tests, tsc clean, both build targets clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| data-src | ||
| public/img | ||
| src | ||
| tests | ||
| tools | ||
| .gitignore | ||
| .nvmrc | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vite.single.config.ts | ||
| vitest.config.ts | ||
nte-optimizer
Caution
This repository is vibecoded. Its implementation was written with substantial AI assistance and may contain plausible-looking mistakes, unsafe assumptions, or unreviewed edge cases. Treat it with care: inspect the code, verify outputs, and run the tests before relying on it.
Gear optimizer for Neverness to Everness. Static site, no server, no account, and no runtime connection to the game.
It imports a gear snapshot produced by nte-exporter, scores the available cartridges and modules, and draws recommended builds directly onto each character's console grid.
Features
- Single-character optimization with Prydwen targets or custom targets and weights.
- Cartridge set and 2-piece/4-piece bonus selection.
- Arc stats, refinements, conditional-effect controls, and explicit notices for effects the model cannot score.
- Team optimization against one shared item pool without assigning an item twice.
- Console-grid layouts with module placement and enough item detail to find each piece in game.
- Local equipment tracking, Equip/Undo, and import refreshes from game truth.
- Predicted-versus-measured character sheet comparison.
- Hosted build plus a single-file offline build.
All account data stays in the browser. Nothing is uploaded by the app.
Running locally
npm ci
npm run dev
Useful checks and builds:
npm test
npm run check:guides
npm run build # hosted build in dist/
npm run build:single # standalone dist/nte.html
The standalone build works over file://. Browser restrictions disable workers, IndexedDB, and bundled artwork there; the app falls back to inline solving and localStorage or memory.
Model boundaries
This is a stat-target optimizer, not a damage simulator. It has no rotation or ability-multiplier model.
- Targets are floors. Published substat rankings determine their relative weights.
- Timed bonuses are reported but not scored without defensible uptime data.
- Shield strength, enemy resistance, ally-only buffs, and other unsupported quantities are marked unmodellable instead of mapped onto a different stat.
- Level-80 base-stat scaling remains unmeasured, so dependent sheet values are shown as unavailable.
- “Proven” means optimal for one packing and cartridge, not globally optimal across every internal beam-search choice.
Project layout
| Path | Contents |
|---|---|
data-src/ |
Source classifications, cartridge bonuses, and guide data. |
tools/ |
Data validation, generation, benchmarking, and build scripts. |
src/domain/ |
Pure stat, board, cartridge, Arc, and scoring logic. |
src/solver/ |
Worker-safe single-character and team solvers. |
src/db/ |
Import validation and local persistence. |
src/ui/ |
React interface. |
tests/ |
Domain, solver, persistence, and integration checks. |
src/domain/ and src/solver/ stay free of DOM, storage, and UI imports so the same logic runs in tests, inline, or in a Web Worker.