TemplateFx Changelog

What's new in TemplateFx 2.67

Jul 25, 2018
  • Added support for markers using #$ syntax within the Template pane on right click - see section 4.6 in the User Guide.
  • Added support to the IPCalc to perform multi dns lookups based on regex style static characters classes and groups.
  • Added support to the IPCalc aggregate function to also calculate the supernet with subnet fill in.
  • Fixed a bug which caused TemplateFx to hang on generation if a script syntax error was detected within a Snippet.
  • Updated the JavaScript "aggregate" function to use a space between IPv4 and IPv6 subnets instead of "-".
  • Updated the IPCalc to filter out any non-ASCII 7-bit characters from the input box.
  • Renamed "Copy List of IPs" to "Copy Last List of IPs" in IPCalc.
  • Renamed "Copy Reverse List of IPs" to "Copy Last Reverse List of IPs" in IPCalc.
  • Increased the default height of the window from 640 to 700 pixels to accommodate the updated IPCalc usage screen.

New in TemplateFx 2.59 Build 17050 (Feb 20, 2017)

  • Enabled the Java SecurityManager to protect users against malicious JavaScript blocks.
  • Major changes to start to modulise the codebase - lots and lots of changes to code paths.
  • Fixed a bug that stopped people being able to paste data from Excel into TemplateFx on MacOS.
  • Added the ability to comment out lines within ~FILTER snippets using "#".
  • Added syntax highlighting to the snippets pane for commented out lines using "#".
  • ~FILTER snippet is automatically selected on load and import if it exists.
  • Updated "templatefx.first()" and "templatefx.last()" to work with first and last rows.
  • Updated JavaScript functions so they don't use Reflection.
  • Changed command line argument "/DoI" to "-DoI".

New in TemplateFx 2.57 (Jan 3, 2017)

  • * MAY BREAK THINGS WARNING: I have had a spring clean to remove complicated/limited use stuff to make a few things simpler.
  • Removed "Merge Rows" as it massively increases complexity for limited use cases - please email me if you actually use it.
  • Replaced "templatefx.fields[]" with "templatefx.field()" - a much simpler function now "Merge Rows" is removed.
  • Added support for "templatefx.first()" and "templatefx.last()" - neat functions which are explained in the docs.
  • Added support for selecting multiple "Group By" fields and changed the UI to support this.
  • Renamed snippet "_START_" to "~HEADER" and "_END_" to "~FOOTER".
  • Re-Added support for JavaScript variable "globals[]" to store persistent data between rows.
  • Removed "Optional Criteria" and replaced it with an advanced "~FILTER" special Snippet which also supports sorting.
  • Added support for JavaScript variable "templatefx.data[][]" to access the raw data.
  • When importing an exported DataTemplate it will now always treat it as a DataTemplate.
  • Added support for a JavaScript "banner" function to output Unix style ASCII banners.
  • Updated "network" JavaScript function to return mask if required.
  • Expand Pane is now persistent across window resize events.
  • Fixed an issue when importing a DataTemplate with empty Snippets.
  • You can now load a text based exported DataTemplate on the command line and by using "Load DataTemplate".
  • Removed the "/M" command line option as it had no valid use case.
  • Renamed special Snippet "-PROMPT" to "~NOPROMPT" and included special Snippets in documentation.
  • Added support for special Snippet "~GENONLOAD" which starts output generation as soon as the DataTemplate is loaded.
  • The Windows binary will now look for a bundled JRE in "jre/" of the launch directory if it can't find one installed.
  • Cosmetic updates to the splash screen - it now includes the version and is regenerated on build.

New in TemplateFx 2.56 (Jan 3, 2017)

  • Under the hood improvements to the way Copy & Paste happens.
  • Fixed a bug with "add_output_mutation" as it wasn't working with ^ and $ regex anchors.
  • Added support for a JavaScript "curl" function to retrieve content using HTTP or HTTPS.
  • Disabled "lodash.js" by default due to Java's JavaScript performance impact on first run.
  • Console now stays in view if any errors or exceptions occur during generation.
  • Further improvements to DNS lookups in "IP Calc" to indicate if a subnet is empty.
  • Added support for performing DNS "ANY" queries in "IP Calc" for cached records.
  • Added support for "_START_" and "_END_" Snippets which are automatically added to the output.
  • Added support for "" input blocks to request input from the user on output generation.
  • If a Snippet named "-PROMPT" exists then it skips the prompt on output generation.
  • Fixed a bug which failed to perform a DNS lookup with hostnames containing a "-".

New in TemplateFx 2.55 (Nov 1, 2016)

  • Fixed a bug when trying to use two script blocks within a FOR block TO clause.
  • Improved the handling of importing files - now detects binary files and rejects them.
  • The "nslookup" function now returns multiple PTR entries (if applicable) - semi-colon separated.
  • Improved Drag and Drop to support loading of dropped ".dt" files.
  • Updated documentation to reference "templatefx.org" instead of "templatefx.netnix.org".
  • Increased the "ipsplit" and "nslookup" limit from 10 bits to 16 bits.

New in TemplateFx 2.54 (Aug 31, 2016)

  • Added support for a JavaScript "iphosts" function to return the usable hosts of a subnet.
  • Updated the JavaScript "nslookup" function to accept a list of IP addresses to resolve.
  • Massive overhaul of the encryption routines to use PBKDF2 with HMAC-SHA-512 to support AES-128 and AES-256. Details at http://netnix.org/2016/08/12/updated-encryption-routines-in-templatefx-v2-54/
  • Added a JavaScript "rot13()" function which could be used to encode (not encrypt) data to stop a casual onlooker!
  • Bumped the DataTemplate file version to 5 to support updated encryption (older versions can't read newer files, etc).
  • Fixed an issue where JDialog's didn't have the correct owner set - impacted icon in tab switcher.
  • Updated documentation as I was using Option instead of Command for shortcut keys on MacOS.
  • Added support for separate "Copy as Rich Text" option for template pane - ^C is now normal copy.
  • Improvements to the TemplateFx icon.

New in TemplateFx 2.53 (Jul 13, 2016)

  • Added better handling of out of heap memory errors when processing output.
  • Increased maximum heap size to 75% of system memory in Windows binary.
  • Added support for ^T shortcut for selecting the DataTemplate pane.
  • Added support for full width highlighting of comments using $- and #- syntax.
  • Fixed an issue with Undo/Redo operations not working correctly.
  • Fixed an issue with GROUP blocks if you used the same group name as the default.

New in TemplateFx 2.52 (Jun 7, 2016)

  • Removed sandbox security violation checking as it provided a false sense of
  • security.
  • Added support for advanced dynamic output groups using GROUP blocks.
  • Updated how syntax errors are handled - now sent to the "Console" tab for better
  • visibility.
  • Removed the command line option "/C" - the "Console" tab is now mandatory.
  • Added new preference - "Clear Console on Generation" for clearing the console
  • every time.

New in TemplateFx 2.51 (Apr 25, 2016)

  • Added support to the IP Calc for converting ranges into CIDR subnets.
  • Added support for a JavaScript "range2cidr" IP manipulation function.
  • Fixed an issue with the Mac version trying to use fonts only on Windows.

New in TemplateFx 2.50 (Mar 30, 2016)

  • MAJOR BUG: Disabled threading globally as it was causing data corruption - Java's ScriptEngine isn't thread safe.
  • Added support for a JavaScript "date" function for adding or subtracting days, weeks, months or years.
  • Added support for a JavaScript "add_output_mutation" function for changing template output post generation.
  • Removed deprecated JavaScript function "clog" in favour of "console.log".
  • New option "Cache JavaScript Libraries" to toggle cacheing of internal and external libs on first run (enabled by default).
  • Removed support for using the system DNS search list - it used an internal API which is no longer available in Java 9.
  • Added support for "Prev Network" and "Next Network" in the "IP Calc" pane.
  • Enhanced the "IP Calc" pane with respect to DNS lookups - now supports specifying name servers and a DNS search list.
  • The "nslookup" function now follows CNAME records when resolving hostnames.
  • TemplateFx now reports more status information when generating outputs.
  • Added a "Check for Updates" option on the "Help" menu.

New in TemplateFx 2.49 (Mar 14, 2016)

  • IP Calc now supports abbreviated forms of "nslookup" (e.g. "ns", "n" or "nlookup").
  • Fixed a bug where not all script exceptions were being caught.
  • IP Calc now includes an "[N]" or "[B]" flag when resolving subnets to indicate expected NETWORK and BROADCAST.
  • Added the ability to export and import all components of a DataTemplate in plain text.
  • Improvements to the IP Calc with regards to the output layout for DNS lookups.
  • Aligned the JTextArea paste events so they all call a common function and support a wait cursor.
  • Added support for JavaScript variable "templatefx.output" - check the output as it is being generated.
  • Added a banner to the Console tab when an output is generated as a marker for different messages.
  • Added support for enabling line wrap on Template and Snippets panes.
  • Fixed a bug where the correct DataFlavor wasn't being set on data from the Template pane.
  • Fixed some cosmetic sizing issues around the Snippets pane.
  • Updated selectWord() to also consider "," as a word delimiter in addition to whitespace.
  • Template pane now takes the focus if no template is detected.

New in TemplateFx 2.48 (Feb 9, 2016)

  • Added support for a JavaScript "nslookup" function.
  • Added support for large scale DNS lookups in the IP Calc.
  • IP Calc is now a background thread so it doesn't disrupt the UI.
  • Removed the default output space between rows - output is only trimmed of empty lines.
  • Console tab is now shown when generating to show messages in real time.
  • Deprecated "clog" in favour of "console.log".

New in TemplateFx 2.47 (Dec 15, 2015)

  • Speed improvements via threading - rows are now processed up to 8 in parallel.
  • Updated "ipsplit" function to limit the output to 1024 entries.
  • Updates to IP Calc for aggregating and deaggregating subnets.
  • Mask improvements to the IP helper functions.
  • Added support for "Copy List" functions on right click in the IP Calc.
  • Fixed a bug with JavaScript function "long2ip", where n > 2^32 was allowed.
  • The "Errors" pane will now tell you which row the error occurred on.
  • Fixed a bug which caused an exception when using invalid splits for IP Calc.
  • Fixed a bug with the IPv6 "ipsplit" function.
  • Fixed a bug where IPv6 addresses were being returned as IPv4 addresses.
  • Fixed a bug where errors associated with blocks were generating exceptions.
  • Progress bar improvements to be a lot smoother while generating outputs.
  • Removed support for JavaScript variable "globals[]" due to threading.
  • Slightly changed the behaviour of the "counter()" JavaScript function.
  • Added another warning about using single quotes (') in the data pane.
  • Added support for including '#' at start of line in the output by using '## '.
  • Fixed a casting issue which caused an Exception in the IP Calc.
  • Added command line option "/M" to minimise and background on start-up.
  • Updated HMAC comparison for decryption to mitigate timing attacks.

New in TemplateFx 2.46 (Sep 15, 2015)

  • Changes in this release:
  • Updated "lodash.js" to v3.10.1.
  • Added support for a "Visit Web Site" link in the Help menu.
  • Fixed an issue when the IP Calc text box wasn't getting focus.
  • Added support for "templatefx.jre_version" to return the current Java JRE version.
  • Console tab is now always displayed unless using the "/C" argument to disable it.
  • Added the ground work for a socket based REST API interface to TemplateFx.

New in TemplateFx 2.45 (Jul 21, 2015)

  • Updated "lodash.js" to v3.10.0.
  • Enhancements to the ip based JavaScript functions to add IPv6 support.
  • Included an IPv4/IPv6 Subnet Calculator into TemplateFx.
  • Implemented HTML based Copy & Cut for template text to maintain syntax highlighting.
  • JavaScript ip functions now return "null" on error as opposed to "undefined".
  • Fixed an issue where highlighted text wasn't shown to be selected on MacOS.
  • Added support to the JavaScript function "ipsplit()" to determine the aggregate.
  • Fixed a potential issue with JavaScript function "ipsplit()".

New in TemplateFx 2.44 (May 6, 2015)

  • Updated "lodash.js" to v3.8.0.
  • Added an output pane feature called "Copy Mode" which automatically highlights blocks on mouse over.
  • Added an "Expand Pane" feature on the right click menu to expand/maximise the current pane.
  • Improved the "Generate Output" dialog to disable the "OK" button and change cursor.
  • Enhanced the "ipsplit()" function to allow you to specify minimum subnets.
  • Added status bar to the bottom of the "DataTemplate" tab to indicate full path to DataTemplate.
  • Added support for DataTemplate encryption using AES-128 and 100,000 PBKDF2 iterations.
  • Bumped the DataTemplate file version to 4 to support encryption (older versions can't read newer files, etc).
  • Added a toggle for "Maximise on Start" to preferences.
  • Various wait cursor improvements.

New in TemplateFx 2.43 (Mar 31, 2015)

  • Updated "lodash.js" to v3.6.0.
  • The "templatefx.fields" array now accepts keys using either all uppercase or all lowercase.
  • Fixed a bug with "templatefx.fields" where it was returning the last key - fixed with an IIFE.
  • Added support for JavaScript "ipsplit()" function to split subnets into smaller ones.
  • Added support for JavaScript "smask()" function to return the subnet masks.
  • Updated "ip2long()" and "ip()" functions to ignore CIDR masks if passed.

New in TemplateFx 2.42 (Jan 5, 2015)

  • Added support for globally including, enabling and disabling JavaScript libraries.
  • Integrated Lo-Dash 2.4.1 into TemplateFx for use in templates as an internal JavaScript library.
  • Updated JavaScript function "passwd()" to use Java's cryptographically strong "SecureRandom" class.
  • Renamed "Options" to "Preferences" in the "File" menu.

New in TemplateFx 2.41 (Nov 25, 2014)

  • Greatly improved the usability of "templatefx.fields" in the context of "Merge Rows".
  • Added support for JavaScript variable "globals[]" to store persistent data between rows.
  • Fixed a bug where the "Merge Rows" checkbox was staying selected after selecting "New"
  • Added support for snippet parameters which allows you to pass through a literal string to a snippet.
  • Fixed an "IndexOutOfBoundsException" when dealing with snippets and includes at the end of the template.
  • Fixed a bug where it wasn't detecting a snippet was in use when trying to delete.
  • The "Errors" pane isn't shown unless there is a specific error as it was misleading.
  • Bookmarks which are based on network UNCs have a different icon.
  • Added bookmark tooltips which now show the URI of the file.
  • Added an error message about nested script blocks.

New in TemplateFx 2.40 (Oct 3, 2014)

  • Embedded the TemplateFx icon into the help file to fix an issue with packaging.
  • Fixed an issue where it would continue to process the template after hitting "cancel()".
  • Updated the MacOS App Bundle using AppBundler (https://bitbucket.org/infinitekind/appbundler).
  • Signed the MacOS App Bundle with my Apple Developer ID so it works on 10.9.5 and beyond.
  • Compiled the codebase with JDK 1.7 (as 1.6 is unsupported) - changed minimum requirements to Java 1.7.

New in TemplateFx 2.39 (Sep 18, 2014)

  • Added support for "templatefx.fields", an associative array variable as an alternative to "".
  • Major performance improvements in parsing and generating templates.
  • Added a warning about using double quotes (") or the escape character (\) in the data pane.
  • Minor bug fix to the "ip()" function for validation of IPv6 addresses.
  • Re-instated the right click JPopupMenu on the "Template Fields" pane.
  • Introduced an "Edit" menu which mimics the JPopupMenu on right click.
  • Added some additional JMenuItem graphical icons for common items.
  • Included the name of the text area that Find is operating on in the Find dialogue.
  • Set maximum width of all JOptionPane confirmation/warning and error messages.
  • Updated titles of JOptionPane dialogues to be consistent.
  • Exterminated 30 potential bugs/bad practices identified by FindBugs v3.0.0.
  • Improvements to the help within the "Grouping and Merging" section.
  • The help file icon is now extracted locally instead of relying on Internet access.
  • Added "Generated at xx in xx seconds" banner to Output panes.

New in TemplateFx 2.38 (Aug 14, 2014)

  • Added support for "Merge Rows" where rows with the same Group By value are merged together using a delimiter.
  • Bumped the DataTemplate file version to 3 to support Merge Rows (older versions can't read newer files, etc).
  • Added support for "templatefx.delimiter" and "templatefx.mrows" to support Merge Rows.
  • Added support for "[x]" shortcut syntax to access individual merged rows.
  • Fixed a bug where an error was thrown if it detects an empty IF block.
  • Group dropdown in the Output pane is now order agnostic - ordering is controlled by the order of the data.
  • Added support for optional STEP keyword in FOR loops.
  • Added a warning message if invalid syntax is used in IF or FOR constructs.
  • Fixed a bug which meant the "ip()" function wasn't able to output using ipv6format 2.
  • Fixed a bug where GUI updates from a SwingWorker thread weren't happening on the EDT thread.
  • Deprecated FOREACH in favour of FOR, although both will continue to work for the foreseeable future.
  • Added support for the "cancel()" JavaScript function to allow template processing to be cancelled.
  • After the output has been generated all white space is now stripped from the end of lines.
  • Added an error message if an exception is generated during generating outputs.
  • Added support for "templatefx.version" and "templatefx.build" to display the current version/build string.
  • Fixed a bug where "templatefx.rows" and "templatefx.row" weren't taking into consideration excluded rows.
  • Fixed an issue where the window icon was being scaled to 16x16 and was blurred in task manager.
  • Combined the output buttons into a single Save button which provides a popup menu in the output pane.
  • Added support for combining all the outputs into a single text file.
  • Fixed a bug where not all rows were being checked for exclusion and were being included.
  • Set focus to main template window on load bookmark.
  • Changed some WARNING messages to ERROR messages.

New in TemplateFx 2.37 (Jun 4, 2014)

  • Added initial support for IPv6 to the "ip()" function.
  • Added support for intelligent Redo and Undo buffers for Snippets.
  • Remembers caret position when switching between Snippets.
  • Fixed a Find bug when matching zero-width results using regular expressions.

New in TemplateFx 2.36 (May 21, 2014)

  • Removed the blue background on the About and Splash screens.
  • Added support for creating bookmarks for frequently used DataTemplates.
  • Comments are now stripped from templates before they are trimmed to ensure no whitespace at start or end.
  • Fixed a bug where the "File -> Exit" menu action wasn't calling System.exit().

New in TemplateFx 2.35 (Apr 18, 2014)

  • Added support for template comments (using #) which aren't seen in the output.
  • Added support for including external files into a template.
  • Changed a behaviour where snippet syntax wasn't being highlighted unless the snippet existed.
  • Fixed a bug where the "timestamp()" js function wasn't working - bug introduced in 2.34.
  • Fixed a bug where tabs weren't being stripped from snippets.
  • Fixed a race condition where the previous pane wasn't being focused when switching between tabs.
  • Cleaned up the Base64 encoding and decoding functions.
  • Changed the default un-maximised size from 800x600 pixels to 960x640 pixels.
  • Updated the JavaScript "passwd()" function to permit an optional character set.
  • Updated the JavaScript "counter()" function to permit using different increments and a different starting point.
  • Fixed a bug in the JavaScript "insubnet()" function as JavaScript doesn't handle bitwise operations on 32-bit numbers very well.
  • Added some additional IP helper functions to output subnet information - network(), broadcast(), ipfirst() and iplast().
  • Updated the "timestamp()" function to not rely on a custom Java "jsTimestamp()" function.
  • Fixed a bug where I broke "Undo" and "Redo" when selecting them off the popup menu.
  • An updated version of the User Guide has been included with the distribution.

New in TemplateFx 2.34 (Mar 10, 2014)

  • Various code cleanups to streamline the code and reduce the amount of anonymous inner classes.
  • Simplified the "Optional Criteria" section in the "Generate Output" dialog - no longer requires complicated JavaScript.
  • Adjusted the size of the "+" and "-" buttons for adding and removing snippets.
  • Fixed an issue where the progress bar wasn't relative to the number of data rows.
  • Changed the highlight colour of IF blocks to highlight that the expression is JavaScript.
  • Fixed a bug which permitted invalid characters to appear within filenames of ZIP files.
  • Updated the style of the About screen to use a consistent font size across platforms.
  • Updated the TemplateFx icon colour as part of the About screen updates.

New in TemplateFx 2.33 (Feb 11, 2014)

  • Changes:
  • Added support for snippets which allow you to re-use template components multiple
  • times.
  • Allowed comments to start with either a ! or # character.
  • Added a hyperlink to the about box to make the email link clickable.
  • Updated syntax highlighting colour of FOREACH blocks.
  • For templates without data, the data pane can be empty if no template fields are
  • referenced.
  • Added support for intelligent selection of content on double click - it now selects
  • up to whitespace.
  • Provided a workaround for a JRE 8 bug that was discovered during testing on a
  • preview build.
  • Various cosmetic cleanups around background colours to identify editable areas.

New in TemplateFx 2.32 (Oct 23, 2013)

  • Major performance improvement with syntax highlighting the template pane - from 1.5s to less than 50ms for a 500K file.
  • Added support for the "Console" tab to aid in template troubleshooting.
  • Introduced the "clog()" function to output messages to the console log from templates - use in combination with the "Console".
  • Introduced the "insubnet()" function to verify if an IP address is within a subnet.
  • Introduced the "timestamp()" function to output a timestamp in templates.
  • Added support for "Clear All" on the popup menu to easily delete all contents.
  • Fixed a bug with single column data sets where we used a comma or tab within subsequent rows.
  • Changed the background colour of the output pane to differentiate it from the DataTemplate pane.
  • Removed DataTemplate version check otherwise it will break backwards compatibility in the future.
  • Added support for intelligent Redo and Undo buffers that group similar events together.
  • Fixed an issue where focus was being reset to the data pane when you switched back to the DataTemplate tab.
  • Added support for an "In Browser" button for HTML templates that launches the default browser with the output.
  • Implemented a workaround for Java on Mac OS where the tab titles were going wrong when you tried to rename them.
  • "Find and Replace" dialog automatically hides when it loses the focus.
  • Output tabs now use a title of "null" if title is omitted.
  • Added an "Options" item to the "File" menu to enable the toggling of persistent options.
  • Fixed an issue with the JProgressBar when generating output that caused it to pause too long at 0%.
  • Fixed an issue with an ever increasing build number as it was being regenerated on Jar extraction.
  • Added the current Java Runtime Environment version to the About screen.
  • Fixed a bug which permitted template fields to span across lines.
  • Added an improvement to highlight the header row in the data pane.
  • Enhancements to make it look more "Mac" like if run on a Mac based on Apple's recommendations.
  • Various code cleanups to adhere to best practices and to remove legacy constructs.
  • Added support for Redo to go hand in hand with Undo.

New in TemplateFx 2.31 (Sep 13, 2013)

  • This release is a major update and contains bugfixes and enhancements. Some of the highlights include intelligent selection of code blocks based on indentation, the ability to specify criteria to only select certain records, missing field highlighting, a new generate output dialog, persistent history, and match case support in the find and replace dialog.