A blank Display Name makes a Thing nearly unreachable

(Bug, Closed -> Fixed, Priority: High, Test Status: No automated tests yet , Reported By Bad Link: Thing 3y284of not found, )
Summary: Alexx added a Display Name, which wound up blank. (Not None -- an empty string.) The result is that there is nothing to click on, so fixing the problem is very difficult.
Moral of the story is that it should not be possible to submit a blank Display Name. None is okay, but empty string is not. This should at least be enforced at the UI layer, and maybe even down in the guts, since it is a dangerously bad idea.
Original report from Alexx:
In my Sentinels space, I was editing the Card Model. I added a Display Name. While doing so, something went awry, and the Thing seems to have entirely lost its Name! It's not even displaying a Thing ID, so there's nothing there to click on to attempt to fix the issue.

Justin: Ahhh -- okay, that's a very serious bug. I've updated the above accordingly.
For now, your workaround is to go to the Thing's page (which I sussed from its "create instance" link on the front page), and Edit the Display Name to something real.
Justin: Okay, this is now fixed. I've added a new meta-Property, "Minimum Text Length", which can be applied to any Text Property. Display Name now has this set to 1, so it shouldn't be possible (through the UI, at least) to set the Display Name to a blank any more.
Alexx: In my Sentinels space, I can reliably do the following:
  • Create a new Simple Thing
  • Add a Display Name property
  • Enter a single space into that Display Name
  • (optional) Add a Name of real characters, just to make sure changes are being saved.
  • Click Done
  • See a display of my new Thing, with a blank and un-clickable Display Name
  • Go to a list of all Things, not see any indication that this blank-named Thing even exists. The Sentinels space should now contain at least three such invisible Things, and more are simple to create.
Justin: headdesk. Didn't think of that. Sigh. Okay, I'll have to do something cleverer here -- probably add a "NonBlank" meta-Property, or something like that.
Justin: Okay, Minimum Text Length now trims spaces from both ends before checking the length. This uses the Unixy definition of "spaces", so it should trim out tabs, returns, and so on. So I think that at least fixes this recipe...