- Added new config flag:limitPerTarget, to disallow flags after an item has
already been flagged x times (default 0, or infinite)
- New zset flags:byTarget, score is the number of times a flag has been made
against that item
- "already-flagged" translation key removed, now "post-already-flagged" or
"user-already-flagged" -- this fixed bug where flagging a user you've already
flagged would tell you you've already flagged this post already.
- Refactored Flags.canFlag to throw errors only, instead of returning boolean
- Updated ACP form inputs for reputation settings page to be more bootstrappy
- +1 upgrade script
* feat: wip, better digest handling (+ eventual digest resend logic)
- await emailer.send call in digest.send method
- save send success to a new sorted set digest:{interval}:byUid
* feat: continuing work on digest tools
- Added ACP page to view digest settings and delivery times per user
* feat: added paginator and stub buttons for resending digest
* feat: wrapping up digest revamp
- New language strings in ACP digest page
- Client-side ACP script for digest ACP page
- Websocket call for ACP page to execute digests
- Broke out logic to retrieve user digest settings to getUsersInterval
* fix: minor cleanup
* fix: #8010 and some style suggestions from baris
* fix: resolve confusing comment
This is an old check back when the sorted set that messages were
appended to depended on what users were in the chat room. Once
messages were refactored (in 2017) to use roomIds, this is no
longer a limitation of the platform and users should be free to
talk to themselves all they want.
* add probe image size and max image size
* replace jimp and image-probe with sharp
* better name for test
* resize with just path
* resize thumb inplace
* use filename
* Use standard language codes. Fallback for plugins.
* Fix transifex config
* Tab vs space here for some reason
* Remove redundancies
* config.relative_path instead of allcaps
* added upgrade script for existing users' accounts