feat: show OpenClaw sidebar entry only in developer mode (#892)
This commit is contained in:
@@ -116,6 +116,7 @@ function getAgentIdFromSessionKey(sessionKey: string): string {
|
||||
export function Sidebar() {
|
||||
const sidebarCollapsed = useSettingsStore((state) => state.sidebarCollapsed);
|
||||
const setSidebarCollapsed = useSettingsStore((state) => state.setSidebarCollapsed);
|
||||
const devModeUnlocked = useSettingsStore((state) => state.devModeUnlocked);
|
||||
|
||||
const sessions = useChatStore((s) => s.sessions);
|
||||
const currentSessionKey = useChatStore((s) => s.currentSessionKey);
|
||||
@@ -373,26 +374,28 @@ export function Sidebar() {
|
||||
)}
|
||||
</NavLink>
|
||||
|
||||
<Button
|
||||
data-testid="sidebar-open-dev-console"
|
||||
variant="ghost"
|
||||
className={cn(
|
||||
'flex items-center gap-2.5 rounded-lg px-2.5 py-2 h-auto text-[14px] font-medium transition-colors w-full mt-1',
|
||||
'hover:bg-black/5 dark:hover:bg-white/5 text-foreground/80',
|
||||
sidebarCollapsed ? 'justify-center px-0' : 'justify-start'
|
||||
)}
|
||||
onClick={openDevConsole}
|
||||
>
|
||||
<div className="flex shrink-0 items-center justify-center text-muted-foreground">
|
||||
<Terminal className="h-[18px] w-[18px]" strokeWidth={2} />
|
||||
</div>
|
||||
{!sidebarCollapsed && (
|
||||
<>
|
||||
<span className="flex-1 text-left overflow-hidden text-ellipsis whitespace-nowrap">{t('common:sidebar.openClawPage')}</span>
|
||||
<ExternalLink className="h-3 w-3 shrink-0 ml-auto opacity-50 text-muted-foreground" />
|
||||
</>
|
||||
)}
|
||||
</Button>
|
||||
{devModeUnlocked && (
|
||||
<Button
|
||||
data-testid="sidebar-open-dev-console"
|
||||
variant="ghost"
|
||||
className={cn(
|
||||
'flex items-center gap-2.5 rounded-lg px-2.5 py-2 h-auto text-[14px] font-medium transition-colors w-full mt-1',
|
||||
'hover:bg-black/5 dark:hover:bg-white/5 text-foreground/80',
|
||||
sidebarCollapsed ? 'justify-center px-0' : 'justify-start'
|
||||
)}
|
||||
onClick={openDevConsole}
|
||||
>
|
||||
<div className="flex shrink-0 items-center justify-center text-muted-foreground">
|
||||
<Terminal className="h-[18px] w-[18px]" strokeWidth={2} />
|
||||
</div>
|
||||
{!sidebarCollapsed && (
|
||||
<>
|
||||
<span className="flex-1 text-left overflow-hidden text-ellipsis whitespace-nowrap">{t('common:sidebar.openClawPage')}</span>
|
||||
<ExternalLink className="h-3 w-3 shrink-0 ml-auto opacity-50 text-muted-foreground" />
|
||||
</>
|
||||
)}
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<ConfirmDialog
|
||||
|
||||
@@ -8,6 +8,7 @@ test.describe('ClawX developer-mode gated UI', () => {
|
||||
await expect(page.getByTestId('settings-page')).toBeVisible();
|
||||
await expect(page.getByTestId('settings-developer-section')).toHaveCount(0);
|
||||
await expect(page.getByTestId('settings-dev-mode-switch')).toHaveAttribute('data-state', 'unchecked');
|
||||
await expect(page.getByTestId('sidebar-open-dev-console')).toHaveCount(0);
|
||||
|
||||
await page.getByTestId('sidebar-nav-models').click();
|
||||
await page.getByTestId('providers-add-button').click();
|
||||
@@ -22,6 +23,7 @@ test.describe('ClawX developer-mode gated UI', () => {
|
||||
await expect(page.getByTestId('settings-dev-mode-switch')).toHaveAttribute('data-state', 'checked');
|
||||
await expect(page.getByTestId('settings-developer-section')).toBeVisible();
|
||||
await expect(page.getByTestId('settings-developer-gateway-token')).toBeVisible();
|
||||
await expect(page.getByTestId('sidebar-open-dev-console')).toBeVisible();
|
||||
|
||||
await page.getByTestId('sidebar-nav-models').click();
|
||||
await page.getByTestId('providers-add-button').click();
|
||||
|
||||
Reference in New Issue
Block a user