diff --git a/knip.json b/knip.json
index beb1972a..f2e4c823 100644
--- a/knip.json
+++ b/knip.json
@@ -1,8 +1,13 @@
{
"$schema": "https://unpkg.com/knip@latest/schema.json",
+ "ignore": [
+ "packages/mobile/android/app/src/main/assets/public/**",
+ "packages/mobile/ios/App/App/public/**"
+ ],
"workspaces": {
".": {
"entry": [
+ "postcss.config.js",
"scripts/**/*.{js,cjs,mjs,ts}"
],
"project": [
@@ -12,6 +17,8 @@
},
"packages/ui": {
"entry": [
+ "src/apps/renderVSCodeApp.tsx",
+ "src/**/*.bench.{ts,tsx}",
"src/**/*.{test,spec}.{js,cjs,mjs,jsx,ts,tsx}",
"src/**/__tests__/**/*.{js,cjs,mjs,jsx,ts,tsx}"
],
@@ -23,7 +30,9 @@
"entry": [
"src/mobile-main.tsx",
"src/mini-chat-main.tsx",
+ "src/main.tsx",
"src/sw.ts",
+ "bin/**/*.{test,spec}.{js,cjs,mjs}",
"server/**/*.{test,spec}.{js,cjs,mjs}",
"src/**/*.{test,spec}.{ts,tsx}"
],
@@ -50,6 +59,7 @@
},
"packages/vscode": {
"entry": [
+ "webview/main.tsx",
"src/**/*.{test,spec}.{js,cjs,mjs,ts,tsx}",
"webview/**/*.{test,spec}.{js,cjs,mjs,ts,tsx}"
],
@@ -57,6 +67,15 @@
"src/**/*.{ts,tsx}",
"webview/**/*.{ts,tsx}"
]
+ },
+ "packages/mobile": {
+ "entry": [
+ "scripts/**/*.{js,cjs,mjs,ts}"
+ ],
+ "project": [
+ "*.{js,cjs,mjs,ts}",
+ "scripts/**/*.{js,cjs,mjs,ts}"
+ ]
}
}
}
diff --git a/packages/ui/src/components/icon/sprite.ts b/packages/ui/src/components/icon/sprite.ts
index a5d2dd76..c1b957b7 100644
--- a/packages/ui/src/components/icon/sprite.ts
+++ b/packages/ui/src/components/icon/sprite.ts
@@ -30,6 +30,7 @@ export const iconSpriteData = {
"book": ``,
"book-open": ``,
"booklet": ``,
+ "braces": ``,
"brain": ``,
"brain-ai-3": ``,
"briefcase": ``,
diff --git a/packages/ui/src/components/icons/DiffIcon.tsx b/packages/ui/src/components/icons/DiffIcon.tsx
index dd46a0b8..1c13a676 100644
--- a/packages/ui/src/components/icons/DiffIcon.tsx
+++ b/packages/ui/src/components/icons/DiffIcon.tsx
@@ -1,9 +1,21 @@
import type { SVGProps } from 'react';
+import { Icon } from '@/components/icon/Icon';
+
interface DiffIconProps extends Omit, 'children'> {
size?: number | string;
}
+export function DiffViewIcon({ className = 'h-5 w-5' }: { className?: string }) {
+ return (
+
+
+
+
+
+ );
+}
+
/**
* Git merge/branch icon for the Diff tab.
*/
diff --git a/packages/ui/src/components/layout/ContextPanel.tsx b/packages/ui/src/components/layout/ContextPanel.tsx
index 574f8591..f48dc445 100644
--- a/packages/ui/src/components/layout/ContextPanel.tsx
+++ b/packages/ui/src/components/layout/ContextPanel.tsx
@@ -1,6 +1,7 @@
import React from 'react';
import { FileTypeIcon } from '@/components/icons/FileTypeIcon';
+import { DiffViewIcon } from '@/components/icons/DiffIcon';
import { Button } from '@/components/ui/button';
import { SortableTabsStrip } from '@/components/ui/sortable-tabs-strip';
import { DiffView } from '@/components/views/DiffView';
@@ -246,7 +247,7 @@ const getTabIcon = (tab: { mode: ContextPanelMode; targetPath: string | null }):
}
if (tab.mode === 'diff') {
- return ;
+ return ;
}
if (tab.mode === 'walkthrough') {
@@ -258,7 +259,7 @@ const getTabIcon = (tab: { mode: ContextPanelMode; targetPath: string | null }):
}
if (tab.mode === 'pr') {
- return ;
+ return ;
}
if (tab.mode === 'notes') {
diff --git a/packages/ui/src/components/layout/ContextPanelRail.tsx b/packages/ui/src/components/layout/ContextPanelRail.tsx
index 38ab1b64..5d522e5c 100644
--- a/packages/ui/src/components/layout/ContextPanelRail.tsx
+++ b/packages/ui/src/components/layout/ContextPanelRail.tsx
@@ -17,6 +17,7 @@ import {
import { CSS } from '@dnd-kit/utilities';
import { Icon } from '@/components/icon/Icon';
+import { DiffViewIcon } from '@/components/icons/DiffIcon';
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
import { useEffectiveDirectory } from '@/hooks/useEffectiveDirectory';
import { useDeviceInfo } from '@/lib/device';
@@ -80,7 +81,11 @@ const ContextPanelRailItem: React.FC = ({
: 'text-muted-foreground hover:text-foreground',
)}
>
-
+ {surface.id === 'diff' ? (
+
+ ) : (
+
+ )}
{showActivityDot ? (