|Shout-out to the guy who packs my KD boxes and makes|
these little illustrations.
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!
- 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.
- Addressed a handful of issues preventing the process for creating new settlements from correctly applying timeline updates to settlements created with expansion content. -WayForger
- 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
- Addressed an issue where removing all quarries and nemeses from the Settlement Sheet could prevent he Settlement Sheet from loading. -vendictar
- Addressed an encoding issues where "upper" ASCII characters in an error report could throw errors. -vendictar
- Corrected some miscellaneous typos.
- 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.
- Refactored the new Timeline UI to be more intuitive (shout-out to Arnaud D for the helpful advice and suggestions):
- 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.
- 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).
- 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.
- 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.
- Added new buttons to "previous" and "subsequent" Lantern Year controls that allow easier/faster one-click forward/backward movement.
- Added the total number of subscribers to the Dashboard "World" panel.
- 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).
- 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).
- Attempting to add incompatible events to a campaign (via API request) logs a warn and fails gracefully.
- When creating new settlements, default/pre-existing Timeline events are removed before Expansion-related events are added.
- Refactored the rm_timeline_event() method of the Settlement class:
- 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?
- Removed a call to utils() that was...really overkill for trying to get an LY dict from a timeline.
- 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.
- 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).
- Massively beefed up "sanity" checking and initialization in the method, to include extremely explicit failure messages that will go back with the 500.
- Removed events are captured for the settlement event log as 'sysadmin' type events.
- 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).
- 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).
- Did the same for timeline_add attributes of Expansion asset definitions.
- Created new world assets to index/track subscriber info:
- total_subscribers asset returns a count of anyone who subscribes at a level greater than or equal two one.
- 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.
- Added subscriber tallies to the API admin panel:
- added total subscribers
- created a table for breakdown by level
- The world.py method that tallies dead survivors now includes living survivors from removed and abandoned settlements in its scope.
- 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).
- DRYed up the baseline() code for enforcing the data model a bit.