Skip to content

[Maintainer] Steps only the maintainer can take to get the ObjectOS app onto a phone #184

Open

Description

@hotlong

维护者速读

2.0 的功能卡大多已合并,但 app 还从没装到过手机上:CI 的 EAS 构建一直被跳过,app 也没有关联 EAS 项目(#183)。下面这些步骤需要你的账号或你本人在场,seat 和 agent 做不了。每做完一项就勾掉;第 1 步里的两个值(Project ID 和 owner,都不是机密)请评论在本卡。

这张卡只由维护者处理,seat 不派发。

1. Expo 项目(浏览器,约 5 分钟)

  • 登录 https://expo.dev(可以用 "Continue with GitHub")。
  • 建一个组织来持有项目,例如 objectos:头像菜单 → Create organization。
  • 在该组织下新建项目:Projects → Create project。名称 ObjectOS,slug 必须是 objectos-mobile(app.config.ts 里就是这个值)。
  • 在本卡评论 Project ID(UUID)和 owner(组织名)。

2. CI 令牌(浏览器)

  • 组织设置 → Robot users → 新建,角色选 Developer → 创建 access token。令牌只显示一次。
  • 本仓库 → Settings → Secrets and variables → Actions → New repository secret:名称 EXPO_TOKEN,值填上面的令牌。⛔ 令牌不要贴到 issue、PR 或聊天里。
  • 注意:设置后,每次合并到 main 都会真正执行 EAS 构建和 OTA 发布。按车道章程,合并权会回到你手上([PM seat] repo:mobile — 🟢 os-justin #160 的落地守卫)。

3. iOS 签名(需要你本人,Android 可跳过)

  • 准备 Apple Developer 团队账号。
  • 二选一:
    • 在自己电脑上跑一次 eas credentials,完成 Apple 登录和双重验证;
    • 在 App Store Connect 创建一个 API Key 交给 EAS,之后 iOS 构建可以全自动。
  • 测试用的 iPhone 用 eas device:create 登记(内部分发包需要)。

4. Remote Control(可选:让 agent 在你的 Mac 上操作模拟器和 eas 命令)

  • 把 Claude 桌面端升级到最新版,然后重启。目前 objectui、cloud、framework 三个文件夹都显示对云端会话不可用。
  • 把本仓库 clone 到普通目录(例如 ~/code/mobile;不要放在 home 下以 . 开头的隐藏目录或 ~/Library 里),再加到 Settings → Claude Code → Remote Control。
  • 保持桌面端开着、电脑不休眠。

5. 真机验收(第 1、2 步完成且 #183 合并之后)

  • Android:在 EAS 构建页扫码安装 APK。iOS:安装内部分发包。
  • 按验收清单逐项测:docs/DEVICE-TESTING.md,加上每张已合并卡片里的人工检查项。清单会在出包时整理好,补到本卡。

6. 待你裁定或合并的事项

你做完之后 agent 会接着做

相关

#183(EAS 关联与出包)· #182(11 种语言)· #160(车道席位)· objectstack-ai/objectstack#29750(推送路由解析)

Activity

  1. self-assigned this
    on Nov 3, 2026
  2. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    on Nov 3, 2026
  3. hotlong commented on Nov 3, 2026

    @hotlong
    ContributorAuthor

    Status check against step 6: objectstack-ai/cloud#3487 is ruled, so its box is ticked. The ruling (model D, one environment per organization; sandbox not now) was posted two minutes after this card was opened, which is why the card still reads as undecided. Its execution is tracked on that thread.

    For #183: under that ruling there is no staging environment to name, so the preview profile's server address goes to "", as this card already says.

    Nothing else on this card has changed. Steps 1 and 2 are still open: no EXPO_TOKEN secret is set, and this machine has no Expo sign-in.

  4. hotlong commented on Nov 3, 2026

    @hotlong
    ContributorAuthor

    Step 1 values, read from the Expo dashboard:

    • Project ID: 40edd17e-752e-4062-a404-5eb8892ce47f
    • owner: objectstack (organization display name ObjectStack)
    • slug: objectos

    Deviation from this card: the card asks for slug objectos-mobile, and the project was created as objectos. Expo's project settings offer no slug rename, only transfer or delete. No build or binary exists yet, so the #183 PR changes the slug in app.config.ts and app.json to objectos and keeps this project.

    objectos is the maintainer's personal Expo username, and the project is owned by the objectstack organization, as step 1 asks.

    Step 2 ordering: set EXPO_TOKEN after the #183 PR merges. Until app.config.ts carries the project ID, a push to main with the token set is expected to fail at eas build --non-interactive.

  5. hotlong commented on Nov 3, 2026

    @hotlong
    ContributorAuthor

    First Android build: APK, built from the #185 branch (run 41598217327). It has not been installed on a device yet.

    EXPO_TOKEN is set, so step 2 is done. The token was set before #185 merged, so a merge to main from any other PR runs EAS against the old config and is expected to fail. Merge #185 first.

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

Metadata

Metadata

Assignees

Labels

toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions