# UnifiedFiler v1.8 Notes

v1.8 focuses on real browser-only Google Drive integration while keeping UnifiedFiler as an embeddable AMD package.

## Main changes

- `scripts/adapters/GoogleDriveAdapter.js`
  - No longer depends on `MemoryGoogleDriveService` or mock Drive storage.
  - Uses client-side OAuth and Drive API services by default.
  - Supports list, search, read/download/export, write/upload, folder creation, rename, trash/delete, copy, move, save and Picker open operations.

- `scripts/services/GoogleIdentityAuthService.js`
  - Loads Google Identity Services in the browser.
  - Creates an OAuth token client from Host/demo parameters.
  - Caches the current access token in memory and exposes `connect()`, `authorize()`, `getAccessToken()`, `disconnect()` and `revoke()`.

- `scripts/services/GoogleDriveApiService.js`
  - Calls Google Drive API v3 directly with `fetch` and OAuth bearer tokens.
  - Uses multipart upload for new file creation and update.
  - Resolves display paths to Drive folder IDs without a custom server.
  - Exports Google Workspace native files to common formats before download.

- `scripts/services/GoogleDrivePickerService.js`
  - Loads Google Picker from the browser.
  - Opens a real file picker using the current OAuth token and API key.

- `scripts/utils/GoogleDriveMimeMap.js`
  - Centralizes Google Workspace MIME handling and UnifiedFiler entry conversion.

- `demo/google-drive.html`
  - Adds a dedicated Google Drive parameter demo.
  - Allows API Key, OAuth Client ID, App ID, scopes, Picker usage and shared-drive handling to be specified from the demo screen.
  - Demonstrates Host-style parameter injection and component rebuild.

## Important behavior

UnifiedFiler remains frontend-only for Google Drive in v1.8. It does not require a proprietary backend proxy. The Host or demo supplies Google Cloud parameters such as OAuth Client ID and API key, and the browser performs OAuth authorization and Drive API calls directly.

For safety, `deleteMode` defaults to `trash`; permanent delete can be enabled by passing `deleteMode: 'delete'` to `GoogleDriveAdapter`.

## Google Drive configuration example

```javascript
var googleDriveAdapter = new UnifiedFiler.adapters.GoogleDriveAdapter({
    id: 'googleDrive',
    label: 'Google Drive',
    clientId: '<OAuth Client ID>',
    apiKey: '<API Key>',
    appId: '<Google App ID>',
    scopes: ['https://www.googleapis.com/auth/drive.file'],
    enablePicker: true,
    supportsAllDrives: true,
    includeItemsFromAllDrives: true
});

registry.register(googleDriveAdapter);
```

## Removed from v1.8 package body

- `scripts/services/MemoryGoogleDriveService.js`

The previous memory-based Drive replacement was useful for early adapter tests, but it was removed because the package should now represent real Google Drive behavior.
