エディタ
typress のエディタは contentEditable ベースの自前実装で、本文は HTML ではなく JSON のブロックツリーとして保存されます。レンダリング時に各ブロックの attrs が Zod で再検証されるので、DB 行を直接いじっても XSS にはなりません。
v1 で同梱されているブロック
- core/paragraph — 段落
- core/heading — 見出し (H1 〜 H6)
- core/list — 順序付き / 無順序リスト
- core/quote — 引用
- core/code — コードブロック
- core/separator — 横罫線
- core/image — 画像
- core/video — MP4 / WebM 直貼り
- core/gallery — 画像ギャラリー、2〜5 列
- core/cover — フルブリードのカバー
- core/button — ボタン (href は javascript: ブロック済み)
- core/columns — 2〜4 カラム、比率選択可
- core/embed — YouTube / Vimeo (allowlist 制)
- core/raw-html — DOMPurify で常時サニタイズ
右サイドバーの設定
- アイキャッチ画像 — Open Graph / Twitter カード / アーカイブのサムネに使われる
- レイアウト — 標準 (中央 720px) / ワイド (テーマの最大幅まで広げる)
- ページの名前を表示しない — 固定ページのみ。
ショートカット
- / — ブロック挿入メニュー
- Cmd+B / Ctrl+B — 太字
- Cmd+I / Ctrl+I — 斜体
- Cmd+Z / Ctrl+Z — undo
- Backspace で空ブロック先頭 — ブロック削除
メディアのアップロード
スラッシュメニューから画像 / 動画 / ギャラリーを挿入する際にファイルピッカーが開きます。アップロードされたファイルは MIME を magic byte で判定し、SVG は DOMPurify SVG プロファイルでサニタイズ後に保存されます。SHA-256 で重複排除されるので、同じファイルを 100 回上げても 1 つ分しか容量を食いません。アップロードの安全性についてはセキュリティを参照。