<commit_before>v0.4:
 * New GUI using React.js
 * Simplified color picker
 * Removed jQuery dependency, though the plugin works if jQuery is present
 * Performance improvements
 * Retina display rendering is the correct size instead of being scaled up
   half-resolution
 * Code is browserified; can still be used as a standalone script
 * Overhauled API for defining tools and shapes (see docs)
 * Backgrounds and watermarks are no longer affected by the eraser
 * No DOM is preserved inside the container div at all
 * LiterallyCanvas class API
   * Constructor takes (containerElement, opts) instead of (canvas, opts)
   * API for subscribing/unsubscribing event listeners has changed (see #130)
   * Redraw layers ('main' or 'background') with repaintLayer(layerName);
     repaint everything with repaintAllLayers(). Removed repaint().
   * getImage() allows rendering drawing at any scale clipped to any rect. Old
     canvasForExport() and canvasWithBackground() are deprecated.
   * setPan() and setZoom() can set position and zoom values directly, in
     addition to the old pan() and zoom() that move them by relative values.
   * getContentBounds() returns the bounding rect of all shapes
 * LC.util functions
   * sizeToContainer() removed in favor of matchElementSize()
   * renderShapes() renders any list of shapes to a canvas, without having to
      instantiate LiterallyCanvas
   * getBoundingRect(listOfRects)
 * Reorganized top-level API on window.LC or require('literallycanvas')
   LC.init()
   LC.registerJQueryPlugin()
   LC.util
   LC.tools
   LC.defineOptionsSTyle()
   LC.defineShape()
   LC.createShape()
   LC.JSONToShape()
   LC.shapeToJSON()

v0.3:
 * LiterallyCanvas.canvasWithBackground() renders the current drawing over a
   background image
 * Save/load to/from JSON
 * Text tool
 * New events
 * preserveCanvasContents option
 * Image shape (no corresponding tool yet)
 * Split code into jQuery plugin and core code
 * Remove Underscore dependency
 * Support IE Mobile (probably)
<commit_msg>Add LC.setDefaultImageURLPrefix() to CHANGES.txt<commit_after>v0.4:
 * New GUI using React.js
 * Simplified color picker
 * Removed jQuery dependency, though the plugin works if jQuery is present
 * Performance improvements
 * Retina display rendering is the correct size instead of being scaled up
   half-resolution
 * Code is browserified; can still be used as a standalone script
 * Overhauled API for defining tools and shapes (see docs)
 * Backgrounds and watermarks are no longer affected by the eraser
 * No DOM is preserved inside the container div at all
 * LiterallyCanvas class API
   * Constructor takes (containerElement, opts) instead of (canvas, opts)
   * API for subscribing/unsubscribing event listeners has changed (see #130)
   * Redraw layers ('main' or 'background') with repaintLayer(layerName);
     repaint everything with repaintAllLayers(). Removed repaint().
   * getImage() allows rendering drawing at any scale clipped to any rect. Old
     canvasForExport() and canvasWithBackground() are deprecated.
   * setPan() and setZoom() can set position and zoom values directly, in
     addition to the old pan() and zoom() that move them by relative values.
   * getContentBounds() returns the bounding rect of all shapes
 * LC.util functions
   * sizeToContainer() removed in favor of matchElementSize()
   * renderShapes() renders any list of shapes to a canvas, without having to
      instantiate LiterallyCanvas
   * getBoundingRect(listOfRects)
 * Reorganized top-level API on window.LC or require('literallycanvas')
   LC.init()
   LC.registerJQueryPlugin()
   LC.util
   LC.tools
   LC.defineOptionsSTyle()
   LC.defineShape()
   LC.createShape()
   LC.JSONToShape()
   LC.shapeToJSON()
   LC.setDefaultImageURLPrefix()

v0.3:
 * LiterallyCanvas.canvasWithBackground() renders the current drawing over a
   background image
 * Save/load to/from JSON
 * Text tool
 * New events
 * preserveCanvasContents option
 * Image shape (no corresponding tool yet)
 * Split code into jQuery plugin and core code
 * Remove Underscore dependency
 * Support IE Mobile (probably)

{'fraction_non_alphanumeric': 0.06758720930232558, 'fraction_numerical': 0.003391472868217054, 'mean_word_length': 4.180677540777917, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7074129', 'n_tokens_mistral': 1129, 'n_tokens_neox': 1070, 'n_words': 474}