Repository navigation
Open
Labels
agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsarea:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:channelChannel chat, timeline, composer, and navigationChannel chat, timeline, composer, and navigationfeature:messagingMessaging module and external providersMessaging module and external providersready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Milestone
Description
Parent
#1020 — Authorized Bridge media in Channel history. Coordination: #48.
What to build
Human explicitly prepares and plays qualified Lark/Feishu audio and video inside the original bubble, with original download and truthful native metadata/format fallbacks.
Acceptance criteria
- Qualify supported native audio and video items and their real resource associations. Introduce shared bubble playback controls through these working behaviors; do not claim support from MIME/extension guesses alone.
- No autoplay. Show known duration and existing platform transcript with provenance; no transcript does not prevent supported playback. Use an actual qualified video poster only when available.
- Retain original audio/video download. Browser format refusal, missing poster, unavailable provider bytes and transfer failure are distinct visible states. Do not add model transcription, generated posters or arbitrary transcoding.
- Record native platform capability limitations from primary evidence; an unverified platform/media pair remains incomplete, not an unsupported declaration by assumption.
- 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.
Metadata
Metadata
Assignees
Labels
agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsarea:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:channelChannel chat, timeline, composer, and navigationChannel chat, timeline, composer, and navigationfeature:messagingMessaging module and external providersMessaging module and external providersready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Type
Projects
- StatusShow more project fieldsDone
- StatusShow more project fieldsDone
Activity
8 remaining items
DoodleBears commentedon Oct 16, 2026
Guarded QA2 attempt: generic-file case verified, native video still pending
Task:
codex/local/01a13902-0d72-7872-ac0f-440e152155d5. Core #1950 remains at5e9f2a9f067aea06f629bfa1c72bbabd178e338d; Provider #31 remains atf889a5808a342bb9b4abf586f115e57cb44b2b6b. No code changes in this attempt.On 2026-10-16 the browser recovered enough to verify the signed-in Human and designated QA2 group. A guarded isolated receiver used the exact candidate and official DeepSeek Flash: a real DM returned MODEL_OK, and the actual Lark group rendered exactly one GROUP_VIDEO_OK and one VIDEO_A_OK with matching accepted Outbox receipts. The Human uploaded the 6-second synthetic MP4 through the real Image & video menu and quoted it with a native Bot mention. Lark delivered it as a generic file, without native video metadata. Channel projection correctly remained file; a live CLI playback request refused with audio-codec-unsupported and wrote no output. Managed-file and attachment-binding counts stayed zero. This is a real generic-file negative case, not native-video playback acceptance. Switching to Lark's newer web interface was followed by browser timeout and explicit no-automation-host errors. The candidate identity was unbound and its exact owned Host stopped; QA2 is released. No other receiver was changed.
Final full CI remains green. Native video/manual decoded playback, installed-product E2E, matched visual evidence and first-slice Human QA remain open. Audio and direct media are outside this tracer. #1023 remains open and both PRs remain draft.
DoodleBears commentedon Oct 16, 2026
Newer Lark Web checked: native video input still required
Task
codex/local/01a13902-0d72-7872-ac0f-440e152155d5; Core #1950 and Provider BotHarness/dsh-im#31 remain at their existing heads and draft state.The built-in browser recovered. The signed-in Human/organization and designated QA2 group were verified again. The newer Lark Web interface's Image & Video picker explicitly accepted
.mp4; it uploaded the same valid 6-second H.264/AAC synthetic clip under the new markerLARK_1023_VIDEO_20261016_B.mp4.Both the visible result and a read-only native message-list query for the designated group confirmed a Human-authored
msg_type=file, with no duration or native cover. This independently confirms that this particular Web upload did not produce the required native video message. It does not establish universal Lark Web limitations or qualify video playback.No QA2 receiver was started in this attempt. The previous candidate remains stopped and unbound. A native video sent through the Lark desktop/mobile client is now needed as the real parent fixture; after that, the agent can perform the genuine quoted Bot mention and remaining UI/byte/lifecycle checks through the built-in browser. No broader permission, competing receiver, product publication or merge has occurred.
Native-video and installed-product E2E remain incomplete. Conditional merge authorization has been received for these two PRs after all their acceptance and CI gates pass; #1023 must remain open for the remaining audio/direct-media scope.
DoodleBears commentedon Oct 16, 2026
Genuine native video intake verified; Lark monthly API quota blocks remaining E2E
Task
codex/local/01a13902-0d72-7872-ac0f-440e152155d5. Core #1950 and Provider #31 retain their existing heads. No code change in this attempt.The Human supplied two genuine native videos through the Lark client. The latest parent was quoted with a real Bot mention through the built-in browser. The candidate retained the canonical Source Event with the exact native parent, 6000 ms duration, video/unknown primary and image/unknown native cover; IDs were checked against the platform parent. Official DeepSeek Flash DM succeeded. However, the native identity endpoint returned HTTP 429 / 99991403, "This month's API call quota has been exceeded" (token authentication still returned 200/code 0). The result Outbox failed provider-unavailable with zero send attempts and no receipt. Managed-file and Attachment-binding counts stayed zero. No playback, download or installed-product media success is claimed. The exact task-owned receiver was unbound and stopped; QA2 is released. The remaining native gates require restoration of the Lark API quota.
This is Lark platform quota exhaustion, not model-provider quota or a browser-connection failure. Existing native video parents are retained for a fresh uniquely marked quote after quota recovery. Manual decoded playback, original bytes, lifecycle, installed-product E2E and visual/Human QA remain pending. Both PRs remain draft and #1023 stays open. Conditional merge authorization applies after acceptance and CI gates pass.
feat: prepare checked Lark parent videos in Channel bubbles (#1950)
DoodleBears commentedon Nov 3, 2026
Video slice delivered by #1950 with BotHarness/dsh-im#31 and verified natively on 2026-11-03. Audio remains open.
fix(client): accept Lark voice media in Channel bubbles
docs: record real Lark voice playback qualification
DoodleBears commentedon Nov 3, 2026
Video delivered by #1950 with BotHarness/dsh-im#31, and audio by #3354 with BotHarness/dsh-im#35. Both verified on Lark QA1 on 2026-11-03.
DoodleBears commentedon Nov 3, 2026
Reopening, since closing was premature. #1950 and #3354 cover only audio and video quoted as the parent of a Bot-mentioned request. Still missing: directly sent native audio and video messages (not quoted), playback on mobile (which shows the original file only), and the remaining acceptance items such as stop and revoke recovery evidence.