# 変更履歴

{% hint style="info" %}
更新：Eagle 4.0 Build12 は正式にリリースされました。本ページで「Eagle 4.0 Build12+」と記載された機能は利用可能です。 旧バージョンをご利用の場合は 4.0 build12 以降へアップデートしてください。
{% endhint %}

## 2026年3月24日

### 📄 Item API 強化

**新機能：コメント CRUD API (Eagle 4.0 build22+)**

{% hint style="danger" %}
**バージョン要件**：この機能には Eagle 4.0 build22 以降が必要です。
{% endhint %}

* [`item.comments`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#comments-object) 読み取り専用プロパティを追加、アイテムのコメント/アノテーションにアクセス
* [`item.addComment(commentData)`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#add-comment) メソッドを追加、画像矩形コメントまたは動画タイムスタンプコメントを追加
* [`item.updateComment(commentId, updateData)`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#update-comment) メソッドを追加、既存のコメントを更新
* [`item.removeComment(commentId)`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#remove-comment) メソッドを追加、コメントを削除

```javascript
let item = await eagle.item.getById('item_id');

// コメントを読み取る
console.log(item.comments);

// 画像矩形コメントを追加
await item.addComment({ x: 350, y: 480, width: 380, height: 400, annotation: "顔の領域" });

// 動画タイムスタンプコメントを追加
await item.addComment({ duration: 65.5, annotation: "重要なシーン" });

// コメントを更新
await item.updateComment('comment_id', { annotation: "更新されたテキスト" });

// コメントを削除
await item.removeComment('comment_id');
```

### 📁 Smart Folder API

**新機能：スマートフォルダ CRUD API (Eagle 4.0 build22+)**

{% hint style="danger" %}
**バージョン要件**：この機能には Eagle 4.0 build22 以降が必要です。
{% endhint %}

* [`eagle.smartFolder`](https://developer.eagle.cool/plugin-api/ja-jp/api/smart-folder) モジュールを追加、スマートフォルダの完全な管理をサポート
* `create()`、`get()`、`getAll()`、`getById()`、`getByIds()`、`remove()` メソッドを追加
* `getRules()` メソッドを追加、利用可能なフィルタルールスキーマを取得
* `rule()` フルエントビルダーと `Condition.create()` ヘルパーを追加
* SmartFolder インスタンスが `save()` と `getItems()` メソッドをサポート

```javascript
// フルエントビルダーを使用
const sf = await eagle.smartFolder.create({
    name: '大きな画像',
    conditions: [
        eagle.smartFolder.Condition.create('AND', [
            eagle.smartFolder.rule('width')['>']([1920]),
            eagle.smartFolder.rule('type').equal('png'),
        ])
    ]
});

// ルールスキーマを取得
const rules = await eagle.smartFolder.getRules();

// 条件に一致するアイテムを取得
const items = await sf.getItems();
```

### 🔧 Manifest 設定の強化

**新機能：followCursor ウィンドウ配置 (Eagle 4.0 build22+)**

{% hint style="danger" %}
**バージョン要件**：この機能には Eagle 4.0 build22 以降が必要です。
{% endhint %}

* `followCursor` manifest 設定を追加 — 有効にすると、ウィンドウがカーソルの近くに自動配置されます
* 素早いインタラクションが必要なツール型プラグインに最適で、ユーザーが最短距離で操作できます
* 有効時はウィンドウの位置を記憶せず、開くたびにカーソルに追従します

```json
{
    "main": {
        "followCursor": true
    }
}
```

## 2026年1月22日

### 💻 App API 強化

**新機能：メインウィンドウを表示 (Eagle 4.0 build18+)**

{% hint style="danger" %}
**バージョン要件**：この機能には Eagle 4.0 build18 以降が必要です。
{% endhint %}

* [`eagle.app.show()`](https://developer.eagle.cool/plugin-api/ja-jp/api/app#show) メソッドを追加、プラグインから Eagle メインアプリケーションウィンドウを前面に表示させることが可能

```javascript
// Eagle メインウィンドウを前面に表示
await eagle.app.show();
```

### 📄 Item API 強化

**新機能：インポート時間の変更 (Eagle 4.0 build18+)**

{% hint style="danger" %}
**バージョン要件**：この機能には Eagle 4.0 build18 以降が必要です。
{% endhint %}

* [`item.importedAt`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#importedat-interger) プロパティが変更可能になり、プラグインでファイルのインポート時間をカスタマイズ可能
* 履歴ファイルの一括インポート、データ移行など、元のタイムスタンプを保持する必要があるシナリオに最適

```javascript
// インポート時間を変更
item.importedAt = new Date('2024-01-01').getTime();
await item.save();
```

## 2026年1月9日

### 🔍 AI Search セマンティック検索 API

**新機能：AI セマンティック検索統合 (Eagle 4.0 build18+)**

* [`eagle.extraModule.aiSearch`](https://developer.eagle.cool/plugin-api/ja-jp/extra-module/ai-search) モジュールを追加、AI セマンティック検索機能を提供
* **ステータス確認メソッド**：
  * `isInstalled()` - AI Search プラグインがインストールされているか確認
  * `isReady()` - サービスが準備完了か確認
  * `isStarting()` - サービスが起動中か確認
  * `isSyncing()` - データ同期中か確認
* **サービス制御メソッド**：
  * `open()` - AI Search プラグインを開く
  * `checkServiceHealth()` - サービスの健全性を確認
  * `getSyncStatus()` - 詳細な同期ステータスを取得
* **検索メソッド**：
  * `searchByText(query, options)` - テキストセマンティック検索
  * `searchByBase64(base64, options)` - Base64 画像検索
  * `searchByItemId(itemId, options)` - アイテム ID で類似画像を検索

```javascript
const aiSearch = eagle.extraModule.aiSearch;

// サービスステータスを確認
if (await aiSearch.isReady()) {
    // テキストセマンティック検索
    const result = await aiSearch.searchByText('オレンジ色の猫', { limit: 10 });

    // 結果には完全な Item オブジェクトが含まれる
    result.results.forEach(r => {
        console.log(`${r.item.name} - 類似度: ${(r.score * 100).toFixed(1)}%`);
    });
}
```

## 2026年1月8日

### 🏷️ TagGroup/Tag API 増分操作メソッド

**新機能：タググループ増分操作 (Eagle 4.0 build18+)**

* [`tagGroup.addTags()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag-group#addtags) - 完全なタグ配列を渡さずにグループにタグを増分で追加または移動
* [`tagGroup.removeTags()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag-group#removetags) - グループから指定したタグを削除
* [`eagle.tag.merge()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag#merge) - ソースタグをターゲットタグに名前変更してタグをマージ

```javascript
// グループにタグを追加
await tagGroup.addTags({ tags: ['UI', 'UX'] });

// タグを移動（元のグループから削除）
await tagGroup.addTags({ tags: ['Branding'], removeFromSource: true });

// グループからタグを削除
await tagGroup.removeTags({ tags: ['Outdated'] });

// タグをマージ
const result = await eagle.tag.merge({ source: 'UI Design', target: 'UI' });
```

### 🏷️ TagGroup API 強化

**新機能：タググループ説明プロパティ (Eagle 4.0 build18+)**

* [`tagGroup`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag-group) に `description` プロパティを追加、タググループに説明文を追加可能
* `create()` と `save()` メソッドで説明の設定をサポート

```javascript
// 説明付きのタググループを作成
await eagle.tagGroup.create({
    name: "new group",
    description: "グループの説明"
});

// タググループの説明を変更
tagGroup.description = "新しい説明";
await tagGroup.save();
```

## 2026年1月6日

### 🏷️ Tag API 強化

**新機能：お気に入りタグの取得 (Eagle 4.0 build18+)**

* [`eagle.tag.getStarredTags()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag#starred) メソッドを追加、ユーザーがスターを付けたタグを取得

```javascript
const starred = await eagle.tag.getStarredTags();
```

**ドキュメント修正**

* APIメソッド名の誤りを修正：`getRecents()` → [`getRecentTags()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag#dwsxw)

## 2025年8月21日

### 💻 App API 強化

**新機能：app.userDataPath プロパティ (Eagle 4.0 build12+)**

* [`app.userDataPath`](https://developer.eagle.cool/plugin-api/ja-jp/api/app#ud9km) プロパティを追加、現在のユーザーデータディレクトリのパスを返します
* Eagleのユーザーデータ保存場所への迅速なアクセスを提供

```javascript
console.log(eagle.app.userDataPath);
// "C:\Users\User\AppData\Roaming\Eagle"
```

## 2025年8月19日

### 📁 Folder API 強化

**新機能：フォルダ parent プロパティが変更可能に (Eagle 4.0 build12+)**

* [`folder.parent`](https://developer.eagle.cool/plugin-api/ja-jp/api/folder#woenk) プロパティの変更サポートを追加、フォルダ階層の動的調整が可能
* フォルダを異なる親ディレクトリやルートディレクトリに移動することをサポート

```javascript
// 別の親フォルダに移動
folder.parent = 'parent_folder_id';
await folder.save();

// ルートディレクトリに移動  
folder.parent = null;
await folder.save();
```

**新機能：フォルダ iconColor プロパティが変更可能に (Eagle 4.0 build12+)**

* [`folder.iconColor`](https://developer.eagle.cool/plugin-api/ja-jp/api/folder#woenk) プロパティを読み取り専用から変更可能に変更
* [`eagle.folder.IconColor`](https://developer.eagle.cool/plugin-api/ja-jp/api/folder#static-properties) 静的定数オブジェクトを追加、事前定義された色オプションを提供
* サポートされる色：Red、Orange、Yellow、Green、Aqua、Blue、Purple、Pink

```javascript
folder.iconColor = eagle.folder.IconColor.Blue;
await folder.save();
```

## 2025年8月13日

### 🏷️ Tag API 機能拡張

**新機能：タグフィルタリングとTag クラス強化**

* [`eagle.tag.get()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag#x9nu2) メソッドに `name` パラメータを追加、タグ名による曖昧検索をサポート
* Tag インスタンスに [`save()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag#instance-methods) メソッドを追加、タグ名の変更をサポート
* Tag インスタンスプロパティを追加：[`name`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag#instance-properties)（変更可能）、`count`、`color`、`groups`、`pinyin`

```javascript
// タグをフィルタリング
const filteredTags = await eagle.tag.get({ name: "design" });

// タグ名を変更  
tag.name = 'new-name';
await tag.save();
```

⚠️ **注意：タグ名を変更すると、そのタグを使用しているすべてのファイルが自動的に更新されます**

## 2025年8月5日

### 📄 Item API パフォーマンスと選択機能の大幅強化

**新機能：パフォーマンス最適化**

* [`eagle.item.get()`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#bdcw2) に `fields` パラメータを追加、選択的フィールド返却をサポートし、クエリパフォーマンスを大幅改善
* [`eagle.item.getIdsWithModifiedAt()`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#getidswithmodifiedat) メソッドを追加、増分同期用に最適化
* [`modifiedAt`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#woenk) プロパティを追加、ファイルの最終変更時刻を記録

```javascript
// 必要なフィールドのみを返却
let items = await eagle.item.get({
    tags: ["Design"],
    fields: ["id", "name", "tags", "modifiedAt"]
});

// 効率的な増分同期
let fileInfo = await eagle.item.getIdsWithModifiedAt();
```

**新機能：カウントと選択メソッド**

* [`eagle.item.count(options)`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#count) を追加 - 条件付きカウント
* [`eagle.item.countAll()`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#countall) を追加 - 総ファイル数
* [`eagle.item.countSelected()`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#countselected) を追加 - 選択中ファイル数
* [`eagle.item.select(itemIds)`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#select) を追加 - プログラム的ファイル選択

```javascript
let count = await eagle.item.count({ isSelected: true });
await eagle.item.select(['ITEM_ID_1', 'ITEM_ID_2']);
```

**機能強化：open() メソッド**

* [`eagle.item.open()`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#yxkul) に `window` オプションを追加、新しいウィンドウでファイルを開くことをサポート

```javascript
await eagle.item.open('item_id', { window: true });
```

## 2025年7月31日

### 🪟 Window API 拡張

**新機能：ウィンドウ幾何制御**

* [`eagle.window.getSize()`](https://developer.eagle.cool/plugin-api/ja-jp/api/window#mq0dz) を追加 - ウィンドウサイズを取得
* [`eagle.window.setBounds(bounds)`](https://developer.eagle.cool/plugin-api/ja-jp/api/window#setbounds-bounds) を追加 - ウィンドウ境界を設定（位置+サイズ）
* [`eagle.window.getBounds()`](https://developer.eagle.cool/plugin-api/ja-jp/api/window#getbounds) を追加 - ウィンドウ境界情報を取得

```javascript
await eagle.window.getSize();
await eagle.window.setBounds({ x: 440, y: 225, width: 800, height: 600 });
await eagle.window.getBounds();
```

## 2024年11月28日

### 🏷️ TagGroup CRUD操作

**新機能：完全なタググループ管理**

* [`eagle.tagGroup.create(options)`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag-group#x9nu2) を追加 - 新しいタググループを作成
* [`tagGroup.save()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag-group#x9nu2) を追加 - 変更を保存
* [`tagGroup.remove()`](https://developer.eagle.cool/plugin-api/ja-jp/api/tag-group#x9nu2) を追加 - タググループを削除

```javascript
// タググループを作成
await eagle.tagGroup.create({
    name: "new group",
    color: "red", 
    tags: ["tag1", "tag2"]
});

// 変更と保存
tagGroup.name = "new name";
await tagGroup.save();

// グループを削除
await tagGroup.remove();
```

### 🗑️ Item 削除機能

**新機能：ファイルゴミ箱操作**

* [`item.moveToTrash()`](https://developer.eagle.cool/plugin-api/ja-jp/api/item#movetotrash) インスタンスメソッドを追加、ファイルをシステムゴミ箱に移動

```javascript
let item = await eagle.item.getById('item_id');
await item.moveToTrash();
```

## 2024年7月25日

### 🪟 Window API 強化

**新機能：HTTP Referer 設定**

* [`eagle.window.setReferer(url)`](https://developer.eagle.cool/plugin-api/ja-jp/api/window#4a6f) メソッドを追加、後続のネットワークリクエストにrefererヘッダーを設定

```javascript
eagle.window.setReferer("https://example.com");
```

## 2024年5月10日

### 🖱️ Context Menu API

**新機能：カスタムコンテキストメニュー**

* [`eagle.contextMenu.open()`](https://developer.eagle.cool/plugin-api/ja-jp/api/context-menu#tkp0d) メソッドを追加、カスタムコンテキストメニューをサポート
* 多層サブメニュー、カスタムクリックイベント、システムネイティブスタイルをサポート

```javascript
eagle.contextMenu.open([
    {
        id: "edit",
        label: "編集",
        submenu: [...],
        click: () => { ... }
    }
]);
```

### 🪟 Window API スクリーンショット機能

**新機能：ページスクリーンショット**

* [`eagle.window.capturePage(rect)`](https://developer.eagle.cool/plugin-api/ja-jp/api/window#yvfx9) メソッドを追加、フルページまたは指定領域のスクリーンショットをサポート
* NativeImageオブジェクトを返却、base64またはPNGバッファに変換可能

```javascript
// フルページスクリーンショット
const image = await eagle.window.capturePage();

// 指定領域スクリーンショット
const image2 = await eagle.window.capturePage({ 
    x: 0, y: 0, width: 100, height: 50 
});
```

## 2024年4月17日

### 🔍 プレビュープラグイン機能強化

**新機能：ズーム制御パラメータ**

* プレビュープラグイン設定に [`allowZoom`](https://developer.eagle.cool/plugin-api/ja-jp/get-started/plugin-types/preview) パラメータを追加、ユーザーがプレビューコンテンツをズームできるかどうかを制御

```json
"thumbnail": {
    "path": "thumbnail/icns.js",
    "size": 400,
    "allowZoom": false
}
```
