[Report] invalid CSS syntax in $:/PaletteManager inputs immediately corrupts the page display

Author: ericshulmanCreated Aug 24, 2026Updated Aug 27, 2026
Labelsbugactionable:code
  • View $:/ControlPanel > Appearance > Palette
  • Scroll down to click on "show editor" button
  • In ANY palette entry input field, enter rgb(
  • As soon as you type the (, it corrupts the page display due to invalid CSS syntax
  • If you then type ) (so the input is now rgb()) the proper page display is restored (even though the input does not specify the R,G,B values
  • Similarly, if you try to enter filtered transclusion syntax (to use conditional color logic). As soon as you type the initial { the page display is borked up. You need to enter at least {{{ }}} to restore the proper display.
  • There may also be other ways to corrupt the CSS with invalid syntax

I've addressed this issue in my enhanced TiddlyTools/Palette/Manager. See palette-manager-colour-edit() for an example of the code technique. Basically, I've used a $:/temp tiddler and $eventcatcher to handle $focusin, $change and $focusout events to create a "pseudo-modal" $edit-text widget, where the palette value is only updated when the user presses the "enter" key or moves the focus out of the input control (i.e., when a $change event occurs).

  • the $edit-text widget points to the $:/temp tiddler
  • the $edit-text widget uses the current palette value as its default value
  • on $focusin, an init() macro copies the current palette index value to create the $:/temp tiddler
  • on $change, a set() macro copies the $:/temp tiddler value back to the palette index
  • on $focusout, a del() macro cleans up by deleting the $:/temp tiddler
  • because the $:/temp tiddler doesn't exist until the input field gets the focus, each $edit-text widget shows the current palette value when not in focus, but shows the $:/temp value when it has the focus