Skip to content

Releases: assetgraph/assetgraph

Cyclic graph warning when renaming

02 Aug 20:43
Compare
Choose a tag to compare

Cyclic relations will now emit a warning with the cycles while running the moveAssetsInOrder transform. Previously it would throw on cyclic relations

v5.11.0

24 Jul 18:30
Compare
Choose a tag to compare

v5.11.0 (2019-07-24)

Pull requests

Commits to master

HTTP Referer header

22 Sep 11:02
Compare
Choose a tag to compare

Assetgraph will now include an HTTP Referer header when populating HTTP --> HTTP relations

Subsetting improvements

09 Dec 18:02
Compare
Choose a tag to compare

Minor changes

  • Replace existing font preload hints with hints to subset
  • Warn about missing chars in the original font that was subset locally
  • Support text-transform in text analysis
  • Added Firefox default stylesheet styles

Patches

  • Don't break when pre-existing preload hints point at a font

Local webfont subsetting

23 Nov 18:33
Compare
Choose a tag to compare

This version has massive improvements of the webfont subsetting.

Major changes:

Yeah, it's a minor release and this is going against semver, but you weren't using this feature anyway and we have a new major in progress for a long time.

  • transforms/subsetGoogleFonts has been renamed to transforms/subsetFonts because of the extended ability to handle local fonts as well.

Features:

  • Ability to subset local fonts using python fonttools
  • Font subsetting now reates .woff2 and .woff files as fallback, where previously you had to chose one format
  • Massively improved text extraction algorithm, guaranteeing higher quality data for which glyphs need to go into what font subset

Google font subsetting

04 Sep 22:06
Compare
Choose a tag to compare

This release adds a new feature for subsetting google fonts on sites that use <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=..."> directly in their Html without any other optimizations.

The subsetGoogleFonts transform will find what fonts are included from google, use these to inform a getComputedStyle-like traversal of all text-nodes, pseudo-elements and other visible text instances, resulting in a full mapping of what font styles apply to which characters on all pages in the graph.

Using this knowledge the transform will request the relevant font subsets from google and insert a new @font-face-declaring CSS file in the Html-pages, pointing at the now local font subsets.

In order to ensure a sane fallback in case dynamic content appears later on the page, or if the getComputedStyle extraction has flaws, the original google font CSS is kept on the page, but loaded at the end of the page with the Filament group loadCSS approach. The local font subset will get a new font name, which is prepended to all uses of the original font. This ensures an automatic load of the original google font files if a glyph is missing in the subset of the font.

All font subsets are resource hinted for the browser with <link rel="preload"> in order to maximize time to first meaningful paint (including web fonts!).
The original google font CSS is hinted with <link rel="prefetch"> and a connection to https://fonts.gstatic.com, where the original fonts are located, is set up with <link rel="preconnect">

This is a comparison of a blog page with raw google fonts usage versus the same page after subsetGoogleFonts has run on the page: https://www.webpagetest.org/video/compare.php?tests=170823_TC_055b0c5ad91e7cbf995d5c2a2129363e%2C170823_FQ_d10b134614053bfec27ceeecc32617da&thumbSize=200&ival=500&end=visual

Tail end script bundles

11 Apr 08:36
Compare
Choose a tag to compare

Features

  • A bundle referenced from several script tags on the same page will now be inserted at the position of the last referencing script tag rather than the first. Fixes errors where a script at the end of the page references dom that is in between it and a previous script tag

v3.0.0

11 Apr 08:43
Compare
Choose a tag to compare
  • Many bug fixes
  • Redid the require.js support so that the require.js optimizer is used and require.js plugins are supported
  • Webpack support
  • Improved systemjs-builder support, including conditionals
  • Removed built in opinionated i18n support (parts of it moved to assetgraph-i18n)
  • Changed the internal representation of relations, removed support for assetGraph.(add|remove)Relation in favor of asset.(add|remove)Relation
  • GETSTATICURL('...') changed to '...'.toString('url'), removed wildcard support. Use the wildcard support of your script loader plugins instead.
  • Dropped support for transpilation (sass, coffeescript, less, stylus, dart). Use webpack or system.js instead.
  • Add crossorigin getter to relations
  • Removed support for INCLUDE
  • Removed specific support for (old) angular.js templates
  • Update many dependencies, most notably jsdom
  • Drop support for node.js < 4
  • Web worker and service worker support (including support for building system.js endpoints inside the workers)
  • Disallow relative hrefs from HTML fragments and get rid of the stupid fixBaseAssetsOfUnresolvedOutgoingRelationsFromHtmlFragments and assumeThatAllHtmlFragmentAssetsWithoutIncomingRelationsAreNotTemplates transforms.
  • Fix the very complex situation with base assets. This will remove a lot of complexity and means that we cannot support behavior: url(relative/path/to/foo.htc), AlphaImageLoader(src='relative/path/to/foo.bar')
  • webmanifest asset and relation modeling
  • Modelling of resource hint relations
  • Avoid relative links in source maps. Fixes resolution when the application uses pushState
  • Modelling of open graph relations
  • Canonical root setting, which allows resolving canonical urls to local files