srht.FlagType: set cache_ok
Squelches a new warning from SQLAlchemy.
srht.search: fixes for sqlalchemy 1.4
Don't inject styles for every call to markdown
These styles are already included, so it seems redundant.
Further improvements to the dark theme
Improve legibility of alert-info on dark theme
css: Add bottom margin to <pre>
Fix Blueprint name for GraphQL explorer
Fix name of srht.oauth blueprint
The latest Flask release does not support dots in Blueprint names.
Pre-style whitespace in markdown headings
use a lighter shade for magic functions
srht.Validation: return None on invalid cls
Don't trust user cookie for profile details
Fix various issues with OAuth
This was preventing user webhooks from being registered properly and
from taking effect.
Circumvent SQLAlchemy for internal auth
srht.oauth: use upsert for fetching user info
This fixes an ancient issue where, when several requests come in
quickly, one worker could insert the user details, then another worker
would trip over the constraint.
Create the metrics directory in gunicorn config
Add redis as a dependency
This is pulled in from `srht/redis.py` which comes from `service.py`
Improve recorded metrics
Summary currently doesn't expose quintile information and Histogram
records occurrence count, so the Counters are no longer necessary.
Allow enabling prometheus multiprocess mode
This requires changes to packaging to set the gunicorn config and the
'prometheus_multiproc_dir' environment variable to actually enable this
Delegate RTL direction handling to user-agents.
Check unicode RTL attrs for html content.
Reset global text-align.