<?xml version='1.0' encoding='utf-8'?>
<rss version="2.0">
  <channel>
    <title>Carbone Changelog — v2</title>
    <link>https://carbone.io/changelog.html</link>
    <description>Carbone v2.x releases</description>
    <lastBuildDate>Wed, 15 Apr 2026 10:17:25 +0000</lastBuildDate>
    <ttl>1440</ttl>
    <item>
      <title>v2.1.1</title>
      <link>https://carbone.io/changelog.html#v2-1-1</link>
      <pubDate>Wed, 23 Sep 2020 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v2.1.1</guid>
      <description>• Fixes arrayJoin(
):convCRLF . Now it works in carbone v2.x.x like in v1.x.x.&lt;br/&gt;• Removes 'zipfile' dev dependency. Tests use unzip from the system instead.&lt;br/&gt;• 8.1.3 mocha upgrade&lt;br/&gt;• [EE] Fixes crash when images field in data contain an object instead of a string</description>
    </item>
    <item>
      <title>v2.1.0</title>
      <link>https://carbone.io/changelog.html#v2-1-0</link>
      <pubDate>Tue, 01 Sep 2020 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v2.1.0</guid>
      <description>• Performance: huge gain from x11 to x30 for the compression of reports.
Now, some huge reports takes 0.1s to render instead of 4s.
It reduces also the blocking of Node's event loop.&lt;br/&gt;• New rendering option hardRefresh : The content of the report is refreshed at the end of the Carbone process. For example, it can be used to refresh the table of content or update calculations. The option convertTo has to be defined.&lt;br/&gt;• [EE] fix dynamic images in DOCX files that were making the report invalid in Word&lt;br/&gt;• [EE] fix dynamic images in header &amp; footers of docx templates&lt;br/&gt;• [EE] Injecting dynamic colors received a lot of improvements and stability: ODT, DOCX, and ODS reports are fully supported. XLSX can't be supported by design for now. Text and background colors in footers and headers are supported for ODT and DOCX templates. Better error management, it throws errors when: bindColor is not correctly formatted 2 bindColor tags try to edit the same color the background color format on DOCX documents is different than "color" the color format does not exist 2 different lists of colors are used to edit the same element</description>
    </item>
    <item>
      <title>v2.0.2</title>
      <link>https://carbone.io/changelog.html#v2-0-2</link>
      <pubDate>Mon, 10 Aug 2020 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v2.0.2</guid>
      <description>• Fix locales de-ch and pt-br&lt;br/&gt;• Fix direct access in a nested array {d.array[i].nestedArray[i=0].id}&lt;br/&gt;• [EE] : fix server exit on "Ctrl+C"</description>
    </item>
    <item>
      <title>v2.0.1</title>
      <link>https://carbone.io/changelog.html#v2-0-1</link>
      <pubDate>Wed, 08 Jul 2020 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v2.0.1</guid>
      <description>• Add regression tests&lt;br/&gt;• [EE] : fix crash when an array was printed directly without formatters {d.myArray}</description>
    </item>
    <item>
      <title>v2.0.0</title>
      <link>https://carbone.io/changelog.html#v2-0-0</link>
      <pubDate>Sun, 28 Jun 2020 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v2.0.0</guid>
      <description>• ð Accepts dynamic variables in all formatters! Carbone passes data to formatters if parameters start with a dot . and is not surrounded by quotes. Here is an example: Data {
      id : 10 ,
      qtyA : 20 ,
      subObject : {
        qtyB : 5 ,
        qtyC : 3 },
      subArray : [{
        id : 1000 ,
        qtyE : 3 }]
    } Template =&gt; Result do mathematical operations: {d.subObject.qtyB:add(.qtyC)} =&gt; 8 (5+3) read parent attributes if you use two dots, grandparents if you use three dots, etc... {d.subObject.qtyB:add(.qtyC):add(..qtyA)} =&gt; 28  (5+3+20) read parent objects and their children attributes (no limit in depth) {d.subArray[i].qtyE:add(..subObject.qtyC) =&gt; 6 (3+3) It returns an error if the attribute does not exist {d.subArray[i].qtyE:add(..badAttr) =&gt; [[C_ERROR]] badAttr not defined You cannot access arrays {d.subObject.qtyB:add(..subArray[0].qtyE)} =&gt; [[C_ERROR]] subArray[0] not defined&lt;br/&gt;• â¡ï¸ New conditional formatters, and a new IF-block system to hide/show a part of the document ifEQ  (value) : Matches values that are equal to a specified value, it replaces ifEqual ifNE  (value) : Matches all values that are not equal to a specified value ifGT  (value) : Matches values that are greater than a specified value. ifGTE (value) : Matches values that are greater than or equal to a specified value. ifLT  (value) : Matches values that are less than a specified value. ifLTE (value) : Matches values that are less than or equal to a specified value. ifIN  (value) : Matches any of the values specified in an array or string, it replaces ifContain ifNIN (value) : Matches none of the values specified in an array or string ifEM  (value) : Matches empty values, string, arrays or objects, it replaces ifEmpty ifNEM (value) : Matches not empty values, string, arrays or objects and   (value) : AND operator between two consecutive conditional formatters or    (value) : (default) OR operator between two consecutive conditional formatters hideBegin and… (read more: https://carbone.io/changelog.html#v2-0-0)</description>
    </item>
  </channel>
</rss>