• Increased default size of browser app (#795).
  • Added bookmarks support to Op windows in the browser app (#787).
  • Fixed position of quit confirmation dialogue (#751).
  • Fixed parsing of command line arguments with spaces.


  • Fixed PySide incompatibility in VectorDataWidget.
  • Improved VectorDataWidget numeric editing (#637).
  • Simplified OpDialogue exception reporting (#806).
  • Fixed “Open Recent…” crash bug in PySide builds (#548).
  • Used OpDialogue to improve progress/error reports in OpPathPreview (#792).
  • Enabled background mode for OpDialogue launched from BrowserEditor.
  • Fixed OpPathPreview UI glitch.
  • Fixed “KeyError: ‘currentTab’” error when loading custom layouts.
  • Added more sensible initial widget sizes to BrowserEditor. The sizes are also saved and restored when modes are switched.
  • Improved Bookmarks
    • Identifies recent items by full paths, so multiple recent items with the same basename may coexist.
    • Prevents heavy usage of one bookmarks category from removing the recent items for the general (no category) bookmarks.
    • Improves bookmarks UI in PathChooserWidget to display full paths of recent items.
    • Most recent items are now displayed at the top.
    • Added creation of bookmarks by dragging on to bookmarks icon.
  • Fixed cursor bug in StringPlugValueWidget continuous update mode (#796).
  • Fixed bug in non-editable MultiLineStringPlugValueWidgets.
  • Fixed upside down nodule labels.
  • Fixed overzealous Viewport drag tracking (#550).
  • Improved SceneHierarchy to view any output ScenePlug, regardless of name. This improves compatibility with Boxes, where the user can make an output plug with any name they want.
  • Added right click menu for Box plugs in NodeGraph. This allows the renaming and deletion of promoted nodules.
  • Added dropdown menu for Displays node quantize parameters.
  • Improved Displays node UI (#15).
  • Added command-line representation of Op values in the UI (#793).
  • Added workaround for squash/stretch in viewport camera look-through (#826).
  • Added custom editor to PathVectorDataWidget. This enables tab completion, nice dropdown menus and a browser for PathVectorDataParameters.
  • Added indexing methods to VectorDataWidget.
  • Added presetsOnly dropdown menus to CompoundVectorParameterValueWidget (#470).
  • Added an auto-load preset for ops (#804).
  • Added filtering by image type for ImageReader and ImageWriter file dialogues.


  • Combined setValue() serialisation for CompoundNumericPlugs (#761).
  • Fixed Box plug promotion to support ImagePlugs and ScenePlugs.


  • Renamed GLSL shaders to UpperCamelCase. This matches the naming convention we use for OSL shaders.
  • Added a Grid node.
  • Fixed FilteredSceneProcessor to allow Box promotion of Filter plug.


  • Fixed a bug in ImageTransform that could result in corrupted output.


  • Added GraphComponentClass and GadgetClass to improve bindings.
  • Added NodeGadgetClass to improve bindings of NodeGadgets.
  • Added immediate execution mode to OpDialogue.
  • Fixed NodeGadget::noduleTangent() binding.
  • Fixed potential bug in NodeGadget::create().
  • Fixed LRUCache getter cost calculations.
  • Fixed Metadata test hang.
  • Improved Window.resizeToFitChild() behaviour. If called on an as-yet unshown window, it would move the window to the top left corner of the screen. Now the window will still be opened in a sensible place. Added additional shrink and expand arguments to further control the resize behaviour.
  • Added support for fixed size CompoundVectorParameterValueWidget. The [“UI”][“sizeEditable”] user data entry can be given a BoolData value of False, which will cause the +/- buttons to be hidden in the UI, enforcing a fixed length on the data in the vector parameters.
  • Added per-column editability to CompoundVectorParameterValueWidget. This uses a [“UI”][“editable”] user data entry in each child parameter, where a BoolData value of False will make the column for that parameter read-only (#766).
  • Made Bookmarks.acquire() support passing Widgets and GraphComponents.
  • Added support for callable dialogue keywords in PathPlugValueWidget.
  • Fixed drag/drop to allow modal dialogue creation in dropSignal().
  • Added public Serialisation::acquireSerialiser() method.
  • Added ValuePlugSerialiser::valueNeedsSerialisation() method. This can be reimplemented by derived classes to provide more control over the serialisation of values.
  • Privatised numeric and string PlugValueWidget implementations.
  • Added ViewportGadget viewportChangedSignal() and cameraChangedSignal().
  • Added SpacerGadget size accessors.
  • Added iterator typedefs for all GafferUI::Gadget subclasses.
  • Improved Box plug promotion API.
  • Made BlockedConnection and UndoContext non-copyable.
  • Added useNameAsPlugName argument to CompoundDataPlug::addMembers(). Also added python bindings for CompoundDataPlug::fillCompoundData() and CompoundDataPlug::fillCompoundObject().
  • Gave Displays node parameter plugs more useful names.
  • Added VectorDataWidget.editSignal(). This allows custom Widgets to be provided to edit the values held in the table cells.
  • Added Widget.focusChangedSignal().
  • Added VectorDataWidget setColumnEditable/getColumnEditable methods.
  • Added right click preset menu for CompoundVectorParameterValueWidget. This also adds the ability for any custom parameter menu to operate with CompoundVectorParameters, whereas before they couldn’t.


  • Now using Coverity static analysis - this resulted in a number of bugs being found and fixed in this version.