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');
});
});