diff --git a/src/apps/mobile/harmonyos/AppScope/app.json5 b/src/apps/mobile/harmonyos/AppScope/app.json5 index 8a2ae02e48..8697ed1307 100644 --- a/src/apps/mobile/harmonyos/AppScope/app.json5 +++ b/src/apps/mobile/harmonyos/AppScope/app.json5 @@ -4,7 +4,7 @@ // upgrades retain encrypted sessions, preferences, and watch handoff data. "bundleName": "com.bitfun.app", "vendor": "OpenBitFun", - "versionCode": 5, + "versionCode": 8, "versionName": "1.0.0", // x-release-please-version "buildVersion": "1", "icon": "$media:openbitfun_app_icon", diff --git a/src/apps/mobile/harmonyos/entry/src/main/ets/pages/components/HarnessProfileMenu.ets b/src/apps/mobile/harmonyos/entry/src/main/ets/pages/components/HarnessProfileMenu.ets index c764ed3a73..53266cf7ed 100644 --- a/src/apps/mobile/harmonyos/entry/src/main/ets/pages/components/HarnessProfileMenu.ets +++ b/src/apps/mobile/harmonyos/entry/src/main/ets/pages/components/HarnessProfileMenu.ets @@ -3,12 +3,12 @@ import { RemoteI18n } from '../../i18n/RemoteI18n'; import { HarnessProfilePolicy } from '../policy/HarnessProfilePolicy'; import { CARD, INK, LINE, MUTED, SHADOW_SUBTLE, TRANSPARENT } from './Theme'; -/** Compact creation-time selector for the three supported Harness profiles. */ +/** Compact creation-time selector for the supported Harness profiles. */ @ComponentV2 export struct HarnessProfileMenu { @Param showTitle: boolean = true; @Param includeCowork: boolean = false; - @Param menuWidth: number = 190; + @Param menuWidth: number = 160; @Event onSelect: (agentType: string) => void = (_agentType: string) => {}; build() { @@ -22,9 +22,10 @@ export struct HarnessProfileMenu { .height(30) .padding({ left: 14, right: 14 }) } - this.ProfileRow('minimal', RemoteI18n.t('remote.harness.minimal'), 1) - this.ProfileRow('standard', RemoteI18n.t('remote.harness.standard'), 2) - this.ProfileRow('ultimate', RemoteI18n.t('remote.harness.ultimate'), 3) + this.ProfileRow('minimal', RemoteI18n.t('remote.harness.minimal')) + this.ProfileRow('standard', RemoteI18n.t('remote.harness.standard')) + this.ProfileRow('ultimate', RemoteI18n.t('remote.harness.ultimate')) + this.ProfileRow('creative', RemoteI18n.t('remote.harness.creative')) if (this.includeCowork) { Divider().strokeWidth(0.5).color(LINE).margin({ top: 4, bottom: 4 }) this.AgentRow('Cowork', 'Cowork') @@ -39,9 +40,9 @@ export struct HarnessProfileMenu { } @Builder - private ProfileRow(profileId: string, label: string, density: number) { + private ProfileRow(profileId: string, label: string) { Row({ space: 12 }) { - this.DensityMark(density) + this.ProfileIcon(profileId) Text(label) .fontSize(MobileDesignTypography.titleSmall.size) .fontWeight(FontWeight.Medium) @@ -79,19 +80,15 @@ export struct HarnessProfileMenu { } @Builder - private DensityMark(density: number) { - Row({ space: 2 }) { - Text('').width(4).height(8).backgroundColor(INK).borderRadius(2) - if (density >= 2) { - Text('').width(4).height(13).backgroundColor(INK).borderRadius(2) - } - if (density >= 3) { - Text('').width(4).height(18).backgroundColor(INK).borderRadius(2) - } + private ProfileIcon(profileId: string) { + if (profileId === 'minimal') { + Image($r('app.media.harness_minimal')).width(22).height(22).objectFit(ImageFit.Contain).draggable(false) + } else if (profileId === 'standard') { + Image($r('app.media.harness_standard')).width(22).height(22).objectFit(ImageFit.Contain).draggable(false) + } else if (profileId === 'ultimate') { + Image($r('app.media.harness_ultimate')).width(22).height(22).objectFit(ImageFit.Contain).draggable(false) + } else { + Image($r('app.media.harness_creative')).width(22).height(22).objectFit(ImageFit.Contain).draggable(false) } - .width(22) - .height(22) - .alignItems(VerticalAlign.Center) - .justifyContent(FlexAlign.Center) } } diff --git a/src/apps/mobile/harmonyos/entry/src/main/ets/pages/policy/HarnessProfilePolicy.ets b/src/apps/mobile/harmonyos/entry/src/main/ets/pages/policy/HarnessProfilePolicy.ets index 0c1ef847b3..ec19ad7fcc 100644 --- a/src/apps/mobile/harmonyos/entry/src/main/ets/pages/policy/HarnessProfilePolicy.ets +++ b/src/apps/mobile/harmonyos/entry/src/main/ets/pages/policy/HarnessProfilePolicy.ets @@ -1,9 +1,10 @@ -/** Maps the three product execution levels onto the host's canonical Agents. */ +/** Maps the product execution levels onto the host's canonical Agents. */ export class HarnessProfilePolicy { static agentType(profileId: string): string { switch (profileId.trim().toLowerCase()) { case 'minimal': return 'minimal'; case 'ultimate': return 'Ultra'; + case 'creative': return 'Creative'; default: return 'agentic'; } } diff --git a/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_creative.svg b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_creative.svg new file mode 100644 index 0000000000..549d4bfcc9 --- /dev/null +++ b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_creative.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_minimal.svg b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_minimal.svg new file mode 100644 index 0000000000..1a4f9acd4b --- /dev/null +++ b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_minimal.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_standard.svg b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_standard.svg new file mode 100644 index 0000000000..c0ba3d47a6 --- /dev/null +++ b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_standard.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_ultimate.svg b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_ultimate.svg new file mode 100644 index 0000000000..3feaf6f59a --- /dev/null +++ b/src/apps/mobile/harmonyos/entry/src/main/resources/base/media/harness_ultimate.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/mobile/harmonyos/entry/src/main/resources/en_US/element/string.json b/src/apps/mobile/harmonyos/entry/src/main/resources/en_US/element/string.json index c82f5680c0..525fac1830 100644 --- a/src/apps/mobile/harmonyos/entry/src/main/resources/en_US/element/string.json +++ b/src/apps/mobile/harmonyos/entry/src/main/resources/en_US/element/string.json @@ -1100,6 +1100,10 @@ "name": "remote_harness_ultimate", "value": "Ultimate" }, + { + "name": "remote_harness_creative", + "value": "Creative" + }, { "name": "remote_connectTitle", "value": "Connect desktop" diff --git a/src/apps/mobile/harmonyos/entry/src/main/resources/zh_CN/element/string.json b/src/apps/mobile/harmonyos/entry/src/main/resources/zh_CN/element/string.json index 93abf78ed1..c24e5f3678 100644 --- a/src/apps/mobile/harmonyos/entry/src/main/resources/zh_CN/element/string.json +++ b/src/apps/mobile/harmonyos/entry/src/main/resources/zh_CN/element/string.json @@ -1100,6 +1100,10 @@ "name": "remote_harness_ultimate", "value": "极致" }, + { + "name": "remote_harness_creative", + "value": "创造" + }, { "name": "remote_connectTitle", "value": "连接桌面端" diff --git a/src/apps/mobile/harmonyos/entry/src/test/ConversationPresentationUnit.test.ets b/src/apps/mobile/harmonyos/entry/src/test/ConversationPresentationUnit.test.ets index 7dda25bc74..d968c90e66 100644 --- a/src/apps/mobile/harmonyos/entry/src/test/ConversationPresentationUnit.test.ets +++ b/src/apps/mobile/harmonyos/entry/src/test/ConversationPresentationUnit.test.ets @@ -66,6 +66,7 @@ export default function conversationPresentationUnitTest() { expect(HarnessProfilePolicy.agentType('minimal')).assertEqual('minimal'); expect(HarnessProfilePolicy.agentType('standard')).assertEqual('agentic'); expect(HarnessProfilePolicy.agentType('ultimate')).assertEqual('Ultra'); + expect(HarnessProfilePolicy.agentType('creative')).assertEqual('Creative'); }); });