# Release Notes

# wood releases

When updating an existing project, please review these notes for potential changes to how the base Nodewood library functions.

# 1.0.0

  • Small rename for clarity in Page template.
  • Adds afterRequestAugmented() in AppBuilder.
  • Fixes error with testResolver sometimes attempting to import directories instead of sibling files with the same name.
  • Moves positioning styling out of UserMenu and into App/AdminTemplate.
  • Updates PrimeVue.
  • Changes keys parameter in Service's update() and insert() to be optional.
  • Automatically injects Services into Controllers and other Services.
  • Fixes potential issue with subscription cancellation if support email fails.
  • Fixes issue where ejected Controllers or Services wouldn't be loaded unless the app was explicitly enabled in app feature list.
  • Adds healthcheck endpoint to API.
  • Adds healthchecks and dependencies for docker containers to fix uncommon but frustrating startup issues.
  • Updates passport version for security.
  • Services are now automatically injected into Scripts, same as how they are injected into Controllers and Scripts.
  • Adds Pulumi deploy option.

There are some pretty big changes in this release, please see the Upgrade Guide for how they affect you and how to integrate them into your project.

# 0.20.1

  • API's startServer() now accepts a function that can modify the server before .listen() is called.
  • Moves JWT-related auth functions out of Passport file into their own Jwt file.
  • Updates templates so feature from CLU add command is never pluralized.

# 0.20.0

  • Removes Vue 3 compatibility mode.
  • Adds flags to TeamModel.
  • Adds secure_flags to UserModel and TeamModel.
  • Adds hasFlag() to UserModel and TeamModel.
  • Adds a script runner and script templates.
  • Fixed an error where TeamService.count did not respect any additional options other than 'name'.
  • Adds 'insertModel()' to Service.
  • Add 'OutOfRangeError' to Errors.
  • Uses shorter months for Recent User/Team "joined" date in admin dashboard.
  • Adds a script to roll up user/team/mrr historical data.
  • Updates Admin Dashboard to use rolled-up data for "Analytics" section.
  • Fixes weird "blank left border" style issue on toast popups.
  • Fixes warning toasts not having any style applied.
  • Updates to latest version of Chart.js and vue-chart-3.
  • Adds and upgrades some peer dependencies.
  • Adds model name to model FIELDS definitions.
  • Adds validator name to FORM_FIELDS definitions.
  • Fixes bug with typing in manual state names for subscriptions.
  • Fixes bug where email was not being sent to Stripe.
  • Fixes bug where team name was being sent to Stripe, even with teams disabled.

# 0.19.0

  • Adds responsive styles to make Nodewood mobile-friendly! (See Upgrade Guide.)
  • Adds new mobile-friendly DataTable component.
  • Fixes per-page number for Admin Teams not correctly interacting with search text.

# 0.18.0

  • Upgrades from Vue 2 to Vue 3.2 in compatibility mode. (See Upgrade Guide.)
  • Upgrades Docker base from Node 14 to Node 16.

# 0.17.1

  • Adds an info log at the beginning of signup. In case any steps fail and the signup is rolled back, you at least have the user's name and email address.
  • Simplifies team name identification.
  • Adds a simplified theming system.

# 0.17.0

  • Moves logger setup earlier in application setup, so logger is available on request for earlier errors.
  • Adds custom handling for JSON body parse errors.
  • Adds isHtml properties for Fields, allowing them to be displayed using v-html directives.
  • Adds new field: FieldEmail for email addresses.
  • Changes Email field in UserModel to use a FieldEmail.
  • Fixes "page" error message in ListRequestValidator.
  • Adds #lib/Config to make it easier to load and override config settings for testing.
  • Adds isFeatureEnabled helper function in #lib/Config.
  • Fixes Standard401Error with incorrect signatures causing errors on failed auth.
  • Adds helpful error message for find in Services when an Object is used (you probably want to use findBy in these cases).
  • Fixes Service's destroy() not reporting the correct table when hitting an error.
  • Updates users and teams sequence to start correctly when using test helpers to insert default users.
  • Moves updateCsrfToken() to ui/lib/xhr so it can be used for logging in from other locations than just the ActiveUserStore.
  • Adds aliases parameter to Validator.
  • Allows you to pass an array of Validators to Controller.validate().
  • Rolls back to Numbro 2.3.0 to fix currency rounding issue.
  • Refactors AdminUserController's list() function to be more-easily extendable.
  • Adds a "teams" attribute to UserModel.
  • Populates UserModel's "teams" attribute from the AdminUsersController's list() function.
  • Adds keyValue() function to Model so that the model's value for a particular key can be overridden to allow for fields that build their values from complex model attributes.
  • Updates Service template and existing templates to include order parameter.
  • Adds instance parameter to all Fields, so the instance of the model being examined is available to the fields if necessary.
  • Models pass themselves to Fields as a second, instance parameter, to allow for late-bound calculated FieldCustoms.
  • DropdownMenuItems now close their parent DropdownMenus immediately when clicked.

# 0.16.2

  • Fixes warning of using 'this' in ChangeSubscriptionPage.vue template.
  • Fixes regex for how to proxy requests from nginx.
  • Removes extraneous variable in Store template.
  • Fixes env check for logging routes.
  • Fixes a bug where the wrong filename could be logged when trying to require a file that does not exist.

# 0.16.1

  • Adds feature detection for form auto-submit, to not cause errors on browsers that don't support it.

# 0.16.0

  • Orders admin user list in order of account creation, most-recent first.
  • Automatically submits forms when Enter is pressed in TextInputs.
  • Moves Home, About, and Component sample pages to samples feature. (See Upgrade Guide.)
  • Switches from using deprecated VueRouter.addRoutes() to .addRoute().
  • Adds and enables eslint-plugin-promise eslint rules. (See Upgrade Guide.)
  • Changes how Webpack Dev server is configured, enabling HMR (Hot Module Reloading). (See Upgrade Guide.)
  • Moves express configuration in AppBuilder to a function for easier overriding in app-level code.
  • Moves saveLoginCookies() to UsersService.
  • Adds ability to log routes on startup. (Set NODE_ENV=development and LOG_ROUTES=log in .env)
  • Adds ability to configure max body size and url parameter limit in config/app.js.
  • Returns standard-format errors when exceeding max body size/url parameter limit.

# 0.15.0

  • Uses name from config/app.js as Application Name on sidebars.
  • Modifies Nginx config to omit logging for OPTIONS requests. (See upgrade guide.)
  • Changes webpack to polling mode for more-reliable reloads of UI on change.
  • Adds special warning when migrations have not yet been run.
  • Better error handling when requiring cascading files.
  • Upgrades TailwindCSS to v2! (See upgrade guide.)
  • Upgrades a variety of packages. (See upgrade guide.)
  • Fixes Webpack Bundle Analyzer plugin. (See documentation.)

# 0.14.0

  • Changes Postgres Docker container to build from Postgres image, not use it directly.
  • Updates templates for nodewood add:feature to create a more full-featured example.

# 0.13.0

WARNING

This release is a significant change to the require system of Nodewood. Please refer to the upgrade guide for 0.13.0.

  • Moves admin route protection to vue-router global navigation guard.
  • Adds UI subscription capability route protection in global navigation guard.
  • Fixes error in subscription capability detection.
  • Removes unused ApiDocs documentation folder/scripts.
  • Forces Validator to display API Errors even if field value is empty.
  • Add relative flow to templates so that overlay is full-screen.
  • Fixes check for subscriptions with insufficient capabilities.
  • Simplifies specific inclusion of files in app or wood folder.

# 0.12.1

  • Updates store fragment to use plural filename.

# 0.12.0

WARNING

This release is a significant change in the file layout of Nodewood. Please refer to the upgrade guide for 0.12.0.

  • Fixes unconfirmed user login redirect.
  • Fixes double error message toast.
  • Fixes confusing error messages when unauthorized.
  • Fixes bug when some require() calls would not error/close app when failing.
  • Fixes password_repeat not being redacted in logs.
  • Moves code from api, lib, and ui up out of their src folders to better match all other folders in the framework.

# 0.11.1

  • Moves PostCSS packages from app to wood.
  • Fixes PostCSS purge configuration.
  • Adds Tailwind future-proofing configuration values.
  • Revert to an earlier version of numbro to fix currency formatting issues.

# 0.11.0

  • Changes the default application URL to localhost.
  • Right-aligns the user dropdown.
  • Changes the default sales website serving folder to www/dist.

# 0.10.0

  • Updates sameSite parameter of csrf and jwt cookies to Strict.
  • Modifies default email config to use JSON stream transport and log emails in default configuration.
  • Removes API Docker container's dependency on UI container.
  • Defaults subscriptions feature to being enabled.
  • Fixes subscriptions tests.
  • Updates testResolver to ignore disabled app features (for reliable wood testing).
  • Updates testResolver to fix application tests in new Docker setup.
  • Updates .gitignore to ignore OSX litter files.
  • Updates docker configuration to allow for multiple databases: development and test.
  • Updates docker configuration to be run from wood/docker directly.
  • Adds LoadingSpinner component.
  • Adds sample Admin Dashboard.
  • Moves application startup code from app folder to here.

# 0.9.0

  • Fixes error parsing in XHR when an array of errors are returned.
  • Fixes updated CSRF token not being set on signup.
  • Removes Ansible and Vagrant references and files.
  • Exposes Docker PostgreSQL container for access from host development system.
  • Sources PostgreSQL connection values from .env file.

# 0.8.5

  • Fixes typo in email configuration error message.
  • Adds early-access Docker development setup.

# 0.8.4

  • Added FieldCustom field that calculates the field value with a custom function.
  • Cleaned up styling on admin user list.
  • Fixed issue where some clicks on TextInput labels wouldn't focus the input.
  • Redesigned Create Subscription page as a much cleaner 2-column design.

# 0.8.3

  • Added .js.map to list of requests not logged in API.
  • Fixed API init so that controllers are required correctly (i.e. will require their 'app' versions if present).
  • Removed default AWS email configuration, added debug error message about setting up email configuration.
  • Added a pre-commit hook to prevent you from making accidental commits to the wood folder.

# 0.8.2

  • API defaults to not logging JS/CSS/image file requests.
  • Removed default AWS email configuration, added error message when email configuration is missing.
  • Adds pre-commit hook to prevent accidental commits to "wood" folder.

# 0.8.1

  • Initial beta release.

# template releases

The Nodewood template is typically only updated to accommodate significant updates to the base Nodewood library. If you have an existing project, you generally do not have to pay attention to these updates.

# 1.0.0

  • Adds files for new nodewood seed command.

# 0.20.0

  • Adds massivejs peer dependency "pg".
  • Updates version of @vue/test-utils.
  • Manually specifies testEnvironment of "node" for jest config.
  • Adds #cli resolution for eslint.
  • Disables some accessibility lint rules.
  • Adds script.js.
  • Updates packages.

# 0.19.0

  • Updates vue-is-loading.

# 0.18.0

  • Removes -L (legacy file watching) flag from API Nodemon command line.
  • Adds standard postcss.config.js to project root.
  • Upgrades from Vue 2 to Vue 3.2 in compatibility mode.

# 0.17.0

  • Adds GENERAL_HASHID_SALT=generalHashidSalt to sample and test .env files.
  • Updates MassiveJS.
  • Adds default app config files for teams.
  • Adds API-specific email config files.

# 0.15.1

  • Fixes eslint error that blocks initial UI build.

# 0.15.0

  • Removes routes from main.js that have been moved to the samples feature.
  • Enables eslint-plugin-promise eslint rules.
  • Changes how Webpack Dev server is configured, enabling HMR (Hot Module Reloading).

# 0.14.1

  • Adds back mistakenly-trimmed routes.

# 0.14.0

  • Updates API dev command to also watch app/lib folder and restart API on changes.
  • Updates a variety of packages.

# 0.13.0

  • Simplifies specific inclusion of files in app or wood folder to match 0.13.0 of wood.

# 0.12.1

  • Removes migration step from when dev server starts.

# 0.12.0

  • Removes stripe.json.template from config folder.
  • Removes pm2.yml from root folder.
  • Moves code from api, lib, and ui up out of their src folders to better match all other folders in the framework.

# 0.11.1

  • Removes PostCSS packages (moved to wood).
  • Adds sample Bronze, Silver, Gold packages to config/stripe/products.json.

# 0.11.0

  • Moves sales site index.html to www/dist.

# 0.10.0

  • Changes email config to start empty.
  • Changes wood app config include to a relative include.
  • More-explicitly requires .env file to ensure it is found, despite Docker interference.
  • Removes template Docker configuration, as it is run from wood/docker now.
  • Moves application startup code from here to wood folder.

# 0.8.1

  • Initial beta release.