typressAn editorial workshop.

エディタ

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 つ分しか容量を食いません。アップロードの安全性についてはセキュリティを参照。