updator.bat's assume-unchanged step compared "cosmic rage\worlds\cosmic
rage\cosmic rage.mcl" against git's actual tracked casing
(worlds\Cosmic Rage\cosmic rage.MCL) - git's index is case-sensitive
even on a case-insensitive filesystem, so `if exist` found the file
fine but `git update-index --assume-unchanged` couldn't match it,
producing the "Could not mark ... as assume-unchanged" warning. Fixed
the casing.
Also replaced the full-volume (100) announcement.ogg alert on an
outdated soundpack with a utils.msgbox popup - it was startling people
with no way to turn it down. Bonus: a native Windows dialog gets read
by screen readers automatically, which is arguably better for
accessibility than an unskippable sound cue anyway.
Accelerator(key, text) always sends text as a literal typed command -
it only calls a Lua function if a matching <alias> routes it there
(the pattern GagManager already used correctly). Several bindings
added this session skipped that step and were silently sending
gibberish to the MUD instead of running: Ctrl+S (save_state_func) in
CosmicRage.xml, Ctrl+Alt+J (toggle_jump_to_end) in output_functions.xml,
and Alt+Enter (toggle_numpad) in NumpadMovement.xml. Added the missing
aliases for all three.
Separately, poll_output_focus's jump-to-end was firing repeatedly even
while focus never changed: it compared Alien pointer returns with
"==", which is unreliable for Alien's userdata-wrapped pointers (two
separate calls returning the same real HWND don't reliably compare
equal). Switched to comparing tostring() output instead, which is
address-based. Debug log confirmed SmartAppendToNotepad's own
restore logic was correct throughout - this poll was the sole cause
of the "jumps to end when new text arrives" complaint.
CheckSoundpackVersion's auto-launch of updator.bat was resolving to
worlds\updator.bat (dir + one "..") instead of the repo root where the
file actually lives (dir + three ".."), so the automatic update prompt
silently failed to launch anything. Verified the corrected path resolves
to the real file. Also fixed readme.md referring to "updater.bat" when
the actual shipped file is "updator.bat".
- output_functions.xml: merge NotepadSmartScroll's Win32/Alien-based
smart-scroll logic in directly (was a separate plugin). Fixed the
caret-restore bug: gating the restore on scroll position was wrong
since the notepad tracks near the bottom during normal reading; now
gated on whether the caret was literally at the end of the old text.
Added a jump-to-end-on-focus toggle (Ctrl+Alt+J) with a 0.2s polling
timer to catch focus landing on the output notepad by any means.
- Reverted the Tab/Ctrl+Space rebinding - removed switch_to_output and
trigger_word_completion along with their accelerators.
- cosmic rage.MCL: dropped the dangling NotepadSmartScroll.xml include
(file no longer exists, was reintroduced by an auto-save).
- readme.md: documented the actual current CosmicRage.xml keys (several
had drifted out of sync - Alt+F12 is now stop-sounds not restart,
Alt+Delete/Ctrl+S/Ctrl+F1-3/Alt+F3/Alt+Shift+H/F11 were undocumented)
and added the output_functions.xml accessible-output keybindings,
which weren't documented at all before.