Skip to content

Bridge tracer: WeChat original voice playback in Channel bubbles #1032

Open

Description

@DoodleBears

Parent

#1020 — Authorized Bridge media in Channel history. Coordination: #48.

What to build

Human uses an inline voice player, platform-provided transcript where present and original download for real WeChat owner-DM voice messages retained in Channel history.

Acceptance criteria

  • Reuse merged feat(wechat): retain original voice and prepare bounded audio playback #1015 / completed WeChat tracer: checked raw voice access and supported audio processing #906 original-voice retention and bounded playback preparation. Do not introduce a second audio conversion lifecycle or provider-private credential store.
  • Click prepares supported playback, including qualified WAV preparation where applicable. Preserve original audio download, actual duration and existing platform transcription provenance.
  • Prove playback with and without a platform transcript, preparation failure/retry, refresh/restart and access revocation. Bot understanding and voice processing policy remain unchanged.
  • Deliver one production-shaped path through qualified Provider intake, canonical Source Event, realtime and historical Channel projection, authorized Host media access and operable bubble UI. Do not start a competing receiver or a second message store.
  • Preserve external author, source-name button/Modal, message boundary and known item ordering. Multiple and mixed media remain one native message; unknown ordering/metadata is honest. Provider URLs, tokens, AES keys and credentials remain private.
  • Human Channel access resolves trusted media authorization without choosing or borrowing a Bot identity. Recheck placement, source/media identity, current Channel access and independent valid source authorization during acquisition and serving.
  • Visible-image previews acquire on visibility; audio/video and file actions acquire on explicit action. Reuse existing Host Attachment management; keep the default 25 MiB bound, cancellation and bounded concurrency. Display loading, too-large, unsupported, failure and retry states honestly.
  • After acquisition, refresh and Host restart retain authorized history access. Ordinary Bridge reception stop allows acquired-media viewing but no new acquisition through that stopped path. Unbind/media revocation prevents acquisition and serving through that authorization; independent valid paths remain independent. Do not resurrect Content Purge content.
  • Human viewing creates no Bot Observation, model-context change, Inbox admission, wake or external send authority. Inbox-only creates no Channel history. Bot understanding and own-identity permissions remain unchanged.
  • Complete focused observable regression coverage and real platform/media E2E: receive a uniquely identifiable native message, inspect actual bytes/preview/play/download as applicable, refresh/restart, and demonstrate relevant stop/revoke/error recovery. Mock payloads, flags and HTTP success alone are not platform proof.
  • Provide GitHub-renderable matched before/after light/dark screenshots, relevant playback/recovery recording and usable Human verification steps. Follow DSH tokens/primitives and keyboard/accessibility conventions; keep private chat content and secrets out of evidence.
  • Update applicable canonical English/Chinese user guidance and bilingual release ledgers for delivered behavior; do not edit generated docs. Deliver one issue-linked PR with task claim/trace and review-risk classification, then pause for Human QA before expanding dependent slices. Merge/deployment require separate authorization.

Blocked by

Planning and authority

Project: V1.1 · IM Identities & Messaging (#10). Milestone: v1.2, explicitly selected by Human; Project title does not override milestone. Human approved ticket granularity and blocking edges before publication. This publication does not claim implementation or take over existing WeChat work.

Completed reusable prerequisite: #906 / merged PR #1015. Verify its delivered contracts before implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:fullstackEnd-to-end Host and Client implementationfeature:channelChannel chat, timeline, composer, and navigationfeature:messagingMessaging module and external providersready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions