Preserve declarative click-sound policy for scripted nano rows and slots
User requests fixing the remaining Nano Programs click-sound regression. Offline/local-only workflow: no Git fetch/push/Gitea/remote operations. Existing Shared worktree /home/mathias/Projects/worktrees/engines-client-lua-shared-capabilities is clean at local b54c7291008f41190247d48c841719cf3b727612 on fix/client-lua-content-sized-windows. Create a fresh fix/client-lua-xml-click-sound branch at that local commit (no network). Shared agent lua-shared-capabilities owns generic support; lua-nano-programs owns package-local XML. Observed evidence: GuiView.ClickSound is a separate auto-property defaulting true. XML attrs are retained but do not initialize it, and GuiInputManager mouse and keyboard activation paths check this property before raising Activated. Native Nano Programs previously set ClickSound=false for table rows and slots, including empty slots, while school buttons remain audible. In dirty Nano migration, NanoProgramTests.CastingFromTheWindowPlaysNoClickButTheSchoolButtonsDo remains enabled and fails (cast delegate runs but one extra Activated event occurs). Implement minimal generic declarative click_sound support with current default true and coherent existing programmatic setter behavior. Avoid a new Lua API if XML suffices; do not globally mute interface sounds, change casting, suppress activation permissions or modify gameplay/audio mechanisms. Inspect native property/layout patterns before choosing storage. Add real GuiInputManager regressions covering XML opt-out, missing/default-enabled behavior, mouse+keyboard activation and native setter compatibility. Keep public XML guide concise. Nano agent should add click_sound=false only to package row and slot templates, not school controls, under coordinated ownership. No direct native adapter widget mutation or disabled test. Shared must not edit peer dirty tree; read-only isolated-copy integration proof is acceptable. Preserve all other worker preparation. Validate shared graphics/input tests and Nano's retained behavior regression against composed changes, plus targeted/full client as practical. Per-window AOT smoke is NOT a blocker for this batch: user/coordinator agreed shared AOT is already established and a combined full-client AOT publish later is sufficient. Do not expand common harness or restart aborted reviews. Leave platform/live limitations explicit. User subsequently explicitly approved a LOCAL COMMIT of the validated XML click-sound fix. No fetch/push/remote Git/Gitea/PR/peer edits authorized. Previous authorization produced b54c72910; this separate approval produced the click-sound commit below. Validated local implementation / handoff: - Fresh local branch fix/client-lua-xml-click-sound at b54c7291008f41190247d48c841719cf3b727612, clean before work. Local commit 3fcf250a564b49919219c8be4e98ca3b1112f567: fix: Honor XML click-sound policy for native UI input. Final branch/status/diff checks verified exactly the three intended source/test/XML-guide files, no temporary mutation/private metadata/generated artifacts, and a clean post-commit worktree. No remote Git/Gitea operations, publication or peer edits/status changes. Unchanged expensive suites and the aborted review were not rerun for the commit. - Production change is one constructor assignment in PRK.Client/PRK.GraphicsEngine/UI/GuiView.cs: ClickSound = GetBoolAttribute("click_sound", true), following visible/enabled initialization. Existing auto-property/native setters and both input activation paths remain unchanged. XML is initial configuration; subsequent native ClickSound assignments override it. No Lua API, inherited/global muting, gameplay/permission or audio mechanism changes. Concise guide added in PRK.Client/UI_XML.md. - Real-input regression added to GuiInteractionTests: Button mouse, ItemSlotView mouse and TextInputView Enter submission, each with explicit false/true/absent XML; each also toggles the native setter both ways while proving handlers still execute. Before the assignment:3 expected false cases fail,6 enabled/default controls pass. After:all9 pass. Existing native ClickSound setter and keyboard-submission tests remain intact. - Read-only Nano proof: archived own b54 source into ignored .dev-data/xml-click-sound-nano-proof and copied Nano's six migration source/test files plus its package, removing only replaced legacy files in that copy. Nano agent had already added click_sound=false to row.xml and slot.xml; no attributes were changed here. Its current stronger retained CastingFromTheWindowPlaysNoClickButTheSchoolButtonsDo regression remains intact, covering row/descendant/populated/empty slot silence and school feedback. With the old GuiView constructor, that exact test fails (expected0 feedback,actual3). Copying only the fixed GuiView makes the expanded Nano/shared/target/shortcut/tooltip/table/persistence/resize suite pass:110 passed,2 installed-GUI rendering skips,0 failed. Final comparisons verify all copied Nano source/tests/package still exactly match the peer tree. This proves composition in a copy, not peer-branch integration. - Final own-worktree validation with warnings-as-errors: full graphics suite713 passed,1 existing ignored test skipped,0 failed; full client suite4002 passed,180 environment/asset/native-fixture skips,0 failed. git diff --check clean. Exactly3 intended changed files: GuiView.cs, GuiInteractionTests.cs, UI_XML.md. No generated artifacts/private metadata added. No temporary mutation remains; only red-before/green-after controls were used. - Logs (ignored): .dev-data/xml-click-sound-red.log, xml-click-sound-graphics.log, xml-click-sound-nano-control.log, xml-click-sound-nano-green.log, xml-click-sound-full-client.log. No review restarted and no AOT harness expansion or publish run: agreed combined full-client AOT publish remains deferred. Linux x64 container validation only; Windows/macOS/live audible output/remote CI not executed. Tests verify native Activated sound notifications rather than physical audio output. Integration: coordinator routes local commit 3fcf250a564b49919219c8be4e98ca3b1112f567 to the Nano branch for safe fast-forward while preserving dirty preparation. Ensure only NanoPrograms/row.xml and slot.xml have click_sound=false (already present in the read-only snapshot), including empty slots; leave school controls default-enabled. No adapter-side mutations or new Lua calls are needed. Rerun Nano's retained regression/targeted suite after actual integration; do not mark/resume the peer from isolated-copy evidence alone. Local commit is ready for coordinator routing; remote publication remains unauthorized/unperformed.
Checklist
3 of 3 complete- Reproduce XML-defined silent activation failing through real mouse/keyboard input while existing default/native setter semantics remain controlled.
- Implement minimal generic XML click-sound policy with default enabled; coordinate silent Nano row/slot attributes without muting school controls.
- Verify shared input/graphics regressions and composed Nano casting/school sound behavior; record local-only integration state and remaining limits.
- Area
- Project Rubi-Ka
- Project
- engines
- Kind
- Bug
- Priority
- High
- Task ID
tsk_anvsw7qyn6- Updated