Files
makelore/.project-docs/30-worklog/tasks/20261014-wechat-always-reply-4c92e7a1.md
T

8.3 KiB

Task: Remove user pause controls and keep bound WeChat replies enabled

Identity

  • Task ID: 20261014-wechat-always-reply-4c92e7a1
  • Mode: Feature
  • Branch: codex/20261014-wechat-always-reply-4c92e7a1-wechat-always-reply
  • Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20261014-wechat-always-reply-4c92e7a1
  • Base commit: d0451e9a9d
  • Owner: codex
  • Status: Planning

Scope

  • Add authorized device-only removal of safely unbound cards, scoped by tenant/user and bound revision; keep cloud identities/history intact and make rebindings visible again. Remove the WeChat user pause/resume feature. Completed binding, target switch and reconnect keep replies enabled; safely restore healthy old disabled bindings without bypassing original-operation, identity, logout, target or connectivity protections.

Intent And Constraints

  • User explicitly reverses the previous manual-pause policy: “不要这个功能,微信永远都可以回复。” This authorizes restoring ready valid old bindings, not changing unavailable Agents or misreporting service availability. Stop using a channel through existing unbind. Persistent constraint: no Yuxi/AgentBus edits; no planning-with-files workflow.

  • Official Concurrent/Planning Gate Passed: task4c92e7a1/feature/planning/worktree/branch/base d0451e9 match; primary occupied dirty remains read-only. Independent reviewer65peer records/195sections and incremental changes found no semantic conflict. Earlier pause/preserve-paused ADR/task prose is superseded by current direct human instruction; canonical docs stay read-only.

  • Project Context Loaded: read AGENTS; startup/memory/planning/own record; positioning, integrated state, decisions/auth004/personal cloud ADR, architecture/module/data flow, business/success/evidence/reflection/commitment indexes and community boundary. Main owns authentication and original-operation journals; Core/Yuxi persist route state. Source base is prior full trialRenderer including previous copy and homepage sidebar.

  • Source plan: remove pause/resume controls and paused-success copy; logged-in target switches request enabled=true, new/unlogged-in associations stay safely disabled until login; reconnect now enables after fresh readiness; serially restore eligible old bindings after fresh accounts/catalog/recovery checks, stopping on failure and keeping the original new enable operation ID. Do not mutate a pending old pause/route body's identity. No restore during an edit/scan/unknown result, failed read or owner logout.

  • Verification: update prior copy fixtures from committed a837c4f, extend policy/negative/race/recovery cases, run typecheck/scoped lint/focused unit/full default Vite/isolated Electron. Live delivery must use latest actual runtime rather than overwrite it.

  • Latest runtime has advanced to work-entry40930aec/Main93092/Host58003, with Main manifest metadata temporarily stale and peer awaiting manual login/final verification. Preserve this actual Main and wait for truthful final source/manifest before delivery. Unconditional backend-wide auto-recovery while client is closed remains a colleague policy concern; no source code here can guarantee service uptime.

  • Added user steering: unbound cards must support deletion; read-only assessment found no backend delete/archive interface. User explicitly chose device-only removal. Fresh original-operation, account revision, logout and authenticated owner checks precede persisting the local preference; it never deletes cloud identity or history.

Outcome

  • Implemented always-enabled valid bindings, no pause/resume UI, enabled connected target switches and reconnect completion, guarded serial convergence of healthy legacy disabled accounts. Actual online presence is mandatory for automatic restoration; original operation IDs/journals remain unchanged and unknown results stop the batch. Zero-write preflights can retry after a later refresh; changed targets require manual refresh.
  • Implemented local card deletion only after confirmed unbind/logout, with explicit device-only confirmation, scoped tenant/user revision preferences, persistence across refresh/reopen, rematerialization after rebind/revision change, fresh owner/recovery/revision/logout checks and visible storage failure. Unbound but still connected/unknown accounts retain safe unbind. No Yuxi/AgentBus or Main backend edits; DTO only declares the existing optional worker_online response.
  • README synchronized. Implementation committed at12d856cd60277bcc35670b0dc65dc64de8b4fe48; source complete and independently reviewed.
  • Task-owned immutable temporary Renderer assembled at3e22804cb834f18ff09c3b5150f811704fca44c7/tree7c5d1093c97839cdc33be26e35fe5caa8126c60e, parentec07c67, exact two-file runtime delta. All1444 tracked archive files and200 artifacts verified; Main40930/PID93092/Host58003 original69 non-Renderer bytes retained,18 predecessor feature receipts inherited honestly. Source README/tests/task provenance stays in implementation12d856. Native fresh clean Canvas guard recorded04:10:35UTC; root activated compatibility link then native Reload/Force Reload. No Main restart, real binding change, QR or card deletion.
  • Rebinding CUA to the current app resolved stale former-Main observation/input mapping. Actual native Alice original Canvas saved conversation/project, homepage,6 Agents and6 WeChat cards observed after refresh. Bound More no pause/resume; unbound test111 More has enabled device-only deletion and exact confirmation text. At cancel attempt CUA explicitly reported MacLocked; cancellation/result-finalization await user manual unlock. Candidate verify passes in files-activated-awaiting-cua-refresh state; pointer remains prior metadata until final receipt. Do not call this active-verified yet.

Verification

  • Focused Page unit tests 108/108 passed, including enabled-policy, serial old-record restoration, zero-write same-revision offline recovery, legacy management journals, unknown write identity retention, owner/tenant changes, deletion cancel/persistence/storage failure/rebind and fresh-state denials.
  • Final typecheck, scoped ESLint and diff checks passed after fixture correction. Full default build:vite passed for Renderer/Main/Preload/Utility; immutable complete current-source candidate default build also passed, normal setup/login retained.
  • Isolated Electron empty-workspace scenario passed. Main interaction scenario initially failed because the mock reused the first QR session for reconnect; source correctly deduplicated it. Test now assigns the second scan a fresh session, scoped scenario passed 1/1 in7.3s. No product dedup change. Both scenarios now passed;16 screenshots produced, root visually inspected deletion confirmation and post-removal/reload list without clipping.
  • Independent final source review PASS at Page SHA2565f418bb424b7a26cb815023fab5c0351210a9c0106835d51268b3ea5032de490. Project-doc ownership drift passed. Runtime delivery will preserve complete Renderer ec07c67 and actual Main40930/PID93092/Host58003, whose peer source/artifacts and fresh acceptance receipts are verified.

Follow-ups

  • Finish native cancellation and truthful runtime finalization after manual Mac unlock. No input-discard or force-unlock authorization. Files remain activated but Main and profile unchanged.
  • Authorized coordination handoff: verified newest direct human user message in thread01a12eba-e98b-76a3-8fd5-206f2820d623 listing this chat01a13373 and four peers, requiring reports followed by coordinated merge/push/restart/cleanup. Sent current transition/lock status under that human authorization; coordinator waits, no simultaneous pointer/compat changes. Root will send exact final source/docs SHAs and runtime state on completion, then leave consolidated publication/restart/cleanup to coordinator.
  • Earlier source status checked against current origin/main: Yuxi adapter979596f8f88a2132bfd35bef0828d0a9f5e0d870 and bindings UIe250b012e14460cf995c1d7141f58e62da44a8a0 already ancestors. Prior prompt implementationa837c4fd7e52fc1288f1f9a6737bd9775bfee56c and final own recordfbfc8b4ab003e7b862a344fe125ff073a83bcb84 not integrated; current final Page and tests include that prompt behavior and explicitly supersede old pause policy. Coordinator should integrate task commits/semantic current blobs, not mistake private full trial composites as independently requested source changes.

Promotion Candidates

  • None recorded.