1.5.0.0 の変更点
リリース日: 2026年1月13日。1.4.23.3 からの変更です。機能追加・仕様変更と不具合修正を分けて記載します。
機能追加・仕様変更
- 実行環境・DB — ターゲットフレームワークを.NET10となるよう改めた。
- その他 — マークダウンライブラリ(Marked)を更新した。
- 運用・設定 — バックグラウンドサービスに未使用のPermissions/Linksのレコードを削除できるようになった。
- API・拡張 — 計算式を無効にできるようになった。
- その他 — 状況による制御を無効にできるようになった。
不具合修正
- 利用者・権限 — 分析チャートの追加時、「サイトのエクスポート権限」が必須になっている不具合を修正。
- 運用・設定 — KVSの有効化時、ユーザ切り替え後、元のユーザに戻せない不具合を修正。
- その他 — 縦並びのラジオボタンに意図しないクリック領域がある不具合を修正。
- 実行環境・DB — ver.1.4.22.0以降で、CodeDefinerを/cオプションで実行後に「データベース変更なし」のメッセージが表示されない場合がある不具合を修正。
実装を読む
1.4.23.3 との差分を確認しています。実行環境の更新に加え、不要データの定期削除と、設定を残したまま計算式・状況による制御を止める機能が追加された版です。
| 機能 | 設定・実装 | 導入時の要点 |
|---|---|---|
| .NET 10 | TargetFramework | アプリケーションと CodeDefiner の実行環境をそろえる |
| 未使用レコードの削除 | BackgroundService.json | 既定では無効。対象は Links と Permissions |
| 計算式の無効化 | FormulaSet.Disabled | 定義を削除せずに計算対象から外す |
| 状況による制御の無効化 | StatusControl.Disabled | 定義を削除せずに適用対象から外す |
.NET 10 への移行と Markdown ライブラリの更新
アプリケーションの TargetFramework が net10.0 になりました。CodeDefiner も同じターゲットへ更新されています。プリザンター本体だけでなく、データベース構成を更新する CodeDefiner も .NET 10 を対象にしていることを確認できます(Implem.Pleasanter.csproj、Implem.CodeDefiner.csproj)。
Markdown の描画に使う Marked も更新されています。アプリケーションの実行環境の変更と、ブラウザで Markdown を HTML に変換するライブラリの変更は別の変更点です(package.json)。
未使用の Links・Permissions を定期削除する
BackgroundService.json に次の設定が追加されました。下記は有効化する例で、配布時の DeleteUnusedRecord は false です(BackgroundService.json)。
{
"DeleteUnusedRecord": true,
"DeleteUnusedRecordTime": ["03:00"],
"DeleteUnusedRecordChunkSize": 1000
}DeleteUnusedRecordTimer は、Links.DestinationId、Links.SourceId、Permissions.ReferenceId を順に対象として、参照先が使われていないレコードを削除します。ごみ箱の保管期間を指定する DeleteTrashBoxRetentionPeriod とは別の処理です(DeleteUnusedRecordTimer.cs)。
削除は ChunkSize の件数ずつ繰り返します。設定が未指定または 0 以下なら 1,000 件を使い、繰り返しは最大 10,000 回です。10 回ごとの途中経過と終了時の削除件数をシステムログに残すため、一度に全件削除する処理ではありません(DeleteUnusedRecordTimer.cs)。
計算式・状況による制御を定義ごとに無効化する
計算式には FormulaSet.Disabled、状況による制御には StatusControl.Disabled が追加されました。どちらも nullable な真偽値で、true の定義だけを無効として扱います。設定を削除せずに一時停止し、同じ内容を再び有効にできます(FormulaSet.cs、StatusControl.cs)。
計算式の実行側では、保存されている Formulas を直接走査する代わりに GetFormulas() を使い、無効な式を除外します。状況による制御も適用時に Disabled != true を条件にしています。無効化は実行する定義の選別に反映されます(SiteSettings.cs、IssueModel.cs)。