diff --git a/dsh.plugin.json b/dsh.plugin.json
index d140fce..5c18d44 100644
--- a/dsh.plugin.json
+++ b/dsh.plugin.json
@@ -1,6 +1,6 @@
{
"id": "dsh-external/dsh-apes-sidebar",
- "version": "1.0.0",
+ "version": "1.1.0",
"main": "./lib/index.js",
"description": "VSCode 风格右侧侧边栏:文件资源管理器 / 编辑器 / 终端 / Git / 浏览器,按会话隔离。暴露服务供其他插件注册侧边栏页面和文件预览器",
"engines": {
diff --git a/src/client/apes/tabs.tsx b/src/client/apes/tabs.tsx
index ec2e65e..392594d 100644
--- a/src/client/apes/tabs.tsx
+++ b/src/client/apes/tabs.tsx
@@ -26,7 +26,7 @@
*/
import { useCallback, useMemo, useState, type CSSProperties } from 'react'
import { useSyncExternalStore } from 'react'
-import { FiCpu, FiGrid, FiUser } from 'react-icons/fi'
+import { IconAgentPresetOutline16, IconGaugeOutline16, IconUserOutline16 } from '@deepseek-ai/dsh-client-ui-primitives'
import type { TabComponentProps, TabDescriptor } from '../service.ts'
import type {
SidebarSessionList,
@@ -231,7 +231,7 @@ function ApesAppsView(props: TabComponentProps) {
* to `service.registerTab`. Information-layer tabs are single-instance.
*/
export const apesTabs: TabDescriptor[] = [
- { id: 'apes:agents', title: () => t('apesAgentsTitle'), icon: , order: 901, single: true, component: ApesAgentsView },
- { id: 'apes:apps', title: () => t('apesAppsTitle'), icon: , order: 902, single: true, component: ApesAppsView },
- { id: 'apes:profile', title: () => t('apesProfileTitle'), icon: , order: 903, single: true, component: ApesProfileView },
+ { id: 'apes:agents', title: () => t('apesAgentsTitle'), icon: (size: number) => , order: 40, single: true, component: ApesAgentsView },
+ { id: 'apes:apps', title: () => t('apesAppsTitle'), icon: (size: number) => , order: 45, single: true, component: ApesAppsView },
+ { id: 'apes:profile', title: () => t('apesProfileTitle'), icon: (size: number) => , order: 50, single: true, component: ApesProfileView },
]
diff --git a/src/client/service.ts b/src/client/service.ts
index c5f9d62..43ae55b 100644
--- a/src/client/service.ts
+++ b/src/client/service.ts
@@ -465,7 +465,7 @@ export function matchUrlTarget(tabs: readonly TabDescriptor[], url: URL): TabDes
* The plugin version this service instance reports. Keep in lockstep with
* `package.json`'s version — `tests/service.spec.ts` asserts the pair.
*/
-export const SIDEBAR_SERVICE_VERSION = '1.0.0'
+export const SIDEBAR_SERVICE_VERSION = '1.1.0'
/**
* Monotonic capability list consumers use to gate new API usage (features
diff --git a/tests/apes-tabs.spec.ts b/tests/apes-tabs.spec.ts
index 0a36f07..547cc5a 100644
--- a/tests/apes-tabs.spec.ts
+++ b/tests/apes-tabs.spec.ts
@@ -60,7 +60,7 @@ describe('apes:* tab registrations', () => {
}
})
- it('apes tabs sort after the upstream builtins (order 900+)', () => {
+ it('apes tabs sort after the upstream builtins (order 40+)', () => {
const { service, dispose } = setup()
try {
const orders = {
@@ -68,9 +68,11 @@ describe('apes:* tab registrations', () => {
apps: service.getTab('apes:apps')?.order,
profile: service.getTab('apes:profile')?.order,
}
- expect(orders.agents).toBeGreaterThanOrEqual(900)
- expect(orders.apps).toBeGreaterThanOrEqual(900)
- expect(orders.profile).toBeGreaterThanOrEqual(900)
+ // C8: order 40-50 places apes tabs immediately after the native builtins
+ // (10-35), not in a far-away 900+ band — visual unity in the tab strip.
+ expect(orders.agents).toBeGreaterThanOrEqual(40)
+ expect(orders.apps).toBeGreaterThanOrEqual(40)
+ expect(orders.profile).toBeGreaterThanOrEqual(40)
// Strictly ordered: agents < apps < profile.
expect(orders.agents!).toBeLessThan(orders.apps!)
expect(orders.apps!).toBeLessThan(orders.profile!)