Thursday, March 15, 2018

Change Log: 2.72.1348

Shout-out to the guy who packs my KD boxes and makes
these little illustrations.
Release 2.72.1348 is a break/fix release meant to clean up the last big feature release of the Manager and resolve issues that were introduced by the Timeline upgrade.

The release also includes a few corrections/fixes/updates to some miscellaneous stuff, but most of that's pretty minor user-proofing, typo-correction and low-stakes back-end optimization stuff: if you hit the jump and read the change notes, it seems like there's a lot going on here, but most of the code that this release pushes fixes issues with the new Timeline.

On the topic of the Timeline, I should say that during the first three days that the new Timeline was in production, close to a dozen people checked in with detailed feedback/bugs/screen captures/etc. The response was super helpful in getting everything addressed. Thanks to everyone who gave that good feedback!

In terms of what's next, I just checked USPS/FedEx and it looks like my Wave Two stuff is going to be here early this coming week. Once it arrives, I'll be working pretty much full-time on bringing the Manager into compliance with whatever changes/updates/fixes are included in the new printings of the expansion content.

Depending on what exactly needs updating, that could be one big release or a bunch of little ones or...maybe something else. Stay tuned!

Thanks for using the Manager!

Corrections and Fixes

  1. Fixed a logic bug in the legacy webapp's utils.on_production() method, which made the function work exactly the opposite of the way it was supposed to.
  2. Addressed a handful of issues preventing the process for creating new settlements from correctly applying timeline updates to settlements created with expansion content. -WayForger
  3. Fixed a bug in the Settlement object's get_innovation_deck() method that prevented the Innovation Deck from loading when certain expansion content was enabled. -J Zheng
  4. Addressed an issue where removing all quarries and nemeses from the Settlement Sheet could prevent he Settlement Sheet from loading-vendictar
  5. Addressed an encoding issues where "upper" ASCII characters in an error report could throw errors-vendictar
  6. Corrected some miscellaneous typos.
  7. Corrected a few vague/broken-looking Event Log messages. Opened a ticket to remind myself to go back and update all log_event() calls to use Semantic Logging.

Application Enhancements

  1. Refactored the new Timeline UI to be more intuitive (shout-out to Arnaud D for the helpful advice and suggestions):
    1. Re-did the clickable regions on the Timeline controls so that clicking the checkbox or the number sets the current Lantern Year to that year.
    2. Refactored the margins of the checkbox and LY so that they use exact pixel widths (helps maintain the organization of the Timeline rows on non-supported devices).
    3. Clicking a Timeline row's checkbox or LY number sets that LY to be the current LY; clicking an LY a few years out changes automatically to that LY.
    4. Normalized/corrected wide resolution presentation of the Timeline so that it has spacing/margins/etc. more in line with what you see at tablet resolution.
    5. Added new buttons to "previous" and "subsequent" Lantern Year controls that allow easier/faster one-click forward/backward movement.
  2. Added the total number of subscribers to the Dashboard "World" panel.

API Development

  1. New settlements now initialize their campaign dict just after insertion into MDB (so that it can be used during creation, e.g. for asset compatibility checks).
  2. Moved the 'excluded_campaign' attribute out of expansion asset definitions for timeline events; moved it to the campaign asset definitions (for general sanity/organization: really, if you think about it, that's where we're supposed to be doing asset prohibitions now).
  3. Attempting to add incompatible events to a campaign (via API request) logs a warn and fails gracefully. 
  4. When creating new settlements, default/pre-existing Timeline events are removed before Expansion-related events are added. 
  5. Refactored the rm_timeline_event() method of the Settlement class:
    1. Removed vestigial/useless checks for forbidden (by campaign) attributes: there's no reason to check if something is forbidden by a campaign if we're trying to remove it, right?
    2. Removed a call to utils() that was...really overkill for trying to get an LY dict from a timeline.
    3. If the incoming event dict specifies a handle, the API will now try to retrieve asset data from assets.events.py to "enrich" the incoming dict.
    4. Revised the doc string to explain how the method works in explicit detail (so I don't have to teach it to myself from scratch next time haha).
    5. Massively beefed up "sanity" checking and initialization in the method, to include extremely explicit failure messages that will go back with the 500.
    6. Removed events are captured for the settlement event log as 'sysadmin' type events. 
  6. Revised the add_timeline_event() to have similar initialization and sanity-checking as rm_timeline_event() and to use improved error messages. Also refactored it to use 'sub_type' instead of type (which was the root cause of issue #485).
  7. Updated the timeline_rm attributes of all Expansion definitions to work with Timeline version 1.2 (basically Spidicules and Slenderman, who both really fucked up my morning just now).
  8. Did the same for timeline_add attributes of Expansion asset definitions.
  9. Created new world assets to index/track subscriber info:
    1. total_subscribers asset returns a count of anyone who subscribes at a level greater than or equal two one.
    2. subscribers_by_level returns a list of dicts, where each dict contains a level that exists and the number of users subscribing at that level.
  10. Added subscriber tallies to the API admin panel:
    1. added total subscribers
    2. created a table for breakdown by level
  11. The world.py method that tallies dead survivors now includes living survivors from removed and abandoned settlements in its scope.
  12. Updated the settlement's baseline() method to add nemesis_monsters and nemesis_encounters items to a settlement if they are not present (i.e. because of failures during legacy conversion/update and settlement creation).
  13. DRYed up the baseline() code for enforcing the data model a bit.

No comments:

Post a Comment