Skip to content

WeChat tracer: real typing indication with bounded lifecycle #911

Closed

Description

@DoodleBears

Parent

#902 — Personal WeChat capability alignment. IM coordination reference: #48.

What to build

The WeChat owner sees the native typing indication while the bound Bot actually works on that DM, with prompt cleanup when it finishes, stops or loses authorization.

Scope: personal WeChat/iLink, explicitly authorized paired-owner DM. Enterprise WeChat/WeCom is excluded.

Acceptance criteria

  • Qualify native getConfig/sendTyping behavior for the bound account and owner DM. Keep the typing ticket private and do not present HTTP success alone as proof that the client showed an indicator.
  • Connect indication to actual existing Bot processing/output lifecycle, with bounded renewal and cleanup on completion, cancellation, failure, binding disable or Grant revocation.
  • Avoid indicating unrelated local Channel work as WeChat typing. Do not use typing as a delivered/read receipt or retain a sticky indicator after process disposal.
  • Expose the supported indication behavior through existing identity configuration and understandable state/diagnostics; unsupported native behavior is reported honestly.
  • Real E2E: Human observes and captures a genuine typing indicator during a controlled same-DM run, then completion and stop/failure cleanup. Add focused lifecycle regression coverage.

Blocked by

None — can start immediately. Completed prerequisite: #878 / PR #894.

Delivery and evidence

  • Deliver one production-shaped tracer through the qualified Provider, canonical Messaging authority, applicable PersonaBot/Channel/Inbox behavior, and an operable Client path. Reuse the existing exclusive Consumer; do not create standalone dsh-im Sessions or a parallel message store.
  • Keep the original external author, timestamp, lossless native message ID, Source Event ID, and trusted reply route. Every external send uses the acting Bot's own bound identity and current Grant; platform credentials, context tokens and media keys remain Provider-private.
  • Qualify the changed Provider capability on the maintained fork and pin the verified artifact. Submit reusable Provider changes upstream where appropriate, without making upstream merge a release prerequisite.
  • Complete fresh real WeChat E2E with the Human controlling WeChat. Include observable success and the relevant refusal/recovery behavior, focused regression coverage, and packaged-product verification. A model's claim, HTTP success, or client acknowledgement alone is not delivery/read proof.
  • Preserve real screenshots or recording during acceptance; embed GitHub-renderable evidence in the PR, including before/after and applicable light/dark states for visible UI changes. Do not publish credentials or unrelated chat contents.
  • Update the illustrated English and Chinese WeChat connection guide and reusable IM integration guidance with verified behavior and platform limitations; edit canonical source docs, not generated site content.
  • Create one issue-linked PR, then pause for Human QA. Merge and deployment require their own Human authorization. Issue closure requires the accepted behavior, not only documentation or a capability flag.

Activity

  1. added this to the v1.1 milestone on Oct 5, 2026
  2. added
    ready-for-agentFully specified, ready for an AFK agent
    area:fullstackEnd-to-end Host and Client implementation
    feature:messagingMessaging module and external providers
    scope:tracerHuman-testable implementation slice
    on Oct 5, 2026
  3. DoodleBears commented on Oct 7, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a112f7-9794-7692-9b17-b71aa980b313 (not a DSH Session)
    • Issue scope: WeChat tracer: real typing indication with bounded lifecycle #911 personal WeChat/iLink native typing indication tied to authorized paired-owner DM processing, bounded renewal and cleanup; verified Provider and Human-observed native E2E, bilingual illustrated guides.
    • Branch: codex/911-wechat-typing
    • Started: 2026-10-07 05:23 UTC
    • State: active

    Claim: codex/local/01a112f7-9794-7692-9b17-b71aa980b313 — starting #911. Main baseline 4ae1335302cbe4612d109d7cc626a68784ff16a5; no existing claim or matching open PR found. #910 remains merged; no WeCom scope or deployment authorization.

  4. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    in-progressHeld by an agent session; see Claim comment for who
    on Oct 7, 2026
  5. DoodleBears commented on Oct 7, 2026

    @DoodleBears
    ContributorAuthor

    Agent work handoff — Windows continuation

    Read the complete Windows handoff for the design boundaries, reproducible package commands, known failures, migration warning and remaining acceptance steps. The same document lives on the issue branch and should be updated by the receiving task.

    Provider is pushed to DoodleBears/dsh-im:codex/911-wechat-typing, commit d93f6236e4800dce06fc96506fc0e6a5b760476b, based on main's 4f4f0a6282580bb59968eb90571778eb7e37ee73. Candidate managed artifact .13: 398 runtime files, SHA-256 8eaee5405a42a747a66c891ab0c9fb2fc3c4f2e61b1029469ce965490d75e663. No npm release or upstream PR was made.

    Validated facts:

    • Provider final full check: 3,618 passed, zero failed/skipped, artifact verification passed. Earlier Dingtalk timing assertions failed in two full runs; both parent and candidate's focused 104-test file passed, and the final full suite passed. The root cause remains unconfirmed.
    • After latest-main integration: 83 related tests passed, plus typecheck, format, lint and build. These include WeChat canonical processing, Assignment overlap/acceptance, generations 59/60 → 61 migration retaining Lark approval config, product pins and Lark approval regressions.
    • Earlier BotHarness full suite: 3,012 passed, nine skipped, before the final integration/extra tests; this is not a final-head full-suite claim.
    • Final candidate product 0.0.0-test.911.3 booted in a fresh unpaired isolated Profile: authenticated botharness/list returned HTTP 200 / successful envelope; installed umbrella/Core/UI were .911.3, Provider .13. Package boot does not prove real WeChat typing.
    • Final-head GitHub verify and prerelease preparation were running when recorded; the receiving task must inspect final results.
    • The previously requested #909 CI run is completed / success.

    The current blocker is browser access to the WSL QA Host: local Host probes worked, automatic Codex navigation was blocked, and Human navigation returned ERR_HTTP_RESPONSE_CODE_FAILURE. Cause not diagnosed. Per the Human's direction, the old task-owned WSL QA Hosts were stopped after checking exact PID/home/port; ports 31910/31911/31912 are no longer listening. Private profile/pairing/model files remain machine-local and were not uploaded; old login links are invalid.

    Windows continuation must use an independent Windows-local QA Profile, configure local model credentials, prove a real DM model reply, and have Human re-scan WeChat. Take before/after Client light/dark images and Human native indicator/normal completion/stop-or-failure recordings, verify refusal/recovery and canonical ownership, finish bilingual illustrated guides, validated PR Lens and standards/spec reviews, and verify the actual packaged product. Old .911.1/.911.2 generation-60 typing smoke Profiles must not be used as upgrade sources; main now owns generation 60 for Lark approvals, and current typing is generation 61 / ADR-0142.

    Do not close #911, mark the goal complete, promote this Draft or infer native visibility from API acceptance. #912 has no implementation or claim yet; it remains a separate next PR. One issue / one BotHarness PR, no WeCom, Human operates native WeChat, PR acceptance then Human QA; merge and deployment each require explicit authorization. The prior #910 merge authorization does not apply to #911.

    The receiving task should add its own claim referencing this handoff and continue the existing #1102, rather than creating a second #911 PR.

    Final CI addendum — 2026-10-07

    Both handoff runs are now completed / success:

    • Verify 37582797172: 3,061 tests passed / nine skipped, 367 test files passed / five skipped; lint, format, typecheck, slides, build and generated computer/browser bundle checks passed. The full suite invokes the actual Astro docs build inside apps/docs/test/changelog-public-surfaces.test.ts.
    • Preparation 37582797109: same full regression result, public maintained-fork Provider checkout/install, exact product package preparation, npm dry-run and artifact upload passed. Prepared CI preview version is 0.1.0-alpha.1-preview.1102.37582797109; no npm publication or deployment occurred.

    Both runs are associated with head 435f694f82962cacd104d706673e2615457e920d. Actions checked out the synthetic PR merge 047201b6b7c961c70e0bad13f13e4b3365baa104; its parents are integrated main 009e020b and handoff head 435f694f. GitHub confirms its tree is exactly the handoff head's tree (2574406c28a6ca6fd9fe80efa5f62e0bd36df782), so this full-suite evidence covers the handed-off code contents.

    These replace the earlier pending-CI status only. Native WeChat observation, Windows packaged E2E, Client screenshot/video evidence, final illustrated guides, PR Lens and standards/spec reviews remain open. Draft status, handed-off claim and separate merge/deploy authorization gates remain unchanged.

  6. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 7, 2026
  7. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — Windows continuation

    • Agent: Codex
    • Task: codex/local/01a119ff-d4c2-74b0-9ea8-17aa1a3811d0 (not a DSH Session)
    • Issue scope: WeChat tracer: real typing indication with bounded lifecycle #911 Windows-local packaged-product qualification, native owner-DM typing E2E with Human-operated WeChat, Client screenshots and native recordings, remaining handoff acceptance checks.
    • Branch: codex/911-wechat-typing
    • Started: 2026-10-08 05:40 UTC
    • State: active

    Continuing the explicit Windows handoff, whose previous claim is handed-off. Retain existing Draft PR #1102. Use independent Windows QA Profiles and local model configuration; Human re-scans WeChat. #912 remains unclaimed until #911 Human QA. No merge or deployment authorization; one issue / one PR.

  8. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 8, 2026
  9. 1 remaining item

  10. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    • Agent: Codex
    • Task: codex/local/01a119ff-d4c2-74b0-9ea8-17aa1a3811d0 (not a DSH Session)
    • State: paused — awaiting Human fresh-Profile pairing and native requalification, then final Human QA.
    • Branch: codex/911-wechat-typing; continuing Draft PR #1102, head 7880f106.
    • Integrated main 04c01e0e; kept main's generation 66 unchanged, advanced typing preference to generation 67 / ADR-0145. Provider 36da305 / .15 preserves the latest upstream input and passed 89 focused regressions plus package verification. Host/Client/migration regressions passed 74 tests; defaults/product checks passed another 28. The actual .911.8 product boots in a fresh Windows Profile and has a saved real model DM reply.
    • .911.7 Human observations completed: native execution and final reply, related Assignment, accepted follow-up, preference off, failure/cancellation, Binding disablement, Grant revocation/recovery, genuine Provider disposal, Windows Host interruption/restart and fresh-message recovery. Local DM work left Host typing idle. Human explicitly accepted screenshots instead of video. The Windows record distinguishes preliminary failed attempts, these historical results, and pending .911.8 checks.
    • Remaining: Human must freshly pair/bind .911.8, verify its native execution and Assignment paths after the authorized scoped official ACL repairs, and complete final QA. Before/dark UI capture remains limited by the unpaired baseline and detached browser control; existing native screenshots and both-theme ownership diagrams render on GitHub. Windows full suites are not green; baseline reproductions and limits remain documented. Current CI is linked in the PR.
    • Current head CI passed: verify and preparation, 3,216 passed / nine skipped, 396 files passed / five skipped. Synthetic PR merge eb2849ee and head 7880f106 have the same tree. Preview 0.1.0-alpha.1-preview.1102.37745847155 was prepared with npm dry-run and artifact upload only. This is Linux CI evidence, not Windows native acceptance.
    • No merge, deployment, public release or issue closure. WeChat tracer: global behavior defaults and Profile inheritance #912 remains untouched until WeChat tracer: real typing indication with bounded lifecycle #911 final Human QA.
  11. added and removed
    ready-for-agentFully specified, ready for an AFK agent
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    in-progressHeld by an agent session; see Claim comment for who
    on Oct 8, 2026
  12. added a commit that references this issue on Oct 8, 2026
  13. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Windows native QA addendum after Human merge

    • Task: codex/local/01a119ff-d4c2-74b0-9ea8-17aa1a3811d0.
    • Human merged WeChat #911: owned native typing — Windows validation #1102 at 895153357ba11c1729a8f9df2c3e5093401ab968; this task did not merge or deploy it.
    • Fresh packaged candidate 0.0.0-test.911.8, pinned DSH 0.2.0-rc.1, completed fresh owner pairing and binding in an isolated Windows Profile. The qualified Provider pin and schema Generation 67 match the merged implementation.
    • 911-V8-COMPLETE: one actual native pwsh 30-second timer, stdout 911-V8-COMPLETE, successful tool result and accepted final bridge reply. Human confirmed native input visibility, successful receipt and disappearance afterward.
    • 911-V8-ASSIGN: related Assignment ran one native pwsh 30-second timer, reported completed with stdout 911-V8-ASSIGN and exit code 0, followed by the Orchestrator's accepted final bridge reply. Human confirmed input visibility, successful receipt and disappearance. Both newly authorized QA directories have now passed their original native sandbox verification following the limited backed-up ACL repairs.
    • 911-V8-STOP: approved 90-second native pwsh command was still unsettled when the exact QA Session was cancelled through the native stop endpoint. Host typing returned to idle; Human confirmed the native indication disappeared.
    • Earlier .911.7 completion, disabled preference, Assignment, stop, identity-disable, Grant-revoke/recovery, Provider disposal/recovery, steering and Host-restart/recovery checks remain documented in the Windows handoff. Human waived video; screenshots and observations are the agreed evidence.
    • State: awaiting final Human QA acceptance for WeChat tracer: real typing indication with bounded lifecycle #911; WeChat tracer: global behavior defaults and Profile inheritance #912 has not started. No deployment occurred. The same idle isolated Profile was subsequently updated to the separate Bind app: show occupied apps, clarify setup copy and refresh after pairing #1176 Client candidate, preserving pairing, to review the three binding UI findings without changing WeChat tracer: real typing indication with bounded lifecycle #911's recorded candidate version.
  14. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Final Human QA acceptance and continuation

    Task: codex/local/01a119ff-d4c2-74b0-9ea8-17aa1a3811d0.

    Human has confirmed continuation after the recorded Windows native checks and approved/merged the separate binding UX follow-up #1181. The .911.8 completion, related Assignment and native stop requalification are recorded in #911 (comment); the .911.7 cleanup/recovery matrix, genuine native screenshots, video waiver and Windows full-suite limitations remain documented rather than overwritten.

    #1102 was merged by Human at 895153357ba11c1729a8f9df2c3e5093401ab968. This closes the final #911 Human QA wait and continues separately with #912. No deployment or public release is authorized or performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:fullstackEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersready-for-humanRequires human implementationscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions