=== 24/7自動営業マン生成プラグイン ===
Contributors: yujioshita
Tags: presentation, slides, sales, speech synthesis, interactive
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.0
Stable tag: 5.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

インタラクティブなプレゼンテーションをWordPressで作成・公開。音声読み上げ付きスライド、分岐選択、CTA連携。

== Description ==

営業活動のためのインタラクティブプレゼンテーションをWordPress上で作成・公開するプラグインです。

= 主な機能 =

* スライド画像とナレーション原稿を管理画面から簡単登録
* Web Speech API による自動音声読み上げ
* MP3ナレーションのアップロード対応
* 分岐選択肢で閲覧者に合わせたルート誘導
* CTA（行動喚起）ボタンの設置
* ライブエディタ（再生しながらナレーション・分岐・CTAをリアルタイム編集、自動保存）
* WordPress内蔵アナリティクス（スライド到達率、滞在時間、CTA・分岐分析、Sankey遷移フロー図）
* GA4カスタムイベントによる視聴行動分析
* パスワード/トークンによる限定公開
* OGPメタタグの自動出力
* PC・スマホ・タブレット対応のレスポンシブデザイン

= 開発について =

このプラグインは [Claude Code](https://claude.ai/claude-code)（Anthropic社のAIコーディングツール）を用いて開発されました。

= ライセンスについて =

このプラグインは **GPL v2 or later**（GNU一般公衆利用許諾契約書 第2版以降）で公開されています。

簡単にまとめると：

* **自由に使えます** — 個人利用・商用利用を問わず、誰でも無料で自由に使用できます。
* **自由に改変できます** — ソースコードを自分の用途に合わせて改変できます。
* **改変版を公開する場合はコードも公開してください** — 改変した版を配布・公開する場合は、そのソースコードも同じGPLライセンスで公開する必要があります。
* **無保証です** — このプラグインは「現状のまま」提供されます。利用によって生じたいかなる損害についても、作者は一切の責任を負いません。

詳細は同梱の LICENSE ファイル、または https://www.gnu.org/licenses/gpl-2.0.html をご参照ください。

== Installation ==

1. `auto-salesman-247` フォルダを `/wp-content/plugins/` にアップロード
2. WordPress管理画面の「プラグイン」メニューからプラグインを有効化
3. 管理画面サイドバーに「プレゼンテーション」メニューが追加されます

== External Services ==

このプラグインは以下の外部サービスと連携します。いずれも管理者が明示的に設定した場合にのみ通信が発生します。

= Google Cloud Text-to-Speech API（任意） =

ナレーション原稿からMP3音声を自動生成する機能で使用します。

* エンドポイント: `https://texttospeech.googleapis.com/v1/text:synthesize`
* 送信データ: ナレーション原稿のテキスト、音声モデル設定
* 利用条件: 管理者が「プラグイン設定」でTTSエンジンに「Google Cloud TTS」を選択し、APIキーを入力した場合のみ
* ブラウザ内蔵の Web Speech API を代替として利用可能（外部通信なし）
* Google Cloud Platform 利用規約: https://cloud.google.com/terms
* Google Cloud プライバシーポリシー: https://cloud.google.com/terms/cloud-privacy-notice

= Google Analytics 4（任意） =

プレゼンテーションの視聴行動をGA4で分析する機能で使用します。

* エンドポイント: `https://www.googletagmanager.com/gtag/js`
* 送信データ: スライド閲覧、分岐選択、CTAクリック等のカスタムイベント
* 利用条件: 管理者が「プラグイン設定」でGA4測定IDを入力した場合のみ
* GA4を設定しなくてもWordPress内蔵アナリティクスで視聴データを分析可能
* Google アナリティクス利用規約: https://marketingplatform.google.com/about/analytics/terms/jp/
* Google プライバシーポリシー: https://policies.google.com/privacy

== Privacy ==

= 収集するデータ =

このプラグインはプレゼンテーションの視聴分析のため、以下のデータをWordPressデータベースに保存します：

* 視聴セッションID（ランダム生成、個人を特定しない匿名識別子）
* スライド閲覧履歴、滞在時間、分岐選択、CTAクリック
* トラッキングトークン（URLパラメータ `?ref=CODE` による流入経路識別）

= 収集しないデータ =

* IPアドレスはデータベースに保存しません（レート制限用の一時キャッシュのみ、60秒で自動削除）
* ユーザー名、メールアドレス等の個人情報は収集しません
* Cookie は、パスワード保護プレゼンの認証用にのみ使用します（24時間で失効、HttpOnly属性付き）

= データ保持と削除 =

* 管理者が「プラグイン設定」でデータ保持期間を設定可能（最短30日、デフォルト365日）
* WP-Cron による日次自動クリーンアップで、保持期間を超えたデータを自動削除
* WordPress「ツール」→「個人データのエクスポート/消去」に対応（GDPR準拠）

= アナリティクスの無効化 =

* 管理者は各プレゼンテーションの設定で内蔵アナリティクスを無効化できます
* GA4連携は測定IDを空にすることで無効化できます

== Changelog ==

= 5.3.0 =
品質・パフォーマンス・安全性の包括的改善。大規模プレゼン（100ページ超）での安定動作を大幅強化。

**データ保護**
* [新機能] 楽観的ロック（optimistic locking）を導入 — 管理画面エディタとライブエディタの同時編集による上書き事故を防止。競合検出時にアラート表示
* [改善] CSVの選択肢・CTA列でデリミタ文字（→, |）のエスケープ/アンエスケープを追加し、ラベルやURLに含まれる場合のデータ化けを防止

**パフォーマンス改善（管理画面）**
* [パフォーマンス] `updateBranchTargets()` を O(N²) → O(N) に最適化（スライドリストを1回だけ構築してキャッシュ）
* [パフォーマンス] `renderAllLazyPanels()` の不要な呼び出しを削減 — ソート・CSV書出・字幕一括切替でlazy パネルの強制レンダリングを回避
* [パフォーマンス] Sortable の二重初期化を防止（`ui-sortable` クラスチェック）
* [修正] Audio プレビュー時のメモリリークを修正（前のAudioオブジェクトを適切にクリーンアップ）

**フロントエンド（プレイヤー）改善**
* [修正] MP3再生時のAudioオブジェクトメモリリークを修正（スライド遷移時に前のAudioを適切に破棄）
* [改善] 画像プリロードの重複排除 + 同時プリロード数を最大4に制限
* [改善] 壊れた画像URLのフォールバック表示（onerror ハンドラ追加）
* [改善] 存在しない遷移先スライドへの分岐クリック時にコンソール警告を出力
* [改善] localStorage アクセスを try/catch で保護（プライベートブラウジング対応）
* [改善] モバイルタッチ最適化（`touch-action: manipulation` で300msタップ遅延を解消）

**アクセシビリティ**
* [改善] プレイヤーの全コントロールボタンに `aria-label` を追加
* [改善] コントロールバーに `role="toolbar"` を追加
* [改善] メインコンテナに `aria-label="プレゼンテーション操作"` を追加

**その他**
* [改善] CSS カスタムプロパティ（CSS変数）を導入し、プレイヤーのブランドカラーを一元管理
* [改善] TTS生成のファイルサイズ上限を50MBに設定（異常な長文による無限膨張を防止）

= 5.2.2 =
選択肢・自動遷移の操作性向上、ビジュアルエディタの大規模プレゼン対応パフォーマンス改善。

**新機能**
* [新機能] 選択肢の貼り付け時にも「自動遷移」チェックを自動的に外す機能を追加（addBranch と同等の動作）
* [新機能] 「選択肢ありスライドの自動遷移を一括OFF」ボタンを選択肢・CTA設定アコーディオンに追加
* [新機能] スライドヘッダーに「（選択肢あり・自動遷移オン）」警告表示を追加（畳んだ時に一目で状態矛盾を確認可能）
* [新機能] スライドタイトルを「ページ◯」に一括変更するボタンをツールバーに追加（PDF読込後のページ挿入時に便利）
* [新機能] ライブエディタに「読み上げを再生成」ボタンを追加（Google Cloud TTSでMP3をフロントエンドから生成・保存）

**パフォーマンス改善（ビジュアルエディタ）**
* [パフォーマンス] zundo（undo/redo）履歴を30件に制限し、100ページ超での大幅なメモリ削減を実現
* [パフォーマンス] visibleEdges のバックエッジDFS再計算をノード構造変更時のみに限定（タイトル等の編集では再計算しない）
* [パフォーマンス] Handle変更検知を handleSignature 文字列で軽量化（分岐数/is_ending 変更時のみ updateNodeInternals を実行）
* [パフォーマンス] BranchEditor コンポーネントを React.memo 化し、遷移先ドロップダウンに軽量 slideOptions（id + title のみ）を渡すよう変更
* [ビルド] ビジュアルエディタを再ビルド（パフォーマンス改善反映）

= 5.2.1 =
UI整理・デフォルト色変更・エディタ間の表示用ナレーション対応を統一。

**改善**
* [整理] スライドエディタ上部ツールバーから「遷移待機一括設定」「一括色変更」を削除（プレゼン全体設定の「選択肢・CTA設定」アコーディオンに統合済み）
* [変更] CTAボタンのデフォルト色を #d94545（赤系）に変更（全エディタ・CSS・ライブエディタ統一）
* [対応] ビジュアルエディタ（React）に「表示用ナレーション原稿」フィールドを追加
* [対応] ライブエディタに「表示用ナレーション原稿」フィールドを追加
* [ビルド] ビジュアルエディタを再ビルド（display_narration対応反映）

= 5.2.0 =
管理画面の操作性向上と字幕表示の柔軟性を強化。

**新機能**
* [新機能] 「選択肢・CTA設定」アコーディオンをプレゼン全体設定に追加 — 選択肢ボタン/CTAボタンのデフォルト色設定、ボタン色一括変更（選択肢のみ/CTAのみ/両方の3モード切替）、遷移待機一括設定を全体設定から操作可能に
* [新機能] 選択肢追加時に自動遷移チェックを自動的に外す機能を追加（ON/OFF切替可能、デフォルトON）
* [新機能] 「表示用ナレーション原稿」フィールドを各スライドに追加 — 読み上げ用と字幕表示用で異なるテキストを設定可能（読み上げには「間」の制御を入れつつ字幕はクリーンな文面にするなど）
* [新機能] CSV入出力に「表示用ナレーション原稿」(display_narration)カラムを追加
* [新機能] Word書出で表示用ナレーション原稿がある場合はそちらを優先出力（【表示用】ラベル付き）

**バグ修正**
* [修正] 遅延レンダリング時にチェックボックス（自動遷移・字幕・エンディング）の状態が正しく復元されないバグを修正
* [修正] 読み上げ速度スライダーの値がリアルタイム表示されないバグを修正

**フロントエンド**
* [改善] 字幕表示で表示用ナレーション原稿を使用（設定時はセンテンスハイライトを無効化し全文表示）

= 5.1.0 =
管理画面パフォーマンスの大幅改善。大量スライド（100枚超）での安定動作を実現。

**パフォーマンス改善**
* [パフォーマンス] 遷移先セレクトボックスのN²問題を解消 — PHPで全スライド×全選択肢分のoption要素を出力していた処理をJS動的生成に変更（109スライド時に約23,700個のoptionタグを削減）
* [パフォーマンス] スライドパネルの遅延レンダリングを実装 — 最初の1スライド以外はヘッダーのみPHP描画し、パネル展開時にJSでボディを生成（初期HTML出力量を大幅削減）
* [パフォーマンス] スライド描画時のDBクエリ重複を排除 — wp_get_attachment_image_url() の重複呼び出しを削除し、メタデータのキャッシュ済みURLを使用（109スライドで約330回のDBクエリを削減）

**データ保護**
* [安全装置] 保存時のスライド数整合性チェックを追加（JS + REST API + save_meta の3層防御）— ページ描画不完全時のデータ消失を防止
* [安全装置] REST API に force_save パラメータを追加 — 意図的な大量削除時はユーザー確認後に強制保存可能

**開発**
* [開発] 開発ドキュメント（docs/DEVELOPMENT.md）を新規作成
* [開発] v5.1実装計画（docs/v5.1-plan.md）を新規作成

= 5.0.0 =
初の公開配布バージョン。セキュリティ監査・プライバシー対応・配布構成の全面整備を実施。

**セキュリティ強化**
* [セキュリティ] REST API の save_settings() が $_POST スーパーグローバルに書き込む設計を廃止し、save_meta() にデータ配列を直接渡すリファクタリングを実施
* [セキュリティ] ファイルダウンロードエンドポイントに readfile() 実行前のパス境界チェックを追加（エクスポートディレクトリ外のファイル配信を防止）
* [セキュリティ] パスワード認証レスポンスからトークンをJSON本文から除去（HttpOnly Cookie のみで認証、XSS耐性向上）
* [セキュリティ] パスワード認証のJS側Cookie重複設定を除去（サーバー設定のHttpOnly Cookieに一本化）
* [セキュリティ] GhostScript エラー出力のクライアントへの反映を防止（サーバーパス・バイナリ情報の漏洩防止）
* [セキュリティ] トラッキングトークン生成を Math.random() から crypto.getRandomValues() に変更
* [セキュリティ] Google Cloud API キーの管理画面表示をマスク化（末尾4文字のみ表示）
* [セキュリティ] innerHTML 使用箇所のセキュリティレビューを実施・文書化
* [セキュリティ] テンプファイルのパスに暗号学的ランダムトークンを追加（Nginx環境でのURL推測を防止）
* [セキュリティ] .htaccess の記述を `Order deny,allow` + `Deny from all` 形式に統一

**プライバシー・GDPR対応**
* [プライバシー] GDPR 対応: WordPress プライバシーツール統合（個人データエクスポート/消去フック、プライバシーポリシー提案）
* [プライバシー] プレゼンごとに内蔵アナリティクスの無効化設定を追加
* [プライバシー] ブラウザの Do Not Track (DNT) ヘッダーを自動的に尊重
* [プライバシー] readme.txt に External Services / Privacy セクションを追加（WordPress.org 必須の外部サービス利用開示）

**環境互換性**
* [改善] PDFインポートの環境互換性を大幅に強化
* [改善] PHP シェル実行関数の利用可否を事前チェックし、無効な環境で具体的なエラーメッセージを表示
* [改善] GhostScript 検出を `which` から `command -v`（POSIX準拠）に変更
* [改善] Windows 環境で `where` コマンドによる GhostScript 検出フォールバックを追加
* [改善] プラグイン設定画面の「サーバー環境チェック」に PHP シェル実行の状態表示を追加

**配布構成**
* [技術] 配布用ビルドスクリプト（build-dist.sh / 配布用ZIP生成.command）と .distignore を追加
* [技術] node_modules / composer.phar / .git 等を配布パッケージから除外（545MB→約8MBに圧縮）
* [技術] コード内コメントの改善（hex エンコード処理の目的をより正確に記述）

= 4.4.5 =
* [機能] PDFインポートにGhostScript直接変換フォールバックを追加（ImageMagickのpolicy.xmlでPDF読み込みが禁止されている共有ホスティング環境でもPDFインポートが動作）
* [改善] PDFインポート時のエラーメッセージを改善（Imagick未インストール・GhostScript不在・policy.xml制限を個別に検出して具体的な対処方法を表示）
* [機能] プラグイン設定画面に「サーバー環境チェック」セクションを追加（PDFインポートに必要なImagick・GhostScript・PDFポリシーの状態を一目で確認可能）
* [改善] 利用マニュアルのPDFインポート関連FAQ・説明を更新（依存関係の詳細と対処方法を追記）
* [改善] 利用マニュアルにビジュアルエディタの「横整列」機能の説明を追加
* [修正] Word書出のComposer記述を修正（「プラグインに同梱済み」に変更）

= 4.4.3 =
* [セキュリティ] ZIPインポートのメタキー書込みに許可リストを追加（任意メタ書込みを防止）
* [セキュリティ] 管理画面HTML出力の$post->IDにesc_attr()を適用
* [セキュリティ] 翻訳文字列内HTMLにwp_kses()を適用（悪意ある翻訳ファイル対策）
* [セキュリティ] アナリティクスAPIにIP単位のレート制限を追加（60回/分）
* [セキュリティ] CSVエクスポートの日付パラメータにフォーマットバリデーションを追加
* [ライセンス] GPL v2 or laterライセンスの整備（LICENSE・THIRD-PARTY-LICENSES.md追加、全ソースにヘッダー付与）

= 4.4.2 =
* [セキュリティ] テンプレートのJSON出力にJSON_HEX_TAG/JSON_HEX_AMPフラグを追加しスクリプトコンテキストでのXSSを防止
* [セキュリティ] REST API save-settingsの$_POSTキーにホワイトリスト制限を追加
* [セキュリティ] フロントエンドHTMLサニタイザーを正規表現ベースからDOMParser/DOM構築方式に変更
* [セキュリティ] 管理画面の画像プレビューをjQuery .html()からDOM構築（$('<img>').attr()）に変更
* [セキュリティ] Wordエクスポートのエラーメッセージからサーバーファイルパスの漏洩を防止
* [改善] ZIP/Wordエクスポートのファイル名にランダムサフィックスを追加し同時実行時の競合を防止
* [改善] uninstall.phpのプレゼンテーション削除をバッチ処理化（大量データ時のタイムアウト防止）
* [改善] 管理画面CSSのカラーピッカースタイルをプラグインスコープに限定

= 4.4.1 =
* [改善] ビジュアルエディタの横整列レイアウトをBFSレベルフィルタリング方式に刷新
  - 連続スライドは左→右（水平）、分岐は上→下（垂直）に配置
  - クロスブランチエッジを除外し、兄弟分岐が同じ列位置に整列
* [改善] バックエッジ検出をDFSベースに変更（ループと前方エッジの正確な区別）
* [技術] 横整列アルゴリズムの検討経過をドキュメント化（docs/auto-layout-exploration.md、全11アプローチ）

= 4.4.0 =
* [機能] CSV書出・読込を9列に拡張（選択肢・CTAボタン・表示/非表示条件タグを追加）
* [機能] Word (.docx) エクスポート機能を追加（スライド画像・ナレーション・選択肢・CTAをセクション形式で出力）
* [機能] ビジュアルエディタにPNG書出ボタンを追加（スライドマップを画像として保存）
* [機能] 選択肢（分岐）にCTAと同様の色コードテキスト入力を追加（16進数コードの直接入力に対応）
* [機能] 同じ色の選択肢・CTAボタンを一括で別の色に変更する機能を追加
* [変更] CTAボタンの初期色を #d94545（赤系）に変更
* [改善] CSVインポートがヘッダーベースの列マッピングを使用（旧5列CSVとの後方互換性を確保）
* [技術] PHPWord (PhpOffice) をComposer依存として追加
* [技術] html-to-image ライブラリをエディタに追加

= 4.3.0 =
* [機能] トラッキングトークン（参照元分析）機能を追加（URLに`?ref=CODE`を付与して流入経路を分析）
* [機能] プレゼン編集画面からトラッキングトークンの発行・管理が可能に（ラベル付き、URLコピー機能付き）
* [機能] アナリティクスダッシュボードにトラッキングトークン別フィルターを追加（全データ・CSVエクスポート対応）

= 4.2.0 =
* [修正] パスワード認証がWordPress 5.x+のbcryptハッシュ環境で常に失敗する致命的バグを修正
* [改善] パスワードを平文保存に変更し、管理画面で設定済みパスワードを直接確認可能に
* [改善] 管理者ログイン時にパスワード保護プレゼンをバイパスして視聴可能に（バナー通知付き）
* [改善] 投稿編集画面の公開ボックスに最終更新日時を表示
* [改善] TTS再生成時に旧MP3ファイルをメディアライブラリから自動削除
* [改善] ライブエディタのフッターに閉じるボタン（>>）を追加
* [機能] アナリティクスにCTAでの離脱率・途中離脱率のサマリーカードを追加（完走率+CTAでの離脱率+途中離脱率≒100%を色帯で視覚化）
* [機能] 遷移フロー図にCTA遷移先ノード（緑色）を追加（CTAクリック後の離脱をCTAラベル別に個別表示）
* [機能] 遷移フロー図に最小セッション数フィルターを追加（閾値未満の遷移線を非表示にしてノイズ除去）
* [機能] アナリティクスに視聴時間ヒストグラム（アコーディオン）を追加（セッション別合計視聴時間の分布を6段階で表示）
* [改善] パスワード削除チェックボックスを廃止し、空欄保存でパスワード解除する直感的なUIに変更

= 4.1.0 =
* [改善] 遷移フロー図のノード並び順をセッション数に依存しないように変更（交差最小化アルゴリズムに全権委譲）
* [改善] バリセンター法のタイブレーカーからセッション数比較を除去し、交差削減の自由度を向上
* [改善] 遷移フロー図の垂直配置を上端揃えに変更（親ノードの上端＝子ノードの上端、離脱分は下側に表現）
* [改善] Adjacent Swapを双方向・複数ラウンド化し、交差削減精度を向上
* [改善] 伝播型Sifting（下流3カラムを一時再ソートして評価）により連鎖的な交差解消が可能に

= 4.0.0 =
* [機能] ライブエディタ機能を新規実装（プレーヤーで再生しながらナレーション・分岐・CTAをリアルタイム編集）
* [機能] 編集権限を持つユーザーにのみコントロールバーに鉛筆アイコンを表示
* [機能] 分岐選択肢の追加・削除・ラベル/色/遷移先の編集をプレーヤー上で即時反映
* [機能] CTAの追加・削除・ラベル/URL/色の編集をプレーヤー上で即時反映
* [機能] ナレーション原稿の編集と「再読み上げ」ボタンで即座にプレビュー確認
* [機能] デバウンス付き自動保存（編集後3秒で自動的にREST API経由で保存）
* [改善] 遷移フロー図のノード並び順をバリセンター法で自動最適化（帯の交差を大幅削減）
* [改善] 利用マニュアルにライブエディタタブを追加、遷移フロー図の説明を更新
* [修正] スタンドアロンテンプレートでライブエディタのCSS/JSが読み込まれない問題を修正
* [修正] REST API save-settings のJSON decode失敗時にエラーレスポンスを返すように修正
* [修正] スライド高速スキップ時にMP3再生失敗→ブラウザTTSが前のスライドで開始される二重再生バグを修正

= 3.2.0 =
* [機能] 遷移フロー図をSankey図（GA4経路分析スタイル）に全面リニューアル
* [機能] ズームコントロールを追加（スライダー・+/-ボタン・「幅に合わせる」ボタン・Ctrl+ホイール）
* [改善] 小画面対応（ステップ数に応じた適応的カラム幅、スクロール可能ビューポート）
* [変更] CTAクリックをフロー図ノード上のバッジ表示に変更（ツールチップで詳細確認可能）

= 3.1.0 =
* [機能] 遷移フロー図: 全スライドの表示に対応（孤立ノード問題を解消）
* [機能] 遷移フロー図: 「すべてのスライド」「分岐・CTAのみ」のフィルター切替を追加
* [機能] 遷移フロー図: 個別CTAクリックイベントをノードとして表示
* [機能] 遷移フロー図: ノードの色分け凡例を追加
* [機能] グラフ: スライド別ナレーション完聴率の棒グラフを追加
* [変更] 遷移フロー図: 矢印を削除し、シンプルな線で表示するように変更
* [変更] 遷移フロー図: セッション数を常時表示からホバー時のみ表示に変更
* [変更] 遷移フロー図: 「完了」ラベルを「離脱」に統一
* [変更] 遷移フロー図: デフォルトでアコーディオンを開いた状態に変更
* [変更] 分岐分析: 表示を簡略化（例: 「1クリック (選択率 50% / クリック率 100%)」→「1(50%)」）

= 3.0.1 =
* [修正] アナリティクスページがフリーズする問題を修正（遷移フロー図のBFS無限ループ：循環エッジを含むグラフで発生）
* [修正] BFS修正に伴いアコーディオンの開閉が機能しない問題も解消
* [変更] アナリティクスセクションの表示順を変更（遷移フロー図→分岐分析→CTAパフォーマンス→グラフ→スライド別データ→日別推移）

= 3.0.0 =
* [セキュリティ] ZIPインポート時にファイル拡張子とマジックバイト（PK署名）の二重検証を追加（CWE-434）
* [セキュリティ] PDFインポート時にファイル拡張子とマジックバイト（%PDF署名）の二重検証を追加（CWE-434）
* [セキュリティ] recursive_rmdir にディレクトリ境界チェックを追加しパストラバーサルを防止（CWE-22）
* [セキュリティ] CTA URLスキーム検証を追加し javascript:/data: プロトコルをブロック（CWE-601）
* [セキュリティ] アナリティクスページに権限チェック（edit_posts）を追加
* [セキュリティ] TTS再生速度パラメータに範囲バリデーション（0.25〜4.0）を追加しゼロ除算を防止
* [セキュリティ] innerHTML使用箇所にHTMLタグ属性除去の多層防御を追加
* [セキュリティ] カラー値にCSSインジェクション防止バリデーションを追加
* [セキュリティ] ドロップダウン生成をjQuery DOM構築に変更しXSSを防止
* [改善] 全 _e() 呼び出しを esc_html_e() / wp_kses() に移行（出力エスケープ強化）
* [改善] @unlink() を wp_delete_file() に統一（WordPress推奨ファイル操作API）
* [改善] error_log() を WP_DEBUG 条件付きに変更（本番ログ肥大化防止）
* [改善] @エラー抑制子を除去し適切なエラーハンドリングに変更
* [改善] set_time_limit(0) を set_time_limit(300) に変更しDoSリスクを軽減
* [改善] CSVエクスポートファイル名に sanitize_file_name() を適用
* [改善] API エラーメッセージに sanitize_text_field() を適用

= 2.6.0 =
* [変更] 視聴セッションを再生単位に変更（同じ人が再生し直すたびに新しいセッションとしてカウント）
* [追加] 分岐分析を全選択肢表示に改善（未クリックの選択肢もグレーアウト表示、表示セッション数・選択率・クリック率を追加）
* [追加] CTAパフォーマンスを全CTA表示に改善（未クリックCTAも表示、表示セッション数・表示率・クリック率を追加）
* [追加] アナリティクス各セクションをアコーディオン化（開閉状態をlocalStorageで保持）
* [追加] スライド名ホバーでスライドサムネイルをフローティング表示する機能
* [追加] 遷移フロー図（分岐・CTAスライド間のセッション遷移をSVGで可視化、線の太さがセッション数に比例、ホバーで詳細表示）
* [改善] 分岐クリックイベントに遷移先スライドID（target_slide_id）を追加記録

= 2.5.0 =
* [追加] WordPress内蔵アナリティクス機能を新規実装（GA4不要で視聴行動を分析可能）
* [追加] 専用データベーステーブル（as247_events / as247_monthly_summary）によるイベント記録
* [追加] REST API エンドポイント（as247/v1/event）でプレーヤーからイベントを非同期送信
* [追加] sendBeacon / fetch(keepalive) によるページ離脱時も確実にデータ送信
* [追加] 管理画面「アナリティクス」ダッシュボード（プレゼンテーション別・期間別フィルタ）
* [追加] サマリーカード表示（総視聴セッション数、完走率、CTAクリック率、平均視聴時間）
* [追加] スライド別到達率・平均滞在時間・ナレーション完聴率テーブル
* [追加] 分岐選択分析（選択肢ごとの選択数・割合）
* [追加] CTAパフォーマンステーブル（スライド×CTAラベル別クリック数）
* [追加] Chart.js によるグラフ表示（離脱曲線、滞在時間棒グラフ、日次トレンド折れ線）
* [追加] 日次トレンドグラフにプレゼンテーション更新日の注釈線を表示
* [追加] CSV エクスポート機能（UTF-8 BOM付きでExcel互換）
* [追加] WP-Cronによるデータ自動クリーンアップ（月次サマリー集約後に古いデータを削除）
* [追加] アナリティクスデータ保持期間の設定項目（デフォルト365日、最小30日）
* [追加] トランジェントによるレート制限（セッションあたり5リクエスト/秒）

= 2.4.0 =
* [追加] 1スライドに複数のCTAボタンを設定できるように変更（リピーターUI、ドラッグ並び替え対応）
* [追加] アコーディオン畳み時にCTA（●）・分岐（▶）の色付きインジケーターをヘッダーに表示
* [変更] CTAボタンのデフォルト色をグラデーションからソリッドピンク（#f5576c）に変更
* [改善] ナレーションMP3再生ボタンの押下時に即座にUIが反応するように改善（オプティミスティックUI）
* [改善] 管理画面MP3試聴時にプレゼン全体設定の再生速度を適用するように変更
* [変更] 句読点ポーズの句点デフォルト値を500ms→800msに変更
* [修正] スライド高速スキップ時にナレーション音声が2重再生される問題を修正
* [追加] 再生開始時の字幕表示/非表示の初期設定をグローバル設定に追加

= 2.3.0 =
* コードレビューに基づくバグ修正16件
* [修正] CTAボタンのカスタム色がグラデーションに隠れて表示されない問題を修正
* [修正] TTS一括生成でAPIキーエラー時にバッチが中断されない問題を修正
* [修正] スライド遷移時に再生/一時停止ボタンの状態がリセットされない問題を修正
* [修正] ナレーション完了後の再開で意図せず音声が最初から再生される問題を修正
* [修正] 分岐ボタンが5つ以上の場合のグリッドレイアウトが機能しない問題を修正
* [修正] 新規投稿のGA4有効・背景ぼかしのデフォルト値がフロントエンドと管理画面で異なる問題を修正
* [修正] エクスポート時に句読点ポーズ設定とエディタレイアウトが含まれない問題を修正
* [改善] MP3再生時の字幕表示を文単位のハイライト表示に改善（時間按分による擬似同期）
* [修正] 連続スライド遷移時にナレーション開始タイマーが残留する問題を修正
* [追加] キーボードの右矢印キーで次のスライドへ遷移する機能を追加
* [修正] prefers-reduced-motion メディアクエリをプレーヤーコンテナにスコープ化
* [修正] 動的に追加・複製されたスライドで分岐のドラッグ並び替えが機能しない問題を修正
* [修正] リスタート時に閲覧数カウンタ・プログレスバーがリセットされない問題を修正
* [改善] CTAカラーピッカーのDOM探索をより堅牢な方式に変更
* [修正] PDF読み込みとスライド追加でadvance_delayのデフォルト値が異なる問題を修正
* [修正] ナレーションなしスライドに遷移時に前スライドの字幕が残る問題を修正
* [修正] リスタートボタンにデフォルト背景色（グラデーション）を追加
* [修正] デフォルトのスライド・分岐データにcolorキーが不足している問題を修正
* [仕様] TTS速度変更時のナレーション再開始は字幕同期のため意図的な仕様として維持

= 2.2.0 =
* 再生画面のどこをクリックしても再生/一時停止できる機能を追加
* Google Cloud TTS 句読点ポーズ設定（SSML break対応）を追加
* 字幕での連続句読点の折りたたみ表示を追加
* 字幕表示の一括ON/OFF機能を追加
* CTAボタンのデフォルト色をピンクグラデーションに変更
* CTAボタンクリック時に再生を一時停止する機能を追加
* エンディングページでCTAと再生ボタンを同時表示するように変更
* TTS一括生成のエラーリトライボタンを追加
* スライド名のナチュラルソートに対応

= 2.1.0 =
* 分岐選択肢のあるスライドでも自動遷移が動作するように変更
* advance_delay を秒単位からミリ秒単位に変更（デフォルト500ms）
* ドキュメント更新（技術設計書、CHANGELOG）

= 2.0.0 =
* React ビジュアルエディタ（React Flow ベース）を追加
* チャンク方式PDF一括インポート機能を追加（大容量PDFのメモリ問題を解決）
* CSS グローバルリセットのスコープ化
* Google TTS APIキーをHTTPヘッダー認証に移行
* error_log のAPIレスポンスマスキング
* uninstall.php の $wpdb->prepare() 対応
* パスワードフィールドのセキュリティ改善

= 1.5.0 =
* 管理画面UIの全面リデザイン（アコーディオンセクション、スライドサブセクション化）
* タグベースの条件付きスライド表示機能を追加
* 字幕表示、自動遷移、エンディングスライド機能を追加
* 使い方マニュアルを全面更新
* 開発者ドキュメントを整備
* コードレビューに基づくバグ修正（エクスポート、OGP、PDFインポート等）

= 1.0.0 =
* 初回リリース
