I've experimented with some of these ideas before, so I had a bit of a head start, and I didn't even get it right away, so no worries .
@dardoro's first clue helped a lot. There's just so many things that you can make somewhat invisible and that you can create and save with your project without permanently storing them in a variable or as blocks in the scripting area.
Also, steganography is a technique where you hide information in images - maybe this helps where to find the right list to put into the function.
I found this as the costume of the stage. I changed the color background of the stage and found a little thing. I made secret switch to that costume and made it larger.
So it's time to disclose, and shed some light on the problem...
Steganography, as Jagda pointed out, is the old idea to hide secrets in a clear message (image, sculpture, voice transmission, or even text). Steganography - Wikipedia.
Text example:
Some words Now put in order to form A "hidden" message but Perceived as non-meanigful text !
Another example is the Stage costume of the challenge project.
Disclosure
Taking into account that:
Snap! project is "persistent" in many areas. Variables, stage state, and current costumes, even created on the fly, are stored as part of the project.
Images are stored in lossless PNG format. So every pixel is loaded exactly as it was saved (to some extent - the canvas has antialiasing and sometimes distorts scaled image). Some other formats, like JPG, are lossy. Image details, less important for human perception, are discarded, giving 10:1 and more compression ratio.
The idea behind this challenge was to store some text as a costume for the Stage. To make it not that obvious the character code is stored as the alpha channel ("invisible to some degree") of the white pixel.
A character set is limited, so the Unicode of the char is a single byte.
To decode the message