Skip to content

feat(chat): inspect native account login holders in settings - #7469

Merged
loopx-agent merged 1 commit into
mainfrom
codex/auth-consumer-settings-20261027
Oct 27, 2026
Merged

loopx-agent merged 1 commit into
mainfrom
codex/auth-consumer-settings-20261027

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

When an account handoff is held by another process, settings show a generic busy message while the detailed owner inventory is only available through the CLI. The existing native account settings now expose that same read-only inventory, including renamed services, external managers and explicit restart holds. App helpers share a row without losing PIDs; failed or partial reads stay unknown and can be retried in place.

The provider still owns discovery, eligibility and account effects. This adds no restart permission, quota observation, account switch, guest command or recovery worker. It reads once on entry and on explicit recheck; the ordinary status timer does not rescan processes. VM recovery and natural new-auth adoption remain separate acceptance work.

Validation: the original HTTP route fails the two inventory/recovery cases with 404; the new route passes. All 74 account tests, the native host client handoff smoke, TypeScript checking and Chat build pass. The packaged settings walk uses the production HTTP service and disposable native policy store with synthetic process IO: 21 owners, unknown/partial/empty/sparse/recovered reads, keyboard expansion, Chinese/English, 390px layout, unchanged policy and zero account/model effects. An existing App-only test fixture now explicitly supplies its documented empty service set, preserving its quit/selection assertions instead of treating a process scan as a quit.

Visual evidence uses public-safe synthetic data. Before uses the original settings component and stylesheet; after uses this head. The collapsed view preserves account status, while expanded held owners appear first and all 18 App helper PIDs remain readable. No live credentials or workloads appear in these captures.

Before Default after
Original settings Login holder summary

Expanded desktop

Expanded at 390px Unavailable read at 390px
Narrow complete inventory Unknown and retry

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

自动换号被进程占用阻止时,查看原生账号设置的用户需要知道具体占用者和等待原因。旧页面只提示还有进程占用,用户需另找 CLI 才能定位;新页面可展开同一原生清单,看见外部管理器、改名服务和全部 App 子进程。设置页显示完整检查结果及时间,失败或不完整时清空旧清单并显示无法确认;恢复读取后可再次查看,不执行换号或终止进程。本次不新增重启权限、不执行虚拟机命令,也不把占用识别或受控重启资格视为真实新认证已采用。

没有发现阻塞问题。本次是完整可用的诊断增量,仍保留以下缺口:外部虚拟机内业务的空闲、恢复及新认证采用仍未验收;原生自动换号还需要真实额度耗尽后的完整验证。 已有原生接续工作继续负责这些验收,不能用这一页的成功替代真实换号结果。原界面缺少的诊断已通过旧组件截图及旧 HTTP 入口的实际 404 核实,保留现状会继续让用户绕到独立 CLI。

改动思路 / Approach

直接展示原生 provider 已有 clients 结果,保留同一个分类和效果 owner,比复制扫描器、增加恢复 worker 或让用户抄写 PID 更小且可持续。本 PR 完成交付既有账号设置中的只读占用检查、未知及重试旅程;原 App、服务和外部工作负载的重启边界不变。 配置、额度判断、受控重启与服务恢复仍由原 provider 决定,Core 只接通现有读操作,页面只投影当前结果。读取只在进入、主动重查及既有账号操作后发生;普通状态定时器不扫描进程。没有增加恢复队列、手写进程名单或第二个消息消费者。

场景 原界面 本次界面
有多个占用 通用忙碌提示 折叠总数,展开全部占用与外部管理器
检查失败或不完整 没有清单 明确无法确认,清除旧结果,可重新读取
同一 App 多个辅助进程 需另查 CLI 合并为一行,保留每个 PID

具体改动 / Changes

验收依据为变更前的 packages/loopx-codex-provider-routing/NATIVE.md,spec_revision ec32c3b8cb274695fdcff21617f05a34adc8fd67。不是用本 PR 新写的说明反过来证明实现。逐项判断:native-inventory-read-only、native-service-discovery-owner、native-unknown-owner-hold、native-explicit-effects-permission 均 implemented;native-vm-adoption-gap 为 deferred,仍需原工作负载 owner 证明空闲、恢复及新认证采用。文档如实把“设置页尚缺失”更新为当前已交付范围,并保留外部边界。

关键代码讲解

  • CodexAccountService.call 和原 GET 路由直接调用已有 NativeAccounts.clients;POST 操作白名单没有加入 clients,传入强退参数的请求在到达 provider 前被拒绝。原生入口对 clients 明确关闭服务恢复,读取不启动额度观察、换号或终止进程。
  • readInventory 只接受完整且合法的响应,并用请求序号拒绝过时结果。开始读取和原账号动作先清空旧清单;失败、部分返回不会被展示成“没有占用”。没有新增持久状态或修改原账号事务。
  • CodexAccountSettings 把外部阻塞排前,同一 App 的辅助进程合并,所有十八个 PID 仍可读。管理器信息只是来源说明;“支持受控重启”旁的共享解释保留原权限和再次核验条件,既没有新增重启按钮,也没有授权终止外部任务。

测试与夹具覆盖真实 HTTP 服务、原生私有策略存储和打包后的页面。既有 App-only 测试夹具补上其本来声明的空服务集合,避免真实 ps 扫描被 quit stub 误接;原退出、选择、拒绝和恢复断言全部保留。五张截图仅含合成资料,已逐张检查画面和来源,PNG 只有标准图像块,没有文本或 EXIF 元数据。

对主干的风险 / Risks

最主要的风险是旧清单或不完整响应被误读成可安全重启。当前请求序号、完整性校验和清空分支覆盖这个方向;界面只展示原 owner 的资格,不参与任何终止决策。可用性不是授权,默认关闭策略下的实际读取不创建策略目录、不启动 observer,保存过的策略也保持逐字节不变。

PASS:全部 74 项账号/API 测试、原生客户端 identity/scope/switch/recovery smoke、TypeScript 检查和 Chat 构建。打包旅程包含 21 个占用、两个语言、390px、空/稀疏/失败/部分/恢复结果,7 次清单读取、0 个账号或模型效果;跨一个正常状态轮询没有新增扫描。旧入口两项实际失败 404,当前同样案例通过。初始三项旧夹具 KeyError、早期测试工作目录及浏览器夹具/语言错误的记录均保留,当前完整验证覆盖原来暴露的边界,没有删断言或放宽条件。

风险预检的 6 项直接检查和 17 项选择检查均通过;原预检仍返回 manual_review_required,五个 PNG 的人工隐私检查由本次 exact-head 画面、来源及元数据审查完成,没有把原始门禁改写成通过。未查询或等待 CI。代码不更改 selector、重启或凭证 owner;回滚只撤销读路由和界面,无数据迁移。实际安装采用需要独立验收,虚拟机重启和自然额度耗尽后的认证采用仍未证明。

语义与 CI 对齐

复用已有 app/service/unmanaged、restartable 和 complete 词汇;新增的是本地诊断投影,没有扩大共享生命周期或权限。变更前后原生实现与调用边界一致,旧基线相关文件与 rebase 后父提交逐字节相同,测试工作区与最终 head 相同。当前本地语义词汇、RFC 双语和公开边界检查通过,没有新的 CI 等待义务。

我的整体评价 / Verdict

APPROVE 这个可逆、已接通实际调用者的完整诊断增量。long_horizon improved:后续检查保留单一 owner,失败可从原入口恢复,没有重复效果和后台扫描成本。user_experience improved:账号状态仍是主要信息,用户无需搬运 PID、重新输入已知配置或额外确认,展开和重新检查是自愿诊断,而非自动接续的新前置条件。完整页面的默认、展开及 390px 异常状态已检查:状态与账号仍是主层级,长服务名和全部 PID 可读,外部阻塞先于 App 辅助进程,重复解释只保留一处。截图使用合成进程,不证明真实管理器完整性、虚拟机重启或新认证采用。

体量与问题相称,主要增加的是能够复现生产入口的测试和证据,没有第二套策略或兼容版本。直接展示原生 provider 已有 clients 结果,保留同一个分类和效果 owner,比复制扫描器、增加恢复 worker 或让用户抄写 PID 更小且可持续。本 PR 完成交付既有账号设置中的只读占用检查、未知及重试旅程;原 App、服务和外部工作负载的重启边界不变。 最强的剩余验证是已安装真实服务采用本次读路由,以及原虚拟机/自然换号闭环;这两者均不能由合成截图或通过的 UI 测试推断。当前远端 head 与已审查 head 相同;权限、历史失败和真实任务恢复门禁均保留。

English verdict: APPROVE head be94419; no blocking finding. The existing native inventory now reaches settings with truthful unknown/retry handling. Local API, native handoff, packaged UI and required automated checks pass; five synthetic PNG privacy holds were manually inspected. VM recovery and natural new-auth adoption remain unverified.

@loopx-agent
loopx-agent merged commit a326640 into main Oct 27, 2026
13 of 15 checks passed
@loopx-agent
loopx-agent deleted the codex/auth-consumer-settings-20261027 branch October 27, 2026 08:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant