* Cassandra
* Add new cassandra libraries that we'll need to setup.py
* Select Cassandra seeds at random rather than in order
* Bugfix in CassandraCache.delete and a faster permacache migration function
* Like other caches, CassandraCaches need to be able to take (and ignore) a 'time' parameter
* add Cassandra to the permacache chain
* beginning of jury duty (later called deputy moderation)
Additions:
* Make /r/friends much cheaper at the expense of sorting
* Add Jury.delete_old(), which removes Account-Trial relations > 3 days old
* Make the pretty_button() template function's callback optional, so that
actionless pretty-buttons can be used on the admin details page
* make .embed listings work for permalink pages (think of this as a first pass to getting blog comments working). Adds 'limit' and 'depth' parameter to permalink pages
* Added final redditheader.html pretty-button class
* new iframe ads; also make button.js static
* Usage sampling
Bugfixes:
* Stop adding batched time query recalculations to the queue at all except through the catch_up_batch_queries function
* Superflous comma might be causing IE7 to barf
* Change the byurl keys again, to fit in memcaches 251 character limit
* Indentation error causing non-sponsors to be able to get to the advert listing
* Move to a custom build of pylibmc that doesn't hold the GIL during blocking operations
* Convert some cache.gets to cache.get_multis, and implement our own thread-safety around pylibmc's client
* Make search caching a little smarter for time searches
* Make the ads not be cached for 30 seconds each, ie. more random
* fix deleted things on profile pages
* Discount 1.6.1
* Lines beginning with spaces are considered code. I don't know why markdown.py didn't trigger this.
* tables in mark down: why not?
* validation of resulting HTML vial libxml to prevent hax.
* private RSS and JSON feeds
* optional whitelists for subreddits
* Moderator messaging
Additions:
* destination sanitization to cut down on XSRF
* cosmetic fix to spam and reported listing
* make the rss feeds on messages useful
* /admin/errors
* Of the types of listings hitting the precomputers (top/controversy by hour/day/week/month/year), the ones over long periods of time don't change often. So we can try to run them at most once per day, and then merge in the day's listings.
* google analytics
* logging queue
* Created empty commentspanel.xml, errorpage.xml, login.xml
* add subreddit rules/info box to submit page
* add 'via' link on messages in moderator inbox
* add a show=all get parameter to link listings to optionally ignore hiding preferences.
* Raise edited timelimit to three mins
* Remove UI that makes it look like you can edit deleted selftexts
* Make it clearer to admins when a link is deleted
* Fix [S] leak on deleted comments
* Fix /user/[deleted] misrendering
* New house ads system
* updated so that minimalcontrollers actually can use the page cache.
* Added /admin/usage
Bugfixes:
* Reduce the number of results that we request from Solr and simplify that caching a bit
* Require a secret key to shut down app-servers
* Make get_title a little more resilient to malformed documents and slow remote servers
* Cause the SearchBuilder to only byID the results that it's going to render instead of all 1000
* Remove ability for an author to XSS himself
* fix spam listings and an xsrf
* More verbose VDestination
* Fixing the famous ?limit=0.1 error, and one last password-validation one
* distinguish deleted comments' and deleted links' error messages
* Don't allow ridiculously long log lines to widen the page
* Bug with HardCache.add() when existing key is expired
* Add adminbox next to domain
* Activate negative-result caching for HardCache chain
* begin migration to pylibmc:
* Add pylibmc to the list of required packages in preparation for the replacement of the memcached library
* Start using pylibmc for the rendercaches
* Tweak the computation of the normalized hot page to be a bit faster when the precomputer is available, by relying on the precomputer's internal permacached structure.
* Default to a SelfEmptyingCache for scripts run from `paster run'. Note that processes that run forever are still responsible for resetting their local-caches, but this can now be done with g.reset_caches()
* threaded messaging patch part 1: backend changes only. This will allow migrate.py to be run to move new onto inbox and will start tracking message trees for users.
* Specify some queries to run at most once per day
* Refactored safemarkdown() and added soup testing
Additions:
* Added _byID_rel()
* Made error messages more verbose for:
1. byID lookups of too-big thing_ids
2. memcache failures
3. Solr Nones
* Award._all_awards() now sorts by date
* Trophy.by_{account,award}() now cache properly
* new feedback page with helpful links
* Try to reduce the length of the query-queue by not adding known-long queries at all, rather than adding them and skipping them
* whitespace clean up
* simplify the 'why did my CC get denied' email checking.
* added missing translation strings and users now get PMs when they are added as translators
Bugfixes:
* Fix a bug in unsaving
* BeautifulSoup stopped hosting 3.0.7a, but 3.0.8 still uses the good parser
* Better search error handling
* Properly reset the cache-chains (incl. the hardcache; d'oh!) per-request
* Fix an attribute error on listings where some items have author_ids and some don't
* Bug when forcing recalculation of memoized functions
* the subreddit creation and edit form aren't dealing with errors properly
* buttons fix
===
- add confidence sorting to comments
* common values are precomputed for speedier response
* best is made the default sort on comment pages
- messages will now be delivered once one is moderator/contributor/banned
- UI updates to messaging page, including added show parent functionality to messages
- Remove the rate-limit on comments on your own self-posts
- Give users some leeway in editing their comments: don't show an edit star if the edit is within the first few minutes of a comment's lifetime
- Office Assistant will help users when they write to admins
Backend
===
- Replace the postgres-based query_queue with an AMQP based one
* Set up amqp queues for async tasks such as search updates and the scrapers
* service monitor updates, adding queue-tracking support
- Allow find_recent_broken_things to specify both from_time and to_time
- add a ini file parameter to disallow db writes (to create read-only reddit instances for crawlers)
New features
===
- self-serve advertisement:
* complete overhaul of sponsored link code
* functions for talking with authorize.net
* added pay domain and https support
* added ability to share traffic from sponsored links
* auto-reject promotions that are too old and unpaid for
- awards
- allow widget to have its links to have a target (in case it is iframed)
- automatic_reddits:
* Don't show automatic_reddits in the horizontal topbar
- Listing numbers are always in order with no gaps
- add support for sprites for common (r2.lib.contrib.nymph)
Admin
===
- added a takedown page for dealing with DMCA requests properly
* status code 404 on takedown pages
* JSON returns same string as in the explanation text
* nofollow on markdown in explanation
* title and image optional
- Added /c/(comment_id) for admins
- updates to JS to rate-limit voting, commenting, and anything else that could be just as easily done by a script-kiddie to cheat.
- make ad frame dynamic and add tracking pixel
- add the ability to add a sponsored banner to the rightbox of a reddit
- add the ability to show custom css on cnamed and/or non-cnamed versions of a reddit
- allow us to ignore reports from report-spammers.
Bugfixes
===
- Fix sorting of duplicate links (patch by Chromakode)
- fix traffic bug on main traffic page when it is the first of the month.
- toolbar redirects to comments page on self posts rather than generating the frame
- half-assed unicode handling in menus giving us bugs again. Switched to the whole-ass approach
- added Thing._byID36
- Support /help/foo/bar
* start showing embedded videos inside of an <iframe>. This allows us to
embed videos from external sites without having to trust their DOM security
Note that the media_object property on new links is now a dictionary,
but old ones will still be strings
the listing for that reddit
2. Allow a reddit to have a custom CSS stylesheet that appears to
visitors
3. Allow a reddit to upload a custom reddit alien logo