# Directory Opus 13.17

**URL:** https://resource.dopus.com/t/directory-opus-13-17/56574
**Category:** New Releases
**Tags:** stable-release
**Created:** [July 23, 2025, 2:16am UTC](https://resource.dopus.com/t/directory-opus-13-17/56574 "2025-07-23T02:16:21Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![Jon](https://resource.dopus.com/user_avatar/resource.dopus.com/jon/32/12713_2.png) [@Jon](https://resource.dopus.com/u/Jon)
#### Post date: [July 23, 2025, 2:16am UTC](https://resource.dopus.com/t/directory-opus-13-17/56574/1 "2025-07-23T02:16:21Z")

</div>

Directory Opus 13.17

[📥 Download manually](https://www.gpsoft.com.au/download/release), or use **Help \> Check for Program Updates**.

The following is a summary of new features and other significant changes from 13.16.

See the [New Releases](https://resource.dopus.com/c/new-releases/28) forum for detailed release notes for the various beta versions from 13.16.1 onwards.

### Compatibility

- Fixed problem with PowerToys Command Palette causing Opus to open a window for a folder called "The Internet" (but showing the content of the desktop), if Explorer Replacement was switched into "for all folders" mode.

### Task Manager

The new Task Manager window displays a list of various types of running Opus tasks. Three task groups are shown currently - scripts, evaluator and background tasks. Currently background tasks only include thumbnail and metadata threads, but more background tasks may be added in the future.

The Task Manager shows each task's state and how much runtime has elapsed in total since it was started. You can cancel individual script and evaluator tasks, and can also activate an emergency "disable" flag for both types.

To access the Task Manager, use the command `Help TASKMANAGER`. This has been added to the default Help menu - reset the _Operations_ toolbar to factory defaults to get this command automatically. It also has a default hotkey assigned - Ctrl+Shift+F1.

### File Types

- Added a _ **Cloud item** _ entry to the File Types dialog, under the _Directory Opus File Types_ category. This is now responsible for adding the _"Always keep on this device"_ and _"Free up space"_ context menu commands for cloud storage files, and means you can remove them if unneeded.

- Improvements for File Types dialog with file extensions that don't have "proper" entries in the registry, but instead are only assigned via the _"Open With"_ system.

- On startup, Opus no longer "repairs" the .Zip file type events (Opus-specific events for double-click, double-click + shift, etc.).

### Favorites

- The Favorites system now allows files to be added to the list as well as folders.

### Preferences

- Added two new options in **Internet / Updates** :

- **Internet / Updates** now always allows you to turn off checks for new betas. If a beta is currently installed and beta updates are turned off, a note will appear informing you that the beta updates will still be detected until a stable release has been installed. There's also a link to easily revert to the previous stable release.

- Added **Folder Tabs / Options / Per-tab format lock** option. When turned on, the format lock only applies to the tab that's visible when it's turned on - the lock state won't carry over to other tabs.

- The **Frequently Used Paths / SmartFavorites** page now has a folder exclusion list, which lets you configure folders or wildcard patterns to exclude specific folders from the SmartFavorites system.

- Moved the SmartFavorites points configuration to its own page.

- Added **Miscellaneous / Advanced: [Limits] hotkey\_sequence\_time** option, which lets you change the default 5000ms timeout between keypresses when using multi-key hotkey sequences.

- Added **Folder Tree / Sorting** Preferences page. It contains a few options related to sorting the folder tree.

- Improved Preferences search for Chinese IMEs.

- When Opus starts up it now runs a background task that automatically builds the Preferences search index if it's out of date. This means your first Preferences search after an upgrade shouldn't be noticeably slower than subsequent ones (unless you try to do it in the first 10 seconds or so after startup). This can be turned off via **Preferences / Miscellaneous / Advanced: [Behavior] prefs\_prebuild\_search\_index** if desired.

### Other Changes

- In file collections a new column, _Date Added_, is available. This displays the date/time that each item was added to the collection. Note that existing collections do not contain this information so the column will not display data for any files added to collections by earlier versions.

- The markup text code `<#>` for setting text/background color now accepts the "fill" keyword to make it fill the entire area rather than just the area behind the text. For example, `<#ffffff #aa0000 fill>...</#>` in the status bar would fill the entire status bar part with red.

### Commands

- Added "Select Random Item" command to the default **Edit \> Select Other** menu.

- `Go FOLDERCONTENT`, `BACKLIST`, `FORWARDLIST` and `HISTORYLIST` now support a `maxwidth` parameter to limit the width of menus it produces. If a file or folder name is longer than the specified value, it will be truncated.

- Added new `Go FOLDERCONTENT` keyword `resolvedirlinks`. If this is specified, .lnk files are resolved to see if they point to folders and if so treated the same as folders (even when files would ordinarily be hidden). This means something like `Go FOLDERCONTENT=move,resolvedirlinks` will work with a folder full of directory shortcuts.

- You can now use embedded commands with `Go FOLDERCONTENT=move` etc. The commands will be added to each generated button following the instruction that actually performs the copy or move operation.

- When using an embedded command with `Go FOLDERCONTENT` the chosen target path is now available as a variable called `targetpath`. It can be accessed in the embedded function as `{$targetpath}`.

- Added `Show VIEWCMD=nextrandom` to make the standalone viewer jump to a random image in the list (without needing to be in slideshow mode).

- Several changes for the `Select` command:

- "Clear the filter automatically when changing folders" can now be overridden both ways when refreshing a folder via `Go REFRESH=filterkeep` and `Go REFRESH=filterclear`.

- The `Favorites` command has a new `TYPE` argument which lets the generated favorites list in toolbars/menus exclude files or folders.

- Added `@clearoutput` directive to clear the script log from a function.

- Added `@requires` command modifier. Allows a function's requirements (e.g. source path, selected files) to be specified explicitly, if needed.

- In "Command" mode the FAYT field now has a pin button which lets you pin it open and prevent it from disappearing when it loses focus. This lets you run a command and then edit the command line to run it again. You can toggle the pin from the keyboard with Ctrl+Shift+Page Down and Ctrl+Shift+Page Up.

### Evaluator

- Added _for_ and _while_ loops (plus `break`/`continue` keywords) to the evaluator. The syntax is the same as C/C++/Javascript, e.g. `for (a = 0; a < 10; a++) { ... }`. The body of the loop must be enclosed in `{...}` braces.

- Added `ListerCount` value for evaluator `SysInfo()` function - returns the current number of open Listers.

- In the Rename dialog, an evaluator insertion clause can now call (or return the result of) the `Cancel()` function in order to skip the current file.

- Evaluator groups can now use markup in their headers. To use this, the group must return a value collection from the evaluator clause, with the marked up string assigned to a variable called `markup`. The `name` variable must also be present to provide the non-marked up name as before.

- The evaluator `Output()` function now accepts an optional second parameter; if set to true, the output log will be cleared before the text is printed.

- Added `EscapeWild` evaluator function.

### Scripting

- The `FSUtil.Hash` method can now operate asynchronously and return its result to a dialog's message loop. To use this, pass the `Dlg` object as the third argument to the `Hash` method. The `Hash` method will return an ID number for the request, and your message loop will receive a "hash" message when the result is ready. The `Msg.data` value provides the ID and the `Msg.object` value provides the hash (either as a string, or a vector for more than one hash type).

- Added `Path.GetDrive` method. Returns a `Drive` object for the path (or `false` if path doesn't refer to a drive letter).

- Added `Drive.ssd` property. Returns `true` if drive can be identified as solid state.

- Added `ListerCount` property to `SysInfo` object - returns the current number of open Listers.

- Added `Control.GetItemRect()` method. Returns a `Rect` object containing the position of the specified item or subitem. Works with listview, listbox and tab controls. The first argument is the item's index; for listviews in details mode, a second argument providing the subitem's index can optionally be provided. The rectangle is returned in client coordinates relative to the control; you can use the `Control.ClientToScreen()` method to convert to screen coordinates if needed.

- The `Dialog.SetTimer` method has a new "One Shot" parameter which automatically kills the timer the first time it fires (the script can then set the timer again in response if it wishes). Can be used to avoid problems with asynchronous timer events.

- The `Tab` object has a new `unresolved` property which provides unresolved versions of all the various Item collections (e.g. `all`, `selected`). Mostly useful with file collections which normally return the resolved path - accessing through the unresolved objects will return the native `coll://` paths instead.

- The `Metadata` object has a new `special` property which provides a collection of any folder-specific properties. For example, in file collections you can access the `dateadded` property this way to see when an item was added to the collection.

- Listviews in script dialogs now send a "key" message when a key is pressed and the listview has focus. The `Msg.data` property provides the virtual key code of the key pressed, and `Msg.value` provides the name of the key in text form. Virtual key codes are listed here: [Virtual-Key Codes (Winuser.h) - Win32 apps | Microsoft Learn](https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes)

- Scripts that wish to show their own configuration UI can now easily integrate it into the Script Management dialog (so that it's accessible via the normal script config button). There are two ways to do this:

- Opus script objects now support the `hasOwnProperty()` method to check for the existence of a property by name.

- The `Vars.Set` method will now fail if you try to store a non-Opus object (e.g. a JScript array) in a variable. Language-specific objects are associated with the particular instance of the script engine that creates them and can't survive once the script stops running. To persist non-Opus objects in Opus variables you can serialize them (e.g. by converting them to JSON strings).

---

_[View the full topic](https://resource.dopus.com/t/directory-opus-13-17/56574)._
