Framework

Changelog

What's recently been added or changed in Joystick.

1.0.0-rc.3

Integrated Tests
Feature @joystick.js/cli
Adds support for running tests directly alongside your app via the `joystick start --tests` command.
Client-Side Cookies Support
Feature @joystick.js/ui
Adds support for the `instance.cookies` value which exposes the API of the `js-cookie` package for managing cookies on the client.
Add HTML Render Method
Feature @joystick.js/ui
Adds support for an html render method that can be used to enable template literal syntax highlighting in your IDE.
Node Caches
Feature @joystick.js/node
Adds support for a new cache method in @joystick.js/node. Allows developers to create server-side caches of data in memory for faster querying and handling things like seeding search indexes. This adds the cache() API in @joystick.js/node, support for a caches() function in joystick.app() functions, and support in the CLI for the caches folder at the root of your app for organization.
Wrapper Attributes
Feature @joystick.js/ui
Added support for assigning an array of attributes to the wrapper options on a Joystick component. Accepts an array of objects with a key and value property, where the key is the name of the attribute and the value is its value.
Node Track External Process
Feature @joystick.js/node
Adds support for tracking external process IDs related to the Joystick app that need to be cleaned up in development. Provides a process.joystick.track_external_process() function in @joystick.js/node and a kill_process_ids() call in @joystick.js/cli in development that kills those tracked processes when there\'s a server restart.
Head Style Tags
Feature @joystick.js/node
Adds support for specifying <style></style> tags via the res.render() function\'s head object.
MongoDB Binary
Feature @joystick.js/cli
Instead of searching for a local copy of MongoDB, now, Joystick will check for its own canonical binary version on your computer and download it if it can't find it. Once installed, Joystick will start MongoDB if it's defined as a database in your settings.<env>.json.
PostgreSQL Binary
Feature @joystick.js/cli
Instead of searching for a local copy of PostgreSQL, now, Joystick will check for its own canonical binary version on your computer and download it if it can't find it. Once installed, Joystick will start PostgreSQL if it's defined as a database in your settings.<env>.json.
Redis Binary
Feature @joystick.js/cli
Instead of searching for a local copy of Redis, now, Joystick will check for its own canonical binary version on your computer and download it if it can't find it. Once installed, Joystick will start Redis if it's defined as a database in your settings.<env>.json.
Custom Copy Paths
Feature @joystick.js/cli
Allows a developer to specify an array of non-standard project paths that Joystick should copy when running the `joystick build` command (either standalone or as part of `joystick push`).
Build Environment Support
Feature @joystick.js/cli
Ensures that a build via joystick build (either standalone or via joystick push) respects the -e environment flag or its default (production). In production, guarantees that built files are minified for performance.
Dynamic Component
Feature @joystick.js/ui
Adds support for rendering components dynamically, on-demand. Enables SPA-style navigation on an as-needed basis.
Joystick Push
Feature @joystick.js/cli
Adds support for public release of Push.
Cache Translations for Faster SSR
Refactor @joystick.js/node
Caches the app's translation files in memory so SSR doesn't have to read translation files from disk for each render.
Cache index.html for Faster SSR
Refactor @joystick.js/node
Caches the app's index.html file in memory so SSR doesn't have to read components from disk for each render.
Cache Components for Faster SSR
Refactor @joystick.js/node
Caches the component tree in memory so SSR doesn't have to read components from disk for each render.
Cache Email Templates for Faster SSR
Refactor @joystick.js/node
Caches the app's email templates in memory so SSR doesn't have to read email files from disk for each render.
Improve Session Handling
Refactor @joystick.js/node
Remove unnecessary database usage and access for session creation and validation.
Improve Built-In Middleware Usage
Refactor @joystick.js/node
Splits up Joystick's built-in middleware to be context-dependent (UI vs. API routes) to avoid unnecessary middleware calls in the request chain.
Dependency Path Casing
Refactor @joystick.js/cli
Adds support for testing paths in the dev server dependency mapper against their lowercase version (as well as original version). Ensures that file name changes don\'t break rebuilds for existing, uncorrected imports.
Global State
Bug @joystick.js/ui
Fixes issue where global_state was being initialized multiple times, causing the global_state value to be siloed.
Window Settings
Bug @joystick.js/ui
Adds a missing reference to window.__joystick_settings__ on the default export of @joystick.js/ui.
Data Request URL
Bug @joystick.js/node
Adds a missing reference for url on req object passed to data (via the __joystick_request__ object set on window during SSR in @joystick.js/node).
CSS Rerender
Bug @joystick.js/ui
CSS was failing to be captured on re-render due to the CSS tree job being re-run on each render. This led to a race condition where the CSS is captured initially, but doesn't appear in the final result.
Fix Uploader MIME Types
Bug @joystick.js/node
When validating uploads, the format_uploads() function was only passing the existing mimeTypes field from the uploader options and ignored the new mime_types option.
SVG Rerender
Bug @joystick.js/ui
Fixes issue where SVGs render fine on mount, but disappear on re-render. This was due to the incorrect namespace being used for elements when converting them from virtual DOM to DOM nodes. Leverages document.createElementNS() over document.createElement() for SVGs and their children.
Translation Paths
Bug @joystick.js/node
Fixes double-slash in i18n translations path. Fix uses correct path for i18n translation files in get_translations.js.
Rerender State
Bug @joystick.js/ui
When a state change or data refetch occurs, on re-render, the existing state of child components is not preserved (e.g., I have a modal open and it doesn\'t stay open after re-render).
Remove Bad Test Dependency
Bug @joystick.js/ui
An unnecessary dependency (joystick-ui-test) snuck in to the last release and was breaking test runs. Removed the dependency in favor of referencing the joystick.mount() function it was providing with global.joystick.mount().
Build Windows
Bug @joystick.js/cli
Fixes bug where non-existent rm -rf command throws an error on Windows when building app. Conditionally replaces rm -rf with rmdir /s /q if the process.platform is win32.
Check Fields in Validation
Bug @joystick.js/ui
When running input validation, ensure the input exists in the DOM. This avoids errors where a re-render hides an input that did exist but no longer does.
RC2 Skipped

Unfortunately there was an issue publishing the 1.0.0-rc.2 release. Due to NPM publishing rules, we can't overwrite this so we've skipped to 1.0.0-rc.3 instead.