Skip to content

Rebrand the app to ObjectOS: app name, URL scheme objectos, bundle id / package ai.objectos.mobile #151

Closed

Description

@hotlong

Blocked-by: #150

Context

The runtime front end is branded ObjectOS and does not foreground ObjectStack. Maintainer rulings, verbatim:

「我们的系统运行前端统一叫。ObjectOS,不要强调 ObjectStack」
「包名用 ai.objectos.mobile」

The app has not shipped to a store yet, so the identifiers can change now without a migration.

Ask

  • App identity: app.config.ts and app.json
    • name ObjectOS;
    • URL scheme objectos (the default of EXPO_PUBLIC_APP_SCHEME);
    • iOS bundleIdentifier and Android package = ai.objectos.mobile.
  • EAS slug: changing slug (objectstack-mobile) creates a new EAS project. Decide in the PR whether to keep the slug or move to objectos-mobile, and record the reason.
  • Code and comments that name the scheme: lib/shell/incoming-link.ts docblock and examples become objectos://open?route=… and objectos://console/…. Its regex is scheme-agnostic; keep it that way. Test fixtures should use the new scheme.
  • User-visible copy, en / zh / ar: say ObjectOS. The welcome title and the sign-in footnote are in the design canvas.
  • Docs: README, docs/*.md.
    • Rename the product to ObjectOS.
    • Keep platform API paths such as /.well-known/objectstack and package names such as @objectstack/* as they are; they are technical identifiers.
  • Unchanged: the ObjectStackNative bridge global and the objectstack-native:navigate event, which belong to the bridge contract with the Console. Renaming them is a separate decision.

Acceptance

  • npm run lint and npx jest --ci pass.
  • npx expo export --platform ios bundles.
  • A link objectos://console/apps opens that route on a development build (manual check, listed in the PR's 维护者速读).

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv

    First touch (single-lane repo, the seat does its own triage).

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv

    Claim: PM loop round 1
    Session: session_01QSeKYnW1Xf6HDSWz1eGAqv
    Account: os-justin
    Branch: claude/issue-151-objectos-rebrand
    Worktree: mobile-issue-151
    Domain: n/a — single-lane repo (repo:mobile)
    Seat: repo:mobile#1
    File surface: app.config.ts, app.json, eas.json (only if the slug moves), lib/shell/incoming-link.ts (docblock and examples), __tests__/** fixtures that spell the scheme, locales/{en,zh,ar}.json, README.md, ROADMAP.md, docs/*.md, .changeset/151-objectos-rebrand.md (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: default tier (opus) — dispatch-gates --tier --repo objectstack-ai/mobile: no path-derived mandate, effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds
    Serial constraints cleared: #154 is dispatched in the same round and shares only locales/*.json and docs/*.md. That is ordinary concurrency: the PR that lands later resolves the conflict. No single-writer path is involved.

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv
    os-dev-report

    {
      "issue": 151,
      "status": "done",
      "branch": "claude/issue-151-objectos-rebrand",
      "pr": "https://github.com/objectstack-ai/mobile/pull/164",
      "session": "session_01QSeKYnW1Xf6HDSWz1eGAqv",
      "premise_still_valid": true,
      "summary": "Premise held on origin/main 8c6f13a (Blocked-by #150 closed). Changed the app identity in app.config.ts and app.json: name ObjectOS, scheme default objectos, ios.bundleIdentifier and android.package ai.objectos.mobile, slug objectos-mobile. app.json now also spells the two native ids. Slug decision recorded in the PR: no EAS project is bound (no extra.eas.projectId or owner; the EAS Build and Update runs on 8c6f13a skipped every step because EXPO_TOKEN is unset, runs 41412302838 and 41412302837), so the move is cheap and revertible. Whether an expo.dev project with the old slug exists is NOT MEASURED. Also updated: incoming-link docblock, +native-intent docblock, .env.example, test fixtures (including exp+objectos-mobile dev-client) plus one scheme-agnostic pin, the en/zh/ar server-picker subtitle, and README/ROADMAP/docs. Changeset added (patch). Bridge names, API paths, @objectstack/* names, persisted storage keys and the ObjectStackShell UA token were kept, as categories listed in the PR body. Card assignee left untouched. The welcome title and sign-in footnote named on the card do not exist on main (no locale keys or screens), so they were not renamed here.",
      "tests": "head 44b7269: npx jest --ci --maxWorkers=2 → Test Suites: 26 passed, 26 total; Tests: 284 passed, 284 total; PASS __tests__/lib/shell/incoming-link.test.ts (new case: acme-crm://console/apps/crm → /apps/crm and acme-crm://open?route=%2Fapps → /apps). No tested behaviour changed (config/copy/comments), so no ablation. npx expo config --type public --json (EXPO_PUBLIC_APP_SCHEME unset, no .env) → ObjectOS objectos-mobile objectos ai.objectos.mobile ai.objectos.mobile.",
      "gates": [
        {
          "cmd": "npx tsc --noEmit",
          "exit": 0,
          "head": "44b7269",
          "note": "under os-verify-lock, VERDICT command-exit 0; --listFiles: 88 non-node_modules files incl. both incoming-link files"
        },
        {
          "cmd": "npx eslint . --ext .ts,.tsx",
          "exit": 0,
          "head": "44b7269",
          "note": "VERDICT command-exit 0; eslint 8.57.1; --format json on the 4 changed TS files: 0 errors 0 warnings"
        },
        {
          "cmd": "npx jest --ci --maxWorkers=2",
          "exit": 0,
          "head": "44b7269",
          "note": "VERDICT command-exit 0; 26/26 suites, 284/284 tests"
        },
        {
          "cmd": "npx expo export --platform ios --output-dir SCRATCH/expo-dist",
          "exit": 0,
          "head": "44b7269",
          "note": "VERDICT command-exit 0; iOS Bundled 3826 modules, entry hbc 7.9MB"
        },
        {
          "cmd": "PR check-runs (read once at report time)",
          "exit": null,
          "head": "44b7269",
          "note": "Code Quality=in_progress; Lint & Type Check=in_progress"
        }
      ],
      "gates_exit_file": "/tmp/claude-0/-home-user/b8d41080-bc0f-5479-b39a-9ebb93157dc8/scratchpad/issue-151/gates.txt",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm (Clause-②: no)",
      "line_budget": "n/a — no skills/** or ratcheted ledger touched; diff +72 -45 across 16 files",
      "files_changed": [
        ".changeset/151-objectos-rebrand.md",
        ".env.example",
        "README.md",
        "ROADMAP.md",
        "__tests__/lib/shell/incoming-link.test.ts",
        "app.config.ts",
        "app.json",
        "app/+native-intent.tsx",
        "docs/DEPLOYMENT.md",
        "docs/DEVICE-TESTING.md",
        "docs/HYBRID-SHELL.md",
        "docs/PUSH-NOTIFICATIONS.md",
        "lib/shell/incoming-link.ts",
        "locales/ar.json",
        "locales/en.json",
        "locales/zh.json"
      ],
      "deviations": [
        "surface: app/+native-intent.tsx outside the claim surface; its docblock spelled objectstack:// links (the card's ask 'code and comments that name the scheme'); declared in PR body",
        "surface: .env.example outside the claim surface; it spelled the scheme default (dispatch assumption 2 anticipated it); declared in PR body",
        "jest gate run with --maxWorkers=2 (container resource discipline); test set unchanged",
        "expo export written to the scratchpad via --output-dir so the worktree stays clean",
        "eas.json not touched: it names no slug or scheme"
      ],
      "mcp_calls": "0",
      "api_writes": "2 — relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches → fleet-write run 41443604731 → POST /repos/objectstack-ai/mobile/pulls, read-back identical 7553 bytes); relay post-stamped comment on objectstack-ai/mobile#151. git push of the branch is not a REST write.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: none · noted, not filed — lib/app-lock.ts prompts 'Unlock ObjectStack'; the module is dormant (its only importer is __tests__/lib/app-lock.test.ts), so the string is not shown today; belongs to whoever wires ROADMAP Phase 4 biometric lock (PR Acceptance notes)",
        "carrier: maintainer · noted, not filed — the WebView UA token ObjectStackShell/ and the reply global __objectstackNativeResolve are wire identifiers like the ruled-unchanged bridge names; a rename belongs with that separate bridge-naming decision (objectstack d9885f5d has zero consumers of ObjectStackShell; control ObjectStackNative hits)"
      ]
    }
  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv

    ACCEPT → PR #164 comment 6577017396 (head 44b7269). Ready for review; the maintainer is requested. The maintainer merges (a merge to main runs EAS). Then this card closes through Fixes #151.

  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    Contributor

    repo:mobile#1 · os-justin · session_01QSeKYnW1Xf6HDSWz1eGAqv

    Landed. #164 merged at 7cb17d1. It was merged by os-zhuang after that account's approval on head 44b7269.

    Reading Value
    PR #164 merged=true, merge commit 7cb17d1
    EAS Build / EAS Update on 7cb17d1 success, but every build and publish step was skipped (the token is unset). Nothing was built or published.

    State: pm:dispatched is removed and the card closed completed via Fixes #151. The card that waits on this one: #156 (still waits for #154). #159 was held behind it on locales/*.json and is now released from that. It still waits for #154.

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions