背景 / 問題
Markdown 内の画像 () は現状ローカルの相対パス画像を正しく表示できない。
- HTML レンダラ (
crates/mdpeek-render-html) は <img src="{dest_url}"> を dest_url そのままで出力する。
- サーバ (
crates/mdpeek-server) は埋め込み静的アセット (/static/{*path}) しか配信しないため、 や  のようなリポジトリ内のローカル画像を配信するルートが存在せず、ブラウザプレビューで画像が壊れる(404)。
- TUI レンダラ (
crates/mdpeek-render-term) は [image: alt] というプレースホルダテキストのみを表示する。
外部 URL (https://…) の画像は <img> がそのままブラウザから取得するため表示可能だが、ローカル画像は表示できない状態。
目的
Markdown 内の画像を、ブラウザプレビューおよび(可能な範囲で)TUI で表示できるようにする。
スコープ / タスク
ブラウザプレビュー(優先)
TUI(任意 / follow-up 可)
受け入れ条件
参考
crates/mdpeek-render-html/src/lib.rs(Tag::Image の処理、L401 付近)
crates/mdpeek-server/src/lib.rs(ルーティング L194 付近 / 静的アセット配信 L618 付近)
crates/mdpeek-render-term/src/lib.rs(Tag::Image の処理、L518 付近)
背景 / 問題
Markdown 内の画像 (
) は現状ローカルの相対パス画像を正しく表示できない。crates/mdpeek-render-html) は<img src="{dest_url}">を dest_url そのままで出力する。crates/mdpeek-server) は埋め込み静的アセット (/static/{*path}) しか配信しないため、やのようなリポジトリ内のローカル画像を配信するルートが存在せず、ブラウザプレビューで画像が壊れる(404)。crates/mdpeek-render-term) は[image: alt]というプレースホルダテキストのみを表示する。外部 URL (
https://…) の画像は<img>がそのままブラウザから取得するため表示可能だが、ローカル画像は表示できない状態。目的
Markdown 内の画像を、ブラウザプレビューおよび(可能な範囲で)TUI で表示できるようにする。
スコープ / タスク
ブラウザプレビュー(優先)
/asset/{*path}等)。..や絶対パスでリポジトリ/watch ルート外へ出られないようにする)。Content-Type付与(png / jpeg / gif / svg / webp など)。SVG はサニタイズ/配信ポリシーを検討。dest_urlを配信ルート経由の URL に書き換える(外部 URL・data URI はそのまま通す)。TUI(任意 / follow-up 可)
[image: alt]プレースホルダにフォールバック。受け入れ条件
参考
crates/mdpeek-render-html/src/lib.rs(Tag::Imageの処理、L401 付近)crates/mdpeek-server/src/lib.rs(ルーティング L194 付近 / 静的アセット配信 L618 付近)crates/mdpeek-render-term/src/lib.rs(Tag::Imageの処理、L518 付近)