diff --git a/.github/workflows/publish-mobile-metadata.yml b/.github/workflows/publish-mobile-metadata.yml new file mode 100644 index 000000000..99b4a8eb6 --- /dev/null +++ b/.github/workflows/publish-mobile-metadata.yml @@ -0,0 +1,54 @@ +name: Publish Mobile Metadata + +on: + workflow_dispatch: + +concurrency: + group: publish-mobile-metadata + cancel-in-progress: false + +permissions: + contents: read + +env: + EAS_CLI_VERSION: 21.4.0 + MOBILE_DIR: apps/mobile + +jobs: + publish: + name: Publish App Store metadata + runs-on: ${{ vars.CI_RUNNER_LINUX || 'ubuntu-latest' }} + timeout-minutes: 10 + environment: release + + steps: + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + + - name: Setup pnpm + uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6 + with: + run_install: false + + - name: Setup Node + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6 + with: + node-version-file: .nvmrc + package-manager-cache: false + + - name: Setup EAS + uses: expo/expo-github-action@c7b66a9c327a43a8fa7c0158e7f30d6040d2481e # v8 + with: + eas-version: ${{ env.EAS_CLI_VERSION }} + packager: pnpm + token: ${{ secrets.EXPO_TOKEN }} + + - name: Validate metadata + working-directory: ${{ env.MOBILE_DIR }} + run: eas metadata:lint --profile production + + - name: Publish metadata + working-directory: ${{ env.MOBILE_DIR }} + env: + EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} + run: eas metadata:push --profile production --non-interactive diff --git a/apps/mobile/.gitignore b/apps/mobile/.gitignore index d914c328f..c8db4db31 100644 --- a/apps/mobile/.gitignore +++ b/apps/mobile/.gitignore @@ -17,6 +17,7 @@ expo-env.d.ts *.p12 *.key *.mobileprovision +credentials.json # Metro .metro-health-check* diff --git a/apps/mobile/eas.json b/apps/mobile/eas.json index de1787f62..b5cde6366 100644 --- a/apps/mobile/eas.json +++ b/apps/mobile/eas.json @@ -33,7 +33,8 @@ "ios": { "ascAppId": "6791199804", "appleTeamId": "422ACSY6Y5", - "bundleIdentifier": "com.arcboxlabs.linkcode.mobile" + "bundleIdentifier": "com.arcboxlabs.linkcode.mobile", + "metadataPath": "./store.config.json" } } } diff --git a/apps/mobile/store.config.json b/apps/mobile/store.config.json new file mode 100644 index 000000000..8472224fa --- /dev/null +++ b/apps/mobile/store.config.json @@ -0,0 +1,36 @@ +{ + "configVersion": 0, + "apple": { + "copyright": "2026 ArcBox, Inc.", + "categories": ["DEVELOPER_TOOLS", "PRODUCTIVITY"], + "info": { + "en-US": { + "title": "LinkCode", + "subtitle": "Your coding agents, anywhere", + "description": "LinkCode puts your coding agents on your iPhone and iPad.\n\nConnect to the LinkCode host on your computer to monitor active work, continue conversations, send prompts, review tool activity, and use terminal sessions without switching between separate agent interfaces.\n\nLinkCode provides one consistent workspace for Codex, Claude Code, OpenCode, Pi, and Grok Build. Your coding projects and agent history remain on the host machine.\n\nA LinkCode host is required.", + "keywords": [ + "coding agent", + "developer tools", + "remote development", + "terminal", + "Codex", + "Claude Code" + ], + "promoText": "Control the coding agents running on your computer from your iPhone or iPad.", + "marketingUrl": "https://linkcode.ai", + "supportUrl": "https://linkcode.ai/support", + "privacyPolicyUrl": "https://linkcode.ai/privacy" + }, + "zh-Hans": { + "title": "LinkCode", + "subtitle": "随时连接你的 Coding Agent", + "description": "LinkCode 将你的 Coding Agent 带到 iPhone 和 iPad。\n\n连接电脑上运行的 LinkCode Host,即可查看正在进行的任务、继续对话、发送提示词、检查工具调用,并使用终端会话,无需在不同 Agent 界面之间反复切换。\n\nLinkCode 为 Codex、Claude Code、OpenCode、Pi 和 Grok Build 提供统一工作台。项目文件和 Agent 历史记录仍保留在 Host 设备上。\n\n使用本 App 需要一台运行 LinkCode Host 的电脑。", + "keywords": ["编程", "代码", "开发工具", "远程开发", "终端", "AI", "Codex"], + "promoText": "在 iPhone 或 iPad 上随时查看和控制电脑中运行的 Coding Agent。", + "marketingUrl": "https://linkcode.ai/zh", + "supportUrl": "https://linkcode.ai/zh/support", + "privacyPolicyUrl": "https://linkcode.ai/zh/privacy" + } + } + } +}