# UnifiedFiler v1.9.9-fix2 Notes

## Create Type Extension Interface

v1.9.9-fix2 adds a Host-facing create-type extension interface for the FileExplorer **New** menu.

The older `newMenuItems` option is still supported, but new integrations should prefer the Control API:

```javascript
var control = new UnifiedFiler.controls.FileExplorerControl('#explorer', options);
control.mount();

control.registerCreateType({
    id: 'dokuwiki-page',
    kind: 'file',
    label: 'DokuWiki Page',
    defaultName: 'new-page.txt',
    mimeType: 'text/plain',
    content: '====== New Page ======\n\n'
});

control.exec('createItem', { typeId: 'dokuwiki-page' });
```

## Added modules and APIs

- Added `scripts/services/CreateTypeRegistry.js`.
- Added `UnifiedFiler.services.CreateTypeRegistry` export.
- Added `FileExplorerControl.registerCreateType(type)`.
- Added `FileExplorerControl.registerCreateTypes(types)`.
- Added `FileExplorerControl.unregisterCreateType(typeId)`.
- Added `FileExplorerControl.getCreateType(typeId)`.
- Added `FileExplorerControl.getCreateTypes(context)`.
- Added `FileExplorerControl.createItem(typeId, options)`.
- Added `createItem` command to `DefaultFileCommands`.

## Create type definition

A create type can define either a folder or file creation behavior.

```javascript
{
    id: 'office-doc',
    kind: 'file',
    label: 'Office Document',
    iconClass: 'fa-file-word-o',
    defaultName: 'document.udocx',
    mimeType: 'application/vnd.itoolkits.office-doc',
    order: 300,
    content: function (context) {
        return JSON.stringify({ manifest: { type: 'office-doc' } }, null, 2);
    }
}
```

For advanced Hosts, a type can provide `create(context)` and return a descriptor:

```javascript
{
    id: 'package',
    kind: 'file',
    label: 'Package',
    defaultName: 'new-package.uwpsx',
    create: function (context) {
        return Promise.resolve({
            name: context.name,
            mimeType: 'application/vnd.itoolkits.package+zip',
            content: buildPackageContent(context)
        });
    }
}
```

The internal FileExplorerView still owns the jQuery View/Controller UI, but the New menu is now fed by the Control-owned `CreateTypeRegistry`.
