Skip to content

feat(deck): hydrate missing live charts from moenotes-assets - #103

Merged
Exmeaning merged 2 commits into
mainfrom
arena/ad45cece-moenotes
Nov 8, 2026
Merged

Exmeaning merged 2 commits into
mainfrom
arena/ad45cece-moenotes

Conversation

@Exmeaning

Copy link
Copy Markdown
Member

Summary

  • Self-healing missing-chart hydration (/api/v1/meta/deck-charts): When nnnotes's music-data.yml build lags or fails, newly released MasterLiveMusic difficulties (including Challenge Event valuation songs) are now automatically hydrated from moenotes-assets (Live/MusicScore/<chartKey>/<score>.json) instead of blocking the deck builder on solver.dataUpdating (组卡数据更新中。).
  • Exact binary32 / runtime_chart::convert parity (src/lib/deck/chart-convert.ts): Converts plain UTF-8 or gzipped ss score JSON with .NET midpoint-to-even rounding, binary32 BPM/bar timelines, Creator::line_shape combo note geometry (judgementAreaOffsetType, lane, width, direction, ease, easeRight, lines), by_key enumeration ordering, fever ranges, and pt.rs playability checks (durationMs > 0, judgedCount > 0, 5 skillEvents).
  • Allowlisted server caching & retry penetration (src/lib/masterdata/deck-charts.ts): Resolves scoreId -> MasterLiveMusicScore._musicScoreTextFileName strictly from MasterData, fetches via buildFetch (respecting MOENOTES_ASSET_INTERNAL and forceBypass), falls back kr/en -> tw on 404, caches converted charts in bounded LRU memory, and bypasses negative 404 entries on retry or forceBypass.
  • Worker & Haneoka adapter integration (public/deck/deck-worker-core.mjs, src/lib/deck/haneoka/data.ts, src/lib/deck/runtime-source.ts): Batches missing scoreIds during Worker init, merges hydrated charts + provenance.replay.musicLengthsMs, forwards native inputs + enumeration into Haneoka WASM load_source, and provides resolveLiveDeckRuntimeFallback when external music-data has no published replay manifest.

Verification

  • bun run lint (i18n, routing, route-registry, architecture, text, emoji, server-config)
  • bun run check (next typegen && tsc --noEmit) & bun run check:search-seo
  • bun test (1016 passed, 0 failed across 120 test files, including tests/deck-live-chart-hydration.test.ts)

@Exmeaning
Exmeaning merged commit e60cf88 into main Nov 8, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant