It has been about two weeks since I launched the subscription feature, and more than 30 people have subscribed already! In honor of all the subscribers, release 2.52.1001 adds the webapp's first, proper subscribers-only feature: the Campaign Summary storage view.
(I teased the feature in my last post, if non-subscribers want to take a peek.)
The release also pushes some pretty non-trivial bug and presentation fixes, release 2.52.1001 cleans up settlement storage presentation, adds more detail to storage assets (e.g. keywords, rules, etc.) and implements the rest of the freemium/support-wall features.
There's a bunch of stuff for The Watcher in here as well, since the alpha release of that is right around the corner...
As usual, hit the jump for full release details and thanks for using the Manager!
Corrections and Fixes
- Fixed the DBK 'Horn Ceremony' endeavor so that the name shows up on the Campaign Summary view.
- Fixed a bug where survivors could not be permanently removed. -JKW
- Addressed an issue with legacy user data and session-preservation code in sessions.py that prevented users from signing in. -Chaorain
- The Legacy Webapp now normalizes users (on init) to include the 'preferences' attrib and sets their 'preserve_sessions' preference to False, if they have not specified it previously.
- Removed a bunch of vestigial print debugging in admin.py related to session-pruning
- Updated the API to normalize the 'preferences' attribute onto the survivors (it was added to the data model several releases ago, but I missed the normalize() bit (because I'm terrible at software development).
- Fixed a presentation issue at tablet resolution where the Settlement Sheet gear management controls displayed gear rules in a gigantic font.
- Normalized presentation on the Settlement Sheet storage controls (across all breakpoints) so that keywords come before rules, rules are bold, keywords are italicized, etc.
- 'Perishable' is no longer a keyword (it's a rule) on Flower Knight blooms.
- The 'Gear Recipe' settlement gear storage 'location' no longer shows up regardless of whether White Box/Promo content is enabled.
- Addressed an issue that prevented endeavors that require a principle from showing up on in the Campaign Summary view.
- Fixed a bug in the API's panel.py where the User class method's serialize() call tried to find the user's current session using a potentially non-existent attribute of the user.
- Resolved a weird issue in the 'meta' element of API returns where random key/value pairs showed up in some responses. -Khoa
- Addressed an issue where really long settlement names didn't line-break on the Settlement Sheet; refactored the sheet to fix the presentation issue and replaced the text input with a div.
- Addressed an issue on the sign-in screen where certain types of API failures displayed 'undefined' instead of their actual error message.
- Addressed an issue where really (really) old settlements had no 'campaign' attribute and could not be loaded/initialized.
- The /new/user route now explicitly sets mimetype (to JSON) on successful return.
- Fixed an issue where settlement names DID NOT have their prefixing/suffixing whitespace stripped off.
- Cleaned up the margins of the panel tooltips on the Dashboard.
- Addressed a problem in the API's Models.py that prevents the proper exception from being raised when asset initialization is attempted without a name OR a handle.
- Addressed an issue where changing the settlement name did not update the sidenav/burger.
- Added a new, subscribers-only feature: Campaign Summary "storage digest".
- Added the User class update_password() method back in so that clone_user.py can reset passwords in dev.
- Updated clone_user.py to work in batch/bulk to rapidly get larger QA data sets into dev:
- Added support for the --get_recent flag to clone_user.py. This calls the get_recent() method, which hits the API's /admin/get/user_data route and prints a summary of recent user activity
- Refactored the clone_user.py method do_request() and renamed it to clone_one(); added support for a 'force' kwarg.
- Updated admin.import_data() method to accept the 'force' kwarg as well: using it automatically resets the imported user's password to 'password'.
- Added the clone_many() method to clone_user.py to clone all recent users down to local and reset their PWs.
- Added support for the "Mad Oracle" and "Burnt Nerves" A&Is.
- Campaign Summary view now includes "Lingering Effects" endeavors (i.e. from Settlement Events).
- Completely deprecated the get_preference() method from the legacy webapp.
- Updated admin.py to be able to remove attributes from user MDB data (e.g. 'preferences').
- The "Sign Up" and "Help!" links on the sign-in screen looks clickable at wide resolution now.
- Survivor Sheet permanently delete control elements are no longer dependent on a legacy webapp user check (they've been refactored to AngularJS).
- Replaced app-side HTML button renders in session.Session.render_dashboard() with AngularJS controls.
- Organized, corrected and cleaned up a few more asset sets to help round-out/standardize the new UX/UI around settlement storage:
- Sunstalker Resources and Strange Resources
- Skinnery gear
- Bone Smith gear
- Weapon Crafter gear
- Core game Rare gear
- Dragon King Resources and Strange Resources
- Organ Grinder gear
- Keyed in some additional GSK-related/1.5-related causes of death.
- Keyed in 17 endeavors from Settlement Events (including expansions).
- Keyed in a bunch of promo gear (didn't get to all of it).
- Updated assets.events.py to include new endeavors in definitions of events with endeavors.
- Added get_timeline_year() method to the Settlement class methods for rapid LY dict retrieval.
- Improved the Settlement class get_available_endeavors() method to check principles when checking innovations.
- Added a normalize() method to the User class. It runs during __init__() right after we initialize the base class from Models.py
- The User class normalize() method forces legacy users to have 'preferences' attribute.
- Added self.Campaigns to the Settlement object's attributes (i.e. the AssetCollection object for campaigns)
- Built non-subscriber settlement age checking into models.users.User.get_settlements() and settings.cfg so that it can be manged via the file, etc.
- Creating a new user via /new/user now returns the user info with a JWT (i.e. it authenticates the user).
- Prefixing/suffixing whitespace is stripped from Survivor and Settlement names.
- The Survivor class set_attribute_detail() method now accepts the 'save' kwarg (to tell it to save or not).
- The Survivor class set_many_attributes() method can now accept a list of attribute details via the 'attribute_details' param of the POST. It then will update all details. -Caleb
- Added the "Blue Lantern" promo Rare Gear to assets/cursed_items.py