Previously, when diplomats submit translations, the system
would try to figure out whether it should be a 'patch' or a 'change',
and then would either create a patch for an admin or artisan to
review and accept or reject, or would apply the changes immediately
and they would be live. This was done as a compromise between
getting translations live quickly, but also preventing already-translated
text from getting overwritten without oversight.
But having the client handle this added logical complexity. So
this makes all diplomats submit patches, no matter what. The server
is then in charge of deciding if it should auto-accept the patch or not.
Either way, a patch is created.
There was also much refactoring. This commit includes:
* Update jsondiffpatch so changes within array items are handled correctly
* Refactor posting patches to use the new auto-accepting logic, and out of Patch model
* Refactor POST /db/patch/:handle/status so that it doesn't rely on handlers
* Refactor patch stat handling to ensure auto-accepted patches are counted
* Refactor User.incrementStat to use mongodb update commands, to avoid race conditions
* Refactor Patch tests
This serves the web-dev surface iFrame from another domain, such that user-created levels can't sniff cookies from a visitor to their page. It forces a redirect if a path is accesses through the wrong domain.
Use ENV variables for hostnames
Allow messages from all relevant domains
Use the right iFrame URL for different domains
Let the load balancer check /healthcheck
Add special handling for china server
Generalize subdomain handling
This heavily refactors SpellView and adds infrastructure for receiving and reporting Errors raised by the web-dev iFrame. The web-dev error system, the Aether error system, and the Ace html-worker avoid disturbing each others' errors/annotations (though currently Aether+web-dev errors won't coexist), and they clear/update their own asynchronously.
Show web-dev iFrame errors as Ace annotations
Add functional error banners (with poor messages)
Improve error banners, don't allow duplicate Problems
Refactor setAnnotations override
Convert all constructor calls for Problems
Add comments, clean up
Clean up
Don't clear things unnecessarily
Clean up error message sending from iFrame
Add web-dev:error schema
Clarify error message attributes
Refactor displaying AetherProblems
Refactor displaying user problem banners
Refactor onWebDevError
Set ace styles on updating @problems
Clean up, fix off-by-1 error
Add comment
Show stale web-dev errors differently
Some web-dev errors are generated by "stale" code — code that's still running in the iFrame but doesn't have the player's recent changes.
This shows those errors differently than if they weren't "stale", and suggests they re-run their code.
Hook up web-dev event schema
Destroy ignored duplicate problems
Functionalize a bit of stuff
Fix ProblemAlertView never loading