Skip to content

Releases: quasarframework/quasar

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

06 Aug 09:56
Compare
Choose a tag to compare
Pre-release

Changes

  • feat(app-webpack): BREAKING - drop support for legacy "electron-packager" (only support the newer @electron/packager)
  • fix(app-webpack): add stricter-tsconfig-preset.json to package.json > files

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.17

06 Aug 09:57
Compare
Choose a tag to compare
Pre-release

Changes

  • feat(app-vite): BREAKING - drop support for legacy "electron-packager" (only support the newer @electron/packager)
  • fix(app-vite): add stricter-tsconfig-preset.json to package.json > files

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.7

05 Aug 11:14
Compare
Choose a tag to compare

Fixes

  • fix(ui): QField/QInput/QSelect/etc clear icon aria-hidden management #17407
  • chore(QBtn): remove useless re-define of aria-hidden on icons (QIcon already has it)

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-v3.13.3

05 Aug 11:12
Compare
Choose a tag to compare

Changes

  • feat(app-webpack): 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-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: