/** * @fileoverview Media-extension parity — attachment registry ⇄ frontend copies. * * CLAUDE.md single-sources playable media extensions in * `VIDEO_ATTACHMENT_EXTENSIONS`/`AUDIO_ATTACHMENT_EXTENSIONS` * (src/attachment-registry.ts): the workspace preview and the out-of-workspace * attachment path must agree on what plays. The frontend cannot import that * module, so two hand-maintained copies exist and BOTH have drifted: * * - `FILE_PREVIEW_EXTENSIONS` (constants.js) decides whether a clicked * terminal/chat path opens the preview overlay or the tail/log viewer. It * was missing `m4v ogv ogg oga m4a aac flac opus`, so an in-workspace * `.m4a` routed to the log viewer and rendered as binary noise while the * same file in /tmp played fine. * - `VIDEO_EXTS`/`AUDIO_EXTS` (panels-ui.js) pick the