No description
Find a file
goober 7263b597c4 fix: reachable undo, nameable groups, and no favicon request
Found by running the app in a browser for the first time.

- Undo was only reachable from the team tab, and only after a team solve had
  finished, so an equip made from the character view had no way back. Both
  views now show it whenever there is something to undo.
- The owner-group naming dropdown listed all 23 espers from the game database
  rather than the characters the capture says you own. Two espers are both
  published as "Zero", so the list held two identical entries and picking the
  wrong one misattributed a whole loadout; conversely a character the game
  database has never heard of had no entry at all and its group could not be
  named. Options now come from the captured roster, labelled with the esper
  name and disambiguated by codename when two owned characters share one.
- An inline SVG favicon, so the page stops requesting one that does not exist.
  Inline rather than a file because the single-file build must make no
  requests at all.

Verified headless against the real 819-item export: import writes 819 items,
20 characters and 99 equipment rows to IndexedDB; a solve runs in a real
Worker and scores 0.6690 for Zankou, matching the Node bench; equip writes 8
app rows and displaces 7; undo restores all 99 imported rows; state survives
a reload. The file:// build renders, imports, solves inline and issues no
network request.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 12:30:56 +03:00
data-src feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
public/img feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
src fix: reachable undo, nameable groups, and no favicon request 2026-08-21 12:30:56 +03:00
tests feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
tools feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
.gitignore feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
.nvmrc feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
index.html fix: reachable undo, nameable groups, and no favicon request 2026-08-21 12:30:56 +03:00
package-lock.json feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
package.json feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
README.md feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
tsconfig.app.json feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
tsconfig.json feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
tsconfig.node.json feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
vite.config.ts feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
vite.single.config.ts feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
vitest.config.ts feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00

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.