FEAT GUI: Share image, audio, and video previews with datasets
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- python, typescript
- 領域
- api, backend, frontend, testing-qa
調査の方向性
Start with frontend/src/components/Chat/MessageList.tsx, especially ImageWithSpinner and MediaWithFallback, then inspect frontend/src/utils/media.ts, pyrit/backend/routes/media.py, and the URL helpers in pyrit/backend/mappers/attack_mappers.py. Run the relevant frontend and Python tests before changing behavior; done means shared previews work for dataset details and chat, media remains lazy and safe, and mapping and failure cases are covered without cloud credentials.
索引モデルが issue の本文から書いたものです。
説明
Is your feature request related to a problem? Please describe.
The dataset detail view must display images and play audio/video, but the GUI already implements much of this in chat. Duplicating media rendering or treating stored file paths as browser URLs would produce inconsistent behavior.
Work item 5 of 17 in #2744. Technical prerequisite: item 4's detail view and the seed detail API. Keep not ready yet until promoted.
Describe the solution you'd like
Extract shared preview components and narrowly reusable media-URL mapping so chat and dataset details use the same behavior.
- Render supported images and use native audio/video playback controls. Load media lazily/on demand; never autoplay. Stop playback when leaving or dismissing a preview.
- Expose client-fetchable seed asset URLs through the existing media-serving/signing mechanisms. Keep stable source references separate from expiring display URLs.
- Preserve linked text/media in one example. Show useful loading, missing-file, expired/inaccessible-link, and unsupported-format states, with retry/download where supported.
- Keep existing allowed storage roots, inline-media allowlists, authentication, and content-security rules. Do not enable arbitrary local files or active HTML/SVG rendering to make a preview work.
- Keep chat behavior intact while extracting its helpers. Do not refactor unrelated message rendering.
Acceptance criteria:
- Image, audio, and video fixtures work in dataset details and still work in chat.
- Local stored assets and signed blob URLs use the existing backend paths correctly.
- Media is not eagerly downloaded for every dataset/table row and never starts playing automatically.
- Broken assets and unsupported codecs fail visibly without breaking the table.
- Tests cover shared preview behavior and media URL mapping without real cloud credentials.
Describe alternatives you've considered, if relevant
Do not introduce a new media store, video transcoding service, separate chat/dataset players, or broader filesystem access. Unsupported formats can remain downloadable rather than requiring new codecs.
Additional context
Start with frontend\src\components\Chat\MessageList.tsx (ImageWithSpinner and MediaWithFallback), frontend\src\utils\media.ts, pyrit\backend\routes\media.py, and the URL resolution/signing helpers in pyrit\backend\mappers\attack_mappers.py. The media route already recognizes seed-prompt-entries. Follow the frontend, Python, and relevant test instructions.
- 主要言語
- Python
- スター
- 4.5k
- フォーク
- 896
- 平均マージ
- 3日 1時間
- マージ済み PR(30日)
- 208
環境構築
このプロジェクトの環境構築ファイルはまだ確認していません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/PyRIT のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 91/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
-
Bug: triage GUI help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
microsoft/PyRIT#2868 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
microsoft/PyRIT の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
solana-foundation/pay-kit#341 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
nasa/python_cmr#123 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
EleutherAI/lm-evaluation-harness#4243 ·
メンテナーはふだん 1 日以内に返信
-
area: dashboard bug perceived difficulty: 3
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
Nitjsefnie-Harness-Commons/daedalus#1179 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
cusp-ai-oss/tojax#17 ·