Wednesday, May 30, 2018

Change Log: 2.81.1540

Release 2.81.1540 takes the KD Collection feature out of beta: all users of the Manager are now able to maintain a KD Collection and use their collection to include Fighting Arts, Disorders and Settlement Events in their campaigns.

That's about it for "new" features in this release, however. Think of this one as a "quality of life" release that mostly cleans up UI/UX elements, streamlines/normalizes some control elements, etc.

(The inspiration came from a couple of posts on /r/kingdomdeath where people were talking about UI and it kind of jogged my memory about how I said that I wanted to spruce-up the UI for the users to whom that sort of thing is more important.)

Beyond aesthetic/UX QoL concerns, release 2.81.1540 continues the optimization project.

As far as back-end/behind-the-scenes enhancements go, the big push towards a simplified/organized legacy webapp continues. Release 2.81.1540 is actually kind of a milestone in that regard, as it removes all Survivor and Settlement Sheet HTML from the html.py module in the legacy webapp, which is a goal I've been working towards for...probably over a year at this point.

Moving on to a recurring topic on this blog, I'm going to spend a few paragraphs talking about HTML render times (i.e. how long it takes for the the legacy webapp to create the HTML you need for your view) and the project I started back in January to reduce them.

In the aftermath of the May 19th release (2.77.1502) of the Manager, I expected render times on the 'new_settlement' view and the 'view_campaign' view to improve (i.e. decrease), but it looks like average HTML render times have not improved across the board and, in some cases, have actually gotten worse since the January 30 release (2.67.1287):

router2.67.1287r2.77.1502
dashboard     0.05    0.31
login     0.35    0.61
new_settlement     0.03    0.02
view_campaign     0.27    0.3
view_settlement           0.47         0.35
view_survivor     0.04    0.21

Back in January, all of these routes were averaging a half a second or more and, ultimately, the goal here is to have all of these averaging under half a second, so I am making some progress here, but I kind of feel like I'm hitting a wall.

Lately, in light of this and a few other annoyances I'm having with the legacy webapp, I'm feeling like the solution here is to do what the pros do and shoot the hostage, i.e. remove the webapp from the equation and have the whole front-end application be a single, unified JS (e.g. AngularJS 2) app. That way, the user downloads the whole thing at once, we incur an up-front download time penalty, and then performance is down to two factors, i.e. the client machine's ability to run the JS app and the API's ability to respond rapidly to it.

At any rate, that's where we're at in terms of performance optimization as of this release. Moving on.

Finally, I should mention that, in terms of API development, there is only one major item of note in this release. Release 2.81.1540 moves user avatar retrieval from the legacy webapp to the API, which should help performance (i.e. avatar load speeds) out quite a bit. I don't really have that code instrumented (i.e. so I can't quantify the improvement), but it should be noticeable.

(Because everything the API does is pretty much automatically WAY faster than anything the legacy/CGI app does, etc.)

Thanks for using the Manager!

Corrections and Fixes

  1. Addressed an order-of-operations bug that caused Innovation Deck lists to be incomplete. It's not totally resolved yet, however. -Neal M
  2. Fixed a JS bug where failing to change an email address on the Survivor Sheet could cause weird console messages and odd failures.
  3. The right-side nav bar no longer shows the loading lantern (forever) when viewing the New Settlement form/view.
  4. Addressed the Disorders selector margins so that they don't collide with Disorder "cards" on the Survivor Sheet.
  5. Fixed the centering on the "Create New Settlement" button at wide resolution.
  6. Fixed a CSS selector issue that caused the grey "creating new settlement" button to always appear on the New Settlement Form at wide resolution.

Application Enhancement

  1. Enhanced the user-proofing of the Survivor Sheet email field; styled it for invalid input (using :invalid). I also DRYed up and clarified the JS (in survivorSheet.js) and made it so that it reverts on an incomplete attempt to change, as well as a failed one.
  2. Deprecated a ton of legacy webapp HTML:
    1. removed the html.survivor class completely and migrated the Survivor Sheet to /templates/survivor_sheet.html
    2. corrected a bunch of incorrectly-terminated HTML entities in the Survivor Sheet template.
    3. removed/deprecated/made-redundant a bunch of html-rendering methods in html.settlement
    4. removed the html.settlement class completely and migrated the Settlement Sheet to /templates/settlement_sheet.html
  3. Added some UI/UX fades to the Survivor Sheet:
    1. "tags" now fade in/fade out (when removed).
    2. Survivor Sheet Fighting Arts, Disorders and AIs also now fade in/fade out (when removed).
    3. the drop-down/selectors for FArts and Disorders now fade in/fade out if we add or remove them to the DOM.
  4. Deprecated session.Session.render_user_asset_sheet() method.
  5. KD Collection management (on the Dashboard) is no longer Beta
  6. KD Collection options for settlements are no longer beta
  7. Styled the Dashboard Collection manager to look a little cleaner
  8. Styled the "Create New Settlement" button on the dashboard to look consistent with general KD styles we've implemented elsewhere.
  9. Campaign Summary survivor "quickview" modals got some enhancements:
    1. they fade in now
    2. they aren't inserted into the DOM until the survivor's button is clicked, which should help the user impression of the speed at which the page loads (especially for big pop settlements)
  10. Deprecated more vestigial/abandoned CSS selectors (about  TK of them). 
  11. Cleaned up the Survivor name blank/box/area on the Campaign Summary quickview; also normalized the width of the sex checkboxes at all three breakpoints.
  12. The unit test for checking vestigial/deprecated CSS selectors now has an ignore list, i.e. for ones we synthesize during interpolation, etc.
  13. Sidenav buttons have a hover effect now.
  14. Replaced Survivor Sheet and Campaign Summary avatar retrieval with API-based retrieval.
  15. Deprecated the get_image CGI script and all references to it in the HTML templates; replaced them with API calls
  16. Deprecated a bunch of vestigial code from assets.Survivor
    1. retire()
    2. toggle()
    3. get_constellation()
    4. remove_survivor_attribute()
    5. get_returning_survivor_years()
    6. get_returning_survivor_status()
    7. is_founder()
    8. asset_link()
    9. render_html_form()
  17. The legacy webapp no longer calls its normalize() method on survivors! They are totally managed by the API now!
  18. Deprecated the remove() methods for both settlements and Survivors from the legacy webapp.

API Development

  1. Added support for the 'debug' param to the models.settlements.Settlement.get_innovation_deck() method for on-demand (via API) print debugging to the logs.
  2. Removed deprecated endpoints (i.e. their 410 messageS)
  3. Added survivor avatar retrieval support:
    1. created /avatar/get/<oid> route
    2. created gridfs_files.py module for access to gridfs resources
    3. documented the new route

No comments:

Post a Comment