From 55b349b615ac1e2faeabea17b2f8f9e31bbd073a Mon Sep 17 00:00:00 2001 From: xiaoweii Date: Tue, 23 Jun 2026 18:19:30 +0800 Subject: [PATCH 1/2] chore: rename VifChat to AI Assistant and expand gitignore Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/workflows/release.yml | 4 +-- .gitignore | 12 +++++++ README.md | 36 +++++++++---------- README_CN.md | 36 +++++++++---------- react-native/README.md | 2 +- react-native/android/app/build.gradle | 2 +- .../app/src/main/res/values/strings.xml | 2 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/swiftpm/Package.resolved | 0 react-native/ios/Podfile | 2 +- react-native/ios/SwiftChat/Info.plist | 2 +- .../SwiftChatLiveActivity.swift | 4 +-- react-native/package.json | 6 ++-- react-native/release.sh | 8 ++--- react-native/src/api/ChatProviderRouter.ts | 2 +- react-native/src/api/bedrock-api.ts | 6 ++-- .../src/api/providers/bedrock-mantle.ts | 2 +- react-native/src/api/providers/open-api.ts | 2 +- .../src/chat/service/BackgroundTaskService.ts | 2 +- .../src/chat/service/VoiceChatService.ts | 2 +- react-native/src/settings/SettingsScreen.tsx | 5 +-- server/README.md | 6 ++-- server/install.sh | 18 +++++----- server/src/main.py | 8 ++--- 26 files changed, 92 insertions(+), 79 deletions(-) rename react-native/ios/{VifChat.xcworkspace => AIAssistant.xcworkspace}/contents.xcworkspacedata (100%) rename react-native/ios/{VifChat.xcworkspace => AIAssistant.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) rename react-native/ios/{VifChat.xcworkspace => AIAssistant.xcworkspace}/xcshareddata/swiftpm/Package.resolved (100%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 2bc65082..9cf6bda6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -30,7 +30,7 @@ body: validations: required: true - type: input - id: vifchat-version + id: ai-assistant-version attributes: label: App Version placeholder: e.g. 1.0.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4bb75542..2fc1214d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ jobs: git add . git config user.name '${{ vars.USER_NAME }}' git config user.email '${{ vars.USER_EMAIL }}' - git commit -m 'release: VifChat v${{ env.NEW_VERSION }}' + git commit -m 'release: AI Assistant v${{ env.NEW_VERSION }}' git push git tag ${{ env.NEW_VERSION }} git push origin ${{ env.NEW_VERSION }} @@ -51,7 +51,7 @@ jobs: - name: Create GitHub release uses: softprops/action-gh-release@v2 with: - name: "VifChat v${{ env.NEW_VERSION }}" + name: "AI Assistant v${{ env.NEW_VERSION }}" files: | react-native/android/app/build/outputs/apk/release/*.apk tag_name: "${{ env.NEW_VERSION }}" diff --git a/.gitignore b/.gitignore index 4989bab6..931ef233 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,15 @@ # .DS_Store .idea + +# Swift Package Manager build cache +.build/ +react-native/ios/LocalPackages/LiteRT-LM/.build/ +assets/test_agent_imgs/ + +# Python +__pycache__/ +*.py[cod] + +# Claude Code +.claude/ diff --git a/README.md b/README.md index 937cd8bb..11cbb0d1 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# Sample Vif Chat App — A Cross-platform AI Assistant +# Sample Mobile AI Assistant — A Cross-platform AI Assistant App > 🚀 Your Personal AI Workspace — Chat, Create Apps, and More -[![GitHub Release](https://img.shields.io/github/v/release/aws-samples/sample-vif-chat-app)](https://github.com/aws-samples/sample-vif-chat-app/releases) +[![GitHub Release](https://img.shields.io/github/v/release/aws-samples/sample-mobile-ai-assistant)](https://github.com/aws-samples/sample-mobile-ai-assistant/releases) [![License](https://img.shields.io/badge/license-MIT--0-green)](LICENSE) [中文](/README_CN.md) -VifChat is a fast and responsive AI assistant developed with [React Native](https://reactnative.dev/) and +AI Assistant is a fast and responsive AI assistant developed with [React Native](https://reactnative.dev/) and powered by [Amazon Bedrock](https://aws.amazon.com/bedrock/), with compatibility extending to other model providers such as Ollama, DeepSeek, OpenAI and OpenAI Compatible. With its minimalist design philosophy and robust privacy protection, it delivers real-time streaming conversations, AI image generation, instant web app creation and voice conversation @@ -20,7 +20,7 @@ capabilities across Android, iOS, and macOS platforms. - 🚀 Upgrade to React Native 0.83 with New Architecture enabled (From v2.8.0). - 🚀 Support create or edit instant web apps with one prompt (From v2.7.0). - 🚀 Support Web Search for real-time information retrieval (From v2.7.0). -- 🚀 Update VifChat Server with API Gateway + Lambda deployment supporting 15-minute streaming output (From v2.7.0). +- 🚀 Update App Server with API Gateway + Lambda deployment supporting 15-minute streaming output (From v2.7.0). - 🚀 Support Image Gallery for browsing and managing generated images (From v2.7.0). **Create App**: Generate, Edit, Share and Preview Instant Web Apps @@ -65,7 +65,7 @@ You can choose one of the following two methods for configuration long-term API key. -2. Copy and paste the API key to the (Amazon Bedrock -> Bedrock API Key) under VifChat Settings page. +2. Copy and paste the API key to the (Amazon Bedrock -> Bedrock API Key) under AI Assistant Settings page. 3. The App will automatically get the latest model list based on the region you currently selected. If multiple models appear in the list, it means the configuration is successful. @@ -73,7 +73,7 @@ You can choose one of the following two methods for configuration
-🔧 Configure VifChat Server (Click to expand) +🔧 Configure App Server (Click to expand) ### Architecture @@ -88,30 +88,30 @@ We use **API Gateway** combined with **AWS Lambda** to enable streaming response **Deploy with one command:** ```bash -curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-vif-chat-app/main/server/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-mobile-ai-assistant/main/server/install.sh | bash ``` -By default this deploys to **the account of your current AWS profile**, in the region from `$AWS_REGION` or your `aws configure` default (fallback: `us-east-1`), with stack name `VifChat`. Wait about 3-4 minutes to see your **API URL**, **API Key** obtain link, and a scannable QR code for auto-configuring the app. +By default this deploys to **the account of your current AWS profile**, in the region from `$AWS_REGION` or your `aws configure` default (fallback: `us-east-1`), with stack name `AIAssistant`. Wait about 3-4 minutes to see your **API URL**, **API Key** obtain link, and a scannable QR code for auto-configuring the app. To target a different account, region, or stack: ```bash -./install.sh --region us-west-2 --stack MyVifChat --profile myprofile +./install.sh --region us-west-2 --stack MyAIAssistant --profile myprofile ``` | Flag | Purpose | Default | |---|---|---| | `--region` | AWS region to deploy into | `$AWS_REGION` or `us-east-1` | -| `--stack` | CloudFormation stack name | `VifChat` | +| `--stack` | CloudFormation stack name | `AIAssistant` | | `--profile` | AWS CLI profile to use | current default profile | ### Step 2: Open the App and setup with API URL and API Key 1. Launch the App, open the drawer menu, and tap **Settings**. -2. Under Amazon Bedrock → VifChat Server, tap the scan icon next to **API URL** to scan the QR (iOS/Android) — or paste `API URL` and `API Key` manually. +2. Under Amazon Bedrock → App Server, tap the scan icon next to **API URL** to scan the QR (iOS/Android) — or paste `API URL` and `API Key` manually. 3. Select your Region, then tap the top right ✓ to save. -Congratulations 🎉 Your VifChat App is ready to use! +Congratulations 🎉 Your AI Assistant App is ready to use!
@@ -173,7 +173,7 @@ Congratulations 🎉 Your VifChat App is ready to use! - `GPT-4o` - `GPT-4o mini` -Additionally, if you have deployed and configured the [VifChat Server](#getting-started-with-amazon-bedrock), you +Additionally, if you have deployed and configured the [App Server](#getting-started-with-amazon-bedrock), you can enable the **Use Proxy** option to forward your requests. @@ -281,7 +281,7 @@ https://github.com/user-attachments/assets/ebf21b12-9c93-4d2e-a109-1d6484019838 https://github.com/user-attachments/assets/c70fc2b4-8960-4a5e-b4f8-420fcd5eafd4 -> Note: Amazon Nova Sonic currently only available with VifChat server. +> Note: Amazon Nova Sonic currently only available with App Server. #### Other Features @@ -341,7 +341,7 @@ landscape orientation. ![](assets/animations/landscape.avif) -## What Makes VifChat Really "Vif"? +## What Makes AI Assistant Really Fast? 🚀 **Fast Launch Speed** @@ -403,7 +403,7 @@ npm run ios ### Build for macOS 1. Execute `npm start`. -2. Double click `ios/VifChat.xcworkspace` to open the project in your Xcode. +2. Double click `ios/AIAssistant.xcworkspace` to open the project in your Xcode. 3. Change the build destination to `My Mac (Mac Catalyst)` then click the ▶ Run button. ## API Reference @@ -416,11 +416,11 @@ Please refer [API Reference](server/README.md) - **Android** and **macOS**: Navigate to **Settings** Page, if there is a new version, you will find it at the bottom of this page, then click the app version to download and install it. -- **iOS**: If a new version is released in the [Release page](https://github.com/aws-samples/sample-vif-chat-app/releases), +- **iOS**: If a new version is released in the [Release page](https://github.com/aws-samples/sample-mobile-ai-assistant/releases), update your local code, rebuild and install your app by Xcode. **Note**: After downloading a new version, please check -the [release notes](https://github.com/aws-samples/sample-vif-chat-app/releases) to see if an API version update is required. +the [release notes](https://github.com/aws-samples/sample-mobile-ai-assistant/releases) to see if an API version update is required. ### Upgrade API diff --git a/README_CN.md b/README_CN.md index e72a29fe..ca485adb 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,13 +1,13 @@ -# Sample Vif Chat App — 跨平台 AI 助手 +# Sample Mobile AI Assistant — 跨平台 AI 助手 App > 🚀 您的个人 AI 工作空间 — 聊天、创建应用等 -[![GitHub Release](https://img.shields.io/github/v/release/aws-samples/sample-vif-chat-app)](https://github.com/aws-samples/sample-vif-chat-app/releases) +[![GitHub Release](https://img.shields.io/github/v/release/aws-samples/sample-mobile-ai-assistant)](https://github.com/aws-samples/sample-mobile-ai-assistant/releases) [![License](https://img.shields.io/badge/license-MIT--0-green)](LICENSE) [English](/README.md) -VifChat 是一款快速响应的 AI 助手,采用 [React Native](https://reactnative.dev/) +AI Assistant 是一款快速响应的 AI 助手,采用 [React Native](https://reactnative.dev/) 开发,并依托 [Amazon Bedrock](https://aws.amazon.com/bedrock/) 提供强大支持,同时兼容 Ollama、DeepSeek、OpenAI 和 OpenAI 兼容的其他模型供应商。凭借其极简设计理念与坚实的隐私保护措施,该应用在 Android、iOS 和 macOS 平台上实现了实时流式对话、AI 图像生成、极速 Web 应用创建和语音对话功能。 @@ -19,7 +19,7 @@ VifChat 是一款快速响应的 AI 助手,采用 [React Native](https://react - 🚀 升级至 React Native 0.83,启用 New Architecture(自 v2.8.0 起)。 - 🚀 支持一句话创建或编辑极速 Web 应用(自 v2.7.0 起)。 - 🚀 支持网络搜索,获取实时信息(自 v2.7.0 起)。 -- 🚀 更新 VifChat 服务器,支持 API Gateway + Lambda 部署,最长支持 15 分钟流式输出(自 v2.7.0 起)。 +- 🚀 更新 App 服务器,支持 API Gateway + Lambda 部署,最长支持 15 分钟流式输出(自 v2.7.0 起)。 - 🚀 支持图片画廊,浏览和管理生成的图片(自 v2.7.0 起)。 **创建应用**:生成、编辑、分享和预览极速 Web 应用 @@ -62,14 +62,14 @@ VifChat 是一款快速响应的 AI 助手,采用 [React Native](https://react 1. 点击 [Amazon Bedrock 控制台](https://console.aws.amazon.com/bedrock/home#/api-keys/long-term/create) 创建长期 API 密钥。 -2. 复制并粘贴 API 密钥到 VifChat 设置页面的(Amazon Bedrock -> Bedrock API Key)中。 +2. 复制并粘贴 API 密钥到 AI Assistant 设置页面的(Amazon Bedrock -> Bedrock API Key)中。 3. 应用程序将根据您当前选择的区域自动获取最新的模型列表。如果列表中出现多个模型,说明配置成功。
-🔧 配置 VifChat 服务器(点击展开) +🔧 配置 App 服务器(点击展开) ### 架构 @@ -84,30 +84,30 @@ VifChat 是一款快速响应的 AI 助手,采用 [React Native](https://react **一行命令部署:** ```bash -curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-vif-chat-app/main/server/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-mobile-ai-assistant/main/server/install.sh | bash ``` -默认部署到**当前 AWS profile 的账户**,region 取 `$AWS_REGION` 或 `aws configure` 的默认值(都未设置则为 `us-east-1`),堆栈名为 `VifChat`。等待约 3-4 分钟,您会看到 **API URL**、**API Key** 获取链接,以及可用手机扫描自动配置的二维码。 +默认部署到**当前 AWS profile 的账户**,region 取 `$AWS_REGION` 或 `aws configure` 的默认值(都未设置则为 `us-east-1`),堆栈名为 `AIAssistant`。等待约 3-4 分钟,您会看到 **API URL**、**API Key** 获取链接,以及可用手机扫描自动配置的二维码。 需要指定其他目标时: ```bash -./install.sh --region us-west-2 --stack MyVifChat --profile myprofile +./install.sh --region us-west-2 --stack MyAIAssistant --profile myprofile ``` | 参数 | 作用 | 默认值 | |---|---|---| | `--region` | 部署到的 AWS region | `$AWS_REGION` 或 `us-east-1` | -| `--stack` | CloudFormation 堆栈名 | `VifChat` | +| `--stack` | CloudFormation 堆栈名 | `AIAssistant` | | `--profile` | 使用的 AWS CLI profile | 当前默认 profile | ### 步骤 2:打开应用并使用 API URL 和 API Key 进行设置 1. 启动应用,打开抽屉菜单,点击 **设置**。 -2. 在 Amazon Bedrock → VifChat Server 下,点击 **API URL** 右侧的扫码图标扫描二维码(iOS/Android),或手动粘贴 `API URL` 和 `API Key`。 +2. 在 Amazon Bedrock → App Server 下,点击 **API URL** 右侧的扫码图标扫描二维码(iOS/Android),或手动粘贴 `API URL` 和 `API Key`。 3. 选择 Region,然后点击右上角 ✓ 保存。 -恭喜 🎉 您的 VifChat 应用已准备就绪! +恭喜 🎉 您的 AI Assistant 应用已准备就绪!
@@ -168,7 +168,7 @@ curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-vif-chat-app/mai - `GPT-4o` - `GPT-4o mini` -此外,如果您已部署并配置了 [VifChat 服务器](#amazon-bedrock-入门指南),可以启用 **Use Proxy** 选项来转发您的请求。 +此外,如果您已部署并配置了 [App 服务器](#amazon-bedrock-入门指南),可以启用 **Use Proxy** 选项来转发您的请求。 @@ -271,7 +271,7 @@ https://github.com/user-attachments/assets/ebf21b12-9c93-4d2e-a109-1d6484019838 https://github.com/user-attachments/assets/c70fc2b4-8960-4a5e-b4f8-420fcd5eafd4 -> 注意:Amazon Nova Sonic 目前仅在 VifChat 服务器中可用。 +> 注意:Amazon Nova Sonic 目前仅在 App 服务器中可用。 #### 其他功能 @@ -329,7 +329,7 @@ https://github.com/user-attachments/assets/c70fc2b4-8960-4a5e-b4f8-420fcd5eafd4 ![](assets/animations/landscape.avif) -## 什么让 VifChat 真正"Vif"? +## 什么让 AI Assistant 如此快速? 🚀 **快速启动速度** @@ -389,7 +389,7 @@ npm run ios ### 构建 macOS 1. 执行 `npm start`。 -2. 双击 `ios/VifChat.xcworkspace` 在 Xcode 中打开项目。 +2. 双击 `ios/AIAssistant.xcworkspace` 在 Xcode 中打开项目。 3. 将构建目标更改为 `My Mac (Mac Catalyst)` 然后点击 ▶ 运行按钮。 ## API 参考 @@ -401,10 +401,10 @@ npm run ios ### 升级应用 - **Android** 和 **macOS**:导航到 **设置** 页面,如果有新版本,您将在此页面底部找到它,然后点击应用版本下载并安装。 -- **iOS**:如果在 [发布页面](https://github.com/aws-samples/sample-vif-chat-app/releases) 发布了新版本,请更新您的本地代码,通过 +- **iOS**:如果在 [发布页面](https://github.com/aws-samples/sample-mobile-ai-assistant/releases) 发布了新版本,请更新您的本地代码,通过 Xcode 重新构建并安装您的应用。 -**注意**:下载新版本后,请查看 [发布说明](https://github.com/aws-samples/sample-vif-chat-app/releases) 确认是否需要 API 版本更新。 +**注意**:下载新版本后,请查看 [发布说明](https://github.com/aws-samples/sample-mobile-ai-assistant/releases) 确认是否需要 API 版本更新。 ### 升级 API diff --git a/react-native/README.md b/react-native/README.md index 2c842e91..04c241b3 100644 --- a/react-native/README.md +++ b/react-native/README.md @@ -1,4 +1,4 @@ -# VifChat React Native +# AI Assistant React Native ## Tech Stack diff --git a/react-native/android/app/build.gradle b/react-native/android/app/build.gradle index 8b884481..076e0a3e 100644 --- a/react-native/android/app/build.gradle +++ b/react-native/android/app/build.gradle @@ -110,7 +110,7 @@ android { variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { - def fileName = "VifChat.apk" + def fileName = "AIAssistant.apk" output.outputFileName = fileName } } diff --git a/react-native/android/app/src/main/res/values/strings.xml b/react-native/android/app/src/main/res/values/strings.xml index 4d7c4d10..7b9abf8c 100644 --- a/react-native/android/app/src/main/res/values/strings.xml +++ b/react-native/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - VifChat + AI Assistant diff --git a/react-native/ios/VifChat.xcworkspace/contents.xcworkspacedata b/react-native/ios/AIAssistant.xcworkspace/contents.xcworkspacedata similarity index 100% rename from react-native/ios/VifChat.xcworkspace/contents.xcworkspacedata rename to react-native/ios/AIAssistant.xcworkspace/contents.xcworkspacedata diff --git a/react-native/ios/VifChat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/react-native/ios/AIAssistant.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from react-native/ios/VifChat.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to react-native/ios/AIAssistant.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/react-native/ios/VifChat.xcworkspace/xcshareddata/swiftpm/Package.resolved b/react-native/ios/AIAssistant.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from react-native/ios/VifChat.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to react-native/ios/AIAssistant.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/react-native/ios/Podfile b/react-native/ios/Podfile index 48306bcd..df5856aa 100644 --- a/react-native/ios/Podfile +++ b/react-native/ios/Podfile @@ -19,7 +19,7 @@ prepare_react_native_project! # Pin the generated workspace name (the .xcodeproj is still SwiftChat, so without # this `pod install` would regenerate a SwiftChat.xcworkspace). -workspace 'VifChat' +workspace 'AIAssistant' linkage = ENV['USE_FRAMEWORKS'] if linkage != nil diff --git a/react-native/ios/SwiftChat/Info.plist b/react-native/ios/SwiftChat/Info.plist index 58c58fed..b2ad5097 100644 --- a/react-native/ios/SwiftChat/Info.plist +++ b/react-native/ios/SwiftChat/Info.plist @@ -7,7 +7,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - VifChat + AI Assistant CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/react-native/ios/SwiftChatLiveActivity/SwiftChatLiveActivity.swift b/react-native/ios/SwiftChatLiveActivity/SwiftChatLiveActivity.swift index 81a149eb..7f3c3fac 100644 --- a/react-native/ios/SwiftChatLiveActivity/SwiftChatLiveActivity.swift +++ b/react-native/ios/SwiftChatLiveActivity/SwiftChatLiveActivity.swift @@ -25,7 +25,7 @@ struct SwiftChatLiveActivity: Widget { Image(systemName: "checkmark.circle.fill") .foregroundColor(.green) .font(.title2) - Text("VifChat · All Completed") + Text("AI Assistant · All Completed") .font(.headline) .foregroundColor(.green) } else { @@ -58,7 +58,7 @@ struct SwiftChatLiveActivity: Widget { Image(systemName: "checkmark.circle.fill") .font(.system(size: 20)) .foregroundColor(.green) - Text("VifChat · All Completed") + Text("AI Assistant · All Completed") .font(.system(size: 15, weight: .semibold)) .foregroundColor(.green) } diff --git a/react-native/package.json b/react-native/package.json index 54b8909f..534a07c6 100644 --- a/react-native/package.json +++ b/react-native/package.json @@ -1,12 +1,12 @@ { - "name": "vif-chat", - "description": "Sample Bedrock Cross-platform App - VifChat", + "name": "ai-assistant", + "description": "Sample Bedrock Cross-platform App - AI Assistant", "version": "2.9.0", "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", - "build:ios": "cd ios && xcodebuild -workspace VifChat.xcworkspace -scheme SwiftChat -sdk iphonesimulator -configuration Release -destination generic/platform=iOS CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO clean archive | xcpretty", + "build:ios": "cd ios && xcodebuild -workspace AIAssistant.xcworkspace -scheme SwiftChat -sdk iphonesimulator -configuration Release -destination generic/platform=iOS CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO clean archive | xcpretty", "format": "npx prettier --check '*.{js,ts}'", "lint": "npx eslint .", "start": "react-native start", diff --git a/react-native/release.sh b/react-native/release.sh index 3cff4668..d1062865 100755 --- a/react-native/release.sh +++ b/react-native/release.sh @@ -19,9 +19,9 @@ sed -i "s/MARKETING_VERSION = ${regex};/MARKETING_VERSION = ${version};/g" ios/S sed -i "s/CURRENT_PROJECT_VERSION = ${version_code_regex};/CURRENT_PROJECT_VERSION = ${version_code};/g" ios/SwiftChat.xcodeproj/project.pbxproj # modify README download link -sed -i "s/download\/${regex}\/VifChat.apk/download\/${version}\/VifChat.apk/g" ../README.md -sed -i "s/download\/${regex}\/VifChat.dmg/download\/${version}\/VifChat.dmg/g" ../README.md -sed -i "s/download\/${regex}\/VifChat.apk/download\/${version}\/VifChat.apk/g" ../README_CN.md -sed -i "s/download\/${regex}\/VifChat.dmg/download\/${version}\/VifChat.dmg/g" ../README_CN.md +sed -i "s/download\/${regex}\/AIAssistant.apk/download\/${version}\/AIAssistant.apk/g" ../README.md +sed -i "s/download\/${regex}\/AIAssistant.dmg/download\/${version}\/AIAssistant.dmg/g" ../README.md +sed -i "s/download\/${regex}\/AIAssistant.apk/download\/${version}\/AIAssistant.apk/g" ../README_CN.md +sed -i "s/download\/${regex}\/AIAssistant.dmg/download\/${version}\/AIAssistant.dmg/g" ../README_CN.md diff --git a/react-native/src/api/ChatProviderRouter.ts b/react-native/src/api/ChatProviderRouter.ts index e977ca22..21c2cd69 100644 --- a/react-native/src/api/ChatProviderRouter.ts +++ b/react-native/src/api/ChatProviderRouter.ts @@ -95,7 +95,7 @@ export const invokeChatProvider = async ( } if (bedrockConfigMode !== 'bedrock' && !isConfigured()) { callback( - 'Please configure your VifChat Server API URL and API Key', + 'Please configure your App Server API URL and API Key', true, false ); diff --git a/react-native/src/api/bedrock-api.ts b/react-native/src/api/bedrock-api.ts index 0514422b..ce581689 100644 --- a/react-native/src/api/bedrock-api.ts +++ b/react-native/src/api/bedrock-api.ts @@ -134,7 +134,7 @@ export const invokeBedrockWithCallBack = async ( }; /** - * Bedrock Server SSE streaming provider (via VifChat Server API Gateway). + * Bedrock Server SSE streaming provider (via App Server API Gateway). * Used by ChatProviderRouter when Bedrock server mode is selected. */ export const invokeBedrockServerWithCallBack = async ( @@ -297,13 +297,13 @@ export const requestAllModels = async (): Promise => { ]; return allModel; } catch (error) { - console.log('VifChat Server Error fetching models:', error); + console.log('App Server Error fetching models:', error); clearTimeout(timeoutId); return { imageModel: [], textModel: [] }; } }; -// Lists mantle model ids via the VifChat Server proxy for the current region. +// Lists mantle model ids via the App Server proxy for the current region. // Best-effort: returns [] on failure so the legacy list still loads. const fetchMantleModelIds = async (): Promise => { const controller = new AbortController(); diff --git a/react-native/src/api/providers/bedrock-mantle.ts b/react-native/src/api/providers/bedrock-mantle.ts index a1757237..c3870799 100644 --- a/react-native/src/api/providers/bedrock-mantle.ts +++ b/react-native/src/api/providers/bedrock-mantle.ts @@ -29,7 +29,7 @@ const thinkingEnabledForModel = (): boolean => * both deployment modes: * - 'bedrock' : client signs with the Bedrock API Key (Bearer) and calls * the mantle endpoint directly. - * - 'swiftchat' : request is proxied through the VifChat Server, which signs + * - 'swiftchat' : request is proxied through the App Server, which signs * with its IAM role (SigV4) — no Bedrock key needed. */ export const invokeBedrockMantle = async ( diff --git a/react-native/src/api/providers/open-api.ts b/react-native/src/api/providers/open-api.ts index 80e5b772..42c9b5e2 100644 --- a/react-native/src/api/providers/open-api.ts +++ b/react-native/src/api/providers/open-api.ts @@ -67,7 +67,7 @@ export const invokeOpenAIWithCallBack = async ( if (isOpenRouter) { options.headers['HTTP-Referer' as keyof typeof options.headers] = GITHUB_LINK; - options.headers['X-Title' as keyof typeof options.headers] = 'VifChat'; + options.headers['X-Title' as keyof typeof options.headers] = 'AI Assistant'; } const url = getApiURL(); let completeMessage = ''; diff --git a/react-native/src/chat/service/BackgroundTaskService.ts b/react-native/src/chat/service/BackgroundTaskService.ts index 7a1e60c9..9efd9756 100644 --- a/react-native/src/chat/service/BackgroundTaskService.ts +++ b/react-native/src/chat/service/BackgroundTaskService.ts @@ -25,7 +25,7 @@ const backgroundTask = async () => { const androidOptions = { taskName: 'AppGeneration', - taskTitle: 'VifChat', + taskTitle: 'AI Assistant', taskDesc: 'Generating app in background...', taskIcon: { name: 'ic_launcher', diff --git a/react-native/src/chat/service/VoiceChatService.ts b/react-native/src/chat/service/VoiceChatService.ts index c7509eba..a107617c 100644 --- a/react-native/src/chat/service/VoiceChatService.ts +++ b/react-native/src/chat/service/VoiceChatService.ts @@ -103,7 +103,7 @@ export class VoiceChatService { errorMsg.includes('This operation does not support API Keys') ) { errorMsg = - '\nThis operation does not support API Keys, Please switch to [VifChat Server](https://github.com/aws-samples/sample-vif-chat-app?tab=readme-ov-file#getting-started-with-amazon-bedrock) to use Nova Sonic'; + '\nThis operation does not support API Keys, Please switch to [App Server](https://github.com/aws-samples/sample-mobile-ai-assistant?tab=readme-ov-file#getting-started-with-amazon-bedrock) to use Nova Sonic'; } this.onErrorCallback(errorMsg); } diff --git a/react-native/src/settings/SettingsScreen.tsx b/react-native/src/settings/SettingsScreen.tsx index d43a4682..4895aa8e 100644 --- a/react-native/src/settings/SettingsScreen.tsx +++ b/react-native/src/settings/SettingsScreen.tsx @@ -102,7 +102,8 @@ const initUpgradeInfo: UpgradeInfo = { url: '', }; -export const GITHUB_LINK = 'https://github.com/aws-samples/sample-vif-chat-app'; +export const GITHUB_LINK = + 'https://github.com/aws-samples/sample-mobile-ai-assistant'; function SettingsScreen(): React.JSX.Element { const { colors, isDark } = useTheme(); @@ -524,7 +525,7 @@ function SettingsScreen(): React.JSX.Element { bedrockConfigMode === 'swiftchat' && styles.configSwitchTextActive, ]}> - VifChat Server + App Server diff --git a/server/README.md b/server/README.md index 97c66b5a..b2b8628d 100644 --- a/server/README.md +++ b/server/README.md @@ -1,6 +1,6 @@ -## VifChat Backend API +## AI Assistant Backend API -The VifChat backend API is implemented using Python language and the FastAPI framework. It is packaged as a Docker +The AI Assistant backend API is implemented using Python language and the FastAPI framework. It is packaged as a Docker image using [aws-lambda-adapter](https://github.com/awslabs/aws-lambda-web-adapter) and deployed to API Gateway with AWS Lambda for execution, supporting streaming responses for up to 15 minutes. @@ -87,7 +87,7 @@ export API_KEY= --header 'accept: application/json' \ --header "Authorization: Bearer ${API_KEY}" ``` - This API is used to get the new version of VifChat for Android and macOS App updates. + This API is used to get the new version of AI Assistant for Android and macOS App updates. ### API Code Reference diff --git a/server/install.sh b/server/install.sh index 9e000d64..2d553228 100755 --- a/server/install.sh +++ b/server/install.sh @@ -1,12 +1,12 @@ #!/bin/bash -# VifChat Server — one-command deploy +# App Server — one-command deploy # # Usage: -# curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-vif-chat-app/main/server/install.sh | bash +# curl -fsSL https://raw.githubusercontent.com/aws-samples/sample-mobile-ai-assistant/main/server/install.sh | bash # curl ... | bash -s -- --region us-west-2 # ./install.sh # from cloned repo # ./install.sh --region us-west-2 -# ./install.sh --region us-west-2 --stack MyVifChat +# ./install.sh --region us-west-2 --stack MyAIAssistant # ./install.sh --profile myprofile --region us-west-2 main() { @@ -24,7 +24,7 @@ LINE="==================================================================" trap 'rc=$?; echo ""; echo "${C_RED}ERROR: install.sh failed at line $LINENO (exit $rc): $BASH_COMMAND${C_RESET}" >&2; exit $rc' ERR # ===== Self-bootstrap: if not inside the repo, clone it first ===== -REPO_URL="https://github.com/aws-samples/sample-vif-chat-app.git" +REPO_URL="https://github.com/aws-samples/sample-mobile-ai-assistant.git" SELF_MARKER="server/template/SwiftChatLambda.template" if [ ! -f "$(dirname "${BASH_SOURCE[0]:-$0}")/../$SELF_MARKER" ] 2>/dev/null; then @@ -47,13 +47,13 @@ if [ ! -f "$(dirname "${BASH_SOURCE[0]:-$0}")/../$SELF_MARKER" ] 2>/dev/null; th CLONE_DIR=$(mktemp -d) trap 'rm -rf "$CLONE_DIR"' EXIT - echo "Cloning sample-vif-chat-app..." - if ! git clone --depth 1 --quiet "$REPO_URL" "$CLONE_DIR/sample-vif-chat-app"; then + echo "Cloning sample-mobile-ai-assistant..." + if ! git clone --depth 1 --quiet "$REPO_URL" "$CLONE_DIR/sample-mobile-ai-assistant"; then echo "${C_RED}ERROR: Failed to clone repository${C_RESET}" exit 1 fi set +e - bash "$CLONE_DIR/sample-vif-chat-app/server/install.sh" "$@" + bash "$CLONE_DIR/sample-mobile-ai-assistant/server/install.sh" "$@" exit $? fi @@ -75,7 +75,7 @@ wait_stack() { # ===== Parse args ===== REGION="" -STACK_NAME="VifChat" +STACK_NAME="AIAssistant" REPO_NAME="swift-chat-api" TAG="latest" PROFILE="" @@ -123,7 +123,7 @@ STS_OUT=$(aws sts get-caller-identity --region "$REGION" --output text --query A } ACCOUNT_ID="$STS_OUT" -echo "Deploying VifChat → region=$REGION, stack=$STACK_NAME, account=$ACCOUNT_ID" +echo "Deploying AI Assistant → region=$REGION, stack=$STACK_NAME, account=$ACCOUNT_ID" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SRC_DIR="$SCRIPT_DIR/src" diff --git a/server/src/main.py b/server/src/main.py index 6328d177..29a533b5 100644 --- a/server/src/main.py +++ b/server/src/main.py @@ -339,11 +339,11 @@ async def upgrade(request: UpgradeRequest): if total_number > 0: need_upgrade = total_number < calculate_version_total(new_version) if need_upgrade: - download_prefix = "https://github.com/aws-samples/sample-vif-chat-app/releases/download/" + download_prefix = "https://github.com/aws-samples/sample-mobile-ai-assistant/releases/download/" if request.os == 'android': - url = download_prefix + new_version + "/VifChat.apk" + url = download_prefix + new_version + "/AIAssistant.apk" elif request.os == 'mac': - url = download_prefix + new_version + "/VifChat.dmg" + url = download_prefix + new_version + "/AIAssistant.dmg" return {"needUpgrade": need_upgrade, "version": new_version, "url": url} @@ -399,7 +399,7 @@ def get_latest_version() -> str: return cache["latest_version"] try: response = httpx.get( - "https://api.github.com/repos/aws-samples/sample-vif-chat-app/tags", + "https://api.github.com/repos/aws-samples/sample-mobile-ai-assistant/tags", headers={'User-Agent': 'Mozilla/5.0'} ) content = response.json() From aae36550af99715ca1cba9be082297a56a90b140 Mon Sep 17 00:00:00 2001 From: xiaoweii Date: Tue, 23 Jun 2026 18:26:03 +0800 Subject: [PATCH 2/2] chore: smooth out README wording after AI Assistant rename Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 4 ++-- README_CN.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 11cbb0d1..d48ebd8f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Sample Mobile AI Assistant — A Cross-platform AI Assistant App +# Sample Mobile AI Assistant — A Cross-platform AI Chat & Creation App > 🚀 Your Personal AI Workspace — Chat, Create Apps, and More @@ -7,7 +7,7 @@ [中文](/README_CN.md) -AI Assistant is a fast and responsive AI assistant developed with [React Native](https://reactnative.dev/) and +AI Assistant is a fast and responsive cross-platform app developed with [React Native](https://reactnative.dev/) and powered by [Amazon Bedrock](https://aws.amazon.com/bedrock/), with compatibility extending to other model providers such as Ollama, DeepSeek, OpenAI and OpenAI Compatible. With its minimalist design philosophy and robust privacy protection, it delivers real-time streaming conversations, AI image generation, instant web app creation and voice conversation diff --git a/README_CN.md b/README_CN.md index ca485adb..9b117915 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,4 +1,4 @@ -# Sample Mobile AI Assistant — 跨平台 AI 助手 App +# Sample Mobile AI Assistant — 跨平台 AI 对话与创作应用 > 🚀 您的个人 AI 工作空间 — 聊天、创建应用等 @@ -7,7 +7,7 @@ [English](/README.md) -AI Assistant 是一款快速响应的 AI 助手,采用 [React Native](https://reactnative.dev/) +AI Assistant 是一款快速响应的跨平台应用,采用 [React Native](https://reactnative.dev/) 开发,并依托 [Amazon Bedrock](https://aws.amazon.com/bedrock/) 提供强大支持,同时兼容 Ollama、DeepSeek、OpenAI 和 OpenAI 兼容的其他模型供应商。凭借其极简设计理念与坚实的隐私保护措施,该应用在 Android、iOS 和 macOS 平台上实现了实时流式对话、AI 图像生成、极速 Web 应用创建和语音对话功能。