PetaCMS

更新履歴

PetaCMS の新機能・改善・バグ修正を時系列で公開しています。

2026-04-14

サンドボックス機能リリース + Phase 0 完了

  • 🎁 サンドボックスサイト機能を追加 — サンプル記事5本+スニペット3個入りの仮サイトで14日間試せる(2026-04-15 に 7日 → 14日へ延長)
  • 🔒 メール認証基盤強化 — SPF/DKIM/DMARC 3レコード全反映完了
  • 🛡️ gitleaks 本番運用開始 — コミット毎に機密漏洩スキャン
  • ⚡ LP Lighthouse 99/100/100/100 達成
  • 🐛 E2E テスト 16件全緑 — 認証フロー drift 修正

サンドボックス機能

新規登録ユーザーに向けて、サンドボックスサイト を 1 秒で作成できる機能を追加しました。

  • サンプル記事 5 本 + サンプルスニペット 3 個を自動投入
  • 7 日で自動削除(cron が cascade 削除)
  • ハード制限: 記事 20 / スニペット 10 / 画像 10
  • カスタムホスト・API キー発行は不可

「どう始めようか迷う」ユーザーが、機能を丸ごと試せる環境を提供します。登録画面の 🎁 サンドボックスで試す ボタンから利用可能です。

Phase 0 完了

ドメインセットアップが 100% 完了しました。

  • SPF: v=spf1 include:_spf.resend.com ~all
  • DKIM: Resend 経由で設定済
  • DMARC: v=DMARC1; p=quarantine; rua=mailto:yuta.sato@movon.jp

認証済みメール送信の到達率が向上しています。

セキュリティ

  • gitleaks 全 223 コミットスキャン で機密漏洩ゼロ確認
  • lefthook pre-commit で自動スキャン稼働中
  • セキュリティチェックリスト 25 項目自己監査 (docs/security-status-2026-04-14.md)

パフォーマンス

Lighthouse スコア(peta-cms.com):

  • Performance: 99
  • Accessibility: 100
  • Best Practices: 100
  • SEO: 100

テスト

  • E2E: 16/16 通過 (オンボーディング通しテスト 3 本追加)
  • Unit: 300+ テスト全緑
  • 既存テストの Figma リスタイル後 drift を修正

技術的変更

  • sites.sandbox_expires_at カラム追加 (migration 0008)
  • sandboxLimitMiddleware / sandboxForbidMiddleware 追加
  • cron: cleanupExpiredSandboxes (日次) 追加
2026-04-13

セキュリティ監査完了 + movon.jp 自社ドッグフード開始

  • 🛡️ ペネトレーションテスト 15/15 通過 (IDOR/SQLi/XSS/CSRF/JWT偽造 等)
  • 🏠 movon.jp で PetaCMS NoticeBar 本番稼働開始 (自社ドッグフード)
  • 💳 Stripe 実課金 E2E 通過 (Starter プラン)
  • 🧪 オンボーディング E2E 一気通貫テスト通過
  • 🚨 Sentry 全 6 Worker + admin-web に DSN 投入完了
  • 📝 利用規約・プライバシーポリシー・特商法ページ公開

セキュリティ

ペネトレーションテスト 15/15 通過:

  • IDOR 検出: 他サイトの ID 直指定で 403/404
  • SQL Injection: Drizzle parameterized query のみ使用
  • XSS: DOMPurify でサニタイズ
  • CSRF: 3層防御 (SameSite + Origin + Double Submit)
  • JWT 偽造: Ed25519 署名検証
  • セッション管理、権限昇格、レースコンディション等、全通過

movon.jp ドッグフード開始

自社 Web サイト movon.jp のトップページに PetaCMS の NoticeBar を実装。 管理画面からリアルタイムで告知テキストを更新できる体制になりました。

Stripe 課金

  • Checkout → Webhook → Subscription active の完全フロー通過
  • Webhook idempotency (stripe_events テーブル) 実装
  • Customer Portal 連携確認

エラー監視

全 Worker + admin-web Pages に Sentry DSN 投入。 beforeSend で PII マスキング処理を統一。

法務ページ

全て公開済み。バーチャルオフィス契約により住所公開も完了。

2026-04-12

管理画面 UI 全面刷新 + キャッシュ無効化パイプライン完成

  • 🎨 全20画面 DESIGN.md 準拠にリスタイル (SmartHR Design System ベース、紫禁止)
  • ⚡ キャッシュ無効化パイプライン完成 (sites.rev + KV manifest + Cache-Control)
  • 🌐 Custom Hostnames 統合 (SaaS 顧客独自ドメインで記事配信可能)
  • 📊 9人レビュー: GO 4 / 条件付き GO 5 / NG 0 → 本番 GO

UI 全面刷新

全 20 ページと ui-lite 5 コンポーネント + AppLayoutDESIGN.md (SmartHR Design System ベース) に準拠。

  • Stone 系ウォームグレー + PetaCMS Blue #3b82f6
  • Inter + Noto Sans JP
  • 紫系カラーの完全排除
  • セマンティックカラー + shadow/radius トークン整備

キャッシュ無効化

  • admin-api 全 CRUD 操作後に sites.rev bump
  • KV に manifest.json 書き込み
  • public-api: manifest エンドポイント (KV→D1 fallback) + Cache-Control

これにより記事投稿〜公開反映までの遅延が数秒以内に短縮されました。

Custom Hostnames

Cloudflare for SaaS を使った顧客独自ドメイン配信機能が完成。 https://blog.example.com のような任意のドメインで PetaCMS 記事を配信できます。

  • hostname 認証完了時の KV 書き込み
  • 削除時の KV パージ
  • SSR host: prefix 統一
2026-04-11

cron / queue 本番稼働 + Phase 5 Cache 完成

  • ⏰ cron 予約公開 scanner 本番実動 (PoC-4 実装を移植)
  • 🖼️ 画像最適化パイプライン実動 (R2 + Queue + WebP変換)
  • 🔄 hostname recheck/cleanup handler 実装
  • 🔒 全 Worker に HSTS + Permissions-Policy + COOP 追加

バックグラウンド処理

  • cron worker: 毎分の予約公開スキャン、毎時の画像最適化スキャン、日次のメンテナンスジョブ
  • queue consumer: 画像最適化、hostname lifecycle 管理、publish job

セキュリティヘッダー

全 Worker に以下を適用:

  • Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
  • Cross-Origin-Opener-Policy: same-origin
2026-04-10

メンバー招待フロー + PostHog トラッキング

  • 👥 メンバー招待フロー完全実装 (invitations テーブル + Resend メール)
  • 📊 PostHog イベントトラッキング導入 (15+ イベント)
  • 🔑 JWT ローテーション機構 (鍵ペア overlap 対応)
  • 📝 TipTap v3 統合完了

メンバー招待

サイトのオーナーが他メンバーを招待できるフローを実装。

  • 招待トークン: CSPRNG 128bit + sha256 ハッシュ DB 保存
  • 有効期限: 72 時間
  • ワンタイム使用
  • Resend でメール通知

分析

PostHog で以下のイベントをトラッキング:

  • onboarding_site_created
  • onboarding_connection_verified
  • onboarding_completed
  • post_created, post_published
  • その他 15+ のユーザーアクション

これにより funnel 分析や A/B テストが可能になりました。