12.3 5th December, 2016
  - Added @disableif and @hideif command 
  modifiers, that let buttons be hidden or disabled based on the result of a 
  function (e.g. @hideif:!Set DUAL=Toggle to hide a button when 
  not in dual-display mode). 
  
 - Added @disableifpath and @hideifpath 
  command modifiers, to allow buttons to be hidden or disabled based on the 
  current source path. 
  
 - @if, @disableif and 
  @hideif can now test if a command would be enabled rather 
  than toggled. E.g. @if:enabled Go GROUPEXPAND=*. 
  
 - The @hidenosel and @disablenosel 
  modifiers can now be negated, e.g. @hidenosel:! would hide a 
  button if anything at all was selected. 
  
 - Set COLUMNSADD and similar commands can now specify a 
  position for the column and flag that it is only to be used if the column 
  isn't already present. Prefix the position with ! to do this. 
  For example Set COLUMNSADD=Size(!2) would leave the 
  Size column as-is if it already exists, and add it in position 2 
  otherwise. This also works with relative positions: Set 
  COLUMNSADD=Status(!1+Name). 
  
 - Adding an ! before various conditional modifier tests now work to negate 
  the tests. This has been added for 
  @if:!<blah>,@ifset:!<blah>, @ifpath:!, 
  @ifpathr:!, @ifexists:! and 
  @keydown:! (plus the new @disableif, 
  @hideif, @disableifpath and 
  @hideifpath modifiers). 
  
 - Added Preferences / Viewer / Appearance / Show status 
  icons option to display current image's status icons in the viewer. 
  
 - Added Custom title option to Preferences / Viewer 
  / Appearance. 
  
 - The font used for the rename macro builder is now configurable via 
  Preferences / Display / Colors and Fonts. 
  
 - Added Preferences / Folder Tree / Options / Expand selected branch 
  when changing tabs option. 
  
 - A new setting, Preferences / Miscellaneous / Advanced: 
  context_menu_icon_set, allows you to change the icon set used when 
  generating the Add to Archive and similar context menu items within 
  Opus. For example, if you want the menu items to use the standard 16x16 size 
  (32x32 at 200% DPI, etc.) then you can now do that, assuming a suitable icon 
  set is installed. 
  
 - The Target clause in the advanced filter control now lets you 
  limit matches to shortcuts only to files or only to folders. 
  
 - The breadcrumbs path field has a new dragsafetyoff 
  argument which allows you to copy or move from the breadcrumbs field using 
  drag and drop, without having to explicitly hold Ctrl or 
  Shift. Without the argument, drag and drop from breadcrumbs 
  defaults to creating shortcuts, to avoid accidents. 
  
 - The Customize / Keys list now displays a column showing 
  which Toolbar a key comes from (if applicable). The toolbar name is shown in 
  italics if its Always enable hotkeys option is turned on. The 
  Locate Toolbar button will now open any sub-menus 
  necessary to locate the button that contains the selected hotkey. 
  
 - The Join dialog now adds an output filename by default. 
  
 - Minor improvements to the Split dialog. It now remembers 
  the last size and UUEncode settings you used. "Automatic" size on 
  non-removable devices is now 100MB instead of 1.44MB. Handles splitting to the 
  current folder (vs a destination folder) better. 
  
 - Moved the Start Folder Tree at Preferences option from 
  Folder Tree / Options to Folder Tree / 
  Contents. 
  
 - RAR decompression uses UnRAR.dll again unless overridden. It is faster for 
  some operations and a recent update added support full timestamp accuracy and 
  all three timestamps (Created, Modified, Accessed). 
  
 - The Preferences option Launching Opus / Explorer Replacement / 
  Open external folders in a new tab now routes new tabs to the most 
  recently used Lister, rather than the source Lister. 
  
 - In the advanced button editor, the help button (or F1) will open the page 
  about command modifiers if clicked while on a line for one. 
  
 - Reduced overhead of the Copy progress dialog when copying thousands of 
  tiny files. 
  
 - Fixed Preferences ignoring the "show built-in aliases" checkbox when first 
  opening the Aliases page if no user-defined aliases exist. 
  
 - Fixed problem with script dialogs that could lead to a script still 
  processing messages in its message loop after a dialog had closed (which 
  depending on the script and the exact timing, could lead to a script error). 
  
 - A button-menu with "always enable drop-down" set would change the spacing 
  between its label and drop-down arrow when the main button part became 
  disabled. The spacing now stays the same in both states.
   - Added an option to Preferences / File Operations / Progress 
  Indicators to disable the progress indicator speed graph. 
  
 - When copying two or more files the progress dialog now shows the total 
  bytes copied / remaining as well as the values for the current file. 
  
 - It's now possible to assign the "stop on match" label to a file by itself, 
  to prevent wildcard/label filters from applying to it without actually 
  specifying a label explicitly. 
   - Added workaround for Google Drive opening its folder using the \\?\ prefix 
  even when it is unnecessary. (Things worked, but it was unsightly.) The prefix 
  is now removed if it isn't needed. 
  
 - The folder tree and file display should now update immediately in response 
  to assigning labels to drive roots under the This PC (My Computer) folder. 
  
 - The Prefs STYLESAVE dialog now asks if you want to 
  replace an existing style instead of failing. 
  
 - The Go DRIVEBUTTONS command would incorrectly omit MTP 
  devices if any arguments were used (unless "mtp" was specified as well). 
  
 - If the viewer custom title contained %L (for file label), 
  the viewer would not correctly update file labels / status icons when 
  advancing to the next image. 
  
 - The TGA plugin's minimum size limit has been reduced from 45 bytes to 19 
  bytes, to allow extremely small TGA files to be viewed. 
  
 - The Preferences / Favorites and Recent / Jump List page 
  now supports Layouts that have been organised into folders. Note that on the 
  jumplist itself they will appear as a flattened list. 
  
 - Fixed problem that could cause problems with FTP in certain specific 
  situations (e.g. with two single Listers, clicking the Up 
  button in the FTP Lister while copying a file to it would cause the transfer 
  to be aborted). 
  
 - Music Comment in the file display and the scripting 
  mp3comment field will now return comments up to 1000 
  characters long before truncation, instead of the old limit of 100. 
  
 - If Rename is used in simple mode (Rename 
  SIMPLE) and a wildcard pattern isn't entered, the rename dialog will 
  now re-open automatically allowing the next selected file to be renamed 
  (compatibility with Opus 11). 
  
 - The rename script editor now works correctly in the Light edition. 
  
 - Moving the mouse over the text viewer no longer causes the cursor to 
  flicker between pointer and caret. 
  
 - Fixed some problems with image marking in MTP folders
   - Tab groups now obey the Preferences / Folders / 
  Auto-Loading settings. The new TABGROUPFORCE switch 
  can be used with the Go TABGROUPLOAD command to load a tab 
  group and override the auto-load settings. 
  
 - Fixed/improved a problem with native MTP support where creating folders 
  (or sometimes even reading a directory) could cause Opus to freeze until the 
  MTP device was unplugged. 
  
 - Fixed problem where drag & drop of folders from a library to another 
  Lister would not correctly count the files for the progress indicator. 
  
 - Fixed line spacing not changing if you switched between Details and Power 
  modes (without another mode in between) and the two had different line spacing 
  set. 
  
 - Fixed cosmetic issue when scrolling up in Tiles mode with certain 
  combinations of visual settings. 
  
 - Right-click on the viewer's title bar now shows the normal window menu 
  rather than the viewer's context menu. 
  
 - Image conversion no longer fails when updating EXIF data in JPG and PNG 
  images if the destination requires UAC elevation to modify. Also changed what 
  happens when the destination is an FTP site or Zip archive or similar, where 
  the EXIF data will be dropped on conversion now (as it was in Opus 11) instead 
  of always causing the operation to fail. 
  
 - The viewer pane now only tries to display .URL files using a web browser 
  if they point to HTTP, HTTPS, FTP or FILE URLs. In particular, shortcuts to 
  Steam apps/games will no longer be triggered by the viewer; you'll only see 
  the text content of the shortcuts instead. 
  
 - Fixed details/power mode rendering issue with graphs (date/size) behind 
  another column being truncated in some cases (e.g. if the column was set to 
  left-justify and the width of the graph was greater than the width of the 
  text). 
  
 - If, while a folder is being read, you press a key that triggers the FAYT 
  field, the FAYT will no longer automatically close when the folder read 
  finishes. 
  
 - Fixed not being able to change the file display toolbar back to the 
  default in Preferences / File Displays / Border on a clean 
  install of Opus Light. 
  
 - The Customize / Keys list now includes all default 
  toolbars in the Light version so that you can easily see their hotkeys and 
  check for clashes (previously they would only be shown if the toolbar files 
  actually existed on disk, which would only happen if you had run the Pro 
  version before switching to Light). 
  
 - Made a change which stops the Target column showing an 
  out-of-date value for .url shortcuts if the .url shortcut file was edited 
  manually (e.g. in a text editor) rather than through the Properties 
dialog.
   - Added Show VIEWERCMD=cmdbar command which shows a 
  FAYT-style command field in the viewer. 
  
 - Added Preferences / Folder Tabs / Options / Lister closes when 
  last tab closes option. 
  
 - When using the metadata panel to set an image's last modification 
  timestamp, Opus now sets the EXIF DateTime tag to the same value 
  automatically. 
  
 - dopusrt.exe has a new /vcmd argument 
  which lets you send commands to the last active viewer window. 
  
 - Default toolbars now include a PowerShell Here menu item which 
  runs the new CLI DOSPROMPT=powershell command. CLI 
  DOSPROMPT=powershellISE is now also supported, for opening the 
  PowerShell ISE instead of a basic PowerShell prompt. 
  
 - In the viewer, you can now press Ctrl+TAB to switch the 
  focus from a metadata field back to the main viewer window, and 
  Ctrl+TAB to switch focus back to the same metadata field 
  again.  
  
 - In the button editor, increased the length of strings which the 
  Label and Tip fields will accept. 
  
 - Navigating to locked BitLocker devices now automatically prompts to unlock 
  them on Windows 8 and Windows 10. (This already worked on Windows 7.) 
  
 - When selecting icons for Labels and Collections, the icon path is 
  automatically made relative to folder aliases if possible. (e.g. 
  /home for where Opus is installed, 
  /dopusdata for your config folder, 
  /programfiles, etc.) This helps make your configuration more 
  portable. 
  
 - Paths to background images are now stored relative to standard aliases if 
  possible, for better portability. (This was already the case for the 
  Images folder in the configuration, but now works with more folders.) 
  Paths to external toolbar and context menu icons are now stored relative to 
  aliases as well. 
  
 - The various options (color, image, label state, etc) on the 
  Customize / Toolbars page for the standard toolbars were 
  editable in Opus Light but not saved. These settings are now preserved 
  correctly. 
  
 - Preferences / Folder Tree / Options / Expand selected branch when 
  changing tabs now also applies in a dual file display, with a single 
  shared folder tree, when you change from one side to the other. 
  
 - If a Folder Format specifies a background image that no longer exists, the 
  effect is the same as if No Image was chosen in the Folder Format 
  editor, but the editor instead displayed Default Image. The editor 
  now displays No Image to match the actual behavior. 
  
 - The Preferences search function now understands some alternate English 
  spellings (e.g. color/colour, behaviour/behavior). 
  
 - The Rename PRESET=last command was incorrectly documented 
  as running immediately rather than opening the rename dialog. The docs have 
  been corrected to reflect the actual behaviour. Also added Rename 
  PRESET=!last which actually does let you run the last rename command 
  without opening the rename dialog. 
  
 - The rename preview no longer shows items as ghosted if their location has 
  changed without the name changing too. 
  
 - The rename dialog now updates any script-added custom fields correctly 
  when loading a preset that has values for them saved, even if the control had 
  previously been added by a different script. 
  
 - The Replace dialog now respects the preferences flag to auto-rotate 
  thumbnails using EXIF data. 
  
 - Folder tree highlight option Use color from tab now works 
  for tab colors which come from folder formats. 
  
 - The control used for the list of Preferences pages, and in a few other 
  places, now works better with dark Windows themes. 
  
 - The command editor menus for the Prefs LAYOUT command no 
  longer hide hidden layouts, since that's one place you would normally still 
  want to see them. 
  
 - Scrolling an image in the viewer by click+drag now "tracks" the image with 
  the mouse when zoomed unless the control key is held down. 
  
 - Fixed the Preferences dialog opening and then immediately closing if no 
  Listers were open and the program was set to automatically close when no 
  Listers were open. Preferences (and several other windows) will now keep the 
  program alive similar to Lister windows. 
  
 - Fixed an issue with miscalculation of ISO week numbers in some cases. 
  
 - Fixed the breadcrumbs path field getting a bit confused if you were in a 
  folder below Quick Access and then navigated directly to the real parent of 
  that folder. 
  
 - The Favorites command has a new BRANCH 
  argument which allows you to specify the branch of the favorites tree to add 
  new favorites to. If used with the Add To Favorites dialog, you can 
  make it select or create a particular branch by default but still be able to 
  change it when the dialog appears. 
  
 - In the Add To Favorites dialog, you can now create nested 
  branches with fewer clicks. e.g. Click New Branch and type 
  Cat\Dog to create Cat below the selected 
  branch and Dog below that. 
  
 - Added Select MAKEVISIBLE=immediate option, which 
  activates the MAKEVISIBLE action immediately instead of after 
  a small delay (and also disables smooth scrolling). 
  
 - Added Select NEXT=nodeselect and 
  PREV=nodeselect keywords, which prevent the current file from 
  being deselected before selecting the next/previous file. 
  
 - When adding a submenu to a filetype's context menu, you can now make the 
  submenu also act as a 'menu button' that runs the first command within it when 
  it's clicked. To do this, right-click on the first child menu item and turn on 
  the Button option. Note this only works if the first command 
  in the submenu is an 'Opus-only' command.  
  
 - The right-click menus for Favorites items now hide the 
  Rename, Cut and Delete 
  commands in the folder tree, toolbars and breadcrumbs menu. 
  (Delete was already hidden in the case of toolbars). 
  
 - @disablenosel and similar command modifiers now 
  work if they are preceded by another modifier line in the function that's been 
  commented out. 
  
 - The Save Toolbar Set dialog now displays a drop-down of existing 
  toolbar set names to choose from (as well as entering a new one). 
  
 - The standalone viewer now respects configured Pane Border colors for the 
  Marked and Metadata panel headers. 
  
 - File infotips will no longer appear while inline rename is active, since 
  they were easy to trigger by accident and sometimes appeared on top of the 
  rename field. 
  
 - Fixed bug where a queued Copy As function would forget 
  the new name you had entered for the file if the copy was initiated via drag 
  & drop. 
  
 - Fixed problem with the Copy HERE argument picking the 
  wrong folder when used in flatview. 
  
 - Fixed problem with Rename which meant the New Location 
  column in the preview could flicker on and off as you scrolled through the 
  preview list. 
  
 - Fixed incorrect drag & drop tooltip in some situations when dragging 
  over the Favorites root or branches in the folder tree. 
  
 - The viewer now correctly detects when the image it's viewing has been 
  renamed if the file is located in a junction or linked folder.
   - (Experimental) Fix for missing separators in some situations, due to menu 
  items which get hidden. If you notice extra or missing separators, or anything 
  wrong with toolbars in menus, please report it so we can investigate. 
  
 - Fixed problem with image metadata writing not working on Windows XP. 
  
 - Fixed problem when using the Show or 
  Slideshow commands on a folder. The viewer correctly 
  enumerated the folder's contents, but also tried to display the folder itself 
  as the first image, resulting in an error message. 
  
 - Fixed toggling checkbox mode not adjusting Auto-Fill column sizes 
  appropriately. 
  
 - Fixed not being able to drag folders from the breadcrumbs field and drop 
  them into file displays. 
  
 - Fixed file displays not always using the drag & drop source's 
  preferred action (link, copy, move) if one was specified and no key was held 
  down to override it. 
  
 - Fixed Click selected tab to go to previous one option 
  interfering with ctrl-clicking folder tabs to link them. 
  
 - The Advanced Filter Type clause used raw names instead of user 
  names for file type groups - didn't affect the default groups but user-created 
  groups would appear as {GUID} strings in the drop-down. 
  
 - If the Copy command was launched with the default Ctrl+1 hotkey it 
  wouldn't prompt for a filter when filter mode was on. 
  
 - Fixed Lister not always coming to the front if you activated it by 
  clicking on an inactive folder tab, where one tab had a warning banner and the 
  other did not. 
  
 - Fixed folder tabs opening next beside the active tab instead of the end 
  when dragging folders or tabs to the end of the tab bar, if certain 
  Preferences settings were combined. 
  
 - Dragging drive roots (e.g. "C:\") from breadcrumbs to the tab bar is no 
  longer blocked and can be used to open them in new tabs. 
  
 - The Properties SETLABEL command would ignore the 
  ADDLABEL switch if a) a category filter was specified and b) 
  SETLABELTOGGLE wasn't also used. 
  
 - Fixed problem with layout separators appearing in the wrong positions. 
  
 - Change in 12.2 would cause replace dialog to move to the right on the 
  second and subsequent invocations if the generated file description was over a 
  certain length. 
  
 - Fixed Inherit columns from other matching formats folder 
  formats option causing the sort order to be inherited/replaced as well. 
  
 - Fixed crash if a script passed Command.AddFiles a 
  Vector containing strings (instead of file 
  Item objects). 
  
 - Explorer Replacement is now stricter about finding existing windows/tabs 
  when another program requests the user profile desktop directory and the 
  Desktop virtual folder is showing in a lister (or vice versa). In specific 
  situations, this will improve the response of "show in folder" options in 
  other programs. 
  
 - Fixed problem with {sel:xxx} status bar date codes, which 
  displayed UTC instead of local time. 
  
 - Improved the way the Update Checker shows you the folder with the 
  downloaded installer, and similarly how the File Type Diagnostic utility shows 
  you the zip file it makes. 
  
 - Fixed crash if your toolbar had a Set ENABLELABELFILTER 
  button added to it but Preferences / Favorites and Recent / Label 
  Assignments was completely empty. 
  
 - Added rename_default_focus option to Preferences / 
  Miscellaneous / Advanced, to control which field in the Rename 
  dialog gets input focus by default (scripts can override this). 
  
 - Added Assume UTF-8 without BOM option to text viewer 
  configuration. 
  
 - Inline rename in the Folder Tree now supports the same case-changing 
  hotkeys as most other rename fields in the program. (Ctrl+L 
  for lowercase, Ctrl+U for uppercase, Ctrl+W 
  to capitalize words and Ctrl+P to capitalize just the first 
  letter). 
  
 - CLI DOSPROMPT command now works from a context menu in 
  the tree (previously it would always be disabled). 
  
 - Fix for item in the Preferences / Favorites and Recent / 
  Labels list sometimes becoming unselectable if you renamed one item 
  and then clicked another in the list before clicking anywhere else. 
  
 - If you run the Settings / File Types command with 
  the File Types dialog already open but minimized, it will now be 
  restored (previously nothing would happen).
  
   - Scripting: 
  
    - In script buttons launched via the viewer, 
    clickData.Func.Dialog now has the viewer as its parent 
    window and not the active file display. 
    
 - Fixed problem where the Metadata object could return 
    outdated data in some cases. 
    
 - Group boxes in script dialogs did not refresh properly when their label 
    was changed. 
    
 - The Dialog object's x and 
    y properties can now be set after the dialog has been 
    shown, to move the dialog around the screen. 
    
 - The Dialog object now has cx and 
    cy properties to get and set its size (when the dialog is 
    resizeable). 
    
 - Added Dialog.SavePosition and 
    Dialog.LoadPosition methods, to save and load dialog window 
    position. 
    
 - Added Dialog.Vars method which returns a 
    Vars object associated with the dialog. 
    
 - The Control.RemoveItem method now accepts 
    -1 to clear the entire listbox/combo contents. 
    
 - The Viewer object has new title 
    property which allows the title in a viewer to be changed from a script. 
    
 - Added fg, bg and 
    style properties to the Control object. 
    Currently only supported for static controls. 
    
 - The Command.AddFiles method can now be given a 
    Vector containing Path or strings (full 
    paths), in addition to the Item objects which it previously 
    allowed. 
    
 - Added opacity property to the Dialog 
    object (and also the dialog editor), allowing a dialog's opacity level to be 
    controlled. 
    
 - Added Dialog.SetTimer and KillTimer 
    methods, which allow scripts to create recurring timer events. 
    
 - Added Dialog.AddHotkey and DelHotkey 
    methods so script dialogs can implement hotkeys (keyboard accelerators). 
    
 - Added List View control type to script dialogs - this is like a 
    List Box except it supports multiple columns and different display 
    modes. To support this, the Control object has 
    new columns and mode properties and 
    the DialogListItem has new subitems 
    and icon properties. 
    
 - Added Lister.state property to report the 
    source/destination/off state of a non-dual display Lister. 
    
 - Static Text controls in script dialogs can now display images, 
    by setting the Image property to true in the 
    dialog template (the control's label then becomes the image filename). 
    
 - Script dialogs can now accept files via drag & drop if the 
    Accept Drops property is set in the dialog template. 
    Dropped files will generate a drop event and the new 
    Msg.object property provides a Vector of 
    Item objects representing the files that were dropped. If 
    the drop was over a control the Msg.control property will 
    identify the target control. 
    
 - Added Control.MoveItem method to move an existing item 
    in a List Box, Combo Box or List View control. 
    
 - Added the FSUtil.Drives method which returns a 
    Vector of Drive objects, providing 
    information about the drives present in the system. 
    
 - The scripting File.Read method did not correctly read 
    the entire file if not passed a size. 
    
 - The scripting DOpus.Language property now always 
    returns a lowercase version of the language name, to simplify testing 
    against it. 
    
 - Added OnFlatViewChange script event, to allow a script 
    add-in to detect changes to the flat view mode in a tab. 
    
 - Script dialogs now generate resize events when the window is resized. 
    Must be enabled by setting Dialog.want_resize 
    to True. Msg.cx and 
    Msg.cy provide size information. 
    
 - Added DialogListColumns.GetColumnAt method. 
    
 - Added DialogListColumn.resize property - set to 
    True to specify a column that auto-resizes with the 
    listview. 
    
 - Added NOSCRIPT argument to the Close 
    command to stop the command triggering the OnCloseLister 
    event. 
    
 - The StringTools.Decode script method now skips over the 
    UTF-8 BOM when decoding a Blob containing UTF-8 encoded 
    data. 
    
 - Fixed problem with Rename script custom fields where default field 
    values would not be valid the first time the rename preview was refreshed. 
    
 - The script Command object now correctly runs functions 
    asynchronously if SetModifier("async") has been called. 
    
 - Fixed bug which could cause the program to crash if a script dialog 
    encountered a script error while processing the dialog message loop. 
    
 - Fixed problem with OnCloseLister script event causing 
    infinite loop/stack overflow if the event handler invoked the 
    Close command to close the same Lister.
     - Added OnListerResize script event. 
    
 - The Metadata object now returns a Date 
    object for date values (e.g. Metadata.image.datetaken) 
    rather than VT_DATE variants. 
    
 - Added Item.Labels method which returns a 
    Vector<string> of all labels applying to an item. 
    
 - The Date.Format method can now be passed flags to 
    override Preferences settings like day names in dates, when formatting dates 
    and times according to the user's locale. 
    
 - Added script Item.Update method to update an existing 
    Item object's size/date/attributes if the file has been modified on disk 
    
 - The scripting Item.Labels method's category filter now 
    works properly with user-defined categories. 
    
 - Fixed a (rather esoteric) problem which meant the GetSizes 
    MD5 command, if run from a script, did not work correctly with 
    files selected. 
    
 - Added Prefs NOSCRIPT argument; when used with the 
    LAYOUT argument it prevents 
    OnOpusLister/OnOpenTab script events from 
    firing for the new Listers opened by the layout. 
    
 - Dialog events triggered by control initialization are no longer passed 
    through to the script. 
    
 - The Date.Sub method now works properly for years and 
    months.