# UnifiedFiler v1.9.6 Notes

## Purpose

v1.9.6 continues the Control Architecture work by splitting the large internal `FileExplorerView` into smaller View/Controller components. The design remains consistent with the current UnifiedFiler model: Host systems use Control classes, while Controls own internal jQuery-based Views.

## New internal View components

The following modules were added under `scripts/views/`:

- `FileToolbarView.js`
- `FileTreeView.js`
- `FileItemsView.js`
- `FilePreviewPaneView.js`
- `FileMetadataPaneView.js`
- `FileContextMenuView.js`

`FileExplorerView.js` remains the composition root for the internal UI system and delegates rendering responsibilities to these View components.

## StateStore-centered preparation

`FileExplorerControl` now passes its `StateStore` and `EventBus` to the internal view layer using:

```javascript
pluginOptions.controlStateStore = this.stateStore;
pluginOptions.controlEventBus = this.eventBus;
```

`FileExplorerView` now includes `_publishState(reason, patch)`, allowing View updates to publish UI snapshots into the shared StateStore. This is a compatibility-safe step toward a StateStore-centered refresh model.

## Compatibility

The public plugin names are unchanged:

```javascript
$.fn.fileExplorer
$.fn.filePickerDialog
$.fn.fileSaverDialog
```

Host systems should continue to use `FileExplorerControl`, `FilePickerControl`, and `FileSaverControl` as the preferred public APIs.

## Validation

- All JavaScript files were checked with `node --check`.
- The final ZIP was checked with `unzip -t`.
