Friday, September 22, 2017

Change Log: 2.32.691

Slendermania continues! (Work in progress.)
Release 2.32.691focuses on the Manager's second most popular browser, FireFox, and addresses a number of issues affecting performance, presentation, etc. in that browser.

Basically, to get this one done, I worked on a few low-impact items from the backlog, but, instead of debugging/QAing in Chrome, I worked in FireFox and just fixed things as I went.

Beyond the FireFox-based adjustments, this release also chips in a little more work towards resolving the long-standing issue where some non-Chrome browsers fail to load a view based on JS/API failures: a number of order-of-operations, timeout and scope problems that have been associated with  never-ending page loads are addressed/corrected in this release and, in a worst-case scenario where the browsers loses the cookie or the authentication token info, the javascript app will just straight-up kill the legacy webapp session, logging the user out (i.e. so they can start from scratch).

Finally, in terms of big-picture progress, release 2.32.691 also puts in some more groundwork on an entirely API-based dashboard view, which should massively decrease the time it takes to load the dashboard (once its finished: for now, sucky dashboard load times are here to stay...but their days are numbered).

Thanks for using the Manager!


Corrections and Fixes



  1. Addressed an issue where the "Favorite" checkbox wasn't working correctly on ported survivors (i.e. ones created before 2.30.670 went out on Monday, 09/18).
  2. Updated the HTML head.meta to enhance the amount of content-type and character set info to address FireFox JS console issues (and for...general hygiene).
  3. Addressed a presentation issue affecting the spacing of input elements on the login screen at wide resolution in FireFox.
  4. Addressed a CORS issue affecting FireFox's ability to load settlement data from the API.
  5. Fixed an issue where 'prefab' survivors were created with Fighting Art names, rather than handles, causing issues with their Survivor Sheets.
  6. Fixed an issue in the legacy webapp dashboard where the 'System' div (on the Dashboard) did not terminate properly, causing scoping and display issues.
  7. Addressed a FireFox issue where it...mysteriously loses the legacy webapp cookie (?!): I updated kdmManager.js to bail on any in-process request if it cannot pull the JWT from the cookie and sign the user out.
  8. Fixed a bug in the API's User class where the get_friends() method could throw an exception if the user had no friends and we tried to get a list friends.
  9. Addressed a minor presentation issue affecting wide resolution where the button to create multiple new survivors looked weird in FireFox.

Application Enhancements

  1. The Survivor Sheet "Favorite" toggleFavorite() method in survivorSheet.js now fires on ng-click rather than ng-change.
  2. Added an 'api_downtime' error div to templates/login.html for API sign-in errors.
  3. The Fighting Arts "placeholder" card (with the Loading Lantern) now has text that indicates what it is doing.
  4. The dashboard now retrieves user and other dashboard data from the API.
  5. The kdmManager.js method getJSONfromAPI() now has the ability to retrieve data from /user endpoints.
  6. getJSONfromAPI() now barfs pre-flight (and logs a console error) if $scope.api_url is undefined in the root scope.
  7. The rootController's initialize() method now a.) takes fewer arguments and b.) initializes the user on each page load
  8. Consolidated the World AngularJS app and the About AngularJS app into a single block of HTML in the legacy app's html.py. 
  9. Enhanced dashboard.js to retrieve the latest dev blog post.
  10. Refactored Settlement, Survivor and Campaign views to initialize without the 'user_login' param.
  11. Added the legacySignOut() method to the rootController in kdmManager.js so that the Javascript app can kill legacy webapp sessions.
  12. Addressed a problem in session.py where the 'remove_session' param could sometimes barf if the incoming request did not also include a 'login' param.
  13. Adding/Removing expansion content changes Survival Limit validation rules now.
  14. Deprecated worldPanel.js and moved its methods to dashboard.js, which will facilitate the API-based dashboard project.

API Development


  1. All routes/endpoints that support OPTIONS (and might be subject to a browser-initiated CORS preflight check) now support the 'Access-Control-Allow-Origin' header. -Khoa, Caleb
  2. Implemented temporary, token-less auth for certain private routes. -Khoa
  3. The models.users.token_to_object() method now returns more descriptive errors when it fails and, more importantly, uses utils.InvalidUsage() to raise them and force an early return.
  4. Deprecated HTTP response token_to_object() passthrough code from api.py
  5. Added 'ui' attribute key to expansion assets and created 'pretty_category' values. -Logan 
  6. Enhanced the User class request_response() method:
    1. The get route returns its own response (instead of using the deprecated Models.return_json()  method).
    2. Added a route to and support for the new /user/dashboard/<oid> route.
  7. The User class serialize() method now supports the 'return_type' kwarg, which can be used to return either the slim/lightweight representation -OR- the beefier 'dashboard' variant.
  8. models.users.User.get_settlements() now accepts the 'return_type' kwarg value 'asset_list', which is a special return type that basically returns a list of settlement MDB assets.
  9. The API's request_broker() method now percolates up InvalidUsage() exceptions and returns them (instead of the generic 500).
  10. All serialized objects now include a 'webapp' element at the top level, which contains meta data re: the legacy webapp.
  11. The add_expansions() and rm_expansions() methods of the Settlement class have been enhanced/refactored to use request parameters correctly.
  12. The /settlement/add_expansions/<oid> and /settlement/rm_expansions/<oid> no longer accept JSON POST bodies without top-level keys. The documentation has been updated.

No comments:

Post a Comment