Wednesday, September 30, 2020

Change Log: 3.105.1888

Phoenix Armor Kit and Phoenix Mask!
Painted by yours truly; find more
at https://blog.thelaborinvain.com
This change log actually details two releases: API release 1.12.62, which went into production in early November 2019, and webapp 3.105.1888 (including API 1.14.92) which is finally live today, almost a year later.

API release 1.12.62 went into production without a change log because it was a patch/hotfix release that addressed some critical authentication issues that were preventing some users from using the webapp. The scope of the changes in the 1.12.62 release was limited what was required to address that issue.

If you hit the jump and review the full notes for today's release, you will notice that some lines are prefixed with 1.12.62: that is to disambiguate them from the changes that went live today in API release 1.14.92.

And, speaking of changes going live today, webapp release 3.105.1888 is an absolute beast that pushes a huge collection of fixes, enhancements and new features that I have been working on for almost a year now.

Which, if you read this blog, probably did not expect to see, as you probably remember that new features and enhancements were something that I said I wasn't going to do for this application after October 2019.

Back in October, the theory was that the current version of the Manager was going to go into a kind of "maintenance mode" while I worked on some other projects, one of which was its successor, the Advanced KDM-Manager project.

As of right now, AKDM-M is officially on hold with no plans for future development, though a lot of what I was working on for that project has made its way into today's release, and will be included in subsequent feature releases that will ultimately take the current version of the Manager from three to four.

(To my way of thinking, 3.105.1888 is a transitional release similar to the (also huge) release I did for the API right before I moved the API from major version zero to major version one: I think of it as transitional because it makes it almost, but not quite all of the way to the next major version.)

At any rate, over the next few releases, the Manager's major version number will eventually increase from three to four and I will probably change GitHub repositories as I continue to integrate AKDM-M features into the classic/legacy version of the Manager. 

Finally, if you do not plan to hit the jump and review the complete notes (which are extensive), here is a high-level summary of what 3.105.1888 adds, in terms of application features:
  1. The Settlement and Survivor Sheets have tabs now. If your device has a keyboard, you can use arrow keys to navigate among them.
  2. Settlement and Survivor Sheets have both been substantially refactored in a number of respects to make them a.) easier for me to maintain/improve and b.) fully support three meaningful CSS breakpoints that allow the Manager to work on the widest variety of modern devices.
  3. The main, left-side menu is now one half of a "curtain" that covers the whole view when the menu is opened, similar to how Amazon's app works on your phone. The other half blocks the right side of the view, which was previously viewable.
  4. So-called "night mode" or high-contrast is officially out of beta. Subscribers may enable it on the "System" panel on the dashboard.
  5. The Gear Card Lookup feature has also been substantially enhanced and improved in this release.
As you can probably guess, this release is going to generate a ton of bug reports, so look for the next release to a.) be a break/fix release and b.) to come out very soon: I definitely do not plan on waiting another year for the next one.

Thanks for using the Manager!


Corrections and Fixes

  1. [1.12.62] Addressed an issue where password resets a.) failed and b.) did not provide any kind of error message.
  2. Addressed a presentation issue at desktop resolution where the 'shield' background of armor values on Gear cards could be weirdly stretched out (in Chrome; not in Edge).
  3. Addressed an issue where settlement population values of non-integer type could prevent settlements from loading. -Anton
  4. Addressed an issue where resource and gear keywords were appearing in random (i.e. non-alphabetical) order in the keyword rollups.
  5. Re-wrote the CSS breakpoint for tablets so it is less likely to inflict its styles on smart phones, e.g. Pixel 3, Pixel 4, etc.
  6. The Settlement Sheet Innovation Deck app now uses the KD worksheet UI (rather than the legacy presentation elements from the V2 application).
  7. Addressed an issue where users would see the generic 500 error page if the webapp is unable to make a database connection (for whatever reason). -Manuel
  8. Addressed a presentation issue where Settlement Sheet Strain Milestone unlocks could sometimes be printed outside of their box.
  9. Addressed a long-standing presentation issue where implicit font-size inheritance among various elements resulted in weird relative sizing and thus required multiple overrides.
  10. Removed some errant markup from the Campaign Summary endeavor locations that caused presentation irregularities.
  11. Addressed a presentation issue in the Campaign Summary where the arrows on the flippers were incredibly tiny at the tablet breakpoint. 
  12. Normalized the sizing of the buttons on the Campaign Summary's survivor quickview (especially at the mobile/base break point, where they were all over the place).
  13. Addressed an issue where launching the new settlement creation view from within an existing settlement showed bogus/invalid left menu options (e.g. show Timeline, etc.) that did nothing when clicked.
  14. Addressed an issue where updating settlement storage re-initialized the whole settlement (yes, really), causing poor performance.
  15. Fixed some bad JS console logging in settlementSheet.js that logged the extremely helpful message 'undefined is undefined' when the main $scope's settlementStorage had not been loaded.
  16. Normalized the presentation of the Settlement Sheet's "right" (i.e. final) column so that the bordered boxes within it will display consistently at all break points (instead of having a mix of box types with a bunch of random borders, which could cause presentation issues).
  17. Addressed a presentation issue where endeavors requiring four endeavor tokens could break out of their display container on the Campaign Summary at certain break points.
  18. Finally nailed down the duplicative settlement buffs issue. -WayForger
  19. Fixed a JS scope issue that could prevent settlement principles from being unset on the Settlement Sheet.
  20. Survivor Search "Epithets" are now correctly labeled as "Tags".
  21. Fixed an issue where a Survivor Sheet Survivor name could not be changed after it had been changed once and saved.
  22. Addressed an issue where old subscribers, e.g. 2017-era, did not convert correctly and could not log in or reset their passwords. -UV
  23. Normalized font sizes on the "welcome" message that users with no settlements or campaigns see when they sign in.
  24. Fixed a dashboard logic issue (in kdmManager.js) that would fail to roll down the "Settlements" control for users with no settlements.
  25. Affinities may no longer be set to negative values (on the Survivor Sheet).
  26. Survival "tumbler" (button) controls on the Campaign Summary quickview as well as the Survivor Sheet will no longer go below zero. 
  27. The "Arena" innovation is now a consequence of "Nightmare Training". -Manuel
  28. Addressed a logic issue that prevented Survivor Sheet Courage controls from checking the eighth box (e.g. when Survivor courage was eight).
  29. Reviewed and closed an erroneous ticket about the Saga innovation's newborn survivor bonuses.
  30. Removed a bad <span> tag from the Courage controls on the Survivor Sheet, which was causing weird display effects.
  31. Finally (figured out and) fixed a long-standing JS order-of-operations issue that could blank-out Weapon Proficiency boxes on the Survivor Sheet if a change was made to the Weapon Proficiency type when saving changes. 
  32. Fixed a typo on the Survivor Sheet: survivors may no longer be "Stwalwart".
  33. Normalized font size on the dashboard preferences so the boxes don't look like rectangles anymore.
  34. Night mode/high-contrast fixes:
    1. The "World" panel on the dashboard is now included in night_mode.css (and is no longer black on white).
    2. The nemesis "crossed swords" icon is no longer black on white in Night mode.
  35. The Settlement Sheet "Lost Settlements" counter no longer goes to 20.
  36. Addressed a presentation issue (affecting all break points) where the endeavor cost on the Campaign Summary view of endeavors could start out too narrow to contain the endeavor glyph (and look weird).
  37. Fixed the text alignment on the "Dead Guardian" campaign rule block so that it looks more consistent with the location card.
  38. Corrected some typos in the Help section (including more than one instance of "straing").
  39. Addressed an issue where Survivor-triggered endeavors failed to display in campaigns where certain endeavors were present.
  40. Addressed a presentation issue where the "Manage Departing Survivors" button on the control panel for mass-managing departing survivors changed font-size when clicked.
  41. Fixed typos in the Exhausted Lantern Hoard location description.
  42. Fixed an issue that prevented Sacred Pool location levels from appearing in new (LY 0) settlements.
  43. The Gloom Bracelets Rare Gear is now correctly identified as armor.
  44. Mousing-over a gear card gets the proper location now, rather than the API handle for the location's asset.
  45. The Denticle Axe no longer breaks the gear card formatting (at any breakpoint).
  46. The Blast Sword gear card from the Dragon King expansion now shows the correct affinities in the Gear Card Lookup.
  47. The Regeneration Suit gear card from the Gorm expansion now shows the correct location.
  48. The God's String gear card from the Sunstalker expansion no longer breaks the gear card formatting at desktop resolution.
  49. The Settlement Sheet controls for abandoning and removing settlements no longer have their own Angular JS controllers; instead, they're moved to the general controller for the Settlement Sheet admin tab.
  50. Addressed a desktop resolution presentation issue where timeline rows could break in the middle of the row, sometimes even breaking the actual checkbox in half. That should happen less now.
  51. Bullets for Event Log clickable titles ("event_log_clicker" elements) are now aligned with the title text for the year at all resolutions.
  52. Corrected a logging issues where the survivor's name would be printed twice in the event log message.
  53. Toggling a Strain Milestone using the button on the Settlement Sheet now makes an immediate change to the sheet, rather than waiting for the API.
  54. Expansion Secret Fighting Arts no longer have red title text on the Settlement Sheet "cards".
  55. Addressed a presentation issue where survivor tags on the cards in Campaign Summary view had arbitrary padding/margins.
  56. The settlement_sheet_card_expansion_flair CSS class used on the Survivor Sheet has been corrected to follow the normal naming convention for elements unique to the sheet; this includes the template HTML as well as all CSS files.
  57. Number inputs on the Survivor Sheet and Campaign View Survivor Quick View are now disabled, which should prevent mobile users' keyboards from popping up and blocking the sheets.
  58. Settlement Sheet Defeated Monster items now have the clickable style, rather than than the entire block of controls (i.e. when you click one item, one reacts, rather than all of them).
  59. The login screen no longer displays 'None' when the latest blog post cannot be retrieved (for whatever reason).

Application Enhancements

  1. The password reset JavaScript now posts the app_url key/value pair when initiating a password request (which the API already knows how to handle).
  2. Gear recipes can now include the 'undefined_ingredient' attribute (which is a string), which prefixes ingredient lists without breaking the line (unlike 'prefix_text', which breaks the line and has its own style).
  3. Refactored the left side overlay navigation:
    1. ported its controls from the public JS scope to the AngularJS (kdmManager.js) app.
    2. Deprecated the openNav() and closeNav() methods from the non-Angular JS scope in kdmManager.js.
    3. the nav bar now opens an additional right-side "underlay" element that sort of "curtains" in from the right side of the screen.
    4. there is now an X button for closing the main, left-side nav.
    5. the browser's scrollbar no longer appears (at any resolution) on the main, left-side nav.
    6. the left-side nav is a little wider at "tablet" resolution.
  4. Enhanced some of the presentation of the modal for reporting an error from within the webapp.
  5. Completely deprecated and killed the Hunt Phase application. RIP
  6. Began the 2020 CSS Refactor/Refresh project:
    1. began replacing 'Metrophobic' with Google's 'Ruda' font. -LO
    2. started decoupling the tablet and desktop style sheets because I now believe that it is a bad design pattern to have more than one media query firing during a render (change my mind).
    3. re-linted everything and picked out...just dozens and dozens of small, stupid mistakes and redundancies that have cropped up over the years.
    4. created a subdir called css and created breakpoint-specific files:
    5. ported in-app error reporting to the breakpoint-specifc files and translated pixel sizes to vh/vw sizes (which is the new standard)
    6. started standardizing the border_box element, first by re-naming it (to kd_sheet_ui_border_box) and then by porting it to the new CSS files and following the new standards for sizing, etc.
    7. Sorted out the various different ways that the top nav bar (and related margins) had been implemented across the various views and refactored down to a single one (in preparation for its ultimate deprecation).
    8. The Campaign Summary "facts box" has been refactored to follow the general naming convention (and is now simply the "right panel" of that view); refactored both panels to have WAY less absolute CSS.
    9. Redid the left side menu at all break points (there was a ton of junky/redundant/doing-nothing CSS re: that).
    10. We're no longer styling HR elements (because...yuck); they've also been mostly deprecated from template code.
    11. Re-implemented the fixed "Manage Departing Survivors" button to use generic Kickstarter styles, rather than being a total one-off.
    12. Touched up a couple of Dashboard panels, including System and About, to use less CSS.
    13. Re-did the "Death X" on the Campaign Summary to use less CSS as well; also to use existing color instead of one-off color.
    14. Adjusted the Campaign Summary diamonds to be relatively sized, DRYer and more resilient to browser fuckery.
    15. Reviewed the Dashboard.
    16. Developed new CSS at all breakpoints for the Settlement Sheet, Survivor Sheet, Campaign Summary, Dashboard and navigation templates.
  7. Implemented Settlement Sheet tab bar and tabs
  8. Moved Settlement Sheet storage controls onto their own tab
  9. Refactored settlement storage:
    1. removed the modal editing UI; merged its elements into the storage list, for a unified and simplified set of controls .
    2. rollups (totals for type and keyword) can now be refreshed independently of the rest of the controls (see API Development section for details).
    3. Storage location totals are now calculated on the fly (formerly you had to wait for the API to come back, which is against AngularJS design patterns...and generally kind of crappy); 
    4. Parenthetical counts (i.e. numbers in parentheses next to a heading) now appear in the Metrophobic font, which displays numbers less crazily than Silverado.
    5. Gear/Resource counts can no longer be set to negative numbers (and then re-set by a pointless API call); the button is disabled now at zero.
  10. Refactored the Settlement Sheet generally:
    1. settlement stats/tumblers are no longer directly editable; instead, they have fade-in angular controls now (for better/safer control and to force people to see the admin notes).
    2. tumblers are managed in the new CSS (i.e. ported from the old CSS).
    3. deprecated the help-tip system (which I never fully implemented because it makes less sense than the hybrid approach of in-line help and and FAQ that we ultimately went with).
    4. Added a scold that comes up when attempting to manually modify settlement tumbler numbers (Survival Limit, Population, Death Count).
  11. Started deprecating the legacy showHide() JS method. Replacing it with ngShowHide(), which follows the Angular pattern of showing and hiding with ng-show.
  12. Started deprecating the top nav bar, which I plan to fully kill as soon as I can relocate survivor search.
  13. The "tap or click" tool tip on the campaign summary is now a proper tooltip and can be disabled (by subscribers); same for the tool tip that opens the Campaign Summary Endeavor token tracker.
  14. Deprecated the dashboard alerts and removed the button.
  15. The 'About' section now gives the date in ISO format, rather than as (not especially human readable) JS timestamp. Day of week is now also included.
  16. Removed the deprecated Endeavor controls "clear div" from the Campaign Summary (it was a holdover from when we used to float elements (if you can even believe that) and did nothing).
  17. Fixed the Dashboard Accordion UI so that it is 100% relative now and no longer uses pixel padding to create the accordion effect.
  18. Updated session.py so that views can be rendered with an arbitrary list of UI templates (rather than just having it be all or nothing); the view loads WAY faster now, due to lack of extraneous JS work.
  19. Left side nav bar is more touch-friendly, e.g. at mobile and tablet break points: the margins have been clarified and the padding has been increased on the clickable elements.
  20. Cleaned up the System panel on the dash: normalized some UI elements and, beyond CSS, removed a bunch of pointless/vestigial HTML.
  21. Refactored some Campaign Summary elements:
    1. The roll-down/roll-up controls on the Campaign Summary quickview have Kickstarter-style buttons now, rather than one-off/random-looking buttons. They also no longer use their own colors (and use standard colors from colors.css).
    2. Campaign Summary survivor quickview hit locations are now DRY (i.e. use an ng-repeat instead of being five one-off blocks of nearly identical code); they also only render when the view is open, so that should help load times and performance on the page.
    3. Refactored the JS that controls hit box toggling on the Campaign Summary quickviews so that it is more responsive (i.e. updates the sheet without waiting for the API).
    4. Campaign Summary endeavor "bars" use kdm-font-10 now, instead of images (again, for better portability).
    5. Endeavor "bars" use an ng-repeat now, and are no longer one-offs. This has been a loooooong time coming.
    6. Moved the Pulse Discoveries block above the Endeavors controller, so the two Endeavor elements are adjacent, rather than being separated randomly.
  22. Reorganized the Settlement Sheet to utilize the new space allowed by having tabs. 
  23. Refactored (DRYed up and minimalized) optional/auxiliary Settlement Sheet control boxes: Lantern Research Level, Monster Volumes, Inspirational Statue, 
  24. Lantern Research has been moved to the top of the settlement controls, e.g. by Survival Limit, etc. since it is a first-class citizen in the endgame. Lantern Research controls roll up/down and use Kickstarter-style buttons now; deprecated the special/one-off JS controller for Lantern Research.
  25. Deprecated the generic JS rollUp() method (and replaced it with a func that throws console errors).
  26. Implemented $rootScope.ngRolledUp, which is a hash that keeps track of whether a roll up element has been rolled up or not.
  27. Created the 'Admin' tab of the settlement sheet, which is where we're going to park all of the administration controls going forward. Moved the 'Abandon' and 'Remove' settlement controls to the tab for now.
  28. Refactored Survivor Search:
    1. DRYed up the actual code
    2. added the toTitle() method to the kdmManager.js root scope for easy conversions from handle to KD-style title case (i.e. with ampersands, etc.)
    3. Re-did the CSS completely
  29. Refactored the Timeline:
    1. The Timeline "close" button is now a fixed modal (so you don't have to scroll through the whole Timeline to close it).
    2. All Timeline buttons have been replaced with kd_kickstarter_button class buttons (replacing their one-off styles); Timeline event selectors are now kd_kickstarter_select class as well.
    3. Rather than removing them immediately, clicking/tapping (grey) Timeline event tiles now exposes/arms a red X, which, if clicked/tapped, actually removes the event.
    4. The "SE" icon is no longer used; we use text instead for better portability, as we do in asset text, etc.
  30. Added ngToggleAttrib() method to kdmManager.js for arbitrary object attrib boolean toggles.
  31. The modal controls for managing Departing Survivors now has a fixed position Close button.
  32. Refactored the Settlement Sheet principle controls:
    1. controls are in a KD-sheet-style modal now.
    2. controls are blocked while updates are happening (since these can take...a while, due to multiple potential survivor updates, etc.).
    3. controls now include the principle's description from its card.
    4. set principles cannot be clicked now, i.e. causing pointless API churn and refreshing the view, etc.
    5. re-wrote HTML to be way more DRY and easier to read (removed redundant HTML).
    6. Settlement Sheet display of principles uses non-interactive span/div display instead of input/checkbox style display.
  33. The wonky/broken/deprecated "Settlement Bonuses" box has been removed from the Campaign Summary.
  34. Campaign Summary settlement Locations/Principles/Innovations can be clicked or tapped to show details.
  35. Cleaned up the HTML and CSS for the Campaign Summary survivor "buttons" (in preparation for new feature work in the next few releases). Also cleaned up the top "flash" and the bottom "constellation" banners.
  36. Refactored the create new survivors templates (singular and multiple).
  37. Dashboard "roll up" elements now have rounded edges when rolled up; CSS has also been normalized to use the new style (see above re: the big CSS refactor).
  38. Deprecated the old "Notes and Players" option from the side nav (replacement coming soon).
  39. Improved and consolidated Survivor Sheet loading indicators. They now disappear from view more appropriately and are managed in a single element.
  40. cleaned up the order in which Settlement Sheet API calls get made so that the view loads more logically and thus faster.
  41. Updated the Survivor Sheet name change "applet" to improve the UX a bit:
    1. there is a "Close" button now, separate from the save button
    2. The "Close" button changes to an "Undo" button and will undo changes if clicked
    3. The name and surname buttons only change the first and last bit of the name, rather than wiping out the whole thing.
  42. Editing a Survivor Name (on the Survivor Sheet) manually while the controls are exposed no longer rolls them back up.
  43. Re-implemented the "rulebook" style alerts (the pink boxes with the exclamation marks) so they look more like they look in the book now.
  44. Fixed the presentation on dashboard "accordion" elements so that their bottom padding is consistent when they're "rolled down".
  45. User preference headings (on the dashboard's "System" menu) no longer appear if there are no preferences under the heading that the user can can change (basically, this hides the "General" header from non-subscribers who, obviously, are at greatest risk of becoming confused by it and mistaking it for a bug, etc.).
  46. A campaign's "Monsters" section only appears if the settlement has moved past LY 0.
  47. Deprecated the vestigial survivalController from survivorSheet.js (all of its former methods have now been fully superseded by API 1.0.0 calls through generic methods).
  48. Deprecated the "affinity_spacer" class HR element from all views.
  49. Refactored the affinity controls on the Survivor Sheet. Brought the CSS into compliance with 2020 standards for the Manager, swapped out the plus/minus signs for arrows and replaced one-off CSS with generic UI stuff.
  50. Completely refactored hit locations in the quickview and Survivor Sheet view:
    1. Survivor Sheet hit location controls have been synchronized with their counterparts on the Campaign Summary quickview.
    2. The "Brain" hitbox now turns all elements, including borders, red (in both views).
    3. CSS- and HTML-wise, I re-synchronized the Survival controls (i.e. between the Survivor Sheet and the quickview).
  51. Added the Lantern Year to the top of the Settlement Sheet (along with a scold directing novice users to the side nav if they tap/click on it).
  52. Re-implemented Survivor Sheet Hunt XP controls, including:
    1. boxes are programmatic and use an ng-repeat now (instead of being hard-coded)
    2. the .kd_sheet_ui_box.dotted CSS handles the dots now, instead of doing that as HTML (which was hella dirty).
    3. Removed the HR (we're deprecating HR's in this release) that separate the display from the tip
    4. Moved the tip down into the controls, in keeping with how we're doing the worksheet UI tips elsewhere
  53. Created unique styling for tips WITHIN control roll-down elements so that they look more worksheet-ish; also created a new "integrated" style of roll-down element where the box that rolls down is connected with a the border of the thing it controls.
  54. Moved the Hunt XP, Weapon Proficiency, Courage and Understanding tips on the Survivor Sheet down into the roll-down controls block and tagged them with the dynamic tip styles so that they present like other tips
  55. Normalized presentation (made the boxes a long box row in CSS) so that Weapon Proficiency, Courage and Understanding box rows present identically.
  56. The Weapon Proficiency selector is now a kd_kickstarter_select class selector, and looks like the one on the Campaign Summary quickview. This release is all about visual language.
  57. Survivor Sheet Weapon Proficiency controls are done as an ng-repeat now, rather than being hard-coded; buttons are Kickstarter buttons and onClick public scope JS is replaced by ng-click calls to functions in the main app.
  58. Survivor Sheet Courage and Understanding controls are done as an ng-repeat now as well; buttons are Kickstarter buttons and onClick is replaced with ng-click.
  59. The controls for setting a Survivor's Constellation (Dragon King expansion) are now KD Kickstarter style buttons/selectors. I also normalized presentation in the Controls of Death and the Survivor Sheet Partner select modals/control rafts.
  60. Deprecated the Survivor Sheet attributes "balls" UI; replaced it with quickview-style boxes.
  61. Deprecated and removed the JS controllers for SotF re-roll and attributes; moved their still-necessary methods into the main Survivor Sheet controller.
  62. Survivor affinity cubes appear on survivors' Campaign Summary "cards" now.
  63. Added tabs to the Survivor Sheet:
    1. The SotF once-per-lifetime re-roll toggle is up by the other toggles now.
    2. Partner controls now only appear if the survivor has the Partner ability. They also appear inline with the rest of the A&Is now.
    3. Partner select modal is now included in the "fold", as it should always have been.
    4. Separated event logs from lineage
    5. Dead, Retired, Favorite checkboxes are on the "Notes" tab now
    6. Moved campaign-specific modal openers (Dragon Traits, Savior, etc.) to the "Notes" tab as well
    7. Refactored the Tags applet so that it doesn't drop a menu down and is a little simpler, UI-wise, to use on mobile (i.e. doesn't chew up a bunch of screen).
    8. Tabbing left or right can be accomplished with arrow keys (if you've got a device with arrow keys).
  64. Fighting Arts, Disorders and A&I selectors are KD Kickstarter style (like the Campaign Summary quickview).
  65. The rules text for the Partnership innovation that appears on the Survivor Sheet now comes from the API, rather than being hard-coded into the legacy webapp UI.
  66. Refactored the dashboard arrows: they're pure CSS + angular now and have a little rotation effect.
  67. Re-implemented Survivor Sheet notes to use a.) a whole-screen modal and b.) divs instead of UL's and LI's. I also brought the controls for removing notes up to application standards, i.e. they require two taps now to remove a note.
  68. Deprecated the toggleArrow() method from kdmManager.js (since it is no longer necessary).
  69. Re-implemented dashboard preference toggles as divs (i.e. removed the labels and checkbox inputs).
  70. Added expansion content descriptions to the "Collection" section on the dashboard. -Scott
  71. Re-implemented Settlement Sheet milestone boxes using AngularJS; checkboxes are deprecated.
  72. Same-sies for Settlement Principles controls: these no longer use input checkboxes either.
  73. All kd_css_checkbox styles have been purged from all application CSS.
  74. Removed the tiny arrows from the select HTML elements. 
  75. Cleaned up the presentation on the elements of the Survivor Sheet that are now on the 'Admin' tab; reorganized these into separate boxes.
  76. Added a JS method in kdmManager.js that allows the $scope.user object to be updated with a top-level element called friends called loadUserFriends()
  77. Subscribers only: the Survivor Sheet email controls now allow users to click on their friends to rapidly add them.
  78. When a settlement fails to load on the dashboard, the Manager throws the full-page API error with complete details. The old thinking was that since this isn't fatal, we don't want to stop it, but now that casual users are in the minority, I feel like people are more likely to report when there's an asset failure on an old settlement.
  79. Cleaned up the full-screen API error so that it doesn't show a space for the current settlement OID or user login if there is no current settlement OID or user login (e.g. because we died while loading the user from the JWT, etc.)
  80. The full-page API error also pops off when you fail to load a campaign in the legacy webapp Settlement view.
  81. Standardized the UI tips on the new survivor sheet (templates/new_survivor.html) so that they use the same CSS as the other UI tip blocks in the app.
  82. Deprecated the one-off togglePublic() method from kdmManager.js and replaced it with a call to ngToggleAttrib() (which is the new standard as of this release).
  83. New survivor creation controls use ngShowHide() method now, rather than the (deprecated) showHide() method in the public scope.
  84. The Endeavor token "flippers" on the Campaign Summary are now styled the same way as the similar controls on the Settlement Sheet.
  85. The big loading spinner (#fullPageLoader in the CSS) now as a z-index value that puts it above pretty much everything else, obscuring page components while they load (which looks more professional, I think).
  86. Creating a new survivor and then clicking on the link to them now throws up the full page loader, to prevent users from accidentally triggering a new survivor creation by hitting enter twice.
  87. Re-implemented cursed item controls on the survivor sheet to use clickable divs (instead of label/checkbox stuff, which is deprecated UI).
    1. deprecated the one-off cursedItemsController controller from survivorSheet.js
    2. migrated (and refactored for DRYness) all cursed item CSS from style.css (deprecated) to _base.css
    3. added a "close" button at the bottom of the controls (in addition to the X at the top)
    4. the JS has been updated so that the transition from not-selected to selected (and vice-versa) is more immediate
  88. Redesigned the new settlement creation view/form at desktop resolution to make better use of the horizontal space; it's more like a paper form now at desktop rez.
  89. The Help modal has a close button that is fixed at the bottom now (because "click anywhere to continue" isn't really a UI concept in people's brains).
  90. The Help modal now breaks into three columns at desktop resolution.
  91. Help topics (the bolded bits) now force a line-break, which should make the whole thing a little more legible.
  92. Survivor Search shows two columns of results at Desktop resolution now.
  93. Added some explainer comments to the campaign_summary.html that explains how we iterate through available endeavors (which is a little bonkers, tbh).
  94. Clickable elements now do a little transform animation to show they've been touched, sort of like a button element does.
  95. Re-implemented the controls for managing Departing survivors:
    1. roll-down/roll-up controls use the generic, CSS-based approach (similar to the Dashboard) now for easier, faster maintainability; we use $scope.ngRolledUp to manage states now, instead of private states, e.g. on data objects, etc.
    2. the .roll_down_container class is now used everywhere we have one of these elements (formerly named 'accordion'-whatever); 
    3. Deprecated the initShowdownControls() method in campaignSummary.js
    4. DRYed up the survivor bulk management controls (+1/-1 Courage, etc.) so that they use an ng-repeat instead of being one-offs
    5. the toTitle() method in kdmManager.js now turns 'xp' into 'XP' when it sees it.
    6. We use a blocking modal now to conceal the buttons during an update; we no longer remove the buttons from the scope, because this breaks the layout and looks weird and...is not a known UI/UX concept, frankly.
    7. The Manage Departing Survivors button disappears during an update as well; the user can click out of the update (if they don't feel like waiting for it to finish) and return to the campaign summary view.
  96. If the API dies/goes away during a session, the user is now kicked back to the login page (where, if they try to sign in, they get the 'down for maintenance' error).
  97. User login and current session OID are injected into the root scope now via setSessionVars() in kdmManager.js. This is the first thing we do on a render, so we can a.) automatically sign users out if the API has a critical failure or b.) let users sign out if they cannot access the API for whatever reason.
  98. dashboard.html users session vars to sign users out now (instead of an initialized user object); it calls the signOut() method from kdmManager.js. Same-same for nav.html, which calls the function now.
  99. Fatal API errors (all of them) now force the user to sign out by clicking a button.
  100. Exporting users from the webapp now exports any survivor notes they may have created.
  101. Campaign Summary survivor group use the generic, CSS-based roll-up/roll-down (ngRolledUp, etc.).
  102. Created the Ctrl+Alt+d Angularjs debugger; styled it at desktop res
  103. The so-called "Death X" on the Campaign Summary now fades in
  104. Added the rollDown() method to kdmManager.js to force an element into a rolled-down state, e.g. on init or similar.
  105. Implemented a UI feature for tabs where a small left/right arrow pops up to indicate that the tab has changed
  106. Deprecated the 'parenthetical_count' CSS class completely.
  107. Enhanced the legacy compatibility code in the ngShow() method of kdmManager.js so that it waits for the $digest to be updated before looking for the element to attempt to fiddle its CSS.
  108. Deprecated one-off spinner code from settlementSheet.js for the Innovation Deck refresh; re-implemented it using ngVisible, etc.
  109. ngDebugger window now has a link that lets you (me) view the settlement JSON in the raw (without going to PostMan).
  110. deprecated "maroon" styles from the Settlement Sheet in favor of KD/Special Showdown red.
  111. Gear card activation lighting bolts are now white, rather than being the color of the background (thanks to this Stack about stacking: https://stackoverflow.com/questions/3032856/is-it-possible-to-set-the-stacking-order-of-pseudo-elements-below-their-parent-e). 
  112. Settlement Sheet controls for Monster Volumes and the Inspirational Statue are in the left column (at tablet and wide resolution) now.
  113. The Campaign Summary view now shows levels for Innovations and Locations that can be leveled up.
  114. Re-implemented the logic that shows levels controls for Innovations and Locations on the Settlement Sheet view. Controls now appear automatically when the Location or Innovation is added. 
  115. Deprecated the kd_radio_option CSS class completely.
  116. We're linting all of the CSS files in the webapp (using csslint) now; I added a .csslintrc file to the /v3/css folder.
    1. Fixed overqualified elements
    2. Started implementing font size abstraction: https://github.com/CSSLint/csslint/wiki/Don't-use-too-many-font-size-declarations; added three baseline fonts, started refactoring where it made sense (i.e. in shared/reused elements)
  117. Settlement Sheet storage controls now highlights rows where the quantity of the item is greater than zero.
  118. Implemented font abstraction on the Survivor Sheet "cards" (Fighting Art, Disorder).
  119. Refactored and abstracted Survivor Sheet Special Attribute CSS (the big check boxes under the secondary attribs).
  120. Re-implemented the Survivor Sheet Controls of Death as an inline set of controls, rather than as a modal:
    1. rewrote the JS method for adding the custom COD option to the end of the drop-down list and re-located it from kdmManager.js to the settlementSheet.js
    2. deprecated the one-off methods for showing the custom COD input as well as flashing the error if the user leaves it blank.
    3. Custom COD strings are now evaluated and set/unset by new javascript that isn't a complete and total embarrassment. 
    4. Re-styled the text input, so it fits with the Kickstarter style buttons.
  121. The "favorite" checkbox on the Survivor Sheet is now actually a star. 
  122. Re-implemented the classes/CSS of the Survival of the Fittest checkbox so that it uses font abstraction and looks more consistent with the Survivor Sheet generally.
  123. Ported the Survival box styles from style.css to _base.css and cleaned them up so they work better with font abstraction and look more like the stock sheets, in terms of margins, etc.
  124. Refactored damage boxes/hit boxes for Campaign Summary and Survivor Sheet views so they look more like the stock sheets:
    1. boxes now have box-sizing: border-box in the _base.css and no longer have individual styles/sizes.
    2. boxes now have the "L" and "H" for light and heavy
    3. The "Heavy Injury: Knocked Down" tip text on the hitboxes now has the prefixing square
    4. hitboxes are now sized using rem only, i.e. the pixel-specific sizing concept is officially out the window
    5. Hitbox rows now have underlines, like the stock sheets (at all resolutions, not just desktop)
    6. normalized widths on the brain box at all resolutions, so it matches the Survival box
    7. The survivor_sheet_hit_location_repeater and campaign_summary_hit_location_repeater styles have been merged into a single hit_location_repeater style
    8. Added "small" KD checkboxes; implemented them on survival actions and a couple other places to increase visual/style correspondence with classic sheets.
    9. Applied font abstraction to the Survival Box and the attribute tumblers
  125. Applied font abstraction to the FA, Disorders and A&I sections of the Survivor Sheet (on Campaign Summary and Survivor Sheet views); this includes on cards, on the lined-blanks sections, etc.
  126. Addressed the margins on the SotF reroll toggle elements so that it looks more like a button.
  127. The button and modal controls for managing Departing survivors from the Campaign Summary view have been refactored to use ngVisible, ngShow(), etc. instead of the deprecated public methods.
  128. Created a new box on the Survivor Sheet to manage campaign-specific attributes in a single location:
    1. created the ui_tiles_box styles to collect the disparate/one-off styles used for the Savior, Cursed Items, Constellation, favorite/retired/dead, etc. controls; deprecated aforementioned styles
    2. Deprecated the old so-called "dynamic modal launcher" buttons
    3. Moved the Cursed Items, Dragon Trains and Savior buttons/launchers to the new ui_tiles_box element for the new campaign-specific attributes box
    4. Enhanced the ui_tiles_box to use flex-grow instead of specific widths (we'll see how long that lasts haha)
  129. Refactored the Courage and Understanding boxes on the Survivor Sheet:
    1. Enhanced DRYness by removing the duplicate text bits; there is only a single ng-repeat now. It's not perfect, but I was able to delete a bunch of hard-coded/one-off stuff.
    2. Added a new, abstracted JS method setAttributeAI() to the survivorSheet.js that can be called at any point to set the A&I for a given attribute.
    3. Replaced the redundant, hard-coded HTML for the selected A&I with a dynamic one based on the scratch value.
  130. The container element in all views now has a class, which differs depending on view.
  131. Re-implemented the negative margins on the dashboard (so they no longer exist), which makes margins on the dash a.) much DRYer and b.) way less of a kludge.
  132. Dashboard clickers or roll-down elements no longer have borders, which makes them the same as their phone and tablet res counterparts.
  133. Tip checkboxes (for Hunt XP, Weapon Proficiency, etc.) on the Survivor Sheet are now small, non-heavy (i.e. regular) instead of full-size heavies. Looks more like the stock sheets this way.
  134. Tip containers on the Survivor Sheet are now justified and centered horizontally and vertically, which, again, makes them look more like the stock sheets.
  135. Survivor Sheet Hunt XP tip tiles are now dynamic_tip_container class, rather than being one-offs: they use the same style as the Courage/Understanding tips now; the wrap_tips class is deprecated.
  136. desktop.css and tablet.css survive the linter now and will continue to do so in subsequent releases.
  137. Refactored the Settlement Sheet controls for Lost Settlements:
    1. the main story tip (that references that Game Over story page number for the current campaign) is no longer a flexbox; it's just an inline-block, since it only contains text; it also uses font abstraction
    2. We're using standard sheet roll down controls and styles now, instead of hybrid/one-off/random styles
    3. tip tiles are DRY now, and use ng-repeat instead of hard-coded individuals; they use font abstraction now as well
    4. the checkboxes are small divs now, rather than one-off spans
    5. tip tiles are implement according to the dynamic_tip_container/dynamic_tip standard used on the Survivor Sheet for tip tiles
    6. the one-off style class lost_settlement_tip is completely deprecated
    7. tips only appear when controls are rolled down
  138. Settlement Sheet title blocks use font abstraction now.
  139. Completely re-did survivor notes:
    1. wrote new HTML that uses a contenteditable div instead of text input.
    2. wrote new JS to scrape the text from the page and package the object for shipping up to the API.
    3. re-designed the presentation and UX to look and work sort of like Google Keep
    4. added a pushpin button that sets a flag.
  140. the ngSetFocus() method now accepts a second position argument that allows you to clear the target element's text, innerHTML, etc. as needed.
  141. Implemented CSS variables in color.css in the name of DRYness and as part of the version four standard.
  142. Re-styled the 'ABANDONED' text that shows up on the settlement sheet.
  143. The 'ABANDONED' text shows up on the Campaign Summary view now, and uses the same style.
  144. Unified settlement title and campaign type styles so that the Campaign Summary and the Settlement Sheet views both use the same style. This was harder than it sounds like.
  145. Deprecated the "headline" bit of the Campaign Summary view: campaign name and type now display in-line with the left column.

API Development

  1. [1.12.62] Updated the password reset request subject line (to hopefully bypass bigpond spam filters?).
  2. [1.12.62] Added a new route for robots.txt (and created a vanilla robots.txt).
  3. [1.12.62] Attempts to initiate a password request that fail (for any reason) now fail back to the user via utils.InvalidUsage().
  4. [1.12.62] When Flask catches an unhandled (run-time) error, it now logs about it; when the utils.email_exception() method fails, it logs its own failure (which it did not previously).
  5. [1.12.62] Re-added the noUser pseudo class and get_application_url() method to the utils.py module: the fact that these were missing is the root cause of issue 535.
  6. [1.12.62] Renamed utils.py method get_local_ip() to get_host_ip(), which is what it was supposed to be in 1.0.0 (but which we somehow missed).
  7. [1.12.62] Replaced the password_recovery.html template (which also did not get migrated in the 1.0.0 release).
  8. The utils.get_application_url() method now reads from the settings.cfg when it's defaulting a production application URL, which allows us to bless one of the apps as the canonical one.
  9. The API now has a 404 response, which will prevent all of the attacks on the API from spamming me as "errors".
  10. Keyed in Oktoberfest Aya (2019) content:
    1. created an expansion definition
    2. added (3) pattern gear cards; keyed their recipes
    3. wrote a help note about the Lonely Tree requirement
  11. Keyed a bunch of new names, focusing on neuter options since 2019 was the year of "They".
  12. Replaced the really terrible, repetitive (extremely un-DRY) method for calculating keyword rollups in the models.settlements.get_settlement_storage() method, which makes loadStorage() calls from settlementSheet.js come back in like, almost half the time they used to.
    1. created models.settlements.get_settlement_storage_rollups() and implemented half a dozen return options for it.
    2. including rollups, which is resource intensive, is optional now (via kwarg)
    3. Added a new route for getting the rollups as their own dictionary: /settlement/get_storage_rollups/$oid 
  13. Asset collection objects now include the self.handles attribute, which is a sorted list of all asset handles.
  14. Created the storage.handle_to_item_object() method to have a single source of truth for handle to gear/resource lookups.
  15. If the database is unavailable, we email for help every time someone makes a request.
  16. The Settlement model's update_attribute() method now supports updates to non-existing attributes (by assuming they are zero).
  17. Principle type innovations now have the 'desc' attribute, which supersedes the now-deprecated *_buff attribute scheme.
  18. Transitional to their ultimate deprecation (later this year), epithets can now be looked up in game assets an on survivors as 'tags'. 
  19. Added support for user/get_friends/[oid], a private endpoint that can be used to retrieve a list of a user's friends.
  20. Made a number of improvements to admin.sh to help with misc. administration tasks that have come up over the months since the last major release:
    1. The admin.sh operation for cloning a user now defaults to resetting the user's password after import: previously it did the opposite, and preserved the incoming password.
    2. admin.sh can now dump a user's survivors (the ones they've created) in addition to their settlements.
    3. Created an AssetManagementObject base class in admin.__main__ to create generic init and admin methods for user, settlement and survivor administration.
    4. Individual survivor records can be dumped from the CLI now.
    5. Settlements can be removed from the auto-delete queue via admin.sh now.
  21. Keyed in the Sunstalker's Sky Harpoon, Sunring Bow, Sunshark Bow, Sunspot Dart, Sunspot Lantern and Quiver & Sunstring gear card details (which somehow got missed when I pushed Sunstalker content originally).
  22. Added the Activation Limit: N and Prismatic special (gear) rules to rules.py
  23. Added new survivor color schemes: 'Rulebook Blue', 'Rulebook Pink' and 'Rulebook White', for all you rulebook fans out there.
  24. admin.sh now uses a while loop to make sure we get a verdict when prompting to reset a cloned user's password.
  25. Importing users now fails gracefully if a certain collection isn't present in the data we're trying to import. Keeps us legacy-friendly.
  26. Cleaned up some of the attributes of the Slenderman expansion gear cards; updated formatting, fixed some issues (Gloom Bracelets are correctly identified as armor now).
  27. Keyed in some Flower Knight expansion gear cards that were evidently missed.
  28. Also keyed in some Dragon King expansion gear cards that were missed. 
  29. The admin.sh utility accepts the -f or --force flag for certain operations now, including --clone_user.
  30. Added a --dump_recent_users flag to admin.sh that allows CLI admins to dump an arbitrary number of user logins, OIDs and latest activity values. Mostly this is to facilitate dev situations where I've got a unit test I'm doing against a bunch of users, etc.
  31. Added AdminPickle object and a couple of methods to admin/__init__.py so that I can pickle admin details on the local filesystem (mainly so I don't have to keep typing my email address so much).

No comments:

Post a Comment