diff --git a/package.json.bak.pre-015 b/package.json.bak.pre-015 new file mode 100644 index 0000000..7be9fd4 --- /dev/null +++ b/package.json.bak.pre-015 @@ -0,0 +1,195 @@ +{ + "name": "dsh-apes-sidebar", + "version": "1.0.0", + "description": "APE fork of dsh-better-sidebar v0.18.0: VSCode-like right sidebar (explorer / editor / terminal / git / browser) + apes:* information-layer tabs (tasks / agents / apps / messages / profile). Forked from omdsh-dev/DSH-better-sidebar under MIT.", + "type": "module", + "repository": { + "type": "git", + "url": "https://github.com/omdsh-dev/DSH-better-sidebar" + }, + "forkedFrom": { + "name": "dsh-better-sidebar", + "version": "0.18.0", + "commit": "9e1a034", + "url": "https://github.com/omdsh-dev/DSH-better-sidebar" + }, + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "types": "lib/types/index.d.ts", + "exports": { + ".": { + "types": "./lib/types/index.d.ts", + "default": "./lib/index.js" + }, + "./invariant": { + "types": "./lib/types/invariant.d.ts", + "default": "./lib/invariant.js" + }, + "./client": { + "types": "./lib/types/client/index.d.ts", + "default": "./lib/client.js" + }, + "./client/service": { + "types": "./lib/types/client/service.d.ts", + "default": "./lib/client.js" + }, + "./client/api": { + "types": "./lib/types/client/service.d.ts", + "default": "./lib/client.js" + }, + "./src/*": "./src/*", + "./package.json": "./package.json" + }, + "engines": { + "node": ">=20" + }, + "packageManager": "pnpm@11.8.0", + "dsh": { + "bundle": { + "patch": "./cordis.patch.yml" + }, + "client": { + "inject": [ + "@deepseek-ai/dsh-client-locale", + "@deepseek-ai/dsh-client-ui-slots", + "@deepseek-ai/dsh-client-ui-conversation", + "@deepseek-ai/dsh-client-modules" + ], + "platform": "web" + } + }, + "files": [ + "lib/index.js", + "lib/invariant.js", + "lib/client.js", + "lib/client-registry.js", + "lib/client-terminal.js", + "lib/client-editor.js", + "lib/client-mermaid.js", + "lib/types/**/*.d.ts", + "src", + "scripts/install.sh", + "scripts/install.ps1", + "scripts/switch.sh", + "cordis.patch.yml", + "README.md", + "README_EN.md", + "LICENSE" + ], + "scripts": { + "build": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\" && tsc -p tsconfig.build.json && tsdown", + "prepublishOnly": "pnpm build", + "typecheck": "tsc --noEmit", + "bundle": "tsdown", + "watch": "tsdown --watch", + "prepare": "tsdown", + "test": "vitest run", + "test:mount": "bash scripts/e2e-mount.sh", + "test:mount:aggregate": "bash scripts/e2e-aggregate-mount.sh", + "clean": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"", + "check:consumer-types": "bash scripts/check-consumer-types.sh", + "switch": "bash scripts/switch.sh", + "switch:status": "bash scripts/switch.sh --status", + "switch:aps": "bash scripts/switch.sh aps", + "switch:upstream": "bash scripts/switch.sh upstream" + }, + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.2", + "@deepseek-ai/dsh-agent": "^0.1.2-rc.1", + "@deepseek-ai/dsh-client-locale": "^0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-rc.1", + "@deepseek-ai/dsh-host-webserver": "^0.1.2-rc.1", + "@deepseek-ai/dsh-invariants": "^0.1.2-rc.1", + "@deepseek-ai/dsh-llm": "^0.1.2-rc.1", + "@deepseek-ai/dsh-session": "^0.1.2-rc.1", + "@deepseek-ai/dsh-settings": "^0.1.2-rc.1", + "@deepseek-ai/dsh-subagent": "^0.1.2-rc.1", + "@deepseek-ai/dsh-tools": "^0.1.2-rc.1", + "@huanlin/dsh-plugin-better-locale": "^0.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "peerDependenciesMeta": { + "@huanlin/dsh-plugin-better-locale": { + "optional": true + } + }, + "dependencies": { + "@codemirror/commands": "^6.10.4", + "@codemirror/lang-cpp": "^6.0.3", + "@codemirror/lang-css": "^6.3.1", + "@codemirror/lang-go": "^6.0.1", + "@codemirror/lang-html": "^6.4.12", + "@codemirror/lang-java": "^6.0.2", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/lang-markdown": "^6.5.2", + "@codemirror/lang-php": "^6.0.2", + "@codemirror/lang-python": "^6.2.1", + "@codemirror/lang-rust": "^6.0.2", + "@codemirror/lang-sql": "^6.10.0", + "@codemirror/lang-vue": "^0.1.3", + "@codemirror/lang-xml": "^6.1.0", + "@codemirror/lang-yaml": "^6.1.3", + "@codemirror/language": "^6.12.4", + "@codemirror/legacy-modes": "^6.5.3", + "@codemirror/search": "^6.7.1", + "@codemirror/state": "^6.7.1", + "@codemirror/view": "^6.43.8", + "@lezer/highlight": "^1.2.3", + "clsx": "^2.1.1", + "dompurify": "^3.4.14", + "mermaid": "^11.16.1", + "node-pty": "^1.1.0", + "react-icons": "5.7.0", + "rxjs": "^7.8.2", + "schemastery": "^3.18.0", + "ws": "^8.18.0" + }, + "devDependencies": { + "@cordisjs/plugin-loader": "^1.0.0-rc.5", + "@deepseek-ai/dsh-agent": "0.1.2-rc.1", + "@deepseek-ai/dsh-attachment": "0.1.2-rc.1", + "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-conversation": "0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1", + "@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1", + "@deepseek-ai/dsh-code-runtime": "0.1.2-rc.1", + "@deepseek-ai/dsh-host-webserver": "0.1.2-rc.1", + "@deepseek-ai/dsh-invariants": "0.1.2-rc.1", + "@deepseek-ai/dsh-llm": "0.1.2-rc.1", + "@deepseek-ai/dsh-scope": "0.1.2-rc.1", + "@deepseek-ai/dsh-session": "0.1.2-rc.1", + "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1", + "@deepseek-ai/dsh-settings": "0.1.2-rc.1", + "@deepseek-ai/dsh-subagent": "0.1.2-rc.1", + "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1", + "@deepseek-ai/dsh-tools": "0.1.2-rc.1", + "@deepseek-ai/dsh-user-approval": "0.1.2-rc.1", + "@deepseek-ai/dsh-util-time": "0.1.2-rc.1", + "@huanlin/dsh-plugin-better-locale": "^0.1.0", + "@playwright/test": "^1.62.1", + "@types/node": "^24.0.0", + "@types/react": "~18.3.1", + "@types/react-dom": "~18.3.1", + "@types/ws": "^8.5.10", + "@xterm/addon-fit": "^0.11.0", + "@xterm/xterm": "^5.5.0", + "cordis": "^4.0.0-rc.8", + "jsdom": "^29.1.1", + "lightningcss": "^1.32.0", + "react": "^18.2.0", + "react-dom": "18.2.0", + "tsdown": "^0.22.2", + "typescript": "^5.6.0", + "unrun": "^0.2.39", + "vitest": "^4.1.8" + } +} diff --git a/package.json.bak.pre-anter b/package.json.bak.pre-anter new file mode 100644 index 0000000..29b0d65 --- /dev/null +++ b/package.json.bak.pre-anter @@ -0,0 +1,195 @@ +{ + "name": "dsh-apes-sidebar", + "version": "1.0.0", + "description": "APE fork of dsh-better-sidebar v0.18.0: VSCode-like right sidebar (explorer / editor / terminal / git / browser) + apes:* information-layer tabs (tasks / agents / apps / messages / profile). Forked from omdsh-dev/DSH-better-sidebar under MIT.", + "type": "module", + "repository": { + "type": "git", + "url": "https://github.com/omdsh-dev/DSH-better-sidebar" + }, + "forkedFrom": { + "name": "dsh-better-sidebar", + "version": "0.18.0", + "commit": "9e1a034", + "url": "https://github.com/omdsh-dev/DSH-better-sidebar" + }, + "publishConfig": { + "access": "public" + }, + "main": "lib/index.js", + "types": "lib/types/index.d.ts", + "exports": { + ".": { + "types": "./lib/types/index.d.ts", + "default": "./lib/index.js" + }, + "./invariant": { + "types": "./lib/types/invariant.d.ts", + "default": "./lib/invariant.js" + }, + "./client": { + "types": "./lib/types/client/index.d.ts", + "default": "./lib/client.js" + }, + "./client/service": { + "types": "./lib/types/client/service.d.ts", + "default": "./lib/client.js" + }, + "./client/api": { + "types": "./lib/types/client/service.d.ts", + "default": "./lib/client.js" + }, + "./src/*": "./src/*", + "./package.json": "./package.json" + }, + "engines": { + "node": ">=20" + }, + "packageManager": "pnpm@11.8.0", + "dsh": { + "bundle": { + "patch": "./cordis.patch.yml" + }, + "client": { + "inject": [ + "@deepseek-ai/dsh-client-locale", + "@deepseek-ai/dsh-client-ui-slots", + "@deepseek-ai/dsh-client-ui-conversation", + "@deepseek-ai/dsh-client-modules" + ], + "platform": "web" + } + }, + "files": [ + "lib/index.js", + "lib/invariant.js", + "lib/client.js", + "lib/client-registry.js", + "lib/client-terminal.js", + "lib/client-editor.js", + "lib/client-mermaid.js", + "lib/types/**/*.d.ts", + "src", + "scripts/install.sh", + "scripts/install.ps1", + "scripts/switch.sh", + "cordis.patch.yml", + "README.md", + "README_EN.md", + "LICENSE" + ], + "scripts": { + "build": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\" && tsc -p tsconfig.build.json && tsdown", + "prepublishOnly": "pnpm build", + "typecheck": "tsc --noEmit", + "bundle": "tsdown", + "watch": "tsdown --watch", + "prepare": "tsdown", + "test": "vitest run", + "test:mount": "bash scripts/e2e-mount.sh", + "test:mount:aggregate": "bash scripts/e2e-aggregate-mount.sh", + "clean": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"", + "check:consumer-types": "bash scripts/check-consumer-types.sh", + "switch": "bash scripts/switch.sh", + "switch:status": "bash scripts/switch.sh --status", + "switch:aps": "bash scripts/switch.sh aps", + "switch:upstream": "bash scripts/switch.sh upstream" + }, + "license": "MIT", + "peerDependencies": { + "@deepseek-ai/cordis": "^4.0.2", + "@deepseek-ai/dsh-agent": "^0.1.5-rc.2", + "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.2", + "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.2", + "@deepseek-ai/dsh-invariants": "^0.1.5-rc.2", + "@deepseek-ai/dsh-llm": "^0.1.5-rc.2", + "@deepseek-ai/dsh-session": "^0.1.5-rc.2", + "@deepseek-ai/dsh-settings": "^0.1.5-rc.2", + "@deepseek-ai/dsh-subagent": "^0.1.5-rc.2", + "@deepseek-ai/dsh-tools": "^0.1.5-rc.2", + "@huanlin/dsh-plugin-better-locale": "^0.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "peerDependenciesMeta": { + "@huanlin/dsh-plugin-better-locale": { + "optional": true + } + }, + "dependencies": { + "@codemirror/commands": "^6.10.4", + "@codemirror/lang-cpp": "^6.0.3", + "@codemirror/lang-css": "^6.3.1", + "@codemirror/lang-go": "^6.0.1", + "@codemirror/lang-html": "^6.4.12", + "@codemirror/lang-java": "^6.0.2", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/lang-markdown": "^6.5.2", + "@codemirror/lang-php": "^6.0.2", + "@codemirror/lang-python": "^6.2.1", + "@codemirror/lang-rust": "^6.0.2", + "@codemirror/lang-sql": "^6.10.0", + "@codemirror/lang-vue": "^0.1.3", + "@codemirror/lang-xml": "^6.1.0", + "@codemirror/lang-yaml": "^6.1.3", + "@codemirror/language": "^6.12.4", + "@codemirror/legacy-modes": "^6.5.3", + "@codemirror/search": "^6.7.1", + "@codemirror/state": "^6.7.1", + "@codemirror/view": "^6.43.8", + "@lezer/highlight": "^1.2.3", + "clsx": "^2.1.1", + "dompurify": "^3.4.14", + "mermaid": "^11.16.1", + "node-pty": "^1.1.0", + "react-icons": "5.7.0", + "rxjs": "^7.8.2", + "schemastery": "^3.18.0", + "ws": "^8.18.0" + }, + "devDependencies": { + "@cordisjs/plugin-loader": "^1.0.0-rc.5", + "@deepseek-ai/dsh-agent": "0.1.5-rc.2", + "@deepseek-ai/dsh-attachment": "0.1.5-rc.2", + "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2", + "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.2", + "@deepseek-ai/dsh-code-runtime": "0.1.5-rc.2", + "@deepseek-ai/dsh-host-webserver": "0.1.5-rc.2", + "@deepseek-ai/dsh-invariants": "0.1.5-rc.2", + "@deepseek-ai/dsh-llm": "0.1.5-rc.2", + "@deepseek-ai/dsh-scope": "0.1.5-rc.2", + "@deepseek-ai/dsh-session": "0.1.5-rc.2", + "@deepseek-ai/dsh-session-projection": "0.1.5-rc.2", + "@deepseek-ai/dsh-settings": "0.1.5-rc.2", + "@deepseek-ai/dsh-subagent": "0.1.5-rc.2", + "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2", + "@deepseek-ai/dsh-tools": "0.1.5-rc.2", + "@deepseek-ai/dsh-user-approval": "0.1.5-rc.2", + "@deepseek-ai/dsh-util-time": "0.1.5-rc.2", + "@huanlin/dsh-plugin-better-locale": "^0.1.0", + "@playwright/test": "^1.62.1", + "@types/node": "^24.0.0", + "@types/react": "~18.3.1", + "@types/react-dom": "~18.3.1", + "@types/ws": "^8.5.10", + "@xterm/addon-fit": "^0.11.0", + "@xterm/xterm": "^5.5.0", + "cordis": "^4.0.0-rc.8", + "jsdom": "^29.1.1", + "lightningcss": "^1.32.0", + "react": "^18.2.0", + "react-dom": "18.2.0", + "tsdown": "^0.22.2", + "typescript": "^5.6.0", + "unrun": "^0.2.39", + "vitest": "^4.1.8" + } +} diff --git a/src/client/apes/icons.tsx b/src/client/apes/icons.tsx new file mode 100644 index 0000000..47e3a2e --- /dev/null +++ b/src/client/apes/icons.tsx @@ -0,0 +1,51 @@ +/** + * Custom fill-style icons for apes tabs — matching the visual weight of + * DSH native tabs (which use `fill: currentColor` paths, not outline/mask). + * + * DSH's `@deepseek-ai/dsh-client-ui-primitives` only ships outline variants + * for agent/gauge/user, so we define our own fill variants here to ensure + * the apes tabs look "official" in the + menu. + */ +import type { ReactNode } from 'react' + +/** Agent icon: a simple robot/agent face (fill style). */ +export function IconAgentFill16({ size = 16, className }: { size?: number; className?: string }): ReactNode { + return ( + + + + ) +} + +/** Gauge/app icon: a simple app grid (fill style). */ +export function IconGaugeFill16({ size = 16, className }: { size?: number; className?: string }): ReactNode { + return ( + + + + ) +} + +/** User/profile icon: a simple user silhouette (fill style). */ +export function IconUserFill16({ size = 16, className }: { size?: number; className?: string }): ReactNode { + return ( + + + + ) +} diff --git a/src/client/apes/tabs.tsx b/src/client/apes/tabs.tsx index 1ce6190..1ce232a 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 { IconAgentPresetOutline16, IconGaugeOutline16, IconUserOutline16 } from '@deepseek-ai/dsh-client-ui-primitives' +import { IconAgentFill16, IconGaugeFill16, IconUserFill16 } from './icons.tsx' 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: (size: number) => , order: 60, single: true, component: ApesAgentsView }, - { id: 'apes:apps', title: () => t('apesAppsTitle'), icon: (size: number) => , order: 65, single: true, component: ApesAppsView }, - { id: 'apes:profile', title: () => t('apesProfileTitle'), icon: (size: number) => , order: 70, single: true, component: ApesProfileView }, + { id: 'apes:agents', title: () => t('apesAgentsTitle'), icon: (size: number) => , order: 60, single: true, component: ApesAgentsView }, + { id: 'apes:apps', title: () => t('apesAppsTitle'), icon: (size: number) => , order: 65, single: true, component: ApesAppsView }, + { id: 'apes:profile', title: () => t('apesProfileTitle'), icon: (size: number) => , order: 70, single: true, component: ApesProfileView }, ]