Releases: schultek/jaspr
v0.9.1
CLI Update
-
Improved the stability and logging of the cli, mainly for
jaspr serve
. -
Added three commands:
clean
command to clean your project directoryupdate
command to automatically update the cli to the latest versiondoctor
command to print information about the environment and project
-
Added lightweight anonymous usage tracking to the cli. We use mixpanel.com and
only process anonymized data. The usage statistics are made public and can be viewed here (TODO: Link will be added in next release).To opt out of usage tracking, use
jaspr --disable-analytics
.
v0.9.0
Static Site Generation Release 🎉
This release adds support for static site generation in Jaspr.
The docs are updated to introduce this feature here and here
Changelog
jaspr @ 0.9.0
-
Added Static Site Generation support.
With the new
jaspr generate
command you can generate static pages from your jaspr app. This requires a normal
server-rendered jaspr app and will output separate.html
pages for each of your routes.To specify which routes your application should handle, either use
jaspr_router
or call
ServerApp.requestRouteGeneration('/my/route');
for each target route.
jaspr_router @ 0.3.0
-
Added Static Site Generation support. Pages are automatically generated for each route.
-
Fixed bug where
Router.of(context).matchList.title
always returned null.
v0.8.0
New package
-
Added
jaspr_tailwind
package for integrating tailwind with jaspr. -
Documented setup and usage at https://docs.page/schultek/jaspr/eco/tailwind
Changelog
-
Added
StyleRule.media({MediaRuleQuery query, List<StyleRule> styles})
to support@media
css statements. -
Added support for Tailwind using the
jaspr_tailwind
integration.
Simply rundart pub add jaspr_tailwind --dev
and start using tailwind classes in your jaspr components.
For a full setup and usage guide see Tailwind Integration Docs.
v0.7.0
-
Improved cli experience with better logging and progress indicators.
-
Removed
--ssr
and--flutter
cli options. -
Added support
jaspr
config section inpubspec.yaml
.It is now possible to define certain configuration options for the jaspr cli
directly inside thepubspec.yaml
file under thejaspr
section.
Initially supported options are:jaspr: uses-ssr: true # or false; Toggles server-side-rendering on or off. uses-flutter: true # or false; Whether the project uses flutter element embedding.
v0.6.2
New package
-
Added
jaspr_flutter_embed
package for integrated flutter element embedding. -
Documented flutter embedding at https://docs.page/schultek/jaspr/eco/flutter_embedding
Changelog
-
Added integrated support for seamless flutter element embedding.
Refer to Flutter Embedding Docs on how to setup and use this. -
Fixed bug with
jaspr create
. -
Added prompts when running
jaspr create
without any arguments.
This way the developer is guided through the creation process more dynamically.
v0.6.0
-
Added support for flutter web plugins.
Jaspr apps can now depend-on and import flutter plugins that work on web. This is achieved by
using a modified compiler toolchain:jaspr_web_compilers
.To enable support for flutter plugins simply exchange your
build_web_compilers
dependency forjaspr_web_compilers
:dev_dependencies: - build_web_compilers: ^4.0.4 + jaspr_web_compilers: ^4.0.4
For an example see
experiments/flutter_plugin_interop
. -
Improved flutter element embedding.
Flutter apps can now be directly embedded from your jaspr codebase and integrated into
the existing jaspr component tree.This removes the need for any kind of interop between apps as they can directly communicate
through the usual primitives of passing properties and callbacks.For an example see
experiments/flutter_embedding_v2
. -
jaspr build
now outputs to/build/jaspr
instead of/build
.
v0.5.0
jaspr 0.5.0
-
BREAKING Added
@client
as replacement for both@app
and@island
.Components annotated with
@client
act as entry points for the client application and are
automatically detected, compiled and shipped to the client when using theDocument()
component.This combines the behaviour of the now removed
@app
and@island
annotations, as well as the
removedDocument.app()
andDocument.islands()
constructors. Use the defaultDocument()
constructor instead. -
BREAKING Removed
DeferRenderMixin
as async first builds are no longer permitted on clients. -
Added support for Flutter element embedding.
Flutter apps can now easily be embedded within jaspr sites. The cli supports the
--flutter
argument for both
theserve
andbuild
commands to specify the entrypoint of the flutter application.The complete setup is demonstrated in the flutter_embedding
example. -
Fixed handling of initial uri.
-
Added
SynchronousFuture
.
jaspr_router 0.2.0
-
BREAKING Complete overhaul of the router package.
The router implementation is mainly adapted from the go_router package for Flutter.
Routing works by providing a set of routes to the router component. You can choose between a normal
Route
and aShellRoute
. AShellRoute
acts as a layout wrapper around the child routes.Each
Route
takes a path which can contain parameters like'/users/:userId'
.Both
Route
andShellRoute
have a.lazy
variant used for lazy-loading parts of the application.Router(routes: [ // simple routes Route(path: '/', builder: (context, state) => HomePage()), Route(path: '/about', builder: (context, state) => AboutPage()), // route with a path parameter Route(path: '/users/:userId', builder: (context, state) => UserPage(id: state.pathParameters['userId'])), // nested routes Route(path: '/base', builder: (context, state) => BasePage(), routes: [ // full location will be '/base/details' Route(path: 'details', builder: (context, state) => DetailsPage()), ]), // shell route ShellRoute( builder: (context, state, child) => CustomLayout(child: child), routes: [ Route(path: '/dashboard', builder: (context, state) => DashboardPage()), ] ), // lazy loaded route // this assumes a deferred import like "import 'posts.dart' deferred as posts;" Route.lazy(path: '/posts', builder: (context, state) => posts.Posts(), load: posts.loadLibrary), // lazy loaded shell route ShellRoute.lazy( builder: (context, state, child) => CustomLayout(child: child), load: () => someAsyncTask(), routes: [ Route(path: '/data', builder: (context, state) => DataPage()), ] ) ]);
While the router docs are work in progress, you can refer to the go_router docs
for some references (don't expect everything to work exactly the same, but the core concepts are similar).
v0.4.0
0.4.0
-
BREAKING Bindings are no longer singletons.
ComponentsBinding.instance
,SchedulerBinding.instance
etc. were removed.- You can access the current binding through
BuildContext
scontext.binding
property.
-
BREAKING Removed
ComponentTester.setUp()
,BrowserTester.setUp()
andServerTester.setUp()
.- Use
testComponents()
,testBrowser()
andtestServer()
instead.
- Use
-
Requires Dart 3.0 or later.
v0.3.0
0.3.0
BREAKING The cli got an overhaul and is now a separate package: jaspr_cli
.
To migrate run:
dart pub global deactivate jaspr
dart pub global activate jaspr_cli
The usage stays the same with jaspr create
, jaspr serve
and jaspr build
.
v0.2.0
Jaspr v0.2.0 comes with a major rewrite of the internal framework and a lot of new features. While there is still a lot to do, it takes a large step in the direction of a stable release.
Check out the new documentation website: https://docs.page/schultek/jaspr
BREAKING: This is the first major release after the initial publish and contains several breaking changes.
- Update to Dart 2.17
- Rewrite of the rendering system that comes with a lot of improvements in stability and performance.
- Added support for custom backend & server setup.
- Added support for multiple apps on the client as well as island components.
- Added html utility components for common elements.
- Added
Styles
class for writing typed css in dart. - Various other improvements throughout the framework.