Current Phase: Maintenance Last Update: 2026-04-21
- Core System:
ScreenReader(Tolk),MelatoninAccess(MelonLoader Mod). - Menu Accessibility:
MenuHandlerannounces all menu options, titles, and toggles. - Gameplay Accessibility:
RhythmHandlerprovides audio cues for all rhythm inputs. - Tutorial Accessibility:
DialogueHandlerreads all dialog boxes. - Map Accessibility:
MapHandlerimplements teleport navigation using Bracket keys. - Level Editor:
EditorHandlerannounces cursor position, tools, and placement. - Achievements:
AchievementsHandlerreads the achievement list. - Build & Install: Successfully compiled and deployed to Game Mods folder.
- v1.3.0 Released (2026-04-21): Committed the final feature-build changes, pushed
masterand tagv1.3.0, and published GitHub releasev1.3.0as the latest release with the verifiedMelatoninAccess-v1.3.0.zippackage. - v1.3.0 Final Feature Release Prep (2026-04-21): Bumped runtime/project/package version metadata to
1.3.0, added the1.3.0changelog entry, refreshed README release examples andF1wording to mention stars/rings/perfects, builtRelease, verified localization + cutscene QA, rebuilt the release ZIP after catching a stale parallel-packaging DLL issue, confirmed the final package containsMelatoninAccess.dll1.3.0.0with the expectedMods,UserData, and root NVDA/Tolk layout, and deployed the matchingReleasebuild to the gameModsfolder. - v1.2.0 Release Prep (2026-04-16): Bumped version metadata to
1.2.0, added a short nontechnical changelog entry, aligned README/install wording with the wrapper scripts, and updated release packaging to preserve a copy-paste-ready layout withMods\cutscene-ad,Mods\localization, rootTolk.dll, rootnvdaControllerClient32.dll, andUserData\Loader.cfg. - Environment Path Refresh (2026-04-16): Updated checked-in local defaults from the old
D:\games\steam\steamapps\common\Melatonininstall path toL:\SteamLibrary\steamapps\common\MelatoninacrossAGENTS.md, the project file, and helper scripts. - v1.2.0 Released (2026-04-16): Built
Releaselocally withscripts\Build-Mod.ps1, verified thescripts\Build-ReleasePackage.ps1ZIP layout (Mods,UserData, root DLLs), pushedmasterand tagv1.2.0, and published the GitHub release with the verified copy-paste package. - README Cleanup Pass (2026-04-16): Reorganized
README.mdinto a player-first layout with quick install, controls, hotkeys, languages, and settings up top, then condensed maintainer-only build/package/QA notes into a separate lower section. - Template Refresh Migration Completion + Re-Decompile (2026-04-08): Restored Melatonin-specific
AGENTS.mdvalues after the refreshed template update, re-applied repo-specific.gitignoresafeguards, addedscripts/Build-Mod.ps1andscripts/Deploy-Mod.ps1as the required build entry points, validated both wrapper scripts, and regenerated local ignoreddecompiled/from the currentAssembly-CSharp.dllwithilspycmd(249.csfiles). - Template Refresh Migration Start (2026-03-04): Created branch
migration-to-an-updated-template, merged legacy.gitignoreprotections into the refreshed template version ([Ll]atest.log,release/,artifacts/, MelonLoader DLL ignore with template/libs allowlist), and re-filledAGENTS.mdproject-specific setup/build values (Melatonin game path, x86 architecture, MelonLoader, concrete build/deploy paths) after template replacement. - Setup Refresh (2026-02-09): Re-ran setup checks, filled environment placeholders in
AGENTS.md, and addedCopyToModsauto-deploy target toMelatoninAccess.csproj(validator: 16 OK, 0 warnings, 0 errors). - Template Setup Sync (2026-02-23): Applied updated setup-template additions in
AGENTS.mdand filled project-specific environment/build values (game path, x86 architecture, MelonLoader, concrete build/deploy paths). - Game API Heading Alignment (2026-02-23): Renamed core
docs/game-api.mdsection headings to match the updated setup-template Phase 1 labels (1.1structure,1.2input,1.3UI,1.5localization,1.7status/feedback,1.8events,1.10tutorial) without changing documented findings. - README Terminology Consistency Pass (2026-02-23): Aligned README wording with current behavior (
score mode startedonly; practice-start line removed), clarifiedAnnounceRhythmCuesas a legacy key naming contextual cues, and switched build command code blocks to PowerShell examples. - Template Docs + State Manager Assets Sync (2026-02-23): Synced updated template docs (
setup-guide,ACCESSIBILITY_MODDING_GUIDE,state-management-guide,project_statustemplate) and addedtemplates/AccessStateManager.cs.templatefrom the refreshed template pack. - Localization JSON Externalization (2026-02-23): Migrated all mod translatable strings from hardcoded
Loc.csentries to externallocalization/loc.<lang>.jsonfiles (all 10 game languages), refactoredLocruntime loading/path resolution to JSON assets, updated localization/cutscene QA scripts to validate JSON sources, and updated build/release packaging to shipMods/localization. - Cutscene AD Multilingual Localization (2026-02-23): Localized all
ad_*cutscene description lines into zh-Hans, zh-Hant, ja, ko, vi, fr, de, es, and pt JSON files so cutscene narration no longer falls back to English in non-English game languages. - Localization Runtime Fallback Fix (2026-02-23): Fixed startup regression where
JsonUtilityreturned empty localization arrays at runtime by adding UTF-8 BOM stripping and a deterministic fallback parser forlocalization/loc.*.json, restoring key loading and preventing spoken key IDs. - Localization Startup Log Noise Reduction (2026-02-23): Replaced per-language fallback warnings with one startup summary line in
Locwhen fallback parsing is used, while keeping detailed fallback-language output gated behind debug logging. - Chinese Localization Import + Local Log Ignore (2026-02-23): Imported tester-provided zh-Hans localization updates (
localization/loc.zh-Hans.json) after QA validation, and added[Ll]atest.logto.gitignoreto keep shared root log files out of commits. - Tutorial Extraction (2026-02-09): Extracted tutorial/help text and flow context into
docs/tutorial-texts.md; updateddocs/game-api.mdwith tutorial start path, skip behavior, and text-source notes. Deep asset pass recovered additional gameplay instruction lines fromMelatonin_Data\level0(metronome, timing circle, score mode readiness, and auto-restart behavior). - Duplicate Announcement Reduction (2026-02-09): Added targeted debounce for dialog text (
DialogueHandler), language/start screen (StartScreenHandler), and map mode menu (MapHandler), plus stronger whitespace/time normalization inScreenReader. Build succeeded and DLL auto-copied to gameModsfolder. - Duplicate Announcement Reduction Pass 2 (2026-02-09): Removed additional duplicate bursts in
AchievementsHandlerandExtraMenusHandler(community next/prev page and calibration activation/description) with short cooldown-based dedupe. Build succeeded and deployed. - Localization Framework (2026-02-09): Added
Loc.cs, language auto-refresh viaSaveManager.GetLang(), and routed mod-originated announcements through localization keys for all game-supported languages. - Editor Completeness Pass (2026-02-09): Added narration for
AdvancedMenu(activate, tab swap, row changes, value changes) andTimelineTabs(Show,NextTab,PrevTab). - Lock-State & Map Input Completeness (2026-02-09): Added explicit spoken lock reasons for map mode and stage-end options, plus bracket-action conflict handling with
F9/F10teleport fallback. - Debug Toggle Fix (2026-02-09):
DebugModenow defaults OFF and is toggled at runtime withF12, with spoken on/off confirmation. - Credits Accessibility (2026-02-09): Added credits sequence narration, including scrolling credit entries.
- README Added (2026-02-09): Wrote
README.mdwith controls, navigation flow (including bracket/up-arrow usage), localization coverage, and install/build instructions. - Menu Speech Unification + Welcome Prompt Update (2026-02-09): Combined predictable opening announcements into single utterances (menu title + first item where applicable), and replaced the title-screen welcome line with a localized controller-aware prompt (
Press [Action] to begin, Press [Language Key] to change language). - Playtest Follow-up Fixes (2026-02-09): Removed
F1behavior, added position announcements for language/mode menus, merged results + initial stage-end choice into one utterance, improved tutorial dialog capture in followers, changed tutorial start label to a localized skip prompt, and added gamepad snap-to-hotspot input (Action Left/Right, e.g. LB/RB). - Followers Tutorial Graphic Text Fix (2026-02-09): Added
DialogBox.ChangeToGraphicnarration path for left/right graphic tutorial text blocks and reinforced practice-start wording as localized tutorial skip prompt. - Graphic Dialog Punctuation Cleanup (2026-02-10): Adjusted dialog part joining to avoid duplicate punctuation when graphic tutorial lines already end with sentence punctuation.
- Map Hotspot Chatter Reduction (2026-02-10): Added same-landmark debounce in
MapHandlerso rapid collider re-entries no longer spam repeated hotspot arrival lines. - Teleport Star Grammar Fix (2026-02-10): Added singular star localization key and switched teleport arrival speech to use singular/plural variants correctly.
- Optional Announcement Toggles (2026-02-10): Added
ModConfig.csusingMelonPreferenceswith toggles for map hotspot speech, rhythm cues, tutorial/dialog narration, and credits narration. - Speech Regression Checker Script (2026-02-10): Added
scripts/Test-SpeechRegression.ps1to scan MelonLoader logs for consecutive duplicate SR lines and known forbidden patterns. - Localization Consistency Pass (2026-02-10): Improved non-English coverage for startup loaded message, results summary wording, and Vietnamese space cue label.
- README Release/Testing Update (2026-02-10): Expanded
README.mdwith controller-aware navigation guidance, MelonPreferences toggle documentation, and speech regression script usage examples for post-playtest validation. - Runtime Settings Hotkeys + Persistence (2026-02-10): Added
F2runtime toggle for rhythm cue announcements with immediateMelonPreferencessave, and movedF12debug toggle to persistent config-backed state restored at startup. - Multilingual Smoke Audit (2026-02-10): Verified localization coverage for critical lines (
intro_welcome,tutorial_skip_prompt,results_stats, lock reasons,credits_title) with placeholder consistency checks across all supported languages. - Speech Regression Check Pass (2026-02-10): Ran
scripts/Test-SpeechRegression.ps1against currentMelonLoader\Latest.log(8 speech lines, 0 errors, 0 warnings). - Release Prep Artifacts (2026-02-10): Added
CHANGELOG.md, bumped mod version to1.1.6, and packagedrelease\MelatoninAccess-v1.1.6.zip(DLL + README + changelog + regression checker script). - Release Tag Prepared (2026-02-10): Created local annotated tag
v1.0at commit49d1505per release naming request. - Release Dependency Bundling (2026-02-10): Added tracked
libs\x86\Tolk.dllandlibs\x86\nvdaControllerClient32.dll, updated ignore rules to keep these DLLs in repo, and addedscripts\Build-ReleasePackage.ps1to generatev1.0release ZIP with onlyMods\MelatoninAccess.dll+ required Tolk/NVDA client DLLs. - README Install Instructions Expanded (2026-02-10): Added explicit step-by-step install guidance for release ZIP and source-build workflows, including exact destination paths for mod and dependency DLLs.
- README Support + Installer Link Update (2026-02-10): Added Buy Me a Coffee support message and direct MelonLoader installer link in release installation steps.
- Map Teleport Double-Trigger Fix (2026-02-10): Added teleport dispatch guard (same-frame + short cooldown) and edge-based gamepad action detection so one key/button press maps to one teleport step.
- Bugfix Release Published (2026-02-10): Released
v1.0.1on GitHub as latest with map teleport double-jump fix and updated install/readme notes; attached minimal package (Mods\MelatoninAccess.dll,Tolk.dll,nvdaControllerClient32.dll). - Settings Value Timing + Results Comment Fix (2026-02-10): Adjusted option value-change speech to read after a short post-input delay (prevents stale pre-change value reads in display/calibration-style settings), and extended results narration to include
WavesBoxcomment text in addition to score/stats/menu option. - Settings/Calibration/Localization Polish (2026-02-10): Added resolution-specific post-refresh value announcement logic to avoid stale reads, combined calibration hint with calibration menu opening into one utterance, and localized map dream/level names through
Loc.GetDreamName()keys across all supported game languages. - Bugfix Release Published (2026-02-10): Released
v1.0.2on GitHub as latest with resolution value-timing fix, calibration menu utterance merge, and localized map level-name announcements; attached minimal package (Mods\MelatoninAccess.dll,Tolk.dll,nvdaControllerClient32.dll). - Global Menu Position Toggle (2026-02-10): Added persistent
F3runtime toggle (AnnounceMenuPositions) that enables/disables position context (X of Y) across option menus, language/mode menus, achievements, stage-end options, and downloaded-level row/page narration; added localized toggle confirmations for all supported languages. - Release Bundle Loader Config (2026-02-10): Added tracked
UserData\Loader.cfg(copied unchanged from maintainer install) and updatedscripts\Build-ReleasePackage.ps1to always include it in release ZIPs underUserData\Loader.cfg. - Release Published (2026-02-10): Released
v1.0.3on GitHub as latest with globalF3menu-position toggle and bundledUserData\Loader.cfgin the release package. - Release Notes Formatting Fix (2026-02-10): Rewrote GitHub release bodies for
v1.0,v1.0.1,v1.0.2, andv1.0.3using proper multiline markdown so headings/lists render correctly (removed literal\ntext artifacts). - Map Progress Hotkey + Gamepad Input Source Fix (2026-02-11): Added map-only
F1announcement for current landmark progress (stars collected and stars still needed to pass), and removedctrlTypedependency from map teleport gamepad detection soAction Left/Rightnavigation assist keeps working after keyboard input. - Map Progress Hotkey Refinement (2026-02-11): Updated
F1to announce map/chapter-level star totals (matchingTotalBoxbehavior) instead of nearest-landmark stars; summary now reports total chapter stars and remaining stars to pass threshold. - Release Published (2026-02-11): Released
v1.0.4on GitHub as latest with map-summaryF1behavior and map gamepad input-source handoff fix. - v1.0.5 Local Prompt + Mode-Title Pass (2026-02-11): Rhythm tutorial cues now announce dynamic action prompts (
Press {Action}/Hold {Action}) based on rebind/controller context instead of hardcoded Space, and mode-menu open narration now prepends the localized full dream title (Dream about {Level}. Mode menu...). - Localization QA Automation (2026-02-11): Added
scripts\Test-LocalizationQA.ps1to validate fullLoc.cscoverage and placeholder parity across all supported languages; integrated automatic execution intoscripts\Build-ReleasePackage.ps1(with-SkipLocalizationQaoverride) and documented usage inREADME.md. - Context Help Hotkey (2026-02-11): Added global
F11context-aware control help (ContextHelpHandler) with localized prompts for title screen, generic menus, map navigation, mode menu, gameplay, results, and editor contexts. - Tutorial/Dialog + Community Loader Follow-up (2026-02-11): Added delayed reads to
DialogBox.SetDialogStateto reliably capture initial tutorial text lines, and preventededitor_readyfrom announcing on downloaded/community-level loader path (LvlEditorwith non-emptydownloadFilePath). - Per-Level Completion Briefing Reverted (2026-02-11): Removed mod-generated level-start briefing per user preference to keep startup narration limited to game-provided/tutorial text.
- Release QA Spot Check (2026-02-11): Ran
pwsh -File .\scripts\Test-LocalizationQA.ps1(116 localization keys parsed, 0 errors, 0 warnings). - Packaging QA Gate Verification (2026-02-11): Ran
pwsh -File .\scripts\Build-ReleasePackage.ps1; confirmed localization QA executes in packaging flow andBuild-ReleasePackage.ps1is configured to exit with the QA failure code on localization check failure. - Cutscene AD Timing Pipeline (2026-02-11): Added data-driven intro/outro timing scaffold (
cutscene-ad/manifest.json+ per-cutscene JSON files), validator script (scripts\Test-CutsceneAdPipeline.ps1) for ordering/overlap/missing-entry checks, initial C# loader/validation models (CutsceneAdPipeline.cs), and workflow docs (docs/cutscene-ad-pipeline.md+README.mdsection). - Runtime Startup Fix (2026-02-11): Removed
System.Runtime.Serializationruntime dependency fromCutsceneAdPipeline(startupFileNotFoundExceptionin MelonLoader), switched to Unity JSON path withUnityEngine.JSONSerializeModulereference, and verified clean local build. - Dialogue Coverage Pass (2026-02-11): Expanded
DialogueHandlerto coverDialogBox.Show()in addition to existing dialog hooks, added speaker-label prefixing when the in-game label is visible, and kept debounce-safe delayed reads for rapid dialog state changes. - v1.0.5 Accessibility Bugfix Pass (2026-02-11): Reduced duplicate dialog narration bursts (especially tutorial
Redo/state transitions), changed standalone tutorial chapter side label toTutorial(no misleading skip prompt), blocked map snap assist while map input is disabled/cutscenes are active, added calibration timing callouts (early/latein milliseconds), improved action-key option speech to include current binding, expanded community level row speech with subtitle/tags context, fixed locked-achievement detection using checkmark state, and stopped credits roll narration when pause/title menus are active. - v1.0.5 Tutorial + Community + Credits Follow-up (2026-02-11): Updated credits narration to pause/resume across pause menu without losing position, merged downloaded-level initial/page-change narration into one utterance with first playable row context, switched action-key option binding speech to keyboard mapping only, and added chapter-1 tutorial cue overrides (tech double-press callout, followers rhythm/stop guidance, food beat-target guidance, shopping pattern guidance). Added new localization keys, refreshed
docs/game-api.mdwith row-layout and chapter-1 cue findings, and tracked completion intodo.md. - v1.0.5 Log-Driven Fixes Pass 2 (2026-02-12): Fixed downloaded-level page-change utterance targeting by waiting for async row repopulation and summarizing from the highlighted row, prevented trailing credits narration when exiting to title by stopping narration on
Creditor.ExitToTitle, added one-time tutorial-chapter metronome hint (Press {Action} on the second beat), moved shopping pattern guidance earlier to song start, refined followers guidance with section-specific vibration timing prompt (and removed premature double-press callouts), tightened tech double-press detection to rapid sections only, and added remaining-practice contextual-cue expansion totodo.md. - Localization Polish Pass (2026-02-12): Updated Spanish dream-name accents (
Tecnología,Presión,Meditación,Estrés), switched language/achievements menu title announcements to prefer live game UI title fragments over mod-owned title strings, and expandedREADME.mdacknowledgements for localization/testing contributions (luyi,dreamburguer). Added corresponding API note indocs/game-api.md. - Chinese Dream-Title Format Fix (2026-02-13): Updated
dream_about_levellocalization format to use natural Chinese phrasing (梦见{0}/夢見{0}) instead of literalabout ... dreamwording. - Tech/Time Cue Clarification + Spanish Accent Pass (2026-02-14): Refined
Dream_techtutorial wording to key off the high cue (next beat/next 3 beats), addedDream_timescene-specific hold/release prompts for portal-gap and sixth/seventh-cue timing (cue_time_portal_gap_hold_release,cue_time_sixth_seventh_hold_release), and applied broad Spanish diacritic fixes (includingñand accent marks) across menus, objectives, and cue lines. - Practice Start Overlap Fix (2026-02-14): Removed
practice_mode_startedspeech trigger fromRhythmHandlerso practice/tutorial cue instructions are not pre-empted by mode-start announcements. - Unity Asset Extraction CLI (2026-02-14): Added
scripts/extract_unity_assets.pyfor command-line extraction/indexing of Unity assets (AudioClip,AnimationClip,Sprite,Texture2D,TextAsset, optionalMonoBehaviourtypetree export), ran a full baseline extraction toartifacts/asset-extract, documented usage inREADME.md, and added extraction-limit notes todocs/game-api.md. - v1.1 Release Published (2026-02-14): Updated version metadata (
Main.csMelonInfo + project version), addedCHANGELOG.md1.1section, pushedmaster, and published GitHub releasev1.1(tag and release page). - Cutscene Experiment Branch Created (2026-02-14): Created and pushed
cutscene-audiodescription-experimentsfrom updatedmasterfor cutscene audio-description R&D. - v1.1 Release Asset Uploaded (2026-02-14): Built package via
scripts/Build-ReleasePackage.ps1workflow, adjusted staged config folder toUserConfig, repackedrelease/MelatoninAccess-v1.1.zip, and uploaded it to GitHub releasev1.1with expected layout (Mods/MelatoninAccess.dll,UserConfig/Loader.cfg, rootTolk.dll, rootnvdaControllerClient32.dll). - GitHub Auto-Release Packaging Workflow (2026-02-14): Added
.github/workflows/release-package.ymlto build and upload the release ZIP onv*tag pushes (Windows runner,Releasebuild, existingBuild-ReleasePackage.ps1), and updated local packaging script/docs to standardizeUserConfig/Loader.cfgoutput. - Cutscene AD First-Pass Authoring (2026-02-14): Filled all
cutscene-ad/scripts/chapter_*_{intro,outro}.jsonwith concise first-pass timestamp/text-key entries (including map transition events like map music start, control unlock, and mirrored-map start), added matching localization keys inLoc.cs, and verified withTest-CutsceneAdPipeline.ps1 -StrictCoverage -RequireEntries -ValidateLocKeys(0 errors, 0 warnings). - Cutscene AD Runtime + Packaging Wiring (2026-02-15): Added
CutsceneAdHandlerruntime playback (scene/cutscene-state detection, timed cue dispatch throughLoc/ScreenReader), initialized it fromMain, updated build/package flows to shipMods\cutscene-adautomatically, and documented runtime API hooks and package layout updates indocs/game-api.mdandREADME.md. - Local v1.2 Tester Packaging Flow (2026-02-15): Added
scripts/Build-LocalV12Package.ps1to generate/overwrite a single localrelease\MelatoninAccess-v1.2.zipartifact and clean priorv1.2*package leftovers before each tester build. - Cutscene AD Loader Retry Fix (2026-02-15): Fixed one-shot startup load issue in
CutsceneAdHandlerby adding periodic runtime reload attempts, broader manifest path resolution candidates, and explicit failure-reason logging; this resolves sessions where intro/outro AD remained silent withscripts are not loaded. - Cutscene JSON Fallback Parser (2026-02-15): Added non-Unity fallback parsing in
CutsceneAdPipelinefor manifest/scripts when runtimeJsonUtilityyields empty arrays, plus stricter runtime validation for empty cutscene/entry arrays. - Cutscene AD Content Pass 2 (2026-02-15): Replaced generic first-pass cutscene lines with chapter-specific, event-anchored descriptions across all intro/outro script files and updated
Loc.cskeys accordingly (including clearer map transition/transient lines like map unlock and mirrored start). - Dream_time Sixth/Seventh Hint Timing Fix (2026-02-15): Moved
cue_time_sixth_seventh_hold_releaseout of early teaching by gating the(hold 1, release 2, half-hold)signature to the final teaching section inRhythmHandler. - Dream_time Final-Section Hint + Map Transient Runtime Announce (2026-02-15): Updated
Dream_timesixth/seventh cue gating to trigger on the later repeated section match (instead of first match), and added runtime map transient announcements (map controls unlocked, including mirrored-map variant) fromMcMapenabled-state transitions. - Dream_time Final-Section Sequence Gate + Map Transient AD Retime (2026-02-15): Replaced
Dream_timesixth/seventh heuristic timing with sequence-index gating (Dream.sequences[3]final teaching segment) so the line no longer fires in phase 2; retimed chapter intro cutscene map cues to fire beforeisCutsceneIntroclears; replaced genericcontrols unlockedwording with map-transient phrasing in runtime/map cutscene AD keys. - Dream_time Late-Break Hint Gate + Night 3 Outro Spacing (2026-02-16): Reworked
Dream_timesixth/seventh hint timing to trigger only after repeated(hold 1, release 2, half-hold)sightings and then speak on a later portal-gap break (instead of early teaching), and spreadChapter_3outro cutscene AD timings to reduce back-to-back speech overlap. - Dream_time Final-Transition Sequence Code Gate (2026-02-16): Switched Night 3 sixth/seventh hint timing to a deterministic final-transition gate by tracking
Dream.StartSequenceDown/Up(codeNum)and speaking the hint only when the portal-gap break occurs withcodeNum == 4, to force placement right before the last phase. - Dream_time Late Song-Progress Gate (2026-02-16): Replaced Night 3 sequence-code gating with a late
GetSongProgress()threshold gate and now speaks sixth/seventh guidance only on portal-gap break after late-song progress, to move the line before the final phase and out of early sections. - v1.1 Contextual Cues Pass 1 (2026-02-12): Added scene-specific
Dream_datingswipe cue narration (left/right + long-countdown variants), added one-timeDream_datingintro guidance on song start, localized new cue keys for all supported languages, and documented cue timing patterns indocs/game-api.md. - v1.1 Contextual Cues Pass 2 (2026-02-12): Added controller mirrors for utility hotkeys (
View-> map stars/F1 equivalent,L3-> rhythm cues/F2 equivalent,R3-> menu positions/F3 equivalent), replaced noisyDream_techper-hit prompts with phase-level guidance and selective rapid-double callouts, addedDream_followersphase-3 pre-brief 2 beats early, and updated map dream-name formatting to prefer live UI text when available before localization fallback. - v1.1 Contextual Cues Pass 3 (2026-02-12): Applied the
melatonin tutorials.txtcue requirements to the listed dreams only (followers,dating,time,space,desires,nature,mind,past,future), including hold/release duration narration, camera-sound-specificDream_pasthold guidance, andDream_futuredirectional overrides (Press Up, shortLeft right). Added missing localization key coverage and documented decompiled mapping details indocs/game-api.mdandtodo.md. - v1.1 Contextual Cues Pass 4 (2026-02-12): Applied log-driven wording/timing refinements: moved followers phase-3 cue later (after spring-stop transition), changed
Dream_futureup cue to shortUp, added one-timeDream_futurefollow patternsintro line, switchedDream_space/Dream_desireshold guidance to release-beat phrasing, simplifiedDream_pastlines to plain hold durations and suppressed repeated repeats, renamed F2 toggle speech to contextual tutorial cues, and appended locked remix requirement guidance to map teleport arrival lines in one utterance. Updateddocs/game-api.md,todo.md, andREADME.md. - v1.1 Contextual Cues Pass 5 (2026-02-12): Fixed release-beat math for
Dream_spaceandDream_desiresto use phase-relative counting (release - hold + 1) instead of absolute queue beat values, matching requested outputs like phase 1/2/3 -> beat4/2/7in Space and corrected Desires beat callouts. - Level Editor Graduation (2026-02-12): Confirmed level editor accessibility is fully supported (no longer experimental), including cursor, tool, advanced menu, and timeline narration.
- v1.1 Release Polish Pack 1 (2026-02-12): Added missing
Dream_food7th-beat practice cue coverage, added gameplay-start announcements for Practice and Score modes (TriggerSong), and completed terminology cleanup for user-facing wording from "rhythm cues" to "contextual cues" in help/objective strings and config comments. Updateddocs/game-api.md,README.md, andtodo.md. - Backlog Cleanup (2026-02-12): Simplified
todo.mdto keep only actionablev1.1items, moved audio-description work explicitly under deferredv1.2, and removed stale template tasks that are already implemented or not applicable (for exampleDream_foodjump/shoot split at queue level). - Repository History Sanitization (2026-03-02): Purged tracked
decompiled/game-source dumps and historicalbin/obj/artifactsbuild outputs from all branches/tags usinggit filter-branch, deleted rewrite backup refs, ran aggressive object pruning, and force-pushed rewritten branches/tags to GitHub.
- 1.1 Structure overview (namespaces, singletons) → documented in game-api.md
- 1.2 Input system — ALL game key bindings documented in game-api.md "Game Key Bindings"
- 1.2 Input system — Safe mod keys identified and listed in game-api.md "Safe Mod Keys"
- 1.3 UI system (base classes, text access patterns, Reflection needed?)
- 1.4 State management decision → documented in "Architecture Decisions" below
- 1.5 Localization: game's language system analyzed (multilingual project)
- 1.6 Game mechanics (analyzed as needed per feature)
- 1.7 Status/feedback systems
- 1.8 Event system / Harmony patch points
- 1.9 Results documented in
docs/game-api.md - 1.10 Tutorial analysis (when relevant)
- Arrow keys / WASD: movement and menu navigation (configurable)
- Space: Action/Select by default (rebindable)
- Escape or R: Cancel/Back (rebindable)
- Escape or controller Start: Pause
- Controller utility buttons (Unity Input System):
View/Back,L3,R3 - Gameplay uses additional per-dream timing inputs (documented under
docs/game-api.md)
- State management approach: Scene-aware handler ownership and per-handler gating are used;
AccessStateManageris not currently used in this project. - Reasoning: Existing handlers are stable with localized responsibility, Harmony hook boundaries, and explicit scene/game-mode checks; no unresolved shared-input conflicts currently require a central state manager.
- GitHub Cache/GC Follow-up: Open a GitHub Support request to run server-side garbage collection/cache cleanup for removed copyrighted/sensitive history after force-push.
- Focused Playtest: Validate end-to-end flow for map mode locks, stage-end locks, advanced menu/timeline narration, and credits scrolling narration.
- Language Spot Check: Switch each in-game language and verify key mod-only lines (debug toggles, map lock reasons, teleport conflict hint, results summary) are spoken correctly.
- Config Spot Check: Toggle each new
MelonPreferencessetting and verify the targeted announcement group turns on/off without side effects. - Hotkey Spot Check: Verify
F2,F3, andF12update behavior immediately and remain in the same state after restarting the game. - New Feature Spot Check: On map scenes, press
F1and verify it announces chapter/map stars, rings, and perfect-run totals; on chapters 1-4 it should also append the remaining stars needed to pass. VerifyF1is silent in non-map scenes. - Ring Progress Spot Check: On map scenes, move onto landmarks normally and with bracket/F9/F10 teleport. Verify dream announcements include both stars and rings whenever the game shows a score bubble, omit counts on untouched dreams, and still append the locked remix requirement when applicable.
- Gamepad Resilience Spot Check: Use map gamepad teleport (
Action Left/Right), press any keyboard key, then confirm gamepad teleport still works without needing to open/close pause menu. - v1.0.5 Prompt Spot Check: In tutorial/practice gameplay, rebind Action (for example to
Enter,Period,Slash, and a letter key) and verify rhythm cues announce the new action prompt correctly; with controller active, verify prompts use controller action naming. - v1.0.5 Mode Menu Spot Check: From map navigation, open multiple levels and confirm the opening line says the full dream title before mode menu/options (for example
Dream about Money. Mode menu. Practice...). Verify Score/Hard entries also announce the visible star/ring values when the menu shows them. - Context Help Spot Check: Press
F11on title screen, in regular menus, on map, in map mode menu, during gameplay, on results, and in editor; verify each context speaks relevant controls and uses current action/cancel prompts. - Tutorial Intro Spot Check: Enter tutorial from chapter menu and verify the first instruction block (including multi-line startup warning text) is announced without hardcoded text dependencies.
- Community Loader Spot Check: Start downloaded/community level flow and verify
Level editor readyis no longer announced before gameplay. - v1.0.5 Community Summary Spot Check: Enter Downloaded Levels and verify one utterance on load (
total/page + first level row + position) and one utterance on next/previous page (page action + first level row + position) without immediate duplicate row readback. - v1.0.5 Credits Resume Spot Check: During credits, open pause menu, wait, then resume and verify narration continues from the next unread credit entry; verify narration state resets cleanly after credits finish/exit.
- v1.0.5 Tutorial Cue Spot Check: In Tech/Followers/Food/Shopping practice, verify reduced spam and scene-specific guidance lines (double-press, rhythm stop cue, beat-target lines, repeat-pattern line).
- v1.0.5 Tutorial Chapter Cue Spot Check: Start standalone tutorial chapter and confirm one-time hint is spoken when metronome gameplay starts (
Press {Action} on the second beat). - v1.0.5 Credits Exit Spot Check: From rolling credits, choose
Exit to menuand verify no additional credits-entry lines are spoken after exit is selected. - v1.1 Dream_dating Cue Spot Check: In
Dream_datingpractice, verify one-time intro guidance (follow swipes) and directional prompts:- short countdown windows (
Queue*HitWindow(3)) should saySwipe left/Swipe right - long countdown windows (
Queue*HitWindow(6)) should saySwipe left/right after the long cue - prompts should remain directional (not generic
press action) during dating practice
- short countdown windows (
- v1.1 Controller Utility Hotkey Spot Check:
- On map scenes, press controller
Viewand confirm it speaks the same chapter progress summary asF1(stars, rings, perfects, plus remaining stars on chapters 1-4). - Outside map scenes/menus/gameplay, press controller
Viewand confirm no map-stars line is spoken. - Press
L3/R3and confirm they toggle rhythm/menu-position announcements exactly likeF2/F3, including persistence after restart.
- On map scenes, press controller
- v1.1 Tech/Followers Cue Spot Check:
Dream_techpractice phase 1 should announce one-timePress {Action} every 2 beats.Dream_techpractice phase 2 should announce one-timePress {Action} on the next 3 beats(earlier, not overlapping first target).- Rapid-double sections should only call out
Press {Action} twicewithout mixed duplicatePress {Action}lines. Dream_followersphase 3 should announce one pre-brief 2 beats before section start (to the beat, thenpress twice after vibration).
- v1.1 Dream Name Source Spot Check: In non-English map language, confirm landmark/mode-menu dream names prefer live in-game text when present and otherwise fall back cleanly (no empty/broken names).
- Calibration Validation: Confirm early/late ms values feel directionally correct against intentional early/late taps and note any offset formula tuning needed.
- Cutscene AD Timing/Wording Spot Check: Play each chapter intro/outro with first-pass scripts, validate timing against real visuals (including map transitions), and tighten any lines that overlap key SFX or important gameplay cues.
- Post-Release Validation: Monitor issues/feedback from
v1.0.4and collect any remaining edge cases from real-world play sessions. - Release Workflow Follow-up: Fix or replace the hosted GitHub Actions release build; the current
windows-latestrunner cannot compile this project from a clean checkout because MelonLoader/game reference DLLs are not available there.
- [2026-04-21] Published
v1.3.0as the latest GitHub release using the verifiedrelease\MelatoninAccess-v1.3.0.zippackage after pushingmasterand tagv1.3.0. - [2026-04-21] Prepared the final feature-build package as
v1.3.0: updatedMain.cs/MelatoninAccess.csprojversion metadata, added theCHANGELOG.md1.3.0entry, refreshed README release examples and map-summary wording, builtRelease, passedscripts\Test-LocalizationQA.ps1and cutscene AD QA throughscripts\Build-ReleasePackage.ps1, verifiedrelease\MelatoninAccess-v1.3.0.ziplayout, and deployed theReleaseDLL toL:\SteamLibrary\steamapps\common\Melatonin\Mods. - [2026-04-21] User-tested the new ring-aware map announcements and reported that they read correctly in-game.
- [2026-04-21] Implemented ring-aware map progress narration.
F1/controllerViewnow read the visible chapter totals (stars,rings,perfects) and still append remaining stars to pass on chapters 1-4; landmark arrival, bracket/F9/F10 teleport, and mode-menu Score/Hard entries now announce the same star/ring values that sighted players see on the map UI. Added new localization keys in all supported languages and verified both localization QA andscripts\Build-Mod.ps1. - [2026-04-21] Researched ring progress in the decompiled game code. Rings are not hidden collectibles; they are the hard-mode (
Alt) score track for each dream, with visible UI on landmarks, the mode menu, the chapterTotalBox, hard-mode results (PlanetRings), and Steam achievements. Chapter/passage unlocks still depend on stars, not rings. Added the detailed API notes todocs/game-api.md. - [2026-04-16] Prepared the
1.2.0release: updated version metadata and changelog, aligned README examples toscripts\Build-Mod.ps1/scripts\Deploy-Mod.ps1, and corrected release packaging to keepUserData\Loader.cfgin the ZIP so users can copy the full archive contents straight into the Melatonin folder. - [2026-04-16] Refreshed local path defaults to the current Melatonin install on
L:\SteamLibrary\steamapps\common\Melatoninso the build, deploy, log-check, and asset-extraction helpers use the right game folder out of the box. - [2026-04-16] Local
Releasebuild and packaging both passed (Build-Mod.ps1, localization QA, cutscene AD QA). The tag-triggered GitHub Actions release workflow failed on the hosted runner during compile because the project references MelonLoader/game DLLs from a local install path, sov1.2.0was published manually withgh release createusing the locally verified ZIP. - [2026-04-16] Cleaned up
README.mdafter release to remove mixed audiences and repetition: install steps are now front-loaded for players, while build, packaging, QA, and research tooling live under a dedicated maintainer section. - [2026-04-08] Completed the refreshed template migration: filled
AGENTS.mdplaceholders with Melatonin-specific values, addedscripts/Build-Mod.ps1andscripts/Deploy-Mod.ps1, restored.gitignoreprotections for logs/artifacts/game DLLs, validated both wrapper scripts (including a local smoke deploy toartifacts\deploy-smoke\Mods), and re-decompiled the current gameAssembly-CSharp.dllinto local ignoreddecompiled/viailspycmd(249.csfiles). - [2026-03-04] Started template migration on branch
migration-to-an-updated-template; preserved prior ignore safeguards by merging old.gitignoreentries into the new template file and restored project-specificAGENTS.mdsetup/build values while removing setup-only placeholders/reminder section. - [2026-03-02] Legal/risk cleanup: confirmed
decompiled/and historical game DLL/build outputs were committed in early history; rewrote all branch/tag history, removedrefs/originalbackups, expired reflogs, ran aggressivegit gc --prune=now, force-pushed cleanedmaster/cutscene-audiodescription-experimentsplus release tags, and removed temporary remote tagpre-scrub-2026-03-02. - [2026-02-23] Cleaned
todo.mdbacklog: removed stale v1.1-era items and archived notes, keeping only current active and deferred tasks. - [2026-02-23] Reviewed tester-provided
Latest.log: it reflects an older pre-fallback DLL build where localization loaded0entries; current branch has fallback loader fix and quiet fallback summary logging. Imported tester zh-Hans strings and validated localization/cutscene QA. - [2026-02-23] Reduced localization startup log spam: fallback parser now reports one concise summary line instead of one warning per language file.
- [2026-02-23] Investigated log regression showing
Locloading zero JSON entries; added BOM-safe file read and fallback key/value parser inLoc.cs, rebuilt, and regenerated localv1.2package. - [2026-02-23] Completed non-English localization pass for all cutscene AD keys (
ad_*) in JSON localization assets; localization QA and cutscene pipeline validation both pass. - [2026-02-23] Replaced hardcoded localization tables in
Loc.cswith JSON-backed data files underlocalization/; release packaging and QA now validate/copyMods/localizationassets directly. - [2026-02-13] Reviewed
Loc.cszh-Hans/zh-Hant localization entries for naturalness; documented awkward contextual-cue wording, key-labels, the map progress summary, and duplicate dream names for follow-up with the user. - [2026-02-13] Reviewed
Loc.csFR/DE/ES/PT strings for naturalness, highlighted missing accents and garbled phrases, and captured a focused list of keys to clean up. - [2026-02-13] Reviewed JA/KO
Loc.csstrings; onlyresults_statsstill reads in English/romanization so it needs localized words before release.