12.21 16th June, 2020
The following changes were part of the 12.20.1 - 12.20.8 beta 
updates:
  - Added columns to the native This PC view to show percentage space 
  free and full as a number (instead of as a bar graph).
  
   - Added special handling when moving folders up to parents, where the same 
  folder names appear both above and below the source level. (e.g. 
  C:\A\A\A\A up to C:\A when 
  C:\A\A\A\A\A\A exists.)
  
   - Added support for File Explorer's %V code. This inserts 
  the selected file or folder if there is one, and the current folder path 
  otherwise.
  
   - The FAYT field's Range Select mode 
  (# key by default) now lets you select a range based on the 
  current focus position. For example, #+10 will select the 
  next 10 files from the current position, and #-5 will select 
  the previous 5. You can also use, for example, #-5+5 to 
  select 5 files either side.
  
   - Previously the Range Select mode required the 
  Index column to be added before you could use it, but now the 
  mode is always available (in details/power mode) and the Index 
  column will be automatically added if needed, and removed again once 
  the FAYT closes..
  
   - Background threads generating metadata now prioritise the active tab. When 
  you switch tabs any outstanding threads are re-ordered so results for the 
  newly active tab should start to be returned much more quickly.
  
   - A number of improvements to the Go FOLDERCONTENT 
  command:
  
  
    - Go FOLDERCONTENT now sorts and filters items by their 
    localized display names, not the underlying disk names. 
    
 - Go FOLDERCONTENT=useshell now supports multiple 
    folders. Also added support for merging the current folder "." with one or 
    more fixed paths. 
    
 - Go FOLDERCONTENT=useshell now shows better descriptions 
    (on mouse hover) for shortcuts. 
    
 - Go FOLDERCONTENT=useshell no longer treats zip files as 
    folders. 
    
 - Go FOLDERCONTENT without useshell now 
    adds a separator between files and folders at the top level. (Previously, 
    this only happened within sub-menus or when useshell was 
    specified.)
 
   - The Join dialog now puts the focus in the output filename field 
  by default. If all input files have the same file extension, the default 
  output filename will now be given that extension as well.
  
   - Library member folders are now shown in the tree in the order they're 
  configured via the Properties dialog, rather than being sorted 
  alphabetically.
  
   - The option to hide OneDrive for Business in the folder tree now 
  applies to OneDrive for School as well.
  
   - In Windows 10, the folder tree no longer appends the drive letter (or 
  share name) to the name of library member folders (this is to match what 
  Explorer does).
  
   - When selected files are filtered out of the display by the filter bar (or 
  the FAYT in filter mode), they are now deselected automatically.
  
   - Added alternative syntax for opening a specific file in the viewer pane. 
  As well as the old Show VIEWPANECMD="open,C:\cat.jpg" you can 
  also now use Show "C:\Cat.jpg" VIEWPANECMD=open.
  
   - Show VIEWPANECMD=open now works with filenames and 
  relative paths; previously it required a full path.
  
   - A command like Delete 
  FILE="coll://CollectionName" will no longer show any warning or 
  confirmation dialogs if the collection already does not exist.
  
   - Fixed zip files appearing in breadcrumbs menus when archives were turned 
  off for them.
  
   - The breadcrumbs option for showing This PC as an icon now only 
  affects This PC, not other folders that are the first path branch 
  (e.g. Network, or folders below Desktop).
  
   - Go OPENCONTAINER=target now selects the target file even 
  if the OPENINDUAL argument is used to open the containing 
  folder in the other file display.
   - The FileType NEW command can now create directories by 
  specifying directory as the file type to create. This lets 
  you create multiple directories at once (e.g. FileType NEW=directory 
  NEWCOUNT=10).
  
   - The FileType NEWNAME argument can now be used to specify 
  a separate name that's used when the original name clashes, and to control 
  where the incremental number is inserted. For example, FileType 
  NEW=.txt NEWNAME="Text:Text Num %c" would use "Text" for the 
  initial name, and then try "Text Num 1", "Text Num 2" etc. 
  You can use %Nc to zero-pad the number to N digits 
  (e.g. %3c to zero pad to three digits). The default behavior 
  if a separate name isn't specified is still to append the incremental 
  number in brackets.
  
   - The dopusrt /col command can now be used to create 
  "duplicate files" collections, similar to those produced by the duplicate file 
  finder.
  
  
    - The /add command has new /dupeid and 
    /name switches. 
    
 - The /create command has a new /dupes 
    switch. 
    
 - The /import command allows duplicate IDs and group 
    names to be assigned in the import file.
 
   - The Preferences aliases list now selects the next alias after one 
  is deleted.
  
   - Fixed incompatibility with PeaZip context menu.
  
   - Improved compatibility with context menus added by 
  PotPlayer.
  
   - Added support for a type of nested context menu used by some software 
  (e.g. the Sound ForgeConvert To sub-menu).
  
   - Added support for a second type of nested context menu used by some 
  software.
  
   - Added options to Preferences / File Displays / Mouse to 
  turn off Mouse Wheel + Ctrl for changing font/thumbnail sizes and Mouse Wheel 
  + Shift for navigating back and forward.
  
   - File display music columns now support yet another variant of MP4 music 
  tags.
  
   - Fixed problem where the user-entered list of cloud folders would not be 
  used unless OneDrive or Dropbox were also installed.
  
   - The Prefs PAGE command can now automatically select and 
  display the configuration editor for a script, e.g. Prefs 
  PAGE=scripts:dopstack to go to the Scripts page, select the 
  DopStack.js script and open the editor for its 
  configuration. 
   - The Rename command has a new NOIGNOREEXT 
  argument which allows you to open the Rename dialog for interactive 
  use while turning off the Ignore Extensions checkbox.
   - Fixed copy queue buttons looking incorrect at 125% DPI scaling.
  
   - Fixed Go FOLDERCONTENT menus which merge multiple paths 
  together. (e.g. Start Menu Button: https://resource.dopus.com/t/start-menu-button/3540 
  )
  
   - Fixed crash if you used the mouse wheel over certain parts of the 
  Customize > Context Menus UI.
  
   - Fixed a problem with automatic filename quoting getting confused by a 
  = argument separator (e.g. 
  CREATEFOLDER={file|noext} would put the quote before the 
  CREATEFOLDER rather than after the 
  =).
  
   - Fixed drag & drop into a file display with manual sort enabled, where 
  dropping a file between two sub-folders now drops it to the current folder, 
  consistent with what the visual preview indicates.
  
   - If a folder tab shows a collection which is deleted, the tab now reacts by 
  going up a level (if the collection stays deleted) or refreshing (if the 
  collection is re-created immediately).
  
   - The dialog for creating new FTP site bookmarks no longer resets the 
  password drop-down when you change the connection type drop-down.
  
   - Improved feedback if PDF metadata update fails.
  
   - Fixed a problem with the MD5 cache which could in some cases 
  cause checksums to not be calculated (files would show as duplicates but with 
  a zero checksum).
  
   - Improved compatibility with music tags in certain M4A files.
  
   - Resetting the Archives filetype group to its default 
  settings now initialises the default file extensions for the group.
  
   - Fixed the Flat View state of the first folder carrying over to 
  its replacement when loading a Folder Tab Group.
  
   - By default, Opus no longer overrides the font chosen by virtual folders 
  which Opus does not handle itself. A new option Preferences / Display 
  / Options / Enable custom fonts in virtual folders exists to turn 
  this back on, but note that it can cause cosmetic issues or even crashes when 
  going to those folders.
  
   - Fixed drop-downs at the bottom of Preferences / Display / 
  Images not updating correctly when custom images were 
  removed.
  
   - Fixed a crash that could occur if you rapidly refreshed a file 
  collection.
  
   - The standalone viewer now adds the initial file it opens to the Windows 
  recent documents list.
  
   - Fixed unnecessary null being added at end of IPTC string tags.
  
   - If a rename fails because a file is in-use Opus will now show the 
  processes that have the file locked if possible (same as when trying to 
  delete).
  
   - Fixed Go FROMSEL NEW=nodual opening a Lister with a 
  second folder tree, if the default Lister had dual folder trees.
  
   - The Image Viewer toolbar now respects the icon size override on 
  the CustomizeToolbars page.
  
   - Fixed CustomizeToolbars list in Opus Light 
  showing the wrong checkbox state for the Images toolbar if it 
  was turned on.
  
   - In Opus Light, you can now override the File Display Border 
  toolbar's icon size and the setting will be saved to disk.
  
   - The CustomizeToolbars list now shows File 
  Display Border toolbars as in-use, to help identify them. They can also 
  no longer be turned on as normal toolbars (although you can still do so via 
  commands if you really want to for some reason).
  
   - If the File Display Border or Image Viewer toolbars are 
  changed in Preferences while the Customize dialog is also 
  open, the Customize dialog now updates itself.
  
   - When the standalone viewer is displaying something with the 
  Text plugin, you can now close it with Esc.
  
   - Fixed a crash which could occur in the standalone viewer if you had the 
  Reuse existing viewer windows option turned on and 
  double-clicked the same image twice in extremely quick succession (e.g. due to 
  a faulty mouse button).
  
   - When you right-click a file which is a member of multiple File Type 
  Groups, the context menu items they add (if any) are now in the same 
  order as the groups in the file type editor (i.e. by group name).
  
   - Improved Rename dialog's filtering of invalid characters to allow 
  ":" to be typed after {scp even when not at the very end of the 
  line.
  
   - The progress dialog's unattended mode errors dialog no longer shows itself 
  when the progress dialog is minimized and restored if the unattended option 
  has been turned off again.
  
   - Fixed an issue where the standalone viewer could be blank after exiting 
  fullscreen mode in specific situations.
  
   - Layouts applied to existing windows (Prefs 
  LAYOUTTHISLISTER) should now work with Navigation Lock and 
  Linked Folder Tabs.
  
   - If you have a toolbar with empty space on the right (or bottom, for 
  vertical toolbars), and you move the mouse across the last button and into the 
  empty space, the button will no longer be left highlighted.
  
   - Drive roots may now be added to file collections. (Primarily intended for 
  scripts/commands.)
  
   - A command that copies files into a file collection using 
  {filepath} etc. codes now works correctly with more than one 
  item selected.
  
   - Fixed the folder tree scrolling to the wrong position if both 
  Expand selected branch when changing tabs and 
  Position selected item in the middle of the tree were enabled 
  at once.
  
   - Changing the advanced no_folder_cd_thumbs or 
  cd_thumb_coverart_file settings now clears any cached folder 
  thumbnails and does a refresh immediately.
  
   - Buttons can now use things like @ifpath:/trash to make 
  commands conditional on being in virtual folders like Recycle Bin.
  
   - Using the Favorites FILTER argument no longer filters out 
  separators from the Favorites list (other than to remove double separators 
  where everything between them was filtered out).
  
   - Fixed a cosmetic issue with the Backup & Restore dialog at 
  125% DPI scaling.
  
   - The option to specify a single image (via name or wildcard) for folder 
  thumbnails can now be used to allow up to 4 images per folder thumbnail that 
  match the wildcard.
  
   - When dragging attachments from Outlook to an Opus Lister, Opus now detects 
  the special 1/1/4501 timestamp that Outlook uses for some reason, and 
  substitutes the current date and time instead.
  
   - If you turn on the Lister's Copy or Delete filter and 
  then run a command which explicitly specifies a filter, the command will now 
  use the filter it specifies without prompting. (Normal commands which don't 
  specify a filter will still prompt you to choose or define one.)
  
   - If a copy/move operation uses a custom queue name this is now shown in the 
  title bar of the progress dialog as described in the manual.
  
   - Fixed misdetection of mixed DPI mode in some situations, which sometimes 
  meant transition animations were disabled when they would have worked 
  OK.
  
   - You can now have Favorites menus using large icons by turning on 
  the Large Image Size checkbox in the button which generates 
  the list (or for the whole toolbar).
  
   - Folder name localization is now only enabled on certain drives, to prevent 
  problems with Google Drive File Stream.
  
   - Possible fix for a crash encountered by a user (https://resource.dopus.com/t/finding-error-cause/35738).
  
   - Fixed background not rendering correctly if you had an auto-hide docked 
  toolbar with a stretched background.
  
   - Fixed find by a specific file type not working properly in the simple Find 
  mode.
  
   - The Preferences / File Displays / Mouse / Allow drag and drop into 
  sub-folders option now applies when dragging over files (e.g. 
  archives, executables) as well as folders.
  
   - When opening PowerShell via the CLI command, you can 
  now use the new EXEC and TITLE arguments to 
  specify the PowerShell executable to use (e.g. if you want PowerShell 7 
  instead of Windows PowerShell) and the window titlebar.
  
   - Added mitigation for problems caused if someone/something created a file 
  named backup in 
  /dopusdata/UserCommands.
  
   - Fixed icons in some dialogs getting clipped slightly at 125% DPI 
  scaling.
  
   - Made some changes to hopefully prevent files sometimes being deselected 
  when they are modified by the Image Conversion command.
  
   - The GetSizes progress dialog now enables the Skip 
  button, allowing the current folder to be skipped but the rest of the 
  calculation to continue.
 
Listview controls in script dialogs can now have their items displayed in 
groups:
  - The Control object has new methods for managing 
  groups:
  
  
    - AddGroup(name, id, flags) - id must be numeric, 1 or 
    greater. flags "c" - collapsible, "d" - collapsed. 
    
 - RemoveGroup(id) - remove group 
    
 - GetGroupById(id) - returns a 
    DialogListGroup object 
    
 - EnableGroupView(fEnable) - enable/disable group 
    view
 
   - The DialogListItem object has new group 
  property; returns or sets group ID the item is in.
  
   - New DialogListGroup object, returned by 
  Control.GetGroupById method.
  
  
    - Has properties: id, name, 
    expanded 
 
 
Script dialogs can now offer drag and drop of files using the new 
Dialog.Drag method. 
  - Drag can be initiated either from a static control or a listview control. 
  The new Drag Source property must be set to 
  True on the control.
  
   - When the user initiates a drag, you'll receive a drag 
  event. The value property indicates whether it's left or 
  right button.
  
   - If you want to allow a drag and drop, call the 
  Dialog.Drag method in response. The first parameter provides 
  the files to be dragged (same as can be passed to 
  DOpus.SetClip). The optional second parameter provides 
  allowable actions for the drag - copy, move, 
  link as a comma-separated string. The default is 
  copy if not specified. You can also specify the default 
  action by prefixing with a * (e.g. 
  copy,*move,link to allow all three but make 
  move the default).
  
   - Return value of the Drag method indicates the result of 
  the drag - copy, move or 
  link for a left button drag, drop for a 
  right button drag, and cancel if the drag was aborted. 
 
 
Other scripting changes:
  - The bg and fg properties for the 
  Control object now work for listview controls as 
  well.
  
   - Added Control.textbg property for listview controls to 
  set the text background color.
  
   - The DialogListItem script object now supports 
  fg, bg, and style 
  properties, allowing text and background color, and text styles, to be set on 
  a per-item basis.
  
   - The DialogListItem object has a new 
  disabled property that lets listview items be individually 
  disabled. When disabled, they're not able to be selected, right-clicked or 
  double-clicked.
  
   - Added the want_close property for the script 
  Dialog object. If set to true, clicking the close button on a 
  script dialog will generate a close event. It's up to the 
  script to close the dialog using the EndDlg() method.
   - Added rotate property to the Control 
  script object (for static controls set to image mode). This allows the script 
  to rotate the displayed image.
  
   - Added protection against a crash that could be caused by having lots of 
  tabs opening at once with a script that implements the 
  OnBeforeFolderChange event. 
  
   - Script columns displayed in Listers now update their headings/names if the 
  script is edited or calls Script.InitColumns or 
  Script.RefreshColumn.
  
   - Scripts generated by the Create New Script dialog now escape or 
  replace quotes, backslashes and other special or invalid code or path 
  characters typed into the dialog.
   - Documented the refreshsub action for the 
  OnBeforeFolderChange and OnAfterFolderChange 
  script events.
   - The Command.AddFilesFromClipboard script method now works 
  better when the clipboard files came from a library.
  
   - The Item.filegroup script property now works correctly in 
  script functions run from a context menu.
   - Added Dialog.WatchTab script method. Allows a (detached) 
  script dialog to receive various notifications about a folder tab (file 
  selection, file changes, etc).
   - Script dialogs shown as a checkbox list (using 
  Dialog.choices) are now themed and resizable.
   - Improved autosizing of script dialog listview columns.
  
   - Added Report Clicks property for static controls in 
  script dialogs. With this turned on, static controls will report 
  click, dblclk and rclick 
  events when clicked.
  
   - Added UnorderedSet script object. Similar to a string set 
  except it can store any type of data, and doesn't sort the values you add to 
  it.
  
   - Added script Vector.unique method to remove duplicate 
  values from a Vector.
  
   - Script add-ins can now load data like images from a sub-folder in the 
  script add-ins directory. The sub-folder must have the same name as the script 
  itself (without the file extension). This might be useful while a script is 
  under development, before you package it as a script package for 
  distribution.
  
   - The script dialog editor now shows checkboxes in list mode listviews in 
  the same location as the real dialog displayed them (top-left rather than 
  centered).
  
   - The Vector script object can now be indexed in JScript 
  using [] as well as () (e.g. 
  vector[5]).
  
   - The Vector.assign method can now accept a JScript array 
  to copy the contents to an Opus Vector object.
  
   - The DOpus.Create.Vector factory method can now accept 
  another Vector or JScript array to initialise the new array 
  from (equivalent to creating the Vector and then calling the 
  assign method).
   - Small change to the way the Script global script object 
  is initialized, to hopefully make it accessible from python scripts.
  
   - The scripting StringTools object's 
  Encode and Decode methods can now convert to 
  and from raw UTF-16 data, including support for both Big Endian and Little 
  Endian, and optional Byte Order Marks.
 
 
The following changes are new to 12.21:
  - Fixed minor issue with full-width spacers on docked, auto-hide toolbars 
  with stretched background images.
   - The DialogListItem.disabled script property didn't work 
  for reading the disabled state in all cases.
  
   - The DialogListItem.checked script property only returned 
  true or false, rather than the correct numeric value.
  
   - The DialogListItem.group script property now works 
  properly to assign a list view item to a group.