# 変更履歴

## v2.3.0（2026-07-04）— テーマ3本立て・独自メディア/エディタ・バックアップ完全版・AIテーマ工場

### テーマ
- **新テーマ ThemeTailwind**: Tailwind CSS（コンパイル済み静的CSS・CDN不使用）。雑誌風エディトリアルミニマル（生成り#FAF8F5×墨×弁柄アクセント、見出しShippori Mincho B1×本文Zen Kaku Gothic New）
- **新テーマ ThemeMotion**: 若者向けプレミアム。フルスクリーン**動画ヒーロー**（既定動画同梱・交差時のみ再生・データセーバー対応）、スクロールリベール/パララックス/自動スライダー/カウントアップ（すべて prefers-reduced-motion 対応）、三→Xモーフのハンバーガー＋フルスクリーンメニュー、スマホ固定CTAバー（TEL/問い合わせ/予約自動検出・safe-area対応）、LP対応。Playwrightで320/390/1440pxの横スクロール0を実測検証
- **PC/モバイル別テーマ設定を廃止**（Baked時代の遺産）: テーマは「使用テーマ」1本のレスポンシブに統一。管理画面は[テーマの編集]1メニューに整理（edit_pc/edit_mobile → edit）
- **テーマスタジオ（AdminThemeStudio）新設**: ①AIテンプレ生成（業種・雰囲気→設計書プレビュー→テーマ書き出し）②参考URL模倣（SSRF対策済み取得→デザイン言語のみ模倣）③**WordPressテーマZIP→NextCodeテーマ変換**（メモリ内解析・コード移植なしのAI再実装）。AI出力はPHPトークン構文検証＋危険コード30種検査後に書き込み

### エディタ・メディア
- **ブロック編集エディタをSunEditorに統一**し、**CKEditor 4 と kcfinder を完全撤去**（PHP 8.4の非推奨警告も根絶・配布サイズ軽量化）。画像はD&D/ペーストで直接アップロード＋メディアギャラリーから選択
- **メディアライブラリ（AdminMedia）新設**: 独自ファイルマネージャー。D&D複数アップロード（画像/PDF/動画/音声/ZIP・25MB・webp自動最適化）、グリッド・画像フィルタ・ページ送り・URLコピー・2段階クリック削除。SunEditor連携（editor_upload / gallery）
- **AIブロック ビジュアルエディタv2**: コンテナ＋1〜3カラム分割＋レイヤーモード（ドラッグ配置・重ね順）で画像と文字を重ねられるパワポ風編集。PC/スマホ別の表示順・表示切替タブ、フォント/背景パネル、AI指示→選択要素を差分改善（履歴で元に戻す）、選択コンテナのgpt-image-2画像化→メディア保存、下書きトグル、業種テンプレ生成（プリセット6種）、参考URL模倣（SSRF/DNSリバインディング対策）。既存データと後方互換

### バックアップ
- **復元**: 履歴選択 or ZIPアップロードから復元。復元直前に安全バックアップを自動作成、「RESTORE」タイプ入力の二重確認、developerロール限定
- **自動バックアップ**: 毎日/毎週・保持世代数・files込み設定。cron不要のアクセス駆動方式（未到達時はDBクエリゼロ・ロックで多重実行防止）
- **クラウド送信**: S3互換ストレージ（AWS S3/Cloudflare R2/Wasabi等）へ純PHP SigV4署名でアップロード。手動送信・自動送信トグル・接続テスト付き

### 1クリック自動アップデート（復活・安全化）
- 配信サーバー **update.nextcode.ltd** を構築し、停止中だった自動アップデート機能を有効化
- 安全設計: dl_url/チェックサムは適用直前にサーバーへ再照会した値のみ使用 / HTTPS＋公式ホスト限定DL / **SHA-256チェックサム検証** / **適用前に安全バックアップ（DB）を自動作成** / 失敗時は自動ロールバック（.htaccess・my.php・files・追加プラグインは温存）/ developerロール限定

### PHP 8 / コード品質
- PHP 7で削除済みの `ereg_replace()` を含む未使用関数（read_csv/fgetcsv_reg）を削除
- セットアップのPHPバージョン判定を `version_compare()` に修正（PHP 10で誤判定するバグの予防）
- BK_VERSION定数を実バージョンに同期（1.2.0のまま放置→2.3.0）
- app/・lib/Cake 全ファイルをPHP 8.4で構文検証（エラー0）

## v2.2.0（2026-06-12）— ブログエディタ刷新

- 記事エディタを **CKEditor 4.2（2013年製）→ SunEditor 2.47（MIT・自己ホスト）** に刷新。モバイル対応・全画面・コードビュー・YouTube埋め込み
- **画像のドラッグ&ドロップ／ペースト挿入**: エディタから直接アップロード → メディア（filesテーブル）に保存され写真ブロック等で再利用可・webp自動最適化も適用
- **エディタ内AIアシスト**: 「続きを書く」（同じ文体で2〜4段落追記）／「選択をリライト」／「タイトル案」（5案・クリックでタイトル欄へ反映）
- 旧kcfinderファイルブラウザ経由のアップロードを記事エディタから廃止（ブロック編集は従来どおり）
- 削除済みプラグイン（AdminAipost）への残存参照を記事画面から除去
- 動作確認（PHP 8.3・実API）: 編集画面のエディタ組み込み、multipart画像アップロード→webp併設生成、AI「続きを書く」517文字生成、タイトル5案生成 — すべて合格

## v2.1.0（2026-06-12）— 集客・運用ツール一式（11機能追加）

合計37プラグイン・ブロック18種に。

### 基礎
- **SEO**（AdminSeo）: sitemap.xml/robots.txt自動配信、ページ別description/OGP画像、AIによるdescription一括生成、ページ別SEOのテーマ反映
- **バックアップ**（AdminBackup）: DB＋画像のワンクリックZIP（PHPのみでダンプ生成・mysqldump不要・5世代保持）
- **画像webp自動最適化**: アップロード/AI生成時にwebp併設を自動生成し、対応ブラウザへ透過配信（実測1.5MB→38KB）

### AI
- **AI多言語化**（AdminTranslate）: ページ/記事を英・中・韓へ翻訳し新ページ/記事として複製（レイアウト保持・1回のAPI呼び出しでまとめて翻訳）
- **AI FAQ生成**: 受信箱の実際の問い合わせからFAQページを自動生成（個人情報除外・非表示で作成→確認後公開）
- **AIクチコミ返信**（AdminReview）: クチコミ貼り付け→オーナー返信を3案生成（口調メモ保存対応）

### 店舗・集客
- **営業時間**（AdminHours）: 曜日別営業時間・定休日・臨時休業。ヘッダーの「営業中」ピル・構造化データ・店舗情報ブロックに自動反映
- **店舗情報・地図ブロック**（BlockShopInfo）: 住所/電話/Googleマップ/営業時間のカード
- **スタッフ紹介ブロック**（BlockStaff）: 1行1人の簡単記法でカードグリッド
- **キャンペーンポップアップ**（AdminPopup）: 期間・頻度（毎回/1日1回/1回だけ）制御付きの控えめな告知カード
- **クーポン**（AdminCoupon）: コード発行→予約フォームで即時検証→使用回数を自動集計

### 修正
- プラグインの公開ルート（sitemap等）がキャッチオールに負ける問題を修正（本体routes.phpで先行定義）

### 動作確認（PHP 8.3・実APIテスト）
- 全8新管理画面表示、sitemap/robots配信、AI description実生成→フロントmeta反映、バックアップZIP作成、営業時間→営業中ピル＋JSON-LD、ポップアップ注入、クーポン発行→検証→クーポン付き予約、英語ページの実翻訳生成、FAQページの実生成（5ブロック）、クチコミ返信3案の実生成、店舗情報/スタッフブロック描画、webp自動生成 — すべて合格・Fatalゼロ

## v2.0.0（2026-06-12）— AIフル装備リリース

- **ワンクリックインストーラー** `quick-install.php` を同梱: ZIPと2ファイル置いてブラウザで開くだけで、展開→権限設定→セットアップ開始まで自動（完了後は自動削除・パストラバーサル対策済み）

CMSをAIフル装備化。すべてプラグインとして実装（合計28プラグイン・ブロック16種）。

### 新機能
- **AI画像生成**（AdminAimage）: OpenAI（gpt-image系/DALL·E）と Gemini を切替可。生成画像はメディアへ自動保存され写真ブロック/ギャラリーで利用可。「ヒーローに設定」でAIヘッダーが2クリック
- **AI記事作成**（AdminAiwrite）: テーマ・長さ・文体を指定→記事を生成しブログへ下書き保存→編集画面へ直行
- **AI動画作成**（AdminAivideo）: 画像＋AIナレーションのスライド動画をブラウザ内で合成（ffmpeg不要）。TTSは OpenAI（gpt-4o-mini-tts）/ ElevenLabs 切替・機械音声不採用
- **音声チャット**（AdminChat拡張）: OpenAI Realtime によるリアルタイム音声会話（WebRTC・一時トークン方式でキー秘匿・毎時5セッション/人の制限）
- **予約機能**（BlockReserveForm + AdminReserve）: 予約フォームブロック＋ステータス管理付き受付一覧＋メール自動通知/自動返信
- **LINE連携**（AdminLine）: 問い合わせ/予約をLINEへプッシュ通知（Messaging API・テスト送信付き）
- **ページ別レイアウト**（テーマ骨格）: ページごとに 1/2(左右)/3カラム・ヘッダー/フッター表示を切替

### 改善・修正
- メディアがAI生成ファイル（画像/音声/動画）に対応（File::addLocalFile・mp3/mp4/webm/webp対応）
- 権限マトリクスに新機能のセクションを追加（AI/予約/LINE）
- お問い合わせブロックのエディタ保存JSを追加（保存ボタンが機能していなかった潜在不具合を修正）
- 予約テーブルは初回アクセス時に自動作成（既存インストールへの追加もアップロードだけでOK）

### 動作確認（PHP 8.3・実APIテスト）
- 全28プラグイン管理画面の表示、AI記事の実生成（3,000字・下書き保存）、AI画像の実生成（gpt-image・メディア保存→ヒーロー反映→フロント表示）、TTS実生成（有効なMP3）、Realtime一時トークン発行、予約送信→管理一覧、レイアウト切替のフロント反映、チャット回帰 — すべて合格・Fatalゼロ

## v1.2.0（2026-06-12）— AI接客チャットを標準搭載

- 新プラグイン **AdminChat**: OpenAI APIキーを入れるだけで動くAIチャットを同梱（外部サービス不要・サーバー内で完結）
  - 管理画面 [AIチャット] で ON/OFF・APIキー・ボット名・カラー・あいさつ・サイト情報（システムプロンプト）・モデルを設定
  - APIキーはサーバー内DBにのみ保存し、ブラウザへは渡さないPHP中継方式
  - 迷惑利用対策: 毎時30回/人のレート制限・1000文字制限・他オリジン拒否
  - ウィジェットは依存ライブラリなしのvanilla JS。スマホはシート型表示・日本語IME対応（変換中Enterで誤送信しない）・ESC×3サインインと干渉しない設計
  - 設定ONで全テーマに自動表示（編集モード中は非表示）
- 権限マトリクスに「AIチャット」セクションを追加。削除済みプラグインの死に項目（AI記事作成・予約カレンダー）を権限レジストリから掃除
- 動作確認: PHP 8.3 で設定保存→ウィジェット表示→実GPT応答（文脈引き継ぎ含む）→OFF切替まで実走テスト済み

## v1.1.0（2026-06-12）— PHP 8 対応

- フレームワークを CakePHP 2 の PHP 8 対応コミュニティフォーク
  （[kamilwylegala/cakephp2-php8](https://github.com/kamilwylegala/cakephp2-php8)・2.10.24ベース）に差し替え
- アプリ層の PHP 8 非互換を修正
  - `each()` を全廃（検証エンジン BasicValidationBehavior ほか約20箇所）
  - kcfinder の `__autoload()` → `spl_autoload_register()`
  - PHP4形式コンストラクタ（Zebra_Image）→ `__construct()`
  - ビヘイビアのコールバックシグネチャを親クラスに一致（PHP 8 では不一致が Fatal）
  - `strftime()` → `date()`、CKEditor の samples ディレクトリ削除
- アップロード領域 `app/webroot/files` でスクリプト実行を遮断する .htaccess を同梱
- **動作確認: PHP 8.3 / 8.4 / 8.5 で全ファイル構文チェック合格、PHP 8.3 と 8.4 で
  インストールウィザード完走・フロント表示・お問い合わせ送信・管理画面9ページ・編集モードを確認**
- 対応PHPは 7.4 〜 8.5 に拡大（7.4でも従来どおり動作）

## v1.0.0（2026-06-12）— NextCode CMS 初回リリース

NextCode CMS の初回配布版。

### 機能・構成
- テーマを **ThemeModern**（Bootstrap 5・レスポンシブ・日本語フォント）1本に整理し標準テーマ化
- サイト名・キャッチコピー・電話・住所・会社名を [基本設定] から全テーマ表示へ自動反映
- お問い合わせフォームを自己完結化（CMS内蔵API + DB保存 + メール通知 + 自動返信）
- お問い合わせ受信箱（スレッド返信・定型文・未読バッジ）を同梱
- スタッフのロール権限（developer / admin / editor）と権限マトリクス管理を同梱
- コードブロックにスニペット保存（作ったパーツの再利用）機能
- インストーラーを刷新: 最新12テーブルのスキーマ＋最小初期データ（ホーム/お問い合わせ/ブログ＋サンプル記事）、初期管理者は developer 権限、標準テーマは ThemeModern

### 動作確認
- PHP 7.4.33 + MySQL（共用レンタルサーバー）で、セットアップウィザード完走〜フロント表示〜管理画面の動作を確認済み
- 全PHPファイル構文チェック（PHP 7.4）エラーなし

### 既知の制限
- PHP 8 非対応（CakePHP 2.10 の制約）。対応PHPは 7.0〜7.4
- 自動アップデート/テーマ検索機能は無効化済み（参照先は自社ドメイン `update.nextcode.ltd`・https固定。配信サーバー構築後に `AdminSettingsUpdateController::DISABLED` をFALSEにすれば復活可能）
