changelog.ts 履歴管理パターン
:LiTarget: 用途
配列に「いつ・誰が・何を変えたか」を最上段に append し続けるパターン。/changelog ページで一覧表示。
- 配列全置換 NG(既存履歴消える事故が起きやすい)
- 末尾のユーティリティ関数(getCategoryLabel / getCategoryColor)は触らない
- snapshotTs に紐付けて、その変更前のスナップショットに巻き戻し可能
:LiCode: スキーマ例
export type ChangeCategory = 'feature' | 'improve' | 'fix' | 'ui' | 'infra' | 'security';
export interface ChangelogEntry {
id: string; // ce-YYYY-MM-DD-NN
date: string; // YYYY-MM-DD
time: string; // HH:MM
title: string; // 一行
category: ChangeCategory;
scope: string[]; // ['tasks', 'calendar']
summary: string; // 1-2行
details?: string[];
files?: string[];
snapshotTs?: string; // 復元用
href?: string; // 該当画面URL
hrefLabel?: string;
}
export const CHANGELOG: ChangelogEntry[] = [
{ /* 最新が先頭 */ },
];
export function getCategoryLabel(c: ChangeCategory) { /* ... */ }
export function getCategoryColor(c: ChangeCategory) { /* ... */ }
:LiAlertCircle: 重要ルール(事故から学んだ)
- 配列全置換禁止(過去の事故: 3049行 → 188行に削減でビルドエラー)
- 末尾のユーティリティ関数は絶対に触らない(
Editのold_stringで配列内のみ対象に) - 編集は最上段への append のみ(既存配列の閉じ括弧
]より前に新エントリ追加)