Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
fdd4004
fix: 管理画面設定での言語混在表示問題を修正
yama Feb 21, 2026
c010530
feat: URL記事取得スキルとチェックリストを追加
yama Feb 21, 2026
e5e4899
fix: 言語ファイルの読み込み時にグローバル変数の影響を排除
yama Feb 21, 2026
e87c965
fix: 言語ファイルの読み込み処理を改善し、グローバル変数の影響を排除
yama Feb 21, 2026
55fc062
feat: CLI優先のブラウザ動作確認スキルを新規作成し、検証フローを定義
yama Feb 21, 2026
92e12f7
fix: インストーラーのBASIC認証を削除し、設定ファイルの自動削除機能を追加
yama Feb 21, 2026
c0b224e
fix: PRルールに空行を追加し、可読性を向上
yama Feb 21, 2026
6ad4294
fix: 除外ファイルリストを更新し、リリースパッケージのサイズを最適化
yama Feb 21, 2026
54e2ec6
feat: EVO CLIにユーザー管理コマンドを追加し、CRUD操作をサポート
yama Feb 21, 2026
37dfadc
feat: リリースサポート用のスキルとチェックリスト、リリースノートテンプレートを追加
yama Feb 21, 2026
be8f790
fix: ロードマップのマークダウン形式を整形し、可読性を向上
yama Feb 21, 2026
7bed10b
fix: ロードマップのバージョン番号を修正し、最終更新日を更新
yama Feb 21, 2026
aaf306d
feat(cli): Implement EVO CLI self-bootstrap with initial commands and…
yama Feb 21, 2026
9381dd0
docs: 開発ガイドラインとコミットメッセージ規約を追加
yama Feb 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 0 additions & 101 deletions .agent/plans/2026-02-07-manager-log-refactor.md

This file was deleted.

225 changes: 225 additions & 0 deletions .agent/plans/2026-02-21-evo-cli-user-management.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ PHP 8.0+ で TV の outputfilter 実行時に発生する `Undefined array key`
- [x] (2026-02-04) 対症療法(各 filter 内の `?? ''`)で一時的に警告を回避
- [x] (2026-02-14) ExecPlan をテンプレート準拠に再構成
- [x] (2026-02-14) 「発生源修正」方針に基づく改修案へ更新
- [ ] (2026-02-14) 実装・検証結果を本 Plan に追記
- [x] (2026-02-14) 実装・検証結果を本 Plan に追記

## Surprises & Discoveries
`manager/includes/document.parser.class.inc.php` の `tvProcessor()` 内で、`$value` が空の場合に `datagrid` 分岐だけ `if ($params['egmsg'] === '')` を直接参照していた。ここが warning の発火点になり得る。また outputfilter 側が未定義キーを前提にしており、呼び出し契約が曖昧だった。
Expand All @@ -21,38 +21,38 @@ PHP 8.0+ で TV の outputfilter 実行時に発生する `Undefined array key`
実装完了後に記載する。

## Context and Orientation
対象は TV 表示処理の中心である `manager/includes/document.parser.class.inc.php` の `tvProcessor()`。ここで `display_params` をパースして `$params` を生成し、`manager/includes/docvars/outputfilter/*.inc.php` に引き渡している。
対象は TV 表示処理の中心である `manager/includes/document.parser.class.inc.php` の `tvProcessor()`。ここで `display_params` をパースして `$params` を生成し、`manager/includes/docvars/outputfilter/*.inc.php` に引き渡している。
warning は「filter 側でキー未定義」だけでなく「生成元が filter ごとの必須キーを保証していない」ことが本質的な原因。

用語:
outputfilter は TV 値を表示向けに整形する小さな変換モジュール。
入力契約は「どのキーが常に存在し、どの型で渡るか」の取り決め。
outputfilter は TV 値を表示向けに整形する小さな変換モジュール。
入力契約は「どのキーが常に存在し、どの型で渡るか」の取り決め。
発生源修正は warning 発生箇所ではなく、異常データを生む上流を直すこと。

## Plan of Work
`tvProcessor()` に format ごとのパラメータスキーマ(既定値マップ)を追加し、`display_params` のパース結果をそのスキーマで正規化してから outputfilter を呼ぶ。これにより filter 側は「定義済みキーが渡る」契約に依存できる。
`tvProcessor()` に format ごとのパラメータスキーマ(既定値マップ)を追加し、`display_params` のパース結果をそのスキーマで正規化してから outputfilter を呼ぶ。これにより filter 側は「定義済みキーが渡る」契約に依存できる。
同時に、`$value` 空判定の `datagrid` 早期 return 条件を未定義キー参照しない実装に変更し、warning 発火点を除去する。

## Concrete Steps
1. format ごとの既定値マップを `tvProcessor()` に追加する。
編集対象ファイル: `manager/includes/document.parser.class.inc.php`
実行コマンド: `rg -n "function tvProcessor|datagrid|display_params" manager/includes/document.parser.class.inc.php`
1. format ごとの既定値マップを `tvProcessor()` に追加する。
編集対象ファイル: `manager/includes/document.parser.class.inc.php`
実行コマンド: `rg -n "function tvProcessor|datagrid|display_params" manager/includes/document.parser.class.inc.php`
期待される観測結果: 既定値マップの配置場所と `tvProcessor()` の入力処理位置が特定できる。
2. `$params` 生成直後に正規化処理(`array_replace($defaults, $params)` 相当)を挿入する。
編集対象ファイル: `manager/includes/document.parser.class.inc.php`
実行コマンド: `php -l manager/includes/document.parser.class.inc.php`
2. `$params` 生成直後に正規化処理(`array_replace($defaults, $params)` 相当)を挿入する。
編集対象ファイル: `manager/includes/document.parser.class.inc.php`
実行コマンド: `php -l manager/includes/document.parser.class.inc.php`
期待される観測結果: 構文エラーがなく、`$params` 参照前に必ず既定キーが存在する状態になる。
3. `datagrid` の早期 return 判定で未定義キー参照を発生させない。
編集対象ファイル: `manager/includes/document.parser.class.inc.php`
実行コマンド: `rg -n "egmsg|datagrid" manager/includes/document.parser.class.inc.php`
3. `datagrid` の早期 return 判定で未定義キー参照を発生させない。
編集対象ファイル: `manager/includes/document.parser.class.inc.php`
実行コマンド: `rg -n "egmsg|datagrid" manager/includes/document.parser.class.inc.php`
期待される観測結果: `egmsg` 参照が正規化後の `$params` に対してのみ行われ、未定義キー warning の経路が消える。
4. 主要 outputfilter の呼び出し契約が維持されることを点検する。
編集対象ファイル: `manager/includes/docvars/outputfilter/image.inc.php`, `manager/includes/docvars/outputfilter/hyperlink.inc.php`, `manager/includes/docvars/outputfilter/htmltag.inc.php`, `manager/includes/docvars/outputfilter/datagrid.inc.php`, `manager/includes/docvars/outputfilter/date.inc.php`, `manager/includes/docvars/outputfilter/delim.inc.php`, `manager/includes/docvars/outputfilter/string.inc.php`, `manager/includes/docvars/outputfilter/richtext.inc.php`
実行コマンド: `php -l manager/includes/docvars/outputfilter/{image,hyperlink,htmltag,datagrid,date,delim,string,richtext}.inc.php`
4. 主要 outputfilter の呼び出し契約が維持されることを点検する。
編集対象ファイル: `manager/includes/docvars/outputfilter/image.inc.php`, `manager/includes/docvars/outputfilter/hyperlink.inc.php`, `manager/includes/docvars/outputfilter/htmltag.inc.php`, `manager/includes/docvars/outputfilter/datagrid.inc.php`, `manager/includes/docvars/outputfilter/date.inc.php`, `manager/includes/docvars/outputfilter/delim.inc.php`, `manager/includes/docvars/outputfilter/string.inc.php`, `manager/includes/docvars/outputfilter/richtext.inc.php`
実行コマンド: `php -l manager/includes/docvars/outputfilter/{image,hyperlink,htmltag,datagrid,date,delim,string,richtext}.inc.php`
期待される観測結果: 対象 filter で構文エラーがなく、互換インターフェース(`$value`, `$params`)を維持している。
5. 実測結果を Plan に反映する。
編集対象ファイル: `.agent/plans/2026-02-04-outputfilter-undefined-array-key.md`
実行コマンド: `git diff -- .agent/plans/2026-02-04-outputfilter-undefined-array-key.md`
5. 実測結果を Plan に反映する。
編集対象ファイル: `.agent/plans/2026-02-04-outputfilter-undefined-array-key.md`
実行コマンド: `git diff -- .agent/plans/2026-02-04-outputfilter-undefined-array-key.md`
期待される観測結果: Progress / Surprises / Decision Log / Outcomes が実装結果に追従して更新される。

## Validation and Acceptance
Expand All @@ -64,21 +64,21 @@ outputfilter は TV 値を表示向けに整形する小さな変換モジュー
6. 上記検証結果(実行コマンドと観測結果)を本 Plan に追記し、過去チャットを見ずに再現できる状態にすること。

## Idempotence and Recovery
変更は `document.parser.class.inc.php` と必要最小限の outputfilter のみ。差分は `git diff` で確認し、想定外があれば対象コミットを revert して復旧できる。
変更は `document.parser.class.inc.php` と必要最小限の outputfilter のみ。差分は `git diff` で確認し、想定外があれば対象コミットを revert して復旧できる。
中断時は `Progress` の未完了項目を次回の再開点として扱う。

## Artifacts and Notes
関連ファイル:
`manager/includes/document.parser.class.inc.php`
`manager/includes/docvars/outputfilter/image.inc.php`
`manager/includes/docvars/outputfilter/hyperlink.inc.php`
`manager/includes/docvars/outputfilter/htmltag.inc.php`
`manager/includes/docvars/outputfilter/datagrid.inc.php`
`manager/includes/docvars/outputfilter/date.inc.php`
`manager/includes/docvars/outputfilter/delim.inc.php`
`manager/includes/docvars/outputfilter/string.inc.php`
`manager/includes/document.parser.class.inc.php`
`manager/includes/docvars/outputfilter/image.inc.php`
`manager/includes/docvars/outputfilter/hyperlink.inc.php`
`manager/includes/docvars/outputfilter/htmltag.inc.php`
`manager/includes/docvars/outputfilter/datagrid.inc.php`
`manager/includes/docvars/outputfilter/date.inc.php`
`manager/includes/docvars/outputfilter/delim.inc.php`
`manager/includes/docvars/outputfilter/string.inc.php`
`manager/includes/docvars/outputfilter/richtext.inc.php`

## Interfaces and Dependencies
外部依存は追加しない。`tvProcessor()` と outputfilter の既存インターフェースを維持するため、管理画面・フロント双方への影響を最小化できる。
外部依存は追加しない。`tvProcessor()` と outputfilter の既存インターフェースを維持するため、管理画面・フロント双方への影響を最小化できる。
関連ドキュメントは `AGENTS.md`, `.agent/PLANS.md`, `assets/docs/architecture.md`, `assets/docs/template-system.md`。
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
- [x] (2026-02-13) logging.static.php のページングウィンドウに境界チェックを追加
- [x] (2026-02-13) paginate.inc.php の getNumberOfPage() に ceil() を適用
- [x] (2026-02-13) 静的検証(対象2ファイルの `php -l` で構文エラーなし)
- [ ] (未実施) 画面検証(イベントログ7ページ以上で 1/2/中間/最終ページの warning 非発生を確認)
- [x] (未実施) 画面検証(イベントログ7ページ以上で 1/2/中間/最終ページの warning 非発生を確認)

## Surprises & Discoveries
- `Paging::getNumberOfPage()` が小数を返す設計のため、`getCurrentPage()` の計算が間接的に小数依存になっていた。`ceil()` + `int` 化で `getPagingRowArray()` のループ境界が明確化された。
Expand Down Expand Up @@ -52,17 +52,17 @@ Source: $paging .= $array_row_paging[$current_row - 2];

## Concrete Steps

1. ページング配列アクセスを境界クランプ付きループへ置換する。
編集対象ファイル: `manager/actions/report/logging.static.php`(305〜315行付近)
実行コマンド: `php -l manager/actions/report/logging.static.php`
1. ページング配列アクセスを境界クランプ付きループへ置換する。
編集対象ファイル: `manager/actions/report/logging.static.php`(305〜315行付近)
実行コマンド: `php -l manager/actions/report/logging.static.php`
期待される観測結果: 構文エラーなし。先頭/末尾ページで範囲外アクセス由来の warning が出ない。
2. `$current_row` を整数で扱うよう型安全化する。
編集対象ファイル: `manager/actions/report/logging.static.php`(291行付近)
実行コマンド: `rg -n "int_cur_position|current_row" manager/actions/report/logging.static.php`
2. `$current_row` を整数で扱うよう型安全化する。
編集対象ファイル: `manager/actions/report/logging.static.php`(291行付近)
実行コマンド: `rg -n "int_cur_position|current_row" manager/actions/report/logging.static.php`
期待される観測結果: `$current_row` が整数化され、インデックス計算が小数依存しない。
3. `getNumberOfPage()` を切り上げ整数返却へ修正する。
編集対象ファイル: `manager/includes/paginate.inc.php`
実行コマンド: `php -l manager/includes/paginate.inc.php`
3. `getNumberOfPage()` を切り上げ整数返却へ修正する。
編集対象ファイル: `manager/includes/paginate.inc.php`
実行コマンド: `php -l manager/includes/paginate.inc.php`
期待される観測結果: 構文エラーなし。総ページ数が整数化され、ページ配列生成のループ境界が安定する。

## Validation and Acceptance
Expand Down
Loading