nte-optimizer/public/img
goober 91952b1745 feat: NTE gear optimizer web app
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>
2026-08-21 11:38:17 +03:00
..
fork_Arachne_256-159158f2.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_BitGame_256-0cb5217a.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_BitterCake_256-2498fb35.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_BlackBook_256-56849e90.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_BlastCandy_256-4bd61b87.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_bopu_256-e045cc0d.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_BoxingCandy_256-2d9a5897.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Butterfly_256-1395ba48.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Castle_256-3ce261aa.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_DemonBlade_256-89200ec7.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Door_256-7a125283.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_dustbin_256-6595915b.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_fudianling_256-fe144d13.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_GoldRecord_256-9e37a9a5.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_GoldWool_256-929d1333.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_HugVine_256-aaa93ce6.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_jiaojuan_256-769fdf83.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_jingmotingyuan_256-eccbc72b.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Kite_256-a8b52a91.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_KnightCandy_256-fea87c21.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_koinobori_256-c8624200.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_lingganzhongjiezhe_256-dd4950fd.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_LunarPhase_256-58ab7825.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_mamen_256-2d0a8b9a.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_mofeikesi_256-db984ecf.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_moon_256-19817a0c.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_MotorCandy_256-fd81bc62.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Nakupeda_256-96338388.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_NestBird_256-f6e28be2.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_nonos_256-4cb5e0fa.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_oulaquantao_256-bcc71d33.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_PaperPlane_256-2d4e5717.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_PoliceRat_256-d05f72e2.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Qiaoqiao_256-5fad717f.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_rishi_256-e4137b85.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Rose_256-d33fcc29.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_snowman_256-013ccbd0.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_spider_256-656150ea.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_ThiefCandy_256-9b9444e3.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_TigerTally_256-47cfb268.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Time_256-9cb02755.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_tuansanlang_256-937209b3.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_Whale_256-76862d07.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_worldrain_256-cf0b4b4a.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_wuhuakuang_256-ea10c6c4.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_wushoutieyu_256-d83ef63e.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_yaodao_256-e8f57727.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_yuanheti_256-087d4df9.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
fork_yuren_256-727dde45.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_003-ace97f94.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_004-874ed495.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_005-712a486b.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_008-4976544f.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_009-b9f7ef78.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_010-924dc73d.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_012-36c8b09f.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_013-bf2054be.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_015-ddebe8cc.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_019-a75c3fbd.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_020-3e088a55.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_021-6cfb115e.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_027-b3e5e8dc.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_028-79597e4e.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_046-b5837c27.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_073-6a824f1f.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_104-e857d709.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_canhong-8fd9dc5e.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_haiyue-28720124.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_kaesi1-043cca1a.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_lingke-a6dfa678.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_yiluoyi-2eeff6ec.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00
player_zhenhong-1c5f3031.webp feat: NTE gear optimizer web app 2026-08-21 11:38:17 +03:00