DuvetRelease Notes


  • New: SleepSafe integration! Injected scripts and stylesheets automatically update the Content-Security-Policy response header.
  • New: HtmlInjector.injectFantomMethod() now loads the Fantom TimeZone database, see http://fantom.org/forum/topic/2548.
  • Chg: Made Text processing more efficient (text is no longer encoded twice).
  • Chg: Updated RequireJS from v2.1.14 to v2.3.5.


  • Chg: HtmlInjector.injectFantomMethod() defaults TimeZone to a sensible default (i.e. UTC and not New_York) that doesn't cause errors. See JS: TimeZone not found for details.
  • Chg: Methods args for HtmlInjector.injectFantomMethod() may now be any Fantom object, and not just JSON objs.
  • Chg: LinkTagBuilder.fromLocalUrl() now accepts local URLs for all registered ClientAssetProducers such as BedSheet's PodHandler.
  • Chg: Added a domkit example to the pod doc.
  • Chg: Updated afConcurrent to v1.0.20.
  • Bug: HtmlInjector.injectFantomMethod() could not call static methods with arguments.


  • Bug: Scripts could be inserted in the wrong place if the HTML legitimately contained the string </body>.


  • Bug: The same module script could be injected multiple times.


  • Chg: Updated to work with IoC v3 and BedSheet 1.5. (Breaking change.)
  • Chg: Deleted deprecated methods. (Breaking change.)


  • Bug: LinkTagBuilder and ScriptTagBuilder did not enode() their URLs.
  • Bug: Smart script insertion didn't work with plain <script> tags.



  • New: Smart script insertion allows you to write your own require scripts in the static HTML.
  • Chg: Added DuvetMiddleware to BedSheet's StackFrameFilter because it's boring!
  • Chg: Revamped portions of the documentation.


  • Bug: Duvet no longers Errs when resolving pod JS files when run as a script. (Updated mainly for FormBean demo.)


  • New: RequireJS modules are logged at startup.
  • New: RequireJS modules are printed on the BedSheet 404 and Error pages.
  • Chg: Recompiled to work with BedSheet 1.4.0.



  • New: RequireJsConfigTweaks service allows last minute tweaks to the RequireJS config.
  • Bug: Could not inject Fantom JS code from other pods if the main web app itself did not have JS code.


  • New: Support for executing Fantom code on web pages! See HtmlInjector.injectFantomMethod().


  • Chg: Updated to IoC 1.7.2.
  • Bug: Script async attribute incorrectly had the value of true (should have been async).


  • New: Added MetaTagBuilder.withProperty() for adding Open Graph meta.


  • New: RequireJS script has cache control / expires headers that expire in 1 year.
  • Bug: Problems with contributing user modules.


  • New: User defined modules in `/modules/` automatically have their asset caching strategy URLs added the RequireJS paths config.


  • Chg: Renamed LinkTagBuilder.fromClientUrl() -> fromLocalUrl() to match BedSheet FileHandler.
  • Chg: Renamed ScriptTagBuilder.fromClientUrl() -> fromLocalUrl() to match BedSheet FileHandler.


  • New: Added DuvetMiddleware to rollback / remove any HTML injections if an Err occurs. This prevents old code being injected into Err pages.
  • Bug: Could not inject multiple scripts without a src atrribute.


  • New: Preview release.