Lab Journal
Unblocking blank Enter on login prompts

Unblocking blank Enter on login prompts

lab-journalgomud

Today was one of those days where a single one-line check turned into the fix for a bug I'd been working around for weeks.

GoMud

The headline change was a tweak to the webclient's Enter-key handling. Previously I was swallowing all blank submits because they were causing spurious validation errors during login — the input would fire an empty Enter before the user had typed anything, and the server would scold them for it. The blunt fix was "never submit blank," which worked for gameplay but quietly broke any prompt flow where Enter intentionally means "skip this field."

The new logic in webclient-core.js allows blank submits when the input is a password field, or when the terminal cursor is near the top of the buffer (i.e. we're still in the login/signup flow). Everywhere else, the old guard still applies. The cursorY heuristic feels a little dirty but it's a reliable proxy for "we're on a prompt screen, not in the world," and it avoids having to thread explicit prompt-mode state down into the keyboard handler.

That unlocked a few related fixes that had been sitting half-finished:

  • Matched up the login_prompt_handler.go side to actually expect those blank submits in the right places.
  • Fixed the email-new.prompt.template wording to make the skip behavior obvious.
  • Tweaked the Login.CreateUser localization string in en.yaml to match.

While I was in there I also:

  • Added a CackalackyCon badge item (25001-cackalackycon_badge.js) under the neck slot. Just a flavor item for con attendees.
  • Renamed 100-base16.js to 100-bace16.js — that's a deliberate in-world misspelling, not a typo on my part. The script is a "bace" (base, but mob-flavored), and the filename was bugging me every time I saw it.
  • Removed a stray line from modules/fishing/fishing.go and updated the fish.template help text to match what the command actually does now.

Nothing huge on its own, but the login-prompt fix in particular has been bothering me for a while. Good to finally have parity between telnet and the webclient for skip-style prompts.

A "clean up the small stuff" kind of day, but the kind that makes the next session feel less cluttered.