diff --git a/.gitignore b/.gitignore index d7739863..871c9896 100644 --- a/.gitignore +++ b/.gitignore @@ -96,4 +96,4 @@ data/credentials.json data/ .codex/ .mcp.json -.planning \ No newline at end of file +.planning diff --git a/Dockerfile b/Dockerfile index 2e745e4c..a68901e4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -154,7 +154,7 @@ COPY --from=server-builder /app/node_modules ./node_modules USER automaker RUN ./node_modules/.bin/playwright install chromium && \ echo "=== Playwright Chromium installed ===" && \ - ls -la /home/automaker/.cache/ms-playwright/ || echo "Playwright browsers installed" + ls -la /home/automaker/.cache/ms-playwright/ USER root # Create data and projects directories diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts index 4f49d117..85ff0145 100644 --- a/apps/server/src/index.ts +++ b/apps/server/src/index.ts @@ -211,7 +211,13 @@ const BOX_CONTENT_WIDTH = 67; pathsCheckedInfo = ` ║ ║ ║ ${'Paths checked:'.padEnd(BOX_CONTENT_WIDTH)}║ -${pathsChecked.map((p) => `║ ${p.substring(0, BOX_CONTENT_WIDTH - 4).padEnd(BOX_CONTENT_WIDTH - 4)} ║`).join('\n')}`; +${pathsChecked + .map((p) => { + const maxLen = BOX_CONTENT_WIDTH - 4; + const display = p.length > maxLen ? '...' + p.slice(-(maxLen - 3)) : p; + return `║ ${display.padEnd(maxLen)} ║`; + }) + .join('\n')}`; } } diff --git a/apps/server/src/routes/setup/routes/verify-claude-auth.ts b/apps/server/src/routes/setup/routes/verify-claude-auth.ts index 405ef9a6..7df27c3d 100644 --- a/apps/server/src/routes/setup/routes/verify-claude-auth.ts +++ b/apps/server/src/routes/setup/routes/verify-claude-auth.ts @@ -322,11 +322,12 @@ export function createVerifyClaudeAuthHandler() { }); // Determine specific auth type for success messages + const effectiveAuthMethod = authMethod ?? 'api_key'; let authType: 'oauth' | 'api_key' | 'cli' | undefined; if (authenticated) { - if (authMethod === 'api_key') { + if (effectiveAuthMethod === 'api_key') { authType = 'api_key'; - } else if (authMethod === 'cli') { + } else if (effectiveAuthMethod === 'cli') { // Check if CLI auth is via OAuth (Claude Code subscription) or generic CLI try { const indicators = await getClaudeAuthIndicators(); diff --git a/apps/ui/src/components/views/board-view/shared/thinking-level-selector.tsx b/apps/ui/src/components/views/board-view/shared/thinking-level-selector.tsx index 5164e4fa..3a69d587 100644 --- a/apps/ui/src/components/views/board-view/shared/thinking-level-selector.tsx +++ b/apps/ui/src/components/views/board-view/shared/thinking-level-selector.tsx @@ -9,7 +9,8 @@ interface ThinkingLevelSelectorProps { selectedLevel: ThinkingLevel; onLevelSelect: (level: ThinkingLevel) => void; testIdPrefix?: string; - /** Optional model ID to filter available thinking levels (e.g., Opus 4.6 only shows None/Adaptive) */ + /** Model ID is required for correct thinking level filtering. + * Without it, adaptive thinking won't be available for Opus 4.6. */ model?: string; } diff --git a/apps/ui/src/lib/agent-context-parser.ts b/apps/ui/src/lib/agent-context-parser.ts index 996b397b..11c2a91e 100644 --- a/apps/ui/src/lib/agent-context-parser.ts +++ b/apps/ui/src/lib/agent-context-parser.ts @@ -34,7 +34,7 @@ export const DEFAULT_MODEL = 'claude-opus-4-6'; */ export function formatModelName(model: string): string { // Claude models - if (model.includes('opus-4-6')) return 'Opus 4.6'; + if (model.includes('opus-4-6') || model === 'claude-opus') return 'Opus 4.6'; if (model.includes('opus')) return 'Opus 4.5'; if (model.includes('sonnet')) return 'Sonnet 4.5'; if (model.includes('haiku')) return 'Haiku 4.5';