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.