A Demo That Works, and Cleaner Errors
The demo reads the sample account everywhere and its journal makes sense again, plus tidier handling of malformed links and contact form replies.
Mostly a round of fixes to the demo.
The demo shows the sample account, not yours. Opening it while signed in, some parts of the page read your own account instead: your symbols, your open profit and loss, and your holdings, all under the demo banner. The rest of the page read the demo correctly, so the two sat side by side. Every part of it reads the demo account now.
The demo's journal makes sense again. Its entries were stuck months in the past, every one of them was badged as written late, and not one showed any trades against it. All three came from the same cause: the entries were never being moved forward with the rest of the demo, so they sat nowhere near the trades they belong to. They now travel with it, they carry real titles instead of all reading "(untitled)", and their market moods are ones the journal actually offers.
A malformed link gives a proper error. A trade, import or journal link with a mangled id or date used to fail as an unexpected error. It now comes back as a plain bad request, and an unknown item on the feature board reads as not found instead.
The contact form only replies to an address we know. Its automatic acknowledgement used to go to whatever address was typed into the form. It now goes only to an address that belongs to an account, so the form cannot be used to send mail to someone who never asked for it.