Skip to content

Releases: quasarframework/quasar

@quasar/app-vite-v1.9.4

05 Aug 11:12
Compare
Choose a tag to compare

Changes

  • feat(app-vite): use newest ssl-skip package, depending on the Capacitor version #16808

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

@quasar/app-webpack-v4.0.0-beta.17

05 Aug 11:15
Compare
Choose a tag to compare
Pre-release

Changes

  • feat(app-webpack): upgrade tsconfig preset (#17301)
  • feat(app-webpack): use newest ssl-skip package, depending on the Capacitor version #16808
  • feat(app-webpack): make SSR "create" function async #17235
  • feat(app-webpack): make SSR "serveStaticContent" function async #17235
  • feat(app-webpack): SSR -> remove ssrHandler() -> no longer needed, instead: directly use "app"
  • feat(app-webpack): SSR -> improve production script named exports (handler, listenResult, app)
  • feat(app-webpack): SSR -> greatly enhance server types (easier integration with some other webserver than the default express) #17235

SSR breaking change details

  • /src-ssr/server.js > listen
- export const listen = ssrListen(async ({ app, port, isReady }) => {
+ // notice: no "isReady" param
+ // notice: ssrListen() param can still be async (below it isn't)
+ export const listen = ssrListen(({ app, devHttpsApp, port }) => {
-   await isReady()
-   return app.listen(port, () => {
+   const server = devHttpsApp || app
+   return server.listen(port, () => {
      if (process.env.PROD) {
        console.log('Server listening at port ' + port)
      }
    })
  })
  • /src-ssr/server.js > serveStaticContent
- /**
-  * Should return middleware that serves the indicated path
-  * with static content.
-  */
- export const serveStaticContent = ssrServeStaticContent((path, opts) => {
-   return express.static(path, {  maxAge, ...opts });
- });

+ /**
+ * Should return a function that will be used to configure the webserver
+ * to serve static content at "urlPath" from "pathToServe" folder/file.
+  *
+  * Notice resolve.urlPath(urlPath) and resolve.public(pathToServe) usages.
+  *
+  * Can be async: ssrServeStaticContent(async ({ app, resolve }) => {
+  * Can return an async function: return async ({ urlPath = '/', pathToServe = '.', opts = {} }) => {
+  */
+ export const serveStaticContent = ssrServeStaticContent(({ app, resolve }) => {
+   return ({ urlPath = '/', pathToServe = '.', opts = {} }) => {
+     const serveFn = express.static(resolve.public(pathToServe), { maxAge, ...opts });
+     app.use(resolve.urlPath(urlPath), serveFn);
+   };
+ });
  • For a serverless approach, this is how the "listen" part should look like:
export const listen = ssrListen(({ app, devHttpsApp, port }) => {
  if (process.env.DEV) {
    const server = devHttpsApp || app;
    return server.listen(port, () => {
      console.log('Server listening at port ' + port)
    })
  }
  else { // in production
    // return an object with a "handler" property
    // that the server script will named-export
    return { handler: app }
  }
})
  • For TS devs, you should also make a small change to your /src-ssr/middlewares files, like this:
+ import { Request, Response } from 'express';
// ...
- app.get(resolve.urlPath('*'), (req, res) => {
+ app.get(resolve.urlPath('*'), (req: Request, res: Response) => {

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

@quasar/app-vite-v2.0.0-beta.16

05 Aug 11:16
Compare
Choose a tag to compare
Pre-release

Changes

  • feat(app-vite): upgrade tsconfig preset (#17301)
  • feat(app-vite): use newest ssl-skip package, depending on the Capacitor version #16808
  • feat(app-vite): make SSR "create" function async #17235
  • feat(app-vite): make SSR "serveStaticContent" function async #17235
  • feat(app-vite): SSR -> remove ssrHandler() -> no longer needed, instead: directly use "app"
  • feat(app-vite): SSR -> improve production script named exports (handler, listenResult, app)
  • feat(app-vite): SSR -> greatly enhance server types (easier integration with some other webserver than the default express) #17235

SSR breaking change details

  • /src-ssr/server.js > listen
- export const listen = ssrListen(async ({ app, port, isReady }) => {
+ // notice: no "isReady" param
+ // notice: ssrListen() param can still be async (below it isn't)
+ export const listen = ssrListen(({ app, devHttpsApp, port }) => {
-   await isReady()
-   return app.listen(port, () => {
+   const server = devHttpsApp || app
+   return server.listen(port, () => {
      if (process.env.PROD) {
        console.log('Server listening at port ' + port)
      }
    })
  })
  • /src-ssr/server.js > serveStaticContent
- /**
-  * Should return middleware that serves the indicated path
-  * with static content.
-  */
- export const serveStaticContent = ssrServeStaticContent((path, opts) => {
-   return express.static(path, {  maxAge, ...opts });
- });

+ /**
+ * Should return a function that will be used to configure the webserver
+ * to serve static content at "urlPath" from "pathToServe" folder/file.
+  *
+  * Notice resolve.urlPath(urlPath) and resolve.public(pathToServe) usages.
+  *
+  * Can be async: ssrServeStaticContent(async ({ app, resolve }) => {
+  * Can return an async function: return async ({ urlPath = '/', pathToServe = '.', opts = {} }) => {
+  */
+ export const serveStaticContent = ssrServeStaticContent(({ app, resolve }) => {
+   return ({ urlPath = '/', pathToServe = '.', opts = {} }) => {
+     const serveFn = express.static(resolve.public(pathToServe), { maxAge, ...opts });
+     app.use(resolve.urlPath(urlPath), serveFn);
+   };
+ });
  • For a serverless approach, this is how the "listen" part should look like:
export const listen = ssrListen(({ app, devHttpsApp, port }) => {
  if (process.env.DEV) {
    const server = devHttpsApp || app;
    return server.listen(port, () => {
      console.log('Server listening at port ' + port)
    })
  }
  else { // in production
    // return an object with a "handler" property
    // that the server script will named-export
    return { handler: app }
  }
})
  • For TS devs, you should also make a small change to your /src-ssr/middlewares files, like this:
+ import { Request, Response } from 'express';
// ...
- app.get(resolve.urlPath('*'), (req, res) => {
+ app.get(resolve.urlPath('*'), (req: Request, res: Response) => {

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

quasar-v2.16.6

10 Jul 10:25
Compare
Choose a tag to compare

Fixes

  • fix(ui): correctly apply iOS safe area padding when using q-tabs (#17055)
  • fix(ui): avoid Sass warning by upgrading to latest specs in QSkeleton (no declaration after nested rule)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

@quasar/app-webpack-v4.0.0-beta.16

10 Jul 10:26
Compare
Choose a tag to compare
Pre-release

Changes

  • feat(app-webpack): upgrade deps (including esbuild)
  • fix(app-webpack): async support in configure wrapper (fix: #17268) (#17291)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

@quasar/app-vite-v2.0.0-beta.15

10 Jul 10:26
Compare
Choose a tag to compare
Pre-release

Changes

  • feat(app-vite): upgrade deps (including esbuild)
  • fix(app-vite): async support in configure wrapper (fix: #17268) (#17291)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

@quasar/extras-v1.16.12

07 Jul 14:28
Compare
Choose a tag to compare

Changes

  • feat(extras): update Fontawesome => v6.5.2
  • feat(extras): upgrade Ionicons => v7.4.0
  • feat(extras): Update Google fonts and icons to the latest

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

quasar-v2.16.5

03 Jul 13:23
Compare
Choose a tag to compare

Fixes

  • fix(util): typescript declaration for humanStorageSize (#17240)
  • fix(ui): prevent @typescript-eslint/unbound-method error on newer utilities types (#17251)
  • fix(ui): use correct list type for QSliderSlots (fix: #17060) (#17061)
  • fix(ui): fix useId composable types (fix: #17284)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

quasar-v2.16.4

14 May 09:24
Compare
Choose a tag to compare

Changes

  • fix(ui): support for legacy build systems that don't know about "exports" field #17190

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

quasar-v2.16.3

13 May 08:33
Compare
Choose a tag to compare

Changes

  • fix(QDate): transitions not working correctly #17183

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following: