diff --git a/package.json b/package.json index b6b25da2..6f7e95e6 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "preview": true, "activationEvents": [ "onFileSystem:azureResourceGroups", + "onStartupFinished", "workspaceContains:**/.azure/project-plan.md", "workspaceContains:**/.azure/requirements.json", "workspaceContains:**/.azure/vscode-debug-plan.md" diff --git a/src/commands/registerCommands.ts b/src/commands/registerCommands.ts index 9a92f03d..81df2afe 100644 --- a/src/commands/registerCommands.ts +++ b/src/commands/registerCommands.ts @@ -190,7 +190,11 @@ export function registerCommands(): void { message: l10n.t('Copilot is gathering requirements and preparing your project plan.'), })); registerCommand('azureResourceGroups.startProjectIntegrate', (_context: IActionContext, prompt?: string) => - openChatWithAgent('azure-project-integrate', prompt ?? 'The project has been scaffolded. Read `.azure/integration-plan.md`, then integrate the project: create the SQL/PostgreSQL schema migrations (no seed data), smoke-test the backend so every endpoint responds, wire the frontend to live data (remove all mock data), and run the frontend and backend together end-to-end.')); + openChatWithAgent('azure-project-integrate', prompt ?? 'The project has been scaffolded. Read `.azure/integration-plan.md`, then integrate the project: create the SQL/PostgreSQL schema migrations (no seed data), smoke-test the backend so every endpoint responds, wire the frontend to live data (remove all mock data), and run the frontend and backend together end-to-end.', { + stage: 0, + title: l10n.t('Integrating your frontend…'), + message: l10n.t('Copilot is wiring the frontend to your backend services. For progress please view the Copilot chat.'), + })); registerCommand('azureResourceGroups.startLocalDevelopment', (_context: IActionContext, prompt?: string) => openChatWithAgent('azure-debug-plan', prompt ?? 'The project has been scaffolded. Now set up the local debugging environment so the user can start building and testing.', { stage: 1, diff --git a/src/extension.ts b/src/extension.ts index c1480f56..07fc86e2 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -361,7 +361,7 @@ async function isWorkspaceEmpty(): Promise { } // Entries that don't count as "real" project content. - const ignored = new Set(['.git', '.vscode', '.azure', '.github', '.agents']); + const ignored = new Set(['.git', '.vscode', '.azure', '.github', '.agents', '.DS_Store']); let readableFolderCount = 0; diff --git a/src/webviews/copilotOnRails/extension/controllers/ScaffoldNextStepsViewController.ts b/src/webviews/copilotOnRails/extension/controllers/ScaffoldNextStepsViewController.ts index d22f27e7..5aa3ac8e 100644 --- a/src/webviews/copilotOnRails/extension/controllers/ScaffoldNextStepsViewController.ts +++ b/src/webviews/copilotOnRails/extension/controllers/ScaffoldNextStepsViewController.ts @@ -6,7 +6,6 @@ import { WebviewController } from "@microsoft/vscode-azext-webview"; import * as vscode from "vscode"; import { ViewColumn } from "vscode"; -import { ensureCopilotChatReady } from "../../../../commands/copilotOnRails/openChatWithAgent"; import { ext } from "../../../../extensionVariables"; import { getCopilotOnRailsBundleLocation } from "../copilotOnRailsBundleLocation"; @@ -35,14 +34,11 @@ export class ScaffoldNextStepsViewController extends WebviewController { switch (action) { case 'setupLocal': - if (!(await ensureCopilotChatReady())) { - return; - } this.panel.dispose(); - await vscode.commands.executeCommand('workbench.action.chat.open', { - mode: 'azure-debug-plan', - query: vscode.l10n.t('The project has been scaffolded. Now set up the local debugging environment so I can start building and testing.'), - }); + await vscode.commands.executeCommand( + 'azureResourceGroups.startLocalDevelopment', + vscode.l10n.t('The project has been scaffolded. Now set up the local debugging environment so I can start building and testing.'), + ); return; case 'deploy': this.panel.dispose(); diff --git a/src/webviews/copilotOnRails/views/RequirementsView.tsx b/src/webviews/copilotOnRails/views/RequirementsView.tsx index 37f1d112..da3d618e 100644 --- a/src/webviews/copilotOnRails/views/RequirementsView.tsx +++ b/src/webviews/copilotOnRails/views/RequirementsView.tsx @@ -410,9 +410,10 @@ const QuestionRow = ({ const isMissing = isAnswerEmpty(draft); const heading = question.header ?? question.question; const showSubtext = question.header !== undefined && question.question && question.question !== question.header; + const isFreeform = inputType === 'text'; return ( -
  • +
  • {!hideHeader && (
    {heading} @@ -503,6 +504,7 @@ const AnswerInput = ({ const useTextarea = text.length > 60; if (useTextarea) { + const rows = Math.max(3, Math.min(12, Math.ceil(text.length / 40))); return (